// ------------------------------------------------------------------------- // ----- PndFastSim header file ----- // ----- Created 20/11/07 by K. Goetzen ----- // ------------------------------------------------------------------------- #ifndef PNDFASTSIM_H #define PNDFASTSIM_H 1 #include "FairTask.h" #include "TVector3.h" #include "TMatrixD.h" #include #include class TClonesArray; class TObjectArray; class PndFsmTrack; class TRandom3; class TLorentzVector; class PndFsmAbsDet; class PndFsmResponse; class PndFsmDetFactory; class TF1; class TDatabasePDG; typedef std::list FsmAbsDetList; typedef std::list FsmResponseList; class PndFastSim : public FairTask { public: //typedef std::map mapper; /** Default constructor **/ PndFastSim(); /** Destructor **/ ~PndFastSim(); void Register(); // /** Virtual method Init **/ virtual InitStatus Init(); /** Virtual method Exec **/ virtual void Exec(Option_t* opt); bool AddDetector(std::string name, std::string params=""); bool AddDetector(PndFsmAbsDet* det); void SetVerbosity(int vb) {fVb=vb;} bool EnableSplitoffs(std::string fname="splitpars.dat"); void EnablePropagation(bool propagate=true, bool tostartvtx=true, bool usecovmatrix=true, double tolerance=0.0); void SetSeed(unsigned int seed=65539); //void CreateStructure(); private: PndFsmResponse* sumResponse(FsmResponseList respList); bool cutAndSmear(PndFsmTrack *t, PndFsmResponse *r); bool cutAndSmear(PndFsmTrack *t); void smearEnergy(PndFsmTrack *t, double dE); void smearMomentum(PndFsmTrack *t, double dp); void smearTheta(PndFsmTrack *t, double dtheta); void smearPhi(PndFsmTrack *t, double dphi); void smearVertex(PndFsmTrack *t, TVector3 dV); void smearM(PndFsmTrack *t, double dm); void smearM2(PndFsmTrack *t, double m2); void smearMvddEdx(PndFsmTrack *t, double dedx); void smearTpcdEdx(PndFsmTrack *t, double dedx); void smearSttdEdx(PndFsmTrack *t, double dedx); /** Output array of Candidates **/ TClonesArray* fMcCandidates; TClonesArray* fPidChargedCand; TClonesArray* fPidNeutralCand; TClonesArray* fMicroCandidates; TClonesArray* fPidChargedProb; //! PndPidProbability TCA for charged particles TClonesArray* fPidNeutralProb; //! PndPidProbability TCA for neutral particles //output array EventInfo TClonesArray* fEventInfo; TRandom3 *fRand; int fVb; //verbosity level int evtcnt; //event counter for output TF1 *fspo[5][4]; bool fGenSplitOffs; bool fPropagate; bool fToStartVtx; bool fUseCovMatrix; double fTolerance; PndFsmDetFactory *fDetFac; std::string fAddedDets; FsmAbsDetList fDetList; TDatabasePDG* fdbPdg; /** Get parameter containers **/ virtual void SetParContainers(); bool smearTrack(PndFsmTrack *t); static TMatrixD fRho; static TMatrixD fEta; ClassDef(PndFastSim,1); }; #endif