FairRoot/PandaRoot
PndFastSim.h
Go to the documentation of this file.
1 // -------------------------------------------------------------------------
2 // ----- PndFastSim header file -----
3 // ----- Created 20/11/07 by K. Goetzen -----
4 // -------------------------------------------------------------------------
5 
6 #ifndef PNDFASTSIM_H
7 #define PNDFASTSIM_H 1
8 
9 
10 #include "FairTask.h"
11 #include "TVector3.h"
12 #include "TMatrixD.h"
13 #include <string>
14 #include <list>
15 #include "TString.h"
16 #include "TClonesArray.h"
17 
18 class TObjectArray;
19 class PndFsmTrack;
20 class TRandom3;
21 class TLorentzVector;
22 class PndFsmAbsDet;
23 class PndFsmResponse;
24 class PndFsmDetFactory;
25 class TF1;
26 class TDatabasePDG;
28 
29 typedef std::list<PndFsmAbsDet*> FsmAbsDetList;
30 typedef std::list<PndFsmResponse*> FsmResponseList;
31 
32 class PndFastSim : public FairTask
33 {
34 
35  public:
36  //typedef std::map<Int_t, Float_t> mapper;
37 
39  PndFastSim(bool persist=true);
40 
41 
43  ~PndFastSim();
44 
45  void Register(); //
46 
47 
49  virtual InitStatus Init();
50 
51  virtual void Finish();
52 
53 
55  virtual void Exec(Option_t* opt);
56 
57  bool AddDetector(std::string name, std::string params="");
58  bool AddDetector(PndFsmAbsDet* det);
59  void SetVerbosity(int vb) {fVb=vb;}
60  bool EnableSplitoffs(std::string fname="splitpars.dat");
61  bool MergeNeutralClusters(bool merge=true, double par=0.389) {fMergeNeutralClusters=merge; fMergeProbPar=par; return true;}
62  void EnableElectronBremsstrahlung(bool brems=true){fElectronBrems=brems;}
63  void EnablePropagation(bool propagate=true, bool tostartvtx=true, bool usecovmatrix=true, double tolerance=0.0);
64  void SetUseFlatCov(bool v=true) {fUseFlatCovMatrix=v;};
65 
66  void SetMultFilter(TString type, int min, int max=1000);
67  void SetInvMassFilter(TString filter, double min, double max, int mult=1);
68 
69  void SetSeed(unsigned int seed=65539);
70  //void CreateStructure();
71 
72  private:
73 
75 
76  int acceptFilters(RhoCandList &l);
77  int chCon(int i);
78  void copyAndSetMass(RhoCandList &l, RhoCandList &nl, int pdg);
79 
81  bool cutAndSmear(PndFsmTrack *t);
82 
83  void smearEnergy(PndFsmTrack *t, double dE);
84  void smearMomentum(PndFsmTrack *t, double dp);
85  void smearTheta(PndFsmTrack *t, double dtheta);
86  void smearPhi(PndFsmTrack *t, double dphi);
87  void smearVertex(PndFsmTrack *t, TVector3 dV);
88  void smearM(PndFsmTrack *t, double dm);
89  void smearM2(PndFsmTrack *t, double m2);
90  void smearMvddEdx(PndFsmTrack *t, double dedx);
91  void smearTpcdEdx(PndFsmTrack *t, double dedx);
92  void smearSttdEdx(PndFsmTrack *t, double dedx);
93  void SetFlatCovMatrix(PndFsmTrack *t, double dp=0., double dtheta=0., double dphi=0., double dE=0., double dx=0., double dy=0., double dz=0.);
95 
97  TClonesArray* fMcCandidates;
98  TClonesArray* fPidChargedCand;
99  TClonesArray* fPidNeutralCand;
100  TClonesArray* fMicroCandidates;
101  TClonesArray* fPidChargedProb;
102  TClonesArray* fPidNeutralProb;
103 
104  std::map<TString,TClonesArray*> fPidArrayList;
105  //output array EventInfo
106  TClonesArray* fEventInfo;
107 
108  TRandom3 *fRand;
109  int fVb; //verbosity level
110  int evtcnt; //event counter for output
111  TF1 *fspo[5][4];
121  double fTolerance;
122 
123  // filter vars
125  int fMultMin[6];
126  int fMultMax[6];
128  double fInvMassMin;
129  double fInvMassMax;
131  int fCombIndex[5];
134  int fNAccept;
135 
136  bool fPersist;
137 
139  std::string fAddedDets;
141 
142  TDatabasePDG* fdbPdg;
143 
144 
146  virtual void SetParContainers();
147 
148 
149  bool smearTrack(PndFsmTrack *t, int idx = -1);
150 
151  static TMatrixD fRho;
152  static TMatrixD fEta;
153 
154  ClassDef(PndFastSim,1);
155 
156 };
157 
158 #endif
int fCombIndex[5]
Definition: PndFastSim.h:131
void smearMomentum(PndFsmTrack *t, double dp)
int chCon(int i)
Definition: PndFastSim.cxx:422
void SetFlatCovMatrix(PndFsmTrack *t, double dp=0., double dtheta=0., double dphi=0., double dE=0., double dx=0., double dy=0., double dz=0.)
void smearPhi(PndFsmTrack *t, double dphi)
std::map< TString, TClonesArray * > fPidArrayList
PndPidProbability TCA for neutral particles.
Definition: PndFastSim.h:104
double dy
void propagate(TLorentzVector &l, TVector3 &p, float charge, TH2F *hpro=0)
double r
Definition: RiemannTest.C:14
TClonesArray * fMcCandidates
Definition: PndFastSim.h:97
Int_t i
Definition: run_full.C:25
int acceptFilters(RhoCandList &l)
Definition: PndFastSim.cxx:429
double fTolerance
Definition: PndFastSim.h:121
double fInvMassMin
Definition: PndFastSim.h:128
bool AddDetector(std::string name, std::string params="")
Definition: PndFastSim.cxx:313
ClassDef(PndFastSim, 1)
void smearSttdEdx(PndFsmTrack *t, double dedx)
Double_t par[3]
bool fMergeNeutralClusters
Definition: PndFastSim.h:114
TF1 * fspo[5][4]
Definition: PndFastSim.h:111
void SetSeed(unsigned int seed=65539)
Definition: PndFastSim.cxx:218
static TMatrixD fEta
Definition: PndFastSim.h:152
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
Definition: P4_F32vec4.h:26
std::list< PndFsmAbsDet * > FsmAbsDetList
Definition: PndFastSim.h:27
std::string fAddedDets
Definition: PndFastSim.h:139
__m128 v
Definition: P4_F32vec4.h:4
void SetUseFlatCov(bool v=true)
Definition: PndFastSim.h:64
bool fElectronBrems
Definition: PndFastSim.h:115
bool fPropagate
Definition: PndFastSim.h:117
int fMultMin[6]
Definition: PndFastSim.h:125
int idx[MAX]
Definition: autocutx.C:38
TString fInvMassFilter
Definition: PndFastSim.h:127
TString m2(TString pts, TString exts="e px py pz")
Definition: invexp.C:117
void smearMvddEdx(PndFsmTrack *t, double dedx)
bool MergeNeutralClusters(bool merge=true, double par=0.389)
Definition: PndFastSim.h:61
void SetInvMassFilter(TString filter, double min, double max, int mult=1)
Definition: PndFastSim.cxx:373
int merge(TString ntp="", TString fout="", TString f1="", TString f2="", TString f3="", TString f4="", TString f5="")
virtual void Finish()
Definition: PndFastSim.cxx:599
void EnableElectronBremsstrahlung(bool brems=true)
Definition: PndFastSim.h:62
void smearM2(PndFsmTrack *t, double m2)
TClonesArray * fMicroCandidates
Definition: PndFastSim.h:100
Double_t dE
Definition: anasim.C:58
bool fApplyFilter
Definition: PndFastSim.h:124
unsigned int seed
double dtheta
Definition: anaLmdCluster.C:54
void smearTheta(PndFsmTrack *t, double dtheta)
PndFsmResponse * sumResponse(FsmResponseList respList)
bool fPersist
Definition: PndFastSim.h:136
virtual InitStatus Init()
Definition: PndFastSim.cxx:158
void smearEnergy(PndFsmTrack *t, double dE)
void copyAndSetMass(RhoCandList &l, RhoCandList &nl, int pdg)
Definition: PndFastSim.cxx:362
friend F32vec4 min(const F32vec4 &a, const F32vec4 &b)
Definition: P4_F32vec4.h:25
TRandom3 * fRand
Definition: PndFastSim.h:108
int fNAccept
Definition: PndFastSim.h:134
double fMergeProbPar
Definition: PndFastSim.h:116
void UpdateGammaHit(PndFsmTrack *t)
void smearM(PndFsmTrack *t, double dm)
bool EnableSplitoffs(std::string fname="splitpars.dat")
Definition: PndFastSim.cxx:224
TString name
bool fGenSplitOffs
Definition: PndFastSim.h:113
double dx
FsmAbsDetList fDetList
Definition: PndFastSim.h:140
TClonesArray * fPidNeutralProb
PndPidProbability TCA for charged particles.
Definition: PndFastSim.h:102
void SetMultFilter(TString type, int min, int max=1000)
Definition: PndFastSim.cxx:347
void SetVerbosity(int vb)
Definition: PndFastSim.h:59
bool smearTrack(PndFsmTrack *t, int idx=-1)
Definition: PndFastSim.cxx:951
void Register()
Definition: PndFastSim.cxx:120
TClonesArray * fPidNeutralCand
Definition: PndFastSim.h:99
bool fUseCovMatrix
Definition: PndFastSim.h:119
TClonesArray * fEventInfo
PndPidProbability TCA's for individual detectors.
Definition: PndFastSim.h:106
TF1 * fBremsEnergy
Definition: PndFastSim.h:112
PndFsmDetFactory * fDetFac
Definition: PndFastSim.h:138
int fCombMult
Definition: PndFastSim.h:132
TTree * t
Definition: bump_analys.C:13
bool fUseFlatCovMatrix
Definition: PndFastSim.h:120
TDatabasePDG * fdbPdg
Definition: PndFastSim.h:142
double fInvMassMax
Definition: PndFastSim.h:129
int fInvMassMult
Definition: PndFastSim.h:130
bool cutAndSmear(PndFsmTrack *t, PndFsmResponse *r)
TClonesArray * fPidChargedCand
Definition: PndFastSim.h:98
virtual void SetParContainers()
Definition: PndFastSim.cxx:205
std::list< PndFsmResponse * > FsmResponseList
Definition: PndFastSim.h:30
bool fChargeConj
Definition: PndFastSim.h:133
void smearTpcdEdx(PndFsmTrack *t, double dedx)
TClonesArray * fPidChargedProb
Definition: PndFastSim.h:101
void smearVertex(PndFsmTrack *t, TVector3 dV)
int fMultMax[6]
Definition: PndFastSim.h:126
PndFastSim(bool persist=true)
Definition: PndFastSim.cxx:62
Double_t mult
static TMatrixD fRho
Definition: PndFastSim.h:151
bool fToStartVtx
Definition: PndFastSim.h:118
virtual void Exec(Option_t *opt)
Definition: PndFastSim.cxx:616
TMatrixT< double > TMatrixD
Definition: PndLmdDim.h:52
void EnablePropagation(bool propagate=true, bool tostartvtx=true, bool usecovmatrix=true, double tolerance=0.0)
Definition: PndFastSim.cxx:303