]>
Commit | Line | Data |
---|---|---|
76ce4b5b | 1 | //////////////////////////////////////////////////////////////////////////////// |
2 | // // | |
3 | // AliFemtoCutMonitorParticlePID - the cut monitor for particles to study // | |
4 | // various aspects of the PID determination // | |
5 | // // | |
6 | //////////////////////////////////////////////////////////////////////////////// | |
7 | #include "AliFemtoCutMonitorParticlePID.h" | |
8 | #include "AliFemtoModelHiddenInfo.h" | |
9 | #include <TH1D.h> | |
10 | #include <TH2D.h> | |
11 | #include <TList.h> | |
12 | #include <TMath.h> | |
13 | ||
14 | AliFemtoCutMonitorParticlePID::AliFemtoCutMonitorParticlePID(): | |
15 | fTPCdEdx(0), | |
16 | fTOFParticle(0), | |
17 | fTOFTime(0x0), | |
5b39ee58 | 18 | fTOFNSigma(0), |
19 | fTPCNSigma(0), | |
20 | fTPCTOFNSigma(0), | |
acc1ca78 | 21 | fTPCvsTOFNSigma(0), |
22 | fParticleOrigin(0), | |
23 | fParticleId(0) | |
76ce4b5b | 24 | { |
25 | // Default constructor | |
5b39ee58 | 26 | fTPCdEdx = new TH2D("TPCdEdx", "TPC dEdx vs. momentum", 100, 0.0, 5.0, 250, 0.0, 500.0); |
27 | fTOFTime = new TH2D("TOFTime", "TOF Time vs. momentum", 100, 0.1, 5.0, 400, -4000.0, 4000.0); | |
28 | fTOFNSigma = new TH2D("TOFNSigma","TOF NSigma vs. momentum", 100, 0.0, 5.0, 100, -5.0, 5.0); | |
29 | fTPCNSigma = new TH2D("TPCNSigma","TPC NSigma vs. momentum", 100, 0.0, 5.0, 100, -5.0, 5.0); | |
30 | fTPCTOFNSigma = new TH2D("TPCTOFNSigma","TPC & TOF NSigma vs. momentum", 100, 0.0, 5.0, 100, 0.0, 10.0); | |
31 | fTPCvsTOFNSigma = new TH2D("TPCvsTOFNSigma","TPC vs TOF Nsigma",100, -5.0, 5.0, 100, -5.0, 5.0); | |
acc1ca78 | 32 | fParticleOrigin = new TH1D("POrigin", "Mothers PDG Codes", 6000, 0.0, 6000.0); |
33 | fParticleId = new TH1D("PId", "Particle PDG Codes", 6000, 0.0, 6000.0); | |
ceeb8ab7 | 34 | |
76ce4b5b | 35 | } |
36 | ||
37 | AliFemtoCutMonitorParticlePID::AliFemtoCutMonitorParticlePID(const char *aName, Int_t aTOFParticle): | |
38 | AliFemtoCutMonitor(), | |
39 | fTPCdEdx(0), | |
40 | fTOFParticle(aTOFParticle), | |
41 | fTOFTime(0x0), | |
5b39ee58 | 42 | fTOFNSigma(0), |
43 | fTPCNSigma(0), | |
44 | fTPCTOFNSigma(0), | |
acc1ca78 | 45 | fTPCvsTOFNSigma(0), |
46 | fParticleOrigin(0), | |
47 | fParticleId(0) | |
76ce4b5b | 48 | { |
49 | // Normal constructor | |
50 | char name[200]; | |
51 | snprintf(name, 200, "TPCdEdx%s", aName); | |
5b39ee58 | 52 | // fTPCdEdx = new TH2D(name, "TPC dEdx vs. momentum", 100, 0.0, 6.0, 250, 0.0, 500.0); |
53 | fTPCdEdx = new TH2D(name, "TPC dEdx vs. momentum", 200, 0.1, 4.0, 250, 0.0, 500.0); | |
76ce4b5b | 54 | |
55 | snprintf(name, 200, "TOFTime%s", aName); | |
5b39ee58 | 56 | fTOFTime = new TH2D(name, "TOF Time vs. momentum", 100, 0.1, 5.0, 400, -4000.0, 4000.0); |
ceeb8ab7 | 57 | |
5b39ee58 | 58 | snprintf(name, 200, "TOFNSigma%s", aName); |
59 | fTOFNSigma = new TH2D(name,"TOF NSigma vs. momentum", 100, 0.0, 5.0, 100, -5.0, 5.0); | |
ceeb8ab7 | 60 | |
5b39ee58 | 61 | snprintf(name, 200, "TPCNSigma%s", aName); |
62 | fTPCNSigma = new TH2D(name,"TPC NSigma vs. momentum", 100, 0.0, 5.0, 100, -5.0, 5.0); | |
ceeb8ab7 | 63 | |
5b39ee58 | 64 | snprintf(name, 200, "TPCTOFNSigma%s", aName); |
65 | fTPCTOFNSigma = new TH2D(name,"TPC & TOF NSigma vs. momentum", 100, 0.0, 5.0, 100, 0.0, 10.0); | |
76ce4b5b | 66 | |
9ff091e3 | 67 | snprintf(name, 200, "TPCvsTOFNSigma%s", aName); |
68 | fTPCvsTOFNSigma = new TH2D(name,"TPC vs TOF Nsigma",100, -5.0, 5.0, 100, -5.0, 5.0); | |
acc1ca78 | 69 | |
70 | snprintf(name, 200, "POrigin%s", aName); | |
71 | fParticleOrigin = new TH1D(name, "Mothers PDG Codes", 6000, 0.0, 6000.0); | |
72 | ||
73 | snprintf(name, 200, "PId%s", aName); | |
74 | fParticleId = new TH1D(name, "Particle PDG Codes", 6000, 0.0, 6000.0); | |
76ce4b5b | 75 | } |
76 | ||
77 | AliFemtoCutMonitorParticlePID::AliFemtoCutMonitorParticlePID(const AliFemtoCutMonitorParticlePID &aCut): | |
78 | AliFemtoCutMonitor(), | |
79 | fTPCdEdx(0), | |
80 | fTOFParticle(0), | |
81 | fTOFTime(0x0), | |
5b39ee58 | 82 | fTOFNSigma(0), |
83 | fTPCNSigma(0), | |
84 | fTPCTOFNSigma(0), | |
acc1ca78 | 85 | fTPCvsTOFNSigma(0), |
86 | fParticleOrigin(0), | |
87 | fParticleId(0) | |
ceeb8ab7 | 88 | |
76ce4b5b | 89 | { |
90 | // copy constructor | |
91 | if (fTPCdEdx) delete fTPCdEdx; | |
92 | fTPCdEdx = new TH2D(*aCut.fTPCdEdx); | |
93 | ||
94 | if (fTOFTime) delete fTOFTime; | |
95 | fTOFTime = new TH2D(*aCut.fTOFTime); | |
96 | ||
5b39ee58 | 97 | if (fTOFNSigma) delete fTOFNSigma; |
98 | fTOFNSigma= new TH2D(*aCut.fTOFNSigma); | |
ceeb8ab7 | 99 | |
5b39ee58 | 100 | if (fTPCNSigma) delete fTPCNSigma; |
101 | fTPCNSigma= new TH2D(*aCut.fTPCNSigma); | |
ceeb8ab7 | 102 | |
5b39ee58 | 103 | if (fTPCTOFNSigma) delete fTPCTOFNSigma; |
104 | fTPCTOFNSigma= new TH2D(*aCut.fTPCTOFNSigma); | |
acc1ca78 | 105 | |
106 | if (fParticleOrigin) delete fParticleOrigin; | |
107 | fParticleOrigin= new TH1D(*aCut.fParticleOrigin); | |
108 | ||
109 | if (fParticleId) delete fParticleId; | |
110 | fParticleId= new TH1D(*aCut.fParticleId); | |
76ce4b5b | 111 | } |
112 | ||
113 | AliFemtoCutMonitorParticlePID::~AliFemtoCutMonitorParticlePID() | |
114 | { | |
115 | // Destructor | |
116 | delete fTPCdEdx; | |
117 | delete fTOFTime; | |
5b39ee58 | 118 | delete fTOFNSigma; |
119 | delete fTPCNSigma; | |
120 | delete fTPCTOFNSigma; | |
121 | delete fTPCvsTOFNSigma; | |
acc1ca78 | 122 | delete fParticleOrigin; |
123 | delete fParticleId; | |
ceeb8ab7 | 124 | |
76ce4b5b | 125 | } |
126 | ||
127 | AliFemtoCutMonitorParticlePID& AliFemtoCutMonitorParticlePID::operator=(const AliFemtoCutMonitorParticlePID& aCut) | |
128 | { | |
129 | // assignment operator | |
91bce940 | 130 | if (this == &aCut) |
76ce4b5b | 131 | return *this; |
132 | ||
133 | if (fTPCdEdx) delete fTPCdEdx; | |
134 | fTPCdEdx = new TH2D(*aCut.fTPCdEdx); | |
135 | ||
136 | if (fTOFTime) delete fTOFTime; | |
137 | fTOFTime = new TH2D(*aCut.fTOFTime); | |
91bce940 | 138 | |
5b39ee58 | 139 | if(fTOFNSigma) delete fTOFNSigma; |
140 | fTOFNSigma = new TH2D(*aCut.fTOFNSigma); | |
ceeb8ab7 | 141 | |
5b39ee58 | 142 | if(fTPCNSigma) delete fTPCNSigma; |
143 | fTPCNSigma = new TH2D(*aCut.fTPCNSigma); | |
ceeb8ab7 | 144 | |
5b39ee58 | 145 | if(fTPCTOFNSigma) delete fTPCTOFNSigma; |
146 | fTPCTOFNSigma = new TH2D(*aCut.fTPCTOFNSigma); | |
147 | ||
148 | if(fTPCvsTOFNSigma) delete fTPCvsTOFNSigma; | |
149 | fTPCvsTOFNSigma = new TH2D(*aCut.fTPCvsTOFNSigma); | |
ceeb8ab7 | 150 | |
acc1ca78 | 151 | if (fParticleOrigin) delete fParticleOrigin; |
152 | fParticleOrigin= new TH1D(*aCut.fParticleOrigin); | |
153 | ||
154 | if (fParticleId) delete fParticleId; | |
155 | fParticleId= new TH1D(*aCut.fParticleId); | |
156 | ||
76ce4b5b | 157 | return *this; |
158 | } | |
159 | ||
91bce940 | 160 | AliFemtoString AliFemtoCutMonitorParticlePID::Report(){ |
76ce4b5b | 161 | // Prepare report from the execution |
91bce940 | 162 | string stemp = "*** AliFemtoCutMonitorParticlePID report"; |
76ce4b5b | 163 | AliFemtoString returnThis = stemp; |
91bce940 | 164 | return returnThis; |
76ce4b5b | 165 | } |
166 | ||
167 | void AliFemtoCutMonitorParticlePID::Fill(const AliFemtoTrack* aTrack) | |
168 | { | |
169 | // Fill in the monitor histograms with the values from the current track | |
170 | float tMom = aTrack->P().Mag(); | |
171 | float tdEdx = aTrack->TPCsignal(); | |
172 | float tTOF = 0.0; | |
173 | // short tchg = aTrack->Charge(); | |
174 | if (fTOFParticle == 0) tTOF = aTrack->TOFpionTime(); | |
175 | if (fTOFParticle == 1) tTOF = aTrack->TOFkaonTime(); | |
176 | if (fTOFParticle == 2) tTOF = aTrack->TOFprotonTime(); | |
177 | ||
178 | fTPCdEdx->Fill(tMom, tdEdx); | |
179 | fTOFTime->Fill(tMom, tTOF); | |
180 | ||
acc1ca78 | 181 | AliFemtoModelHiddenInfo *tInfo = (AliFemtoModelHiddenInfo*)aTrack->GetHiddenInfo(); |
182 | if(tInfo!=NULL) { | |
183 | Int_t partID = TMath::Abs(tInfo->GetPDGPid()); | |
184 | Int_t motherID = TMath::Abs(tInfo->GetMotherPdgCode()); | |
185 | ||
186 | fParticleId->Fill(partID); | |
187 | fParticleOrigin->Fill(motherID); | |
188 | } | |
64536eaf | 189 | // float vp= aTrack->VTOF(); |
190 | // if (vp > 0.) { | |
191 | // fTOFTime->Fill(tMom, tTOF); | |
192 | // if (fTOFParticle == 0) fTOFNSigma->Fill(tMom, aTrack->NSigmaTOFPi()); | |
193 | // if (fTOFParticle == 1) fTOFNSigma->Fill(tMom, aTrack->NSigmaTOFK()); | |
194 | // if (fTOFParticle == 2) fTOFNSigma->Fill(tMom, aTrack->NSigmaTOFP()); | |
195 | // } | |
196 | ||
197 | if (fTOFParticle == 0) fTOFNSigma->Fill(tMom, aTrack->NSigmaTOFPi()); | |
198 | if (fTOFParticle == 1) fTOFNSigma->Fill(tMom, aTrack->NSigmaTOFK()); | |
199 | if (fTOFParticle == 2) fTOFNSigma->Fill(tMom, aTrack->NSigmaTOFP()); | |
ceeb8ab7 | 200 | |
201 | if (fTOFParticle == 0) fTPCNSigma->Fill(tMom, aTrack->NSigmaTPCPi()); | |
202 | if (fTOFParticle == 1) fTPCNSigma->Fill(tMom, aTrack->NSigmaTPCK()); | |
203 | if (fTOFParticle == 2) fTPCNSigma->Fill(tMom, aTrack->NSigmaTPCP()); | |
204 | ||
91bce940 | 205 | if (fTOFParticle == 0) fTPCTOFNSigma->Fill(tMom, TMath::Hypot( aTrack->NSigmaTPCPi(), aTrack->NSigmaTOFPi() ) ); |
206 | if (fTOFParticle == 1) fTPCTOFNSigma->Fill(tMom, TMath::Hypot( aTrack->NSigmaTPCK(), aTrack->NSigmaTOFK() ) ); | |
207 | if (fTOFParticle == 2) fTPCTOFNSigma->Fill(tMom, TMath::Hypot( aTrack->NSigmaTPCP(), aTrack->NSigmaTOFP() ) ); | |
ceeb8ab7 | 208 | |
9ff091e3 | 209 | if (fTOFParticle == 0) fTPCvsTOFNSigma->Fill(aTrack->NSigmaTPCPi(), aTrack->NSigmaTOFPi()); |
210 | if (fTOFParticle == 1) fTPCvsTOFNSigma->Fill(aTrack->NSigmaTPCK(), aTrack->NSigmaTOFK()); | |
211 | if (fTOFParticle == 2) fTPCvsTOFNSigma->Fill(aTrack->NSigmaTPCP(), aTrack->NSigmaTOFP()); | |
5b39ee58 | 212 | |
213 | ||
76ce4b5b | 214 | } |
215 | ||
216 | void AliFemtoCutMonitorParticlePID::Write() | |
217 | { | |
218 | // Write out the relevant histograms | |
219 | fTPCdEdx->Write(); | |
220 | fTOFTime->Write(); | |
5b39ee58 | 221 | fTOFNSigma->Write(); |
222 | fTPCNSigma->Write(); | |
223 | fTPCTOFNSigma->Write(); | |
224 | fTPCvsTOFNSigma->Write(); | |
acc1ca78 | 225 | fParticleId->Write(); |
226 | fParticleOrigin->Write(); | |
76ce4b5b | 227 | } |
228 | ||
229 | TList *AliFemtoCutMonitorParticlePID::GetOutputList() | |
230 | { | |
231 | TList *tOutputList = new TList(); | |
232 | tOutputList->Add(fTPCdEdx); | |
233 | tOutputList->Add(fTOFTime); | |
5b39ee58 | 234 | tOutputList->Add(fTOFNSigma); |
235 | tOutputList->Add(fTPCNSigma); | |
236 | tOutputList->Add(fTPCTOFNSigma); | |
237 | tOutputList->Add(fTPCvsTOFNSigma); | |
acc1ca78 | 238 | tOutputList->Add(fParticleId); |
239 | tOutputList->Add(fParticleOrigin); | |
ceeb8ab7 | 240 | |
76ce4b5b | 241 | return tOutputList; |
242 | } |