de0014b7 |
1 | #ifndef AliToyMCEventGenerator_H |
2 | #define AliToyMCEventGenerator_H |
3 | |
a1a695e5 |
4 | #include <TString.h> |
5 | |
6 | class TFile; |
7 | class TTree; |
2dd02504 |
8 | class TObjArray; |
a1a695e5 |
9 | |
10 | class AliTPCParam; |
223d9e38 |
11 | class AliTPCCorrection; |
32438f4e |
12 | class AliTrackPointArray; |
a1a695e5 |
13 | |
14 | class AliToyMCTrack; |
15 | class AliToyMCEvent; |
de0014b7 |
16 | |
de0014b7 |
17 | class AliToyMCEventGenerator : public TObject { |
18 | public: |
cd8ed0ac |
19 | enum EGasType { |
d5715c32 |
20 | kNeCO2_9010=0, |
21 | kNeCO2N2_90105 |
22 | }; |
cd8ed0ac |
23 | |
24 | enum EEpsilon { |
25 | kEps5=0, |
26 | kEps10, |
d5715c32 |
27 | kEps20, |
28 | kEps25, |
29 | kEps30, |
30 | kEps35, |
31 | kEps40 |
cd8ed0ac |
32 | }; |
33 | |
34 | enum ECollRate { |
35 | k50kHz = 0 |
36 | }; |
223d9e38 |
37 | |
38 | enum ECorrection { |
39 | kLookup=0, |
40 | kSpaceChargeFile |
41 | }; |
cd8ed0ac |
42 | |
de0014b7 |
43 | AliToyMCEventGenerator(); |
44 | AliToyMCEventGenerator(const AliToyMCEventGenerator &gen); |
45 | virtual ~AliToyMCEventGenerator(); |
46 | |
47 | virtual AliToyMCEvent* Generate(Double_t time) = 0; |
48 | |
bfad2b05 |
49 | Bool_t DistortTrack(AliToyMCTrack &trackIn, Double_t t0=0); |
1e62e876 |
50 | void MakeITSClusters(AliToyMCTrack &trackIn/*, Double_t t0*/); |
51 | void MakeTRDClusters(AliToyMCTrack &trackIn/*, Double_t t0*/); |
52 | void MakeTPCClusters(AliToyMCTrack &trackIn, Double_t t0); |
32438f4e |
53 | void CreateSpacePoints(AliToyMCTrack &trackIn, |
54 | AliTrackPointArray &arrUdist, |
55 | AliTrackPointArray &arrDist); |
e83fd282 |
56 | void SetPoint(Float_t xyz[3], Float_t sigmaY, Float_t sigmaZ, AliTrackPoint &point); |
32438f4e |
57 | void ConvertTrackPointsToLocalClusters(AliTrackPointArray &arrPoints, AliToyMCTrack &tr, Double_t t0, Int_t type); |
58 | Bool_t SetupCluster(AliTPCclusterMI &tempCl, Float_t xyz[3], Int_t sec, Double_t t0); |
59 | |
a1a695e5 |
60 | void SetOutputFileName(const char* file) { fOutputFileName=file; } |
61 | const char* GetOutputFileName() const { return fOutputFileName.Data(); } |
32438f4e |
62 | |
223d9e38 |
63 | void SetSpaceCharge(EEpsilon epsilon, EGasType gasType=kNeCO2_9010, ECollRate collRate=k50kHz, ECorrection corrType=kLookup); |
64 | void SetSpaceChargeFile(const char* file) { fCorrectionFile=file; } |
cd8ed0ac |
65 | |
32438f4e |
66 | Int_t GetSector(Float_t xyz[3]); |
d92b8630 |
67 | |
68 | void InitSpaceCharge(); |
69 | |
d1cf83f5 |
70 | void SetStepCorrection(Bool_t step=kTRUE) { fUseStepCorrection=step; } |
71 | Bool_t GetStepCorrection() const { return fUseStepCorrection; } |
72 | |
73 | void SetUseMaterialBudget(Bool_t use) { fUseMaterialBudget=use; } |
74 | Bool_t GetUseMaterialBudget() const { return fUseMaterialBudget; } |
0403120d |
75 | |
76 | void SetIsLaser(Bool_t use) { fIsLaser=use; } |
77 | Bool_t GetIsLaser() const { return fIsLaser; } |
2dd02504 |
78 | |
79 | void SetSCListFile(const char* file) { fSCListFile=file; } |
80 | const char* GetSCListFile() const { return fSCListFile.Data(); } |
81 | void SetPrereadSCList(Bool_t b) { fPrereadSCList=b; } |
82 | Bool_t GetPrereadSCList() const { return fPrereadSCList; } |
83 | Bool_t HasSCList() const { return fSCList!=0x0; } |
32438f4e |
84 | |
de0014b7 |
85 | protected: |
2dd02504 |
86 | AliTPCParam *fTPCParam; //! TPC params |
87 | AliToyMCEvent *fEvent; //! Toy event |
a1a695e5 |
88 | |
89 | Bool_t ConnectOutputFile(); |
90 | Bool_t CloseOutputFile(); |
91 | void FillTree(); |
2dd02504 |
92 | void IterateSC(Int_t ipos=-1); |
cd8ed0ac |
93 | |
223d9e38 |
94 | UInt_t fCurrentTrack; // unique track id within the current event generation |
95 | |
de0014b7 |
96 | |
97 | private: |
a1a695e5 |
98 | AliToyMCEventGenerator& operator= (const AliToyMCEventGenerator& ); |
99 | |
2dd02504 |
100 | AliTPCCorrection *fTPCCorrection; //! distortion correction |
101 | |
102 | TObjArray *fSCList; //! list with |
103 | TString fSCListFile; // file with a list of space charge files |
104 | TString fCorrectionFile; // name of a sinfle SC file |
105 | TString fOutputFileName; // name of the output file |
106 | TFile *fOutFile; //! output file |
107 | TTree *fOutTree; //! output tree |
a1a695e5 |
108 | |
2dd02504 |
109 | Bool_t fUseStepCorrection; // use integralDz method? |
110 | Bool_t fUseMaterialBudget; // use material budget in tracking? |
111 | Bool_t fIsLaser; // is a laser event? |
112 | Bool_t fPrereadSCList; // preread all SC files from the SC list |
d92b8630 |
113 | |
2dd02504 |
114 | void InitSpaceChargeList(); |
de0014b7 |
115 | |
116 | ClassDef(AliToyMCEventGenerator, 1) |
2dd02504 |
117 | |
de0014b7 |
118 | }; |
119 | |
120 | #endif |
121 | |