]>
Commit | Line | Data |
---|---|---|
30687e36 | 1 | /************************************************************************** |
2 | * Authors: Eftychios Cheiladakis, for his Master Thesis * | |
3 | * at the Physics Department of Athens University * | |
4 | * under the supervision of Prof. Martha Spyropoulou-Stassinaki * | |
5 | * * | |
6 | * Permission to use, copy, modify and distribute this software and its * | |
7 | * documentation strictly for non-commercial purposes is hereby granted * | |
8 | * without fee, provided that the above copyright notice appears in all * | |
9 | * copies and that both the copyright notice and this permission notice * | |
10 | * appear in the supporting documentation. The authors make no claims * | |
11 | * about the suitability of this software for any purpose. It is * | |
12 | * provided "as is" without express or implied warranty. * | |
13 | **************************************************************************/ | |
14 | ||
15 | //----------------------------------------------------------------- | |
16 | // AliAnalysisPionKinksESDMC class | |
17 | // Example of an analysis task for kink topology study | |
18 | // pions from kink topology are 'identified' in this code | |
19 | //----------------------------------------------------------------- | |
20 | ||
bd4be5f8 | 21 | #include "TCanvas.h" |
22 | #include "TVector3.h" | |
23 | #include "TLorentzVector.h" | |
24 | #include "TMath.h" | |
25 | #include "TF1.h" | |
26 | #include "TH1.h" | |
27 | #include "TH2.h" | |
28 | #include "TH3.h" | |
29 | #include "TList.h" | |
30 | #include "TParticle.h" | |
31 | ||
32 | #include "AliMCEvent.h" | |
33 | #include "AliVParticle.h" | |
34 | #include "AliMCParticle.h" | |
35 | #include "AliESDEvent.h" | |
36 | #include "AliESDkink.h" | |
37 | #include "AliESDpid.h" | |
38 | #include "AliPID.h" | |
39 | #include "AliStack.h" | |
40 | ||
41 | #include "AliAnalysisTask.h" | |
42 | #include "AliInputEventHandler.h" | |
43 | #include "AliESDInputHandler.h" | |
44 | #include "AliPIDResponse.h" | |
45 | #include "AliAnalysisManager.h" | |
46 | #include "AliMCEventHandler.h" | |
47 | #include "AliESDtrackCuts.h" | |
48 | ||
49 | #include "AliAnalysisPionKinksMCESD.h" | |
50 | ||
51 | ClassImp(AliAnalysisPionKinksMCESD) | |
52 | ||
53 | //________________________________________________________________________ | |
54 | AliAnalysisPionKinksMCESD::AliAnalysisPionKinksMCESD(const char *name) | |
55 | :AliAnalysisTaskSE(name), | |
56 | fMaxKinkAngKmu(0), | |
57 | fMaxKinkAngPimu(0), //functions | |
58 | hMCMult(0), | |
59 | hMCMultPrim(0), | |
60 | hMCPtAll(0), | |
61 | hMCEtaAll(0), | |
62 | hMCPtPrim(0), | |
63 | hMCEtaPrim(0), | |
64 | hMCPt(0), | |
65 | hMCEta(0), | |
66 | hMCPdg(0), | |
67 | hMCMultPiPlus(0), | |
68 | hMCPtPiPlus(0), | |
69 | hMCEtaPiPlus(0), | |
70 | hMCRapidityPiPlus(0), | |
71 | hMCNDaughtersPlus(0), | |
72 | hMCRadPiDauPlus(0), | |
73 | hMCKinkPosZPlus(0), | |
74 | hMCUIDPiDauPlus(0), | |
75 | hMCPdgPiNonDecayedPlus(0), | |
76 | hMCPdgPiDauPlus(0), | |
77 | hMCQtPlus(0), | |
78 | hMCKinkAnglePlus(0), | |
79 | hMCPKinkAngPlus(0), | |
80 | hMCPdgCodemdPlus(0), | |
81 | hMCPtmdPlus(0), | |
82 | hMCPtPimuonPlus(0), | |
83 | hMCEtaPimuonPlus(0), | |
84 | hMCRapidityPimuonPlus(0), | |
85 | hMCQtPimuonPlus(0), | |
86 | hMCPKinkAngPimuonPlus(0), | |
87 | hMCPtPiotherPlus(0), | |
88 | hMCEtaPiotherPlus(0), | |
89 | hMCRapidityPiotherPlus(0), | |
90 | hMCQtPiotherPlus(0), | |
91 | hMCPKinkAngPiotherPlus(0), | |
92 | hMCMultPiMinus(0), | |
93 | hMCPtPiMinus(0), | |
94 | hMCEtaPiMinus(0), | |
95 | hMCRapidityPiMinus(0), | |
96 | hMCNDaughtersMinus(0), | |
97 | hMCRadPiDauMinus(0), | |
98 | hMCKinkPosZMinus(0), | |
99 | hMCUIDPiDauMinus(0), | |
100 | hMCPdgPiNonDecayedMinus(0), | |
101 | hMCPdgPiDauMinus(0), | |
102 | hMCQtMinus(0), | |
103 | hMCKinkAngleMinus(0), | |
104 | hMCPKinkAngMinus(0), | |
105 | hMCPdgCodemdMinus(0), | |
106 | hMCPtmdMinus(0), | |
107 | hMCPtPimuonMinus(0), | |
108 | hMCEtaPimuonMinus(0), | |
109 | hMCRapidityPimuonMinus(0), | |
110 | hMCQtPimuonMinus(0), | |
111 | hMCPKinkAngPimuonMinus(0), | |
112 | hMCPtPiotherMinus(0), | |
113 | hMCEtaPiotherMinus(0), | |
114 | hMCRapidityPiotherMinus(0), | |
115 | hMCQtPiotherMinus(0), | |
116 | hMCPKinkAngPiotherMinus(0),//MC histograms | |
117 | hMult(0), | |
118 | hAcceptedMult(0), | |
119 | hMultPS(0), | |
120 | hvtx(0), | |
121 | hvtxy(0), | |
122 | hvtyz(0), | |
123 | hvtxz(0), | |
124 | hMultPSV(0), | |
125 | hPtAll(0), | |
126 | hEtaAll(0), | |
127 | hTrackPos(0), | |
128 | hTrackPosxy(0), | |
129 | hTrackPosyz(0), | |
130 | hTrackPosxz(0), | |
131 | //hTPCchi2clusters(0), | |
132 | //hdcaToVertexXY(0), | |
133 | //hdcaToVertexZ(0), | |
134 | hMultPrim(0), | |
135 | hPtPrim(0), | |
136 | hEtaPrim(0), | |
137 | hPrimTrackPos(0), | |
138 | hPrimTrackPosxy(0), | |
139 | hPrimTrackPosyz(0), | |
140 | hPrimTrackPosxz(0), | |
141 | hPt(0), | |
142 | hEta(0), | |
143 | //hRapidity(0), | |
144 | hPtKink(0), | |
145 | hEtaKink(0), | |
146 | hRapidityKink(0), | |
147 | hPmP(0), | |
148 | hKinkPosRTPCclusters1(0), | |
149 | hKinkPosRTPCclusters2(0), | |
150 | hQt(0), | |
151 | hKinkAngle(0), | |
152 | hDCAkink(0), | |
153 | hPmKinkAng(0), | |
154 | hKinkPosXY(0), | |
155 | hKinkPosZY(0), | |
156 | hKinkPosZR(0), | |
157 | hKinkPosR(0), | |
158 | hKinkPosZ(0), | |
159 | hKinkPosZMCKinkPosZ(0), | |
160 | hPdgCodemd(0), | |
161 | hPmd(0), | |
162 | hMinvPimu(0), | |
163 | hUIDKinkDau(0), | |
164 | hdEdx(0), | |
165 | hPtKinkFake(0), | |
166 | hEtaKinkFake(0), | |
167 | hRapidityKinkFake(0), | |
168 | hPmPFake(0), | |
169 | hKinkPosRTPCclusters1Fake(0), | |
170 | hKinkPosRTPCclusters2Fake(0), | |
171 | hQtFake(0), | |
172 | hKinkAngleFake(0), | |
173 | hDCAkinkFake(0), | |
174 | hPmKinkAngFake(0), | |
175 | hKinkPosXYFake(0), | |
176 | hKinkPosZYFake(0), | |
177 | hKinkPosZRFake(0), | |
178 | hKinkPosRFake(0), | |
179 | hKinkPosZFake(0), | |
180 | hKinkPosZMCKinkPosZFake(0), | |
181 | hPdgCodemdFake(0), | |
182 | hPmdFake(0), | |
183 | hMinvPimuFake(0), | |
184 | hUIDKinkDauFake(0), | |
185 | hdEdxFake(0), | |
186 | hPtPosRSelected(0), | |
187 | hPdgCodemdZRejected(0), | |
188 | hPtZSelected(0), | |
189 | hPdgCodemdAngRejected(0), | |
190 | hPtAngSelected(0), | |
191 | hPdgCodemdPmRejected(0), | |
192 | hPtPmSelected(0), | |
193 | hPdgCodemdQtLowRejected(0), | |
194 | hPtGoodKink(0), | |
195 | hEtaGoodKink(0), | |
196 | hRapidityGoodKink(0), | |
197 | hQtGoodKink(0), | |
198 | hPmGoodKinkAng(0), | |
199 | hPdgCodemdGoodKink(0), | |
200 | hPmdGoodKink(0), | |
201 | hUIDGoodKinkDau(0), | |
202 | hdEdxGoodKink(0), | |
203 | hUIDPiDauPlus(0), | |
204 | hMultPiPlus(0), | |
205 | hPtPiPlus(0), | |
206 | hEtaPiPlus(0), | |
207 | hRapidityPiPlus(0), | |
208 | hQtPiPlus(0), | |
209 | hKinkAnglePiPlus(0), | |
210 | hPmKinkAngPiPlus(0), | |
211 | hKinkPosXYPiPlus(0), | |
212 | hKinkPosZRPiPlus(0), | |
213 | hKinkPosRPiPlus(0), | |
214 | hDCAkinkPiPlus(0), | |
215 | hPdgCodemdPiPlus(0), | |
216 | hPmdPiPlus(0), | |
217 | hdEdxPiPlus(0), | |
218 | hQtPimuPlus(0), | |
219 | hPmKinkAngPimuPlus(0), | |
220 | hQtPiotherPlus(0), | |
221 | hPmKinkAngPiotherPlus(0), | |
222 | hPdgCodemdPiotherPlus(0), | |
223 | hUIDPiDauMinus(0), | |
224 | hMultPiMinus(0), | |
225 | hPtPiMinus(0), | |
226 | hEtaPiMinus(0), | |
227 | hRapidityPiMinus(0), | |
228 | hQtPiMinus(0), | |
229 | hKinkAnglePiMinus(0), | |
230 | hPmKinkAngPiMinus(0), | |
231 | hKinkPosXYPiMinus(0), | |
232 | hKinkPosZRPiMinus(0), | |
233 | hKinkPosRPiMinus(0), | |
234 | hDCAkinkPiMinus(0), | |
235 | hPdgCodemdPiMinus(0), | |
236 | hPmdPiMinus(0), | |
237 | hdEdxPiMinus(0), | |
238 | hQtPimuMinus(0), | |
239 | hPmKinkAngPimuMinus(0), | |
240 | hQtPiotherMinus(0), | |
241 | hPmKinkAngPiotherMinus(0), | |
242 | hPdgCodemdPiotherMinus(0), | |
243 | hPdgCodemdQtRejected(0), | |
244 | hPtQtSelected(0), | |
245 | hPdgCodemdMaxAngRejected(0), | |
246 | hPtMaxAngSelected(0), | |
247 | hPdgCodemdRTPCclustersRejected(0), | |
248 | hPtRTPCclustersSelected(0), | |
249 | hRTPCclustersRTPCclustersSelected(0), | |
250 | hPdgCodemdMinvRejected(0), | |
251 | hPtSelected(0), | |
252 | hEtaSelected(0), | |
253 | hRapiditySelected(0), | |
254 | hQtSelected(0), | |
255 | hKinkAngleSelected(0), | |
256 | hDCAkinkSelected(0), | |
257 | hPmKinkAngSelected(0), | |
258 | hKinkPosXYSelected(0), | |
259 | hKinkPosZRSelected(0), | |
260 | hKinkPosRSelected(0), | |
261 | hPdgCodemdSelected(0), | |
262 | hPmdSelected(0), | |
263 | hMinvPimuSelected(0), | |
264 | hUIDKinkDauSelected(0), | |
265 | hdEdxSelected(0), | |
266 | hPtSelectedFake(0), | |
267 | hEtaSelectedFake(0), | |
268 | hRapiditySelectedFake(0), | |
269 | hQtSelectedFake(0), | |
270 | hKinkAngleSelectedFake(0), | |
271 | hDCAkinkSelectedFake(0), | |
272 | hPmKinkAngSelectedFake(0), | |
273 | hKinkPosXYSelectedFake(0), | |
274 | hKinkPosZRSelectedFake(0), | |
275 | hKinkPosRSelectedFake(0), | |
276 | hPmdSelectedFake(0), | |
277 | hMinvPimuSelectedFake(0), | |
278 | hdEdxSelectedFake(0), | |
279 | hPdgCodemddEdxRejected(0), | |
280 | hPtPiSelected(0), | |
281 | hEtaPiSelected(0), | |
282 | hRapidityPiSelected(0), | |
283 | hQtPiSelected(0), | |
284 | hKinkAnglePiSelected(0), | |
285 | hDCAkinkPiSelected(0), | |
286 | hPmKinkAngPiSelected(0), | |
287 | hKinkPosRTPCclusters1PiSelected(0), | |
288 | hKinkPosRTPCclusters2PiSelected(0), | |
289 | hKinkPosXYPiSelected(0), | |
290 | hKinkPosZRPiSelected(0), | |
291 | hKinkPosRPiSelected(0), | |
292 | hKinkPosZPiSelected(0), | |
293 | hPmPPiSelected(0), | |
294 | hPdgCodemdPiSelected(0), | |
295 | hPmdPiSelected(0), | |
296 | hMinvPimuPiSelected(0), | |
297 | hUIDKinkDauPiSelected(0), | |
298 | hdEdxPiSelected(0), | |
299 | hPtPiSelectedPlus(0), | |
300 | hEtaPiSelectedPlus(0), | |
301 | hRapidityPiSelectedPlus(0), | |
302 | hQtPiSelectedPlus(0), | |
303 | hKinkAnglePiSelectedPlus(0), | |
304 | hDCAkinkPiSelectedPlus(0), | |
305 | hPmKinkAngPiSelectedPlus(0), | |
306 | hKinkPosXYPiSelectedPlus(0), | |
307 | hKinkPosZRPiSelectedPlus(0), | |
308 | hPdgCodemdPiSelectedPlus(0), | |
309 | hPmdPiSelectedPlus(0), | |
310 | hMinvPimuPiSelectedPlus(0), | |
311 | hUIDPiDaumuSelectedPlus(0), | |
312 | hdEdxPiSelectedPlus(0), | |
313 | hPtPrimPiKinksPlus(0), | |
314 | hEtaPrimPiKinksPlus(0), | |
315 | hRapidityPrimPiKinksPlus(0), | |
316 | hPtSecondPiKinksPlus(0), | |
317 | hEtaSecondPiKinksPlus(0), | |
318 | hRapiditySecondPiKinksPlus(0), | |
319 | hPtNonPiKinksPlus(0), | |
320 | hEtaNonPiKinksPlus(0), | |
321 | hRapidityNonPiKinksPlus(0), | |
322 | hPdgCodemdNonPiKinksPlus(0), | |
323 | hPtPiSelectedMinus(0), | |
324 | hEtaPiSelectedMinus(0), | |
325 | hRapidityPiSelectedMinus(0), | |
326 | hQtPiSelectedMinus(0), | |
327 | hKinkAnglePiSelectedMinus(0), | |
328 | hDCAkinkPiSelectedMinus(0), | |
329 | hPmKinkAngPiSelectedMinus(0), | |
330 | hKinkPosXYPiSelectedMinus(0), | |
331 | hKinkPosZRPiSelectedMinus(0), | |
332 | hPdgCodemdPiSelectedMinus(0), | |
333 | hPmdPiSelectedMinus(0), | |
334 | hMinvPimuPiSelectedMinus(0), | |
335 | hUIDPiDaumuSelectedMinus(0), | |
336 | hdEdxPiSelectedMinus(0), | |
337 | hPtPrimPiKinksMinus(0), | |
338 | hEtaPrimPiKinksMinus(0), | |
339 | hRapidityPrimPiKinksMinus(0), | |
340 | hPtSecondPiKinksMinus(0), | |
341 | hEtaSecondPiKinksMinus(0), | |
342 | hRapiditySecondPiKinksMinus(0), | |
343 | hPtNonPiKinksMinus(0), | |
344 | hEtaNonPiKinksMinus(0), | |
345 | hRapidityNonPiKinksMinus(0), | |
346 | hPdgCodemdNonPiKinksMinus(0),// reconstruction histograms | |
347 | fListOfHistos(0), | |
348 | fLowMulcut(-1), fUpMulcut(-1), | |
349 | cLowPt(0), cRapidityLim(0), | |
350 | cLowR(0), cUpR(0), | |
351 | cLowZ(0), cUpZ(0), | |
352 | cLowKinkAngle(0), | |
353 | cLowQt(0), cUpQt(0), | |
354 | cLowInvMass(0), cUpInvMass(0), | |
355 | cSigmaCut(0), | |
356 | cPdgKaon(321), cPdgPion(211), cPdgMuon(13), cPdgElectron(11), | |
357 | cKaonMass(0), cPionMass(0), cMuonMass(0), cElectronMass(0), | |
358 | nBinsMult(0), hLowMult(0), hUpMult(0), | |
359 | nBinsPt(0), hLowPt(0), hUpPt(0), | |
360 | nBinsEta(0), hLowEta(0), hUpEta(0), | |
361 | nBinsQt(0), hLowQt(0), hUpQt(0), | |
362 | nBinsPdg(0), hLowPdg(0), hUpPdg(0), | |
363 | nBinsPdg2(0), hLowPdg2(0), hUpPdg2(0), | |
364 | nBinsUID(0), hLowUID(0), hUpUID(0), | |
365 | nBinsR(0), hLowR(0), hUpR(0), | |
366 | nBinsZ(0), hLowZ(0), hUpZ(0), | |
367 | nBinsXY(0), hLowXY(0), hUpXY(0), | |
368 | nBinsAngle(0), hLowAngle(0), hUpAngle(0), | |
369 | nBinsZV(0), hLowZV(0), hUpZV(0), | |
370 | nBinsXYV(0), hLowXYV(0), hUpXYV(0), | |
371 | nBinsInvMass(0), hLowInvMass(0), hUpInvMass(0), | |
372 | nBinsdEdx(0), hLowdEdx(0), hUpdEdx(0), fPIDResponse(0), | |
373 | fMaxDCAtoVtxCut(0), fTrackCuts(0) | |
374 | ||
375 | { | |
376 | //Multiplicity bins | |
377 | fMaxDCAtoVtxCut=new AliESDtrackCuts("fMaxDCAtoVtxCut","fMaxDCAtoVtxCut"); | |
378 | fMaxDCAtoVtxCut->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01"); | |
379 | fMaxDCAtoVtxCut->SetMaxChi2TPCConstrainedGlobal(36); | |
380 | ||
381 | fTrackCuts = new AliESDtrackCuts("Multiplicity bins","Multiplicity bins"); | |
382 | fTrackCuts->SetMinNClustersTPC(70); | |
383 | fTrackCuts->SetMaxChi2PerClusterTPC(4); | |
384 | fTrackCuts->SetAcceptKinkDaughters(kFALSE); | |
385 | fTrackCuts->SetRequireTPCRefit(kTRUE); | |
386 | fTrackCuts->SetRequireITSRefit(kTRUE); | |
387 | fTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny); | |
388 | fTrackCuts->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01"); | |
389 | fTrackCuts->SetMaxDCAToVertexZ(2); | |
390 | fTrackCuts->SetDCAToVertex2D(kFALSE); | |
391 | fTrackCuts->SetRequireSigmaToVertex(kFALSE); | |
392 | fTrackCuts->SetEtaRange(-0.8,+0.8); | |
393 | fTrackCuts->SetPtRange(0.15, 1e10); | |
394 | ||
395 | //DefineOutput(0, TList::Class()); | |
396 | DefineOutput(1, TList::Class()); | |
397 | } | |
398 | ||
399 | //________________________________________________________________________ | |
400 | void AliAnalysisPionKinksMCESD::UserCreateOutputObjects() { | |
401 | fListOfHistos=new TList(); | |
402 | ||
403 | //maximum kink angle for kaons to muons | |
404 | fMaxKinkAngKmu=new TF1("fMaxKinkAngKmu","((atan([0]*[1]*(1.0/(sqrt((x^2)*(1.0-([1]^2))-([0]^2)*([1]^2))))))*180.)/[2]",1.1,10.0); | |
405 | fMaxKinkAngKmu->SetParameter(0,cKaonMass); | |
406 | fMaxKinkAngKmu->SetParameter(1,0.9127037); | |
407 | fMaxKinkAngKmu->SetParameter(2,TMath::Pi()); | |
408 | ||
409 | //maximum kink angle for pions to muons | |
410 | fMaxKinkAngPimu=new TF1("fMaxKinkAngPimu","((atan([0]*[1]*(1.0/(sqrt((x^2)*(1.0-([1]^2))-([0]^2)*([1]^2))))))*180.)/[2]",0.1,10.0); | |
411 | fMaxKinkAngPimu->SetParameter(0,cPionMass); | |
412 | fMaxKinkAngPimu->SetParameter(1,0.2731374); | |
413 | fMaxKinkAngPimu->SetParameter(2,TMath::Pi()); | |
414 | ||
415 | //Create histograms | |
416 | TH1::SetDefaultSumw2(); | |
417 | TH2::SetDefaultSumw2(); | |
418 | ||
419 | //MC histograms | |
420 | hMCMult = new TH1F("hMCMult", "MC multiplicity; Number of tracks; Number of events", 100, 0.0, 2000); | |
421 | hMCMultPrim = new TH1F("hMCMultPrim", "MC primary tracks multiplicity; Number of tracks; Number of events", nBinsMult, hLowMult, hUpMult); | |
422 | hMCPtAll = new TH1F("hMCPtAll", "Transverse momentum of all MC tracks; p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
423 | hMCEtaAll = new TH1F("hMCEtaAll", "Pseudorapidity of all MC tracks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
424 | hMCPtPrim = new TH1F("hMCPtPrim", "Transverse momentum of primary MC tracks; p_{T} (GeV/c); dN/dp_{T}",nBinsPt, hLowPt, hUpPt); | |
425 | hMCEtaPrim = new TH1F("hMCEtaPrim", "Pseudorapidity of primary MC tracks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
426 | hMCPt = new TH1F("hMCPt", "Transverse momentum of selected MC tracks; p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
427 | hMCEta = new TH1F("hMCEta", "Pseudorapidity of selected MC tracks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
428 | hMCPdg = new TH1F("hMCPdg", "Pdg code of selected MC tracks; Pdg code; Number of particles", nBinsPdg, hLowPdg, hUpPdg); | |
429 | hMCMultPiPlus = new TH1F("hMCMultPiPlus", "MC pion multiplicity; Number of pion tracks; Number of events", nBinsMult, hLowMult, hUpMult); | |
430 | hMCPtPiPlus = new TH1F("hMCPtPiPlus", "Transverse momentum of selected MC pions; p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
431 | hMCEtaPiPlus = new TH1F("hMCEtaPiPlus", "Pseudorapidity of selected MC piaons; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
432 | hMCRapidityPiPlus = new TH1F("hMCRapidityPiPlus", "Pseudorapidity of selected MC pions; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
433 | hMCNDaughtersPlus = new TH1F("hMCNDaughtersPlus", "Number of daughters; number of daughers; number of pions", 10,0,10); | |
434 | hMCRadPiDauPlus = new TH1F("hMCRadPiDauPlus", "Radius of MC daughter generation position; R (cm); dN/dR", nBinsR, hLowR, hUpR); | |
435 | hMCKinkPosZPlus = new TH1F("hMCKinkPosZPlus", "z position of MC daughter generation vertex; z (cm); dN/dz", 100, 0.0, 500.0); | |
436 | hMCUIDPiDauPlus = new TH1F("hMCUIDPiDauPlus", "UID (method of production) of MC pion daughters; UID (method of production); Number of particles", 21, 0.0, 20); | |
437 | hMCPdgPiNonDecayedPlus = new TH1F("hMCPdgPiNonDecayedPlus", "Pdg code of MC pion non-decayed products; Pdg code; Number of particles", nBinsPdg, hLowPdg, hUpPdg); | |
438 | hMCPdgPiDauPlus = new TH1F("hMCPdgPiDauPlus", "Pdg code of MC pion daughters; Pdg code; Number of particles", nBinsPdg, hLowPdg, hUpPdg); | |
439 | hMCQtPlus = new TH1F("hMCQtPlus", "Daughter's transverse momentum in mother's frame for MC pion daughters; q_{T} (GeV/c); dN/dq_{T}", nBinsQt, hLowQt, hUpQt); | |
440 | hMCKinkAnglePlus = new TH1F("hMCKinkAnglePlus", "MC angle between pion mother's and daughter's momentum; #theta (#circ); dN/d#theta", nBinsAngle, hLowAngle, hUpAngle); | |
441 | hMCPKinkAngPlus = new TH2F("hMCPKinkAngPlus", "MC mother's P vs kink angle; P (GeV/c); #theta (#circ); dN/d#theta", nBinsPt, hLowPt, hUpPt, nBinsAngle, hLowAngle, hUpAngle); | |
442 | hMCPdgCodemdPlus = new TH2F("hMCPdgCodemdPlus", "MC mother vs daughter pdg code; Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
443 | hMCPtmdPlus = new TH2F("hMCPtmdPlus", "MC mother vs daughter transverse momentum; Mother's p_{T} (GeV/c); Daughter's p_{T} (GeV/c)", nBinsPt, hLowPt, hUpPt, nBinsPt, hLowPt, hUpPt); | |
444 | hMCPtPimuonPlus = new TH1F("hMCPtPimuonPlus", "Transverse momentum of selected pions MC decaying to muons; p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
445 | hMCEtaPimuonPlus = new TH1F("hMCEtaPimuonPlus", "Pseudorapidity; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
446 | hMCRapidityPimuonPlus = new TH1F("hMCRapidityPimuonPlus", "Rapidity of selected MC tracks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
447 | hMCQtPimuonPlus = new TH1F("hMCQtPimuonPlus", "MC daughter's (muon) transverse momentum in mother's (pion) frame; q_{T} (GeV/c); dN/dq_{T}", nBinsQt, hLowQt, hUpQt); | |
448 | hMCPKinkAngPimuonPlus = new TH1F("hMCPKinkAngPimuonPlus", "MC angle between pion mother's and muon daughter's momentum; #theta (#circ); dN/d#theta", nBinsAngle, hLowAngle, hUpAngle); | |
449 | hMCPtPiotherPlus = new TH1F("hMCPtPiotherPlus", "Transverse momentum of selected pions MC not decaying to muons; p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
450 | hMCEtaPiotherPlus = new TH1F("hMCEtaPiotherPlus", "Pseudorapidity; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
451 | hMCRapidityPiotherPlus = new TH1F("hMCRapidityPiotherPlus", "Rapidity of selected MC tracks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
452 | hMCQtPiotherPlus = new TH1F("hMCQtPiotherPlus", "MC daughter's (muon) transverse momentum in mother's (pion) frame; q_{T} (GeV/c); dN/dq_{T}", nBinsQt, hLowQt, hUpQt); | |
453 | hMCPKinkAngPiotherPlus = new TH1F("hMCPKinkAngPiotherPlus", "MC angle between pion mother's and non-muon daughter's momentum; #theta (#circ); dN/d#theta", nBinsAngle, hLowAngle, hUpAngle); | |
454 | hMCMultPiMinus = new TH1F("hMCMultPiMinus", "MC pion multiplicity; Number of pion tracks; Number of events", nBinsMult, hLowMult, hUpMult); | |
455 | hMCPtPiMinus = new TH1F("hMCPtPiMinus", "Transverse momentum of selected MC pions; p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
456 | hMCEtaPiMinus = new TH1F("hMCEtaPiMinus", "Pseudorapidity of selected MC pions; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
457 | hMCRapidityPiMinus = new TH1F("hMCRapidityPiMinus", "Pseudorapidity of selected MC pions; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
458 | hMCNDaughtersMinus = new TH1F("hMCNDaughtersMinus", "Number of daughters; number of daughers; number of pions", 10,0,10); | |
459 | hMCRadPiDauMinus = new TH1F("hMCRadPiDauMinus", "Radius of MC daughter generation position; R (cm); dN/dR", nBinsR, hLowR, hUpR); | |
460 | hMCKinkPosZMinus = new TH1F("hMCKinkPosZMinus", "z position of MC daughter generation vertex; z (cm); dN/dz", 100, 0.0, 500.0); | |
461 | hMCUIDPiDauMinus = new TH1F("hMCUIDPiDauMinus", "UID (method of production) of MC pion daughters; UID (method of production); Number of particles", 21, 0.0, 20); | |
462 | hMCPdgPiNonDecayedMinus = new TH1F("hMCPdgPiNonDecayedMinus", "Pdg code of MC pion non-decayed products; Pdg code; Number of particles", nBinsPdg, hLowPdg, hUpPdg); | |
463 | hMCPdgPiDauMinus = new TH1F("hMCPdgPiDauMinus", "Pdg code of MC pion daughters; Pdg code; Number of particles", nBinsPdg, hLowPdg, hUpPdg); | |
464 | hMCQtMinus = new TH1F("hMCQtMinus", "Daughter's transverse momentum in mother's frame for MC pion daughters; q_{T} (GeV/c); dN/dq_{T}", nBinsQt, hLowQt, hUpQt); | |
465 | hMCKinkAngleMinus = new TH1F("hMCKinkAngleMinus", "MC angle between pion mother's and daughter's momentum; #theta (#circ); dN/d#theta", nBinsAngle, hLowAngle, hUpAngle); | |
466 | hMCPKinkAngMinus = new TH2F("hMCPKinkAngMinus", "MC mother's P vs kink angle; P (GeV/c); #theta (#circ); dN/d#theta", nBinsPt, hLowPt, hUpPt, nBinsAngle, hLowAngle, hUpAngle); | |
467 | hMCPdgCodemdMinus = new TH2F("hMCPdgCodemdMinus", "MC mother vs daughter pdg code; Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
468 | hMCPtmdMinus = new TH2F("hMCPtmdMinus", "MC mother vs daughter transverse momentum; Mother's p_{T} (GeV/c); Daughter's p_{T} (GeV/c)", nBinsPt, hLowPt, hUpPt, nBinsPt, hLowPt, hUpPt); | |
469 | hMCPtPimuonMinus = new TH1F("hMCPtPimuonMinus", "Transverse momentum of selected pions MC decaying to muons; p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
470 | hMCEtaPimuonMinus = new TH1F("hMCEtaPimuonMinus", "Pseudorapidity; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
471 | hMCRapidityPimuonMinus = new TH1F("hMCRapidityPimuonMinus", "Rapidity of selected MC tracks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
472 | hMCQtPimuonMinus = new TH1F("hMCQtPimuonMinus", "MC daughter's (muon) transverse momentum in mother's (pion) frame; q_{T} (GeV/c); dN/dq_{T}", nBinsQt, hLowQt, hUpQt); | |
473 | hMCPKinkAngPimuonMinus = new TH1F("hMCPKinkAngPimuonMinus", "MC angle betweenpion mother's and muon daughter's momentum; #theta (#circ); dN/d#theta", nBinsAngle, hLowAngle, hUpAngle); | |
474 | hMCPtPiotherMinus = new TH1F("hMCPtPiotherMinus", "Transverse momentum of selected pions MC not decaying to muons; p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
475 | hMCEtaPiotherMinus = new TH1F("hMCEtaPiotherMinus", "Pseudorapidity; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
476 | hMCRapidityPiotherMinus = new TH1F("hMCRapidityPiotherMinus", "Rapidity of selected MC tracks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
477 | hMCQtPiotherMinus = new TH1F("hMCQtPiotherMinus", "MC daughter's (muon) transverse momentum in mother's (pion) frame; q_{T} (GeV/c); dN/dq_{T}", nBinsQt, hLowQt, hUpQt); | |
478 | hMCPKinkAngPiotherMinus = new TH1F("hMCPKinkAngPiotherMinus", "MC angle betweenpion mother's and non-muon daughter's momentum; #theta (#circ); dN/d#theta", nBinsAngle, hLowAngle, hUpAngle); | |
479 | ||
480 | ||
481 | //Reconstruction histograms | |
482 | hMult = new TH1F("hMult", "Multiplicity (unbiased); Number of tracks; Number of events", nBinsMult, hLowMult, hUpMult); | |
483 | hAcceptedMult = new TH1F("hAcceptedMult", "Multiplicity (biased); Number of tracks; Number of events", nBinsMult, hLowMult, hUpMult); | |
484 | hMultPS = new TH1F("hMultPS", "Multiplicity after physics selection; Number of tracks; Number of events", nBinsMult, hLowMult, hUpMult); | |
485 | hvtx = new TH3F("hvtx", "Reconstructed primary vertex position; x axis; y axis; z axis", nBinsXYV, hLowXYV, hUpXYV, nBinsXYV, hLowXYV, hUpXYV, nBinsZV, hLowZV, hUpZV); | |
486 | hvtxy = new TH2F("hvtxy", "Reconstructed primary vertex position in x-y plane; x axis; y axis", nBinsXYV, hLowXYV, hUpXYV, nBinsXYV, hLowXYV, hUpXYV); | |
487 | hvtyz = new TH2F("hvtyz", "Reconstructed primary vertex position in y-z plane; y axis; z axis", nBinsXYV, hLowXYV, hUpXYV, nBinsZV, hLowZV, hUpZV); | |
488 | hvtxz = new TH2F("hvtxz", "Reconstructed primary vertex position in x-z plane; x axis; z axis", nBinsXYV, hLowXYV, hUpXYV, nBinsZV, hLowZV, hUpZV); | |
489 | hMultPSV = new TH1F("hMultPSV", "Multiplicity after physics selection & vertex cut; Number of tracks; Number of events", nBinsMult, hLowMult, hUpMult); | |
490 | hPtAll = new TH1F("hPtAll", "Transverse momentum of all tracks; p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
491 | hEtaAll = new TH1F("hEtaAll", "Pseudorapidity of all tracks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
492 | hTrackPos = new TH3F("hTrackPos", "Generetion position of all reconstructed tracks", nBinsXYV, hLowXYV, hUpXYV, nBinsXYV, hLowXYV, hUpXYV, nBinsZV, hLowZV, hUpZV); | |
493 | hTrackPosxy = new TH2F("hTrackPosxy", "Generetion position of all reconstructed tracks in x-y plane; x axis; y axis", nBinsXYV, hLowXYV, hUpXYV, nBinsXYV, hLowXYV, hUpXYV); | |
494 | hTrackPosyz = new TH2F("hTrackPosyz", "Generetion position of all reconstructed tracks in y-z plane; y axis; z axis", nBinsXYV, hLowXYV, hUpXYV, nBinsZV, hLowZV, hUpZV); | |
495 | hTrackPosxz = new TH2F("hTrackPosxz", "Generetion position of all reconstructed tracks in x-z plane; x axis; z axis", nBinsXYV, hLowXYV, hUpXYV, nBinsZV, hLowZV, hUpZV); | |
496 | //hTPCchi2clusters = new TH1F("hTPCchi2clusters", "#chi^{2}/Number of TPC clusters; #chi^{2}; TPC clusters)", 100, 0.0, 2.0);// | |
497 | //hdcaToVertexXY = new TH1F("hdcaToVertexXY", "Track to vertex impact parameter in x-y plane; DCA_{z} (cm); dN/d(DCA_{z})", 100, 0.0, 2.0);// | |
498 | //hdcaToVertexZ = new TH1F("hdcaToVertexZ", "Track to vertex impact parameter in z axis; DCA_{z} (cm); dN/d(DCA_{z})", 100, 0.0, 2.0);// | |
499 | hMultPrim = new TH1F("hMultPrim", "ESD primary - supposed tracks multiplicity; Number of tracks; Number of events", nBinsMult, hLowMult, hUpMult); | |
500 | hPtPrim = new TH1F("hPtPrim", "Transverse momentum of primary - supposed ESD tracks; p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
501 | hEtaPrim = new TH1F("hEtaPrim", "Pseudorapidity of primary - supposed ESD tracks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
502 | hPrimTrackPos = new TH3F("hPrimTrackPos", "Generetion position of selected tracks (DCA and quality cuts)", nBinsXYV, hLowXYV, hUpXYV, nBinsXYV, hLowXYV, hUpXYV, nBinsZV, hLowZV, hUpZV); | |
503 | hPrimTrackPosxy = new TH2F("hPrimTrackPosxy", "Generetion position of selected tracks in x-y plane (DCA and quality cuts); x axis; y axis", nBinsXYV, hLowXYV, hUpXYV, nBinsXYV, hLowXYV, hUpXYV); | |
504 | hPrimTrackPosyz = new TH2F("hPrimTrackPosyz", "Generetion position of selected tracks in y-z plane (DCA and quality cuts); y axis; z axis", nBinsXYV, hLowXYV, hUpXYV, nBinsZV, hLowZV, hUpZV); | |
505 | hPrimTrackPosxz = new TH2F("hPrimTrackPosxz", "Generetion position of selected tracks in x-z plane (DCA and quality cuts); x axis; z axis", nBinsXYV, hLowXYV, hUpXYV, nBinsZV, hLowZV, hUpZV); | |
506 | hPt = new TH1F("hPt", "Transverse momentum of selected ESD tracks; p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
507 | hEta = new TH1F("hEta", "Pseudorapidity of selected ESD tracks; n; Number of tracks dN/dn", nBinsEta, hLowEta, hUpEta); | |
508 | //hRapidity = new TH1F("hRapidity", "Rapidity of selected ESD tracks; n; Number of tracks dN/dn", nBinsEta, hLowEta, hUpEta); | |
509 | hPtKink = new TH1F("hPtKink", "Mother's transverse momentum for all ESD kinks; p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
510 | hEtaKink = new TH1F("hEtaKink", "Mother's pseudorapidity for all ESD kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
511 | hRapidityKink = new TH1F("hRapidityKink", "Mother's rapidity for all ESD kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
512 | hPmP = new TH2F("hPmP", "Mother's momentum as calculated by kink and by track; P_{kink}; P_{track}", nBinsPt, hLowPt, hUpPt, nBinsPt, hLowPt, hUpPt); | |
513 | hKinkPosRTPCclusters1 = new TH1F("hKinkPosRTPCclusters1", " ;kinkposR; tpc clusters",100,0,1); | |
514 | hKinkPosRTPCclusters2 = new TH2F("hKinkPosRTPCclusters2", " ;kinkposR; tpc clusters",nBinsR, hLowR, hUpR,100,0,200 ); | |
515 | hQt = new TH1F("hQt", "Daughter's transverse momentum in mother's frame for all ESD kinks; q_{T} (GeV/c); dN/dq_{T}", nBinsQt, hLowQt, hUpQt); | |
516 | hKinkAngle = new TH1F("hKinkAngle", "Kink angle for all ESD kinks; #theta (#circ); dN/d#theta", nBinsAngle, hLowAngle, hUpAngle); | |
517 | hDCAkink = new TH1F("hDCAkink", "DCA between the two kink tracks; DCA(cm); Number of kinks", 100, 0.0, 2.0); | |
518 | hPmKinkAng = new TH2F("hPmKinkAng", "k, p_(GeV/c); #theta (#circ); d^{2}N/dpd#theta", nBinsPt, hLowPt, hUpPt, nBinsAngle, hLowAngle, hUpAngle); | |
519 | hKinkPosXY = new TH2F("hKinkPosXY", "X-Y Position of all kinks; X (cm); Y (cm)", nBinsXY, hLowXY, hUpXY, nBinsXY, hLowXY, hUpXY); | |
520 | hKinkPosZY = new TH2F("hKinkPosZY", "z vs y position of kinks (DCA, quality, p_{T} & y cuts); z (cm); y (cm)", nBinsZ, hLowZ, hUpZ, nBinsXY, hLowXY, hUpXY); | |
521 | hKinkPosZR = new TH2F("hKinkPosZR", "Z vs radius of all kinks position; Z (cm); R (cm)", nBinsZ, hLowZ, hUpZ, nBinsR, hLowR, hUpR); | |
522 | hKinkPosR = new TH1F("hKinkPosR", "Position radius of all ESD kinks; R (cm); dN/dR", nBinsR, hLowR, hUpR); | |
523 | hKinkPosZ = new TH1F("hKinkPosZ", "z position of kinks (DCA, quality, p_{T} & y cuts); z (cm); dN/dz", nBinsZ, -1, 1); | |
524 | hKinkPosZMCKinkPosZ = new TH2F("hKinkPosZMCKinkPosZ", "Reconstructed vs generated z position of kinks (DCA, quality, p_{T} & y cuts); z (cm); dN/dz", nBinsZ, hLowZ, hUpZ, nBinsZ, hLowZ, hUpZ); | |
525 | hPdgCodemd = new TH2F("hPdgCodemd", "Mother vs daughter pdg code for all ESD kinks; Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
526 | hPmd = new TH2F("hPmd", "ESD mother vs daughter momentum magnitude; Mother's P (GeV/c); Daughter's P (GeV/c)", nBinsPt, hLowPt, hUpPt, nBinsPt, hLowPt, hUpPt); | |
527 | hMinvPimu = new TH1F("hMinvPimu", "Invariant mass of ESD pions decaying to muons; m (GeV/c^{2}); dN/dm", nBinsInvMass, hLowInvMass, hUpInvMass); | |
528 | hUIDKinkDau = new TH1F("hUIDKinkDau", "UID (method of production) of all ESD pion kink daughters (perfect PID); UID (method of production); Number of particles", 21, 0.0, 20); | |
529 | hdEdx = new TH2F("hdEdx", "dE/dx vs mother's momentum; p (GeV/c); dE/dx (GeV/cm)", nBinsPt, hLowPt, hUpPt, 100, 0.0, 300.0); | |
530 | hPtKinkFake = new TH1F("hPtKinkFake", "Mother's transverse momentum for all fake kinks; p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
531 | hEtaKinkFake = new TH1F("hEtaKinkFake", "Mother's pseudorapidity for all fake kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
532 | hRapidityKinkFake = new TH1F("hRapidityKinkFake", "Mother's rapidity for all fake kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
533 | hPmPFake = new TH2F("hPmPFake", "Mother's momentum magnitude calculated from kink vs calculated from track for all fake kinks; p_{kink} (GeV/c); p_{track} (GeV/c)", nBinsPt, hLowPt, hUpPt, nBinsPt, hLowPt, hUpPt); | |
534 | hKinkPosRTPCclusters1Fake = new TH1F("hKinkPosRTPCclusters1Fake", " ;kinkposR; tpc clusters",100,0,1); | |
535 | hKinkPosRTPCclusters2Fake = new TH2F("hKinkPosRTPCclusters2Fake", " ;kinkposR; tpc clusters",nBinsR, hLowR, hUpR,100,0,200 ); | |
536 | hQtFake = new TH1F("hQtFake", "Daughter's transverse momentum in mother's frame for all fake kinks; q_{T} (GeV/c); dN/dq_{T}", nBinsQt, hLowQt, hUpQt); | |
537 | hKinkAngleFake = new TH1F("hKinkAngleFake", "Kink angle for all fake kinks; #theta (#circ); dN/d#theta", nBinsAngle, hLowAngle, hUpAngle); | |
538 | hDCAkinkFake = new TH1F("hDCAkinkFake", "DCA between the two fake kink tracks; DCA(cm); Number of kinks", 100, 0.0, 2.0); | |
539 | hPmKinkAngFake = new TH2F("hPmKinkAngFake", "k, p_(GeV/c); #theta (#circ); d^{2}N/dpd#theta", nBinsPt, hLowPt, hUpPt, nBinsAngle, hLowAngle, hUpAngle); | |
540 | hKinkPosXYFake = new TH2F("hKinkPosXYFake", "X-Y Position of all fake kinks; X (cm); Y (cm)", nBinsXY, hLowXY, hUpXY, nBinsXY, hLowXY, hUpXY); | |
541 | hKinkPosZYFake = new TH2F("hKinkPosZYFake", "z vs y position of fake kinks (DCA, quality, p_{T} & y cuts); z (cm); y (cm)", nBinsZ, hLowZ, hUpZ, nBinsXY, hLowXY, hUpXY); | |
542 | hKinkPosZRFake = new TH2F("hKinkPosZRFake", "Z vs radius of all fake kinks position; Z (cm); R (cm)", nBinsZ, hLowZ, hUpZ, nBinsR, hLowR, hUpR); | |
543 | hKinkPosRFake = new TH1F("hKinkPosRFake", "Position radius of all fake kinks; R (cm); dN/dR", nBinsR, hLowR, hUpR); | |
544 | hKinkPosZFake = new TH1F("hKinkPosZFake", "z position of fake kinks (DCA, quality, p_{T} & y cuts); z (cm); dN/dz", nBinsZ, -1, 1); | |
545 | hKinkPosZMCKinkPosZFake = new TH2F("hKinkPosZMCKinkPosZFake", "Reconstructed vs generated z position of fake kinks (DCA, quality, p_{T} & y cuts); z (cm); dN/dz", nBinsZ, hLowZ, hUpZ, nBinsZ, hLowZ, hUpZ); | |
546 | hPdgCodemdFake = new TH2F("hPdgCodemdFake", "Mother vs daughter pdg code for fakes; Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
547 | hPmdFake = new TH2F("hPmdFake", "ESD mother vs daughter momentum magnitude (fake kinks); Mother's P (GeV/c); Daughter's P (GeV/c)", nBinsPt, hLowPt, hUpPt, nBinsPt, hLowPt, hUpPt); | |
548 | hMinvPimuFake = new TH1F("hMinvPimuFake", "Invariant mass of ESD pions decaying to muons (fake kinks); m (GeV/c^{2}); dN/dm", nBinsInvMass, hLowInvMass, hUpInvMass); | |
549 | hUIDKinkDauFake = new TH1F("hUIDKinkDauFake", "UID (method of production) of all ESD pion kink daughters (perfect PID); UID (method of production); Number of particles", 21, 0.0, 20); | |
550 | hdEdxFake = new TH2F("hdEdxFake", "dE/dx vs mother's momentum; p (GeV/c); dE/dx (GeV/cm)", nBinsPt, hLowPt, hUpPt, 100, 0.0, 300.0); | |
551 | hPtPosRSelected = new TH1F("hPtPosRSelected", "Mother's transverse momentum for selected kinks (DCA, quality, p_{T}, y & R cuts); R (cm); dN/dR", nBinsPt, hLowPt, hUpPt); | |
552 | hPdgCodemdZRejected = new TH2F("hPdgCodemdZRejected", "Mother's vs daughter's pdg code for rejected kinks (DCA, quality, p_{T}, y, R & z cuts); Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
553 | hPtZSelected = new TH1F("hPtZSelected", "Mother's transverse momentum for selected kinks (DCA, quality, p_{T}, y, R & z cuts); p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
554 | hPdgCodemdAngRejected = new TH2F("hPdgCodemdAngRejected", "Mother's vs daughter's pdg code for rejected kinks (DCA, quality, p_{T}, y, R, z & #theta cuts); Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
555 | hPtAngSelected = new TH1F("hPtAngSelected", "Mother's transverse momentum for selected kinks (DCA, quality, p_{T}, y, R, z & #theta cuts); p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
556 | hPdgCodemdPmRejected = new TH2F("hPdgCodemdPmRejected", "Mother's vs daughter's pdg code for rejected kinks (DCA, quality, p_{T}, y, R, z, #theta & p_{track}/p{kink} cuts); Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
557 | hPtPmSelected = new TH1F("hPtPmSelected", "Mother's transverse momentum for selected kinks (DCA, quality, p_{T}, y, R, z, #theta & p_{track}/p{kink} cuts); p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
558 | hPdgCodemdQtLowRejected = new TH2F("hPdgCodemdQtLowRejected", "Mother's vs daughter's pdg code for rejected kinks (DCA, quality, p_{T}, y, R, z, #theta, p_{track}/p{kink} & low q_{T} cuts); Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
559 | hPtGoodKink = new TH1F("hPtGoodKink", "Mother's transverse momentum for real ESD kinks (realistic PID); p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
560 | hEtaGoodKink = new TH1F("hEtaGoodKink", "Mother's pseudorapidity for real ESD kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
561 | hRapidityGoodKink = new TH1F("hRapidityGoodKink", "Mother's rapidity for real ESD kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
562 | hQtGoodKink = new TH1F("hQtGoodKink", "Daughter's transverse momentum in mother's frame for real ESD kinks (realistic PID); q_{T} (GeV/c); dN/dq_{T}", 200, 0.0, 0.3); | |
563 | hPmGoodKinkAng = new TH2F("hPmGoodKinkAng", "Mother's momentum magnitude vs kink angle for real ESD kinks (realistic PID); p_{T} (GeV/c); #theta (#circ); d^{2}N/dp_{T}d#theta", nBinsPt, hLowPt, hUpPt, nBinsAngle, hLowAngle, hUpAngle); | |
564 | hPdgCodemdGoodKink = new TH2F("hPdgCodemdGoodKink", "Mother vs daughter pdg code for real ESD kinks; Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
565 | hPmdGoodKink = new TH2F("hPmdGoodKink", "Mother vs daughter momentum magnitude for real ESD kinks (realistic PID); Mother's P; Daughter's P", nBinsPt, hLowPt, hUpPt, nBinsPt, hLowPt, hUpPt); | |
566 | hUIDGoodKinkDau = new TH1F("hUIDGoodKinkDau", "UID (method of production); UID (method of production); Number of particles", 21, 0.0, 20); | |
567 | hdEdxGoodKink = new TH2F("hdEdxGoodKink", "dE/dx vs mother's momentum; p (GeV/c); dE/dx (GeV/cm)", nBinsPt, hLowPt, hUpPt, 100, 0.0, 300.0); | |
568 | hUIDPiDauPlus = new TH1F("hUIDPiDauPlus", "UID (method of production) of all ESD pion kink daughters (perfect PID); UID (method of production); Number of particles", 21, 0.0, 20); | |
569 | hMultPiPlus = new TH1F("hMultPiPlus", "ESD pion multiplicity in selected TPC area; Number of pions; Number of events", 100, 0.0, 200.0); | |
570 | hPtPiPlus = new TH1F("hPtPiPlus", "Mother's transverse momentum for ESD pion kinks (perfect PID); p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
571 | hEtaPiPlus = new TH1F("hEtaPiPlus", "Mother's pseudorapidity for ESD pion kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
572 | hRapidityPiPlus = new TH1F("hRapidityPiPlus", "Mother's rapidity for ESD pion kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
573 | hQtPiPlus = new TH1F("hQtPiPlus", "Daughter's transverse momentum in mother's frame for ESD pion kinks (perfect PID); q_{T} (GeV/c); dN/dq_{T}", 100, 0.0, 0.1); | |
574 | hKinkAnglePiPlus = new TH1F("hKinkAnglePiPlus", "Kink angle of ESD pion kinks (perfect PID); #theta (#circ); dN/d#theta", nBinsAngle, hLowAngle, hUpAngle); | |
575 | hPmKinkAngPiPlus = new TH2F("hPmKinkAngPiPlus", "Mother's momentum magnitude vs kink angle for ESD pion kinks (perfect PID); p_{T} (GeV/c); #theta (#circ); d^{2}N/dp_{T}d#theta", nBinsPt, hLowPt, hUpPt, nBinsAngle, hLowAngle, hUpAngle); | |
576 | hKinkPosXYPiPlus = new TH2F("hKinkPosXYPiPlus", "X-Y Position ; X (cm); Y (cm)", nBinsXY, hLowXY, hUpXY, nBinsXY, hLowXY, hUpXY); | |
577 | hKinkPosZRPiPlus = new TH2F("hKinkPosZRPiPlus", "Z vs radius of all fake kinks position; Z (cm); R (cm)", nBinsZ, hLowZ, hUpZ, nBinsR, hLowR, hUpR); | |
578 | hKinkPosRPiPlus = new TH1F("hKinkPosRPiPlus", "Position radius of all fake kinks; R (cm); dN/dR", nBinsR, hLowR, hUpR); | |
579 | hDCAkinkPiPlus = new TH1F("hDCAkinkPiPlus", "DCA; DCA(cm); Number of kinks", 100, 0.0, 2.0); | |
580 | hPdgCodemdPiPlus = new TH2F("hPdgCodemdPiPlus", "Mother vs daughter pdg code for pi kinks; Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
581 | hPmdPiPlus = new TH2F("hPmdPiPlus", "Mother vs daughter momentum magnitude for pi kinks (realistic PID); Mother's P; Daughter's P", nBinsPt, hLowPt, hUpPt, nBinsPt, hLowPt, hUpPt); | |
582 | hdEdxPiPlus = new TH2F("hdEdxPiPlus", "dE/dx vs mother's momentum; p (GeV/c); dE/dx (GeV/cm)", nBinsPt, hLowPt, hUpPt, 100, 0.0, 300.0); | |
583 | hQtPimuPlus = new TH1F("hQtPimuPlus", "Daughter's transverse momentum in mother's frame for ESD pion to muon kinks (perfect PID); q_{T} (GeV/c); dN/dq_{T}", 100, 0.0, 0.1); | |
584 | hPmKinkAngPimuPlus = new TH2F("hPmKinkAngPimuPlus", "Mother's momentum magnitude vs kink angle for ESD pion to muon kinks (perfect PID); p_{T} (GeV/c); #theta (#circ); d^{2}N/dp_{T}d#theta", nBinsPt, hLowPt, hUpPt, nBinsAngle, hLowAngle, hUpAngle); | |
585 | hQtPiotherPlus = new TH1F("hQtPiotherPlus", "Daughter's transverse momentum in mother's frame for ESD pion to other (not muon) kinks (perfect PID); q_{T} (GeV/c); dN/dq_{T}", 100, 0.0, 0.1); | |
586 | hPmKinkAngPiotherPlus = new TH2F("hPmKinkAngPiotherPlus", "Mother's momentum magnitude vs kink angle for ESD pion to other (not muon) kinks (perfect PID); p_{T} (GeV/c); #theta (#circ); d^{2}N/dp_{T}d#theta", nBinsPt, hLowPt, hUpPt, nBinsAngle, hLowAngle, hUpAngle); | |
587 | hPdgCodemdPiotherPlus = new TH2F("hPdgCodemdPiotherPlus", "Mother vs daughter pdg code for ESD pion to other (not muon) kinks (perfect PID); Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
588 | hUIDPiDauMinus = new TH1F("hUIDPiDauMinus", "UID (method of production) of all ESD pion kink daughters (perfect PID); UID (method of production); Number of particles", 21, 0.0, 20); | |
589 | hMultPiMinus = new TH1F("hMultPiMinus", "ESD pion multiplicity in selected TPC area; Number of pions; Number of events", 100, 0.0, 200.0); | |
590 | hPtPiMinus = new TH1F("hPtPiMinus", "Mother's transverse momentum for ESD pion kinks (perfect PID); p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
591 | hEtaPiMinus = new TH1F("hEtaPiMinus", "Mother's pseudorapidity for ESD pion kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
592 | hRapidityPiMinus = new TH1F("hRapidityPiMinus", "Mother's rapidity for ESD pion kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
593 | hQtPiMinus = new TH1F("hQtPiMinus", "Daughter's transverse momentum in mother's frame for ESD pion kinks (perfect PID); q_{T} (GeV/c); dN/dq_{T}", 100, 0.0, 0.1); | |
594 | hKinkAnglePiMinus = new TH1F("hKinkAnglePiMinus", "Kink angle of ESD pion kinks (perfect PID); #theta (#circ); dN/d#theta", nBinsAngle, hLowAngle, hUpAngle); | |
595 | hPmKinkAngPiMinus = new TH2F("hPmKinkAngPiMinus", "Mother's momentum magnitude vs kink angle for ESD pion kinks (perfect PID); p_{T} (GeV/c); #theta (#circ); d^{2}N/dp_{T}d#theta", nBinsPt, hLowPt, hUpPt, nBinsAngle, hLowAngle, hUpAngle); | |
596 | hKinkPosXYPiMinus = new TH2F("hKinkPosXYPiMinus", "X-Y Position ; X (cm); Y (cm)", nBinsXY, hLowXY, hUpXY, nBinsXY, hLowXY, hUpXY); | |
597 | hKinkPosZRPiMinus = new TH2F("hKinkPosZRPiMinus", "Z vs radius of all fake kinks position; Z (cm); R (cm)", nBinsZ, hLowZ, hUpZ, nBinsR, hLowR, hUpR); | |
598 | hKinkPosRPiMinus = new TH1F("hKinkPosRPiMinus", "Position radius of all fake kinks; R (cm); dN/dR", nBinsR, hLowR, hUpR); | |
599 | hDCAkinkPiMinus = new TH1F("hDCAkinkPiMinus", "DCA; DCA(cm); Number of kinks", 100, 0.0, 2.0); | |
600 | hPdgCodemdPiMinus = new TH2F("hPdgCodemdPiMinus", "Mother vs daughter pdg code for pi kinks; Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
601 | hPmdPiMinus = new TH2F("hPmdPiMinus", "Mother vs daughter momentum magnitude for pi kinks (realistic PID); Mother's P; Daughter's P", nBinsPt, hLowPt, hUpPt, nBinsPt, hLowPt, hUpPt); | |
602 | hdEdxPiMinus = new TH2F("hdEdxPiMinus", "dE/dx vs mother's momentum; p (GeV/c); dE/dx (GeV/cm)", nBinsPt, hLowPt, hUpPt, 100, 0.0, 300.0); | |
603 | hQtPimuMinus = new TH1F("hQtPimuMinus", "Daughter's transverse momentum in mother's frame for ESD pion to muon kinks (perfect PID); q_{T} (GeV/c); dN/dq_{T}", 100, 0.0, 0.1); | |
604 | hPmKinkAngPimuMinus = new TH2F("hPmKinkAngPimuMinus", "Mother's momentum magnitude vs kink angle for ESD pion to muon kinks (perfect PID); p_{T} (GeV/c); #theta (#circ); d^{2}N/dp_{T}d#theta", nBinsPt, hLowPt, hUpPt, nBinsAngle, hLowAngle, hUpAngle); | |
605 | hQtPiotherMinus = new TH1F("hQtPiotherMinus", "Daughter's transverse momentum in mother's frame for ESD pion to other (not muon) kinks (perfect PID); q_{T} (GeV/c); dN/dq_{T}", 100, 0.0, 0.1); | |
606 | hPmKinkAngPiotherMinus = new TH2F("hPmKinkAngPiotherMinus", "Mother's momentum magnitude vs kink angle for ESD pion to other (not muon) kinks (perfect PID); p_{T} (GeV/c); #theta (#circ); d^{2}N/dp_{T}d#theta", nBinsPt, hLowPt, hUpPt, nBinsAngle, hLowAngle, hUpAngle); | |
607 | hPdgCodemdPiotherMinus = new TH2F("hPdgCodemdPiotherMinus", "Mother vs daughter pdg code for ESD pion to other (not muon) kinks (perfect PID); Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
608 | hPdgCodemdQtRejected = new TH2F("hPdgCodemdQtRejected", "Mother's vs daughter's pdg code for rejected kinks (DCA, quality, p_{T}, y, R, z, #theta, p_{track}/p{kink} & q^{T} cuts); Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
609 | hPtQtSelected = new TH1F("hPtQtSelected", "Mother's transverse momentum for selected kinks (DCA, quality, p_{T}, y, R, z, #theta, p_{track}/p{kink} & q^{T} cuts); p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
610 | hPdgCodemdMaxAngRejected = new TH2F("hPdgCodemdMaxAngRejected", "Mother's vs daughter's pdg code for rejected kinks (DCA, quality, p_{T}, y, R, z, #theta, p_{track}/p{kink}, q^{T} & #theta_{max} cuts); Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
611 | hPtMaxAngSelected = new TH1F("hPtMaxAngSelected", "Mother's transverse momentum for selected kinks (DCA, quality, p_{T}, y, R, z, #theta, p_{track}/p{kink}, q^{T} & #theta_{max} cuts); p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
612 | hPdgCodemdRTPCclustersRejected = new TH2F("hPdgCodemdRTPCclustersRejected", "Mother's vs daughter's pdg code for rejected kinks (DCA, quality, p_{T}, y, R, z, #theta, p_{track}/p{kink}, q^{T}, #theta_{max} & R/TPC clusters cuts); Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
613 | hPtRTPCclustersSelected = new TH1F("hPtRTPCclustersSelected", "Mother's transverse momentum for selected kinks (DCA, quality, p_{T}, y, R, z, #theta, p_{track}/p{kink}, q^{T}, #theta_{max} & R/TPC clusters cuts); p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
614 | hRTPCclustersRTPCclustersSelected = new TH2F("hRTPCclustersRTPCclustersSelected", "Number of TPC clusters vs radius for selected kinks (DCA, quality, p_{T}, y, R, z, #theta, p_{track}/p{kink}, q^{T}, #theta_{max} & R/TPC clusters cuts) R (cm); number of TPC clusters", nBinsR, hLowR, hUpR, 100, 0, 200); | |
615 | hPdgCodemdMinvRejected = new TH2F("hPdgCodemdMinvRejected", "Mother's vs daughter's pdg code for rejected kinks (DCA, quality, p_{T}, y, R, z, #theta, p_{track}/p{kink}, q^{T}, #theta_{max}, R/TPC clusters & m_{inv} cuts); Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
616 | hPtSelected = new TH1F("hPtSelected", "Mother's transverse momentum for selected kinks (all cuts except dE/dx); p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
617 | hEtaSelected = new TH1F("hEtaSelected", "Mother's pseudorapidity for selected kinks (all cuts except dE/dx); n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
618 | hRapiditySelected = new TH1F("hRapiditySelected", "Mother's rapidity for selected kinks (all cuts except dE/dx); n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
619 | hQtSelected = new TH1F("hQtSelected", "Daughter's transverse momentum in mother's frame for selected kinks (all cuts except dE/dx); q_{T} (GeV/c); dN/dq_{T}", 200, 0.0, 0.3); | |
620 | hKinkAngleSelected = new TH1F("hKinkAngleSelected", "Kink angle of selected kinks (all cuts except dE/dx); #theta (#circ); dN/d#theta", nBinsAngle, hLowAngle, hUpAngle); | |
621 | hDCAkinkSelected = new TH1F("hDCAkinkSelected", "DCA; DCA(cm); Number of kinks", 100, 0.0, 2.0); | |
622 | hPmKinkAngSelected = new TH2F("hPmKinkAngSelected", "Mother's momentum magnitude vs kink angle for selected kinks (all cuts except dE/dx); p_{T} (GeV/c); #theta (#circ); d^{2}N/dp_{T}d#theta", nBinsPt, hLowPt, hUpPt, nBinsAngle, hLowAngle, hUpAngle); | |
623 | hKinkPosXYSelected = new TH2F("hKinkPosXYSelected", "X-Y Position ; X (cm); Y (cm)", nBinsXY, hLowXY, hUpXY, nBinsXY, hLowXY, hUpXY); | |
624 | hKinkPosZRSelected = new TH2F("hKinkPosZRSelected", "Z vs radius of selected kinks (all cuts except dE/dx); Z (cm); R (cm)", nBinsZ, hLowZ, hUpZ, nBinsR, hLowR, hUpR); | |
625 | hKinkPosRSelected = new TH1F("hKinkPosRSelected", "Position radius of selected kinks (all cuts except dE/dx); R (cm); dN/dR", nBinsR, hLowR, hUpR); | |
626 | hPdgCodemdSelected = new TH2F("hPdgCodemdSelected", "Mother vs daughter pdg code for selected kinks (all cuts except dE/dx); Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
627 | hPmdSelected = new TH2F("hPmdSelected", "Mother vs daughter momentum magnitude for selected kinks (all cuts except dE/dx); Mother's P; Daughter's P", nBinsPt, hLowPt, hUpPt, nBinsPt, hLowPt, hUpPt); | |
628 | hMinvPimuSelected = new TH1F("hMinvPimuSelected", "Invariant mass for #pi^{#pm} decaying to #mu^{#pm} for selected kinks (all cuts except dE/dx); m (GeV/c^{2}); dN/dm", nBinsInvMass, hLowInvMass, hUpInvMass); | |
629 | hUIDKinkDauSelected = new TH1F("hUIDKinkDauSelected", "UID (method of production); UID (method of production); Number of particles", 100, 0.0, 20); | |
630 | hdEdxSelected = new TH2F("hdEdxSelected", "dE/dx vs mother's momentum for selected kinks (all cuts except dE/dx); p (GeV/c); dE/dx (GeV/cm)", nBinsPt, hLowPt, hUpPt, 100, 0.0, 300.0); | |
631 | hPtSelectedFake = new TH1F("hPtSelectedFake", "Mother's transverse momentum for fake kinks (all cuts except dE/dx); p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
632 | hEtaSelectedFake = new TH1F("hEtaSelectedFake", "Mother's pseudorapidity for fake kinks (all cuts except dE/dx); n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
633 | hRapiditySelectedFake = new TH1F("hRapiditySelectedFake", "Mother's rapidity ffor fake kinks (all cuts except dE/dx); n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
634 | hQtSelectedFake = new TH1F("hQtSelectedFake", "Daughter's transverse momentum in mother's frame ffor fake kinks (all cuts except dE/dx); q_{T} (GeV/c); dN/dq_{T}", 200, 0.0, 0.3); | |
635 | hKinkAngleSelectedFake = new TH1F("hKinkAngleSelectedFake", "Kink angle of fake kinks (all cuts except dE/dx); #theta (#circ); dN/d#theta", nBinsAngle, hLowAngle, hUpAngle); | |
636 | hDCAkinkSelectedFake = new TH1F("hDCAkinkSelectedFake", "Kink DCA for fake kinks (all cuts except dE/dx); DCA; Number of kinks", 100, 0.0, 2.0); | |
637 | hPmKinkAngSelectedFake = new TH2F("hPmKinkAngSelectedFake", "Mother's momentum magnitude vs kink angle for fake kinks (all cuts except dE/dx); #theta (#circ); d^{2}N/dp_{T}d#theta", nBinsPt, hLowPt, hUpPt, nBinsAngle, hLowAngle, hUpAngle); | |
638 | hKinkPosXYSelectedFake = new TH2F("hKinkPosXYSelectedFake", "X-Y Position for fake kinks (all cuts except dE/dx); X (cm); Y (cm)", nBinsXY, hLowXY, hUpXY, nBinsXY, hLowXY, hUpXY); | |
639 | hKinkPosZRSelectedFake = new TH2F("hKinkPosZRSelectedFake", "Z vs radius of fake kinks (all cuts except dE/dx); Z (cm); R (cm)", nBinsZ, hLowZ, hUpZ, nBinsR, hLowR, hUpR); | |
640 | hKinkPosRSelectedFake = new TH1F("hKinkPosRSelectedFake", "Position radius of fake kinks (all cuts except dE/dx); R (cm); dN/dR", nBinsR, hLowR, hUpR); | |
641 | hPmdSelectedFake = new TH2F("hPmdSelectedFake", "Mother vs daughter momentum magnitude for fake kinks (all cuts except dE/dx); Mother's P; Daughter's P", nBinsPt, hLowPt, hUpPt, nBinsPt, hLowPt, hUpPt); | |
642 | hMinvPimuSelectedFake = new TH1F("hMinvPimuSelectedFake", "Invariant mass for #pi^{#pm} decaying to #mu^{#pm} for selected kinks (all cuts) for fake kinks (all cuts except dE/dx); m (GeV/c^{2}); dN/dm", nBinsInvMass, hLowInvMass, hUpInvMass); | |
643 | hdEdxSelectedFake = new TH2F("hdEdxSelectedFake", "dE/dx vs mother's momentum for fake kinks (all cuts except dE/dx); p (GeV/c); dE/dx (GeV/cm)", nBinsPt, hLowPt, hUpPt, 100, 0.0, 300.0); | |
644 | hPdgCodemddEdxRejected = new TH2F("hPdgCodemddEdxRejected", "Mother's vs daughter's pdg code for rejected kinks (all cuts); Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
645 | hPtPiSelected = new TH1F("hPtPiSelected", "Mother's transverse momentum for selected kinks (all cuts); p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
646 | hEtaPiSelected = new TH1F("hEtaPiSelected", "Mother's pseudorapidity for selected kinks (all cuts); n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
647 | hRapidityPiSelected = new TH1F("hRapidityPiSelected", "Mother's rapidity for selected kinks (all cuts); n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
648 | hQtPiSelected = new TH1F("hQtPiSelected", "Daughter's transverse momentum in mother's frame for selected kinks (all cuts); q_{T} (GeV/c); dN/dq_{T}", 200, 0.0, 0.3); | |
649 | hKinkAnglePiSelected = new TH1F("hKinkAnglePiSelected", "Kink angle of selected kinks (all cuts); #theta (#circ); dN/d#theta", nBinsAngle, hLowAngle, hUpAngle); | |
650 | hDCAkinkPiSelected = new TH1F("hDCAkinkPiSelected", "DCA; DCA(cm); Number of kinks", 100, 0.0, 2.0); | |
651 | hPmKinkAngPiSelected = new TH2F("hPmKinkAngPiSelected", "Mother's momentum magnitude vs kink angle for selected kinks (all cuts); p_{T} (GeV/c); #theta (#circ); d^{2}N/dp_{T}d#theta", nBinsPt, hLowPt, hUpPt, nBinsAngle, hLowAngle, hUpAngle); | |
652 | hKinkPosRTPCclusters1PiSelected = new TH1F("hKinkPosRTPCclusters1PiSelected", " ;kinkposR; tpc clusters",100,0,1); | |
653 | hKinkPosRTPCclusters2PiSelected = new TH2F("hKinkPosRTPCclusters2PiSelected", " ;kinkposR; tpc clusters",nBinsR, hLowR, hUpR,100,0,200 ); | |
654 | hKinkPosXYPiSelected = new TH2F("hKinkPosXYPiSelected", "X-Y Position ; X (cm); Y (cm)", nBinsXY, hLowXY, hUpXY, nBinsXY, hLowXY, hUpXY); | |
655 | hKinkPosZRPiSelected = new TH2F("hKinkPosZRPiSelected", "Z vs radius of selected kinks (all cuts); Z (cm); R (cm)", nBinsZ, hLowZ, hUpZ, nBinsR, hLowR, hUpR); | |
656 | hKinkPosRPiSelected = new TH1F("hKinkPosRPiSelected", "Position radius of selected kinks (all cuts); R (cm); dN/dR", nBinsR, hLowR, hUpR); | |
657 | hKinkPosZPiSelected = new TH1F("hKinkPosZPiSelected", "z position of selected kinks (all cuts); R (cm); dN/dR", nBinsZ, hLowZ, hUpZ); | |
658 | hPmPPiSelected = new TH2F("hPmPPiSelected", "Mother's momentum as calculated by kink and by track of selected kinks (all cuts); R (cm); dN/dR", nBinsPt, hLowPt, hUpPt, nBinsPt, hLowPt, hUpPt); | |
659 | hPdgCodemdPiSelected = new TH2F("hPdgCodemdPiSelected", "Mother vs daughter pdg code for selected kinks (all cuts); Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
660 | hPmdPiSelected = new TH2F("hPmdPiSelected", "Mother vs daughter momentum magnitude for selected kinks (all cuts); Mother's P; Daughter's P", nBinsPt, hLowPt, hUpPt, nBinsPt, hLowPt, hUpPt); | |
661 | hMinvPimuPiSelected = new TH1F("hMinvPimuPiSelected", "Invariant mass for #pi^{#pm} decaying to #mu^{#pm} for selected kinks (all cuts); m (GeV/c^{2}); dN/dm", nBinsInvMass, hLowInvMass, hUpInvMass); | |
662 | hUIDKinkDauPiSelected = new TH1F("hUIDKinkDauPiSelected", "UID (method of production); UID (method of production); Number of particles", 100, 0.0, 20); | |
663 | hdEdxPiSelected = new TH2F("hdEdxPiSelected", "dE/dx vs mother's momentum for selected kinks (all cuts); p (GeV/c); dE/dx (GeV/cm)", nBinsPt, hLowPt, hUpPt, 100, 0.0, 300.0); | |
664 | ||
665 | hPtPiSelectedPlus = new TH1F("hPtPiSelectedPlus", "Mother's transverse momentum for selected positive kinks (all cuts); p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
666 | hEtaPiSelectedPlus = new TH1F("hEtaPiSelectedPlus", "Mother's pseudorapidity for selected positive kinks (all cuts); n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
667 | hRapidityPiSelectedPlus = new TH1F("hRapidityPiSelectedPlus", "Mother's rapidity for selected positive kinks (all cuts); n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
668 | hQtPiSelectedPlus = new TH1F("hQtPiSelectedPlus", "Daughter's transverse momentum in mother's frame for selected positive kinks (all cuts); q_{T} (GeV/c); dN/dq_{T}", 200, 0.0, 0.3); | |
669 | hKinkAnglePiSelectedPlus = new TH1F("hKinkAnglePiSelectedPlus", "Kink angle for selected positive kinks (all cuts); #theta (#circ); dN/d#theta", nBinsAngle, hLowAngle, hUpAngle); | |
670 | hDCAkinkPiSelectedPlus = new TH1F("hDCAkinkPiSelectedPlus", "DCA for selected positive kinks (all cuts); DCA(cm); Number of kinks", 100, 0.0, 2.0); | |
671 | hPmKinkAngPiSelectedPlus = new TH2F("hPmKinkAngPiSelectedPlus", "Mother's momentum magnitude vs kink angle for selected positive kinks (all cuts); p_{T} (GeV/c); #theta (#circ); d^{2}N/dp_{T}d#theta", nBinsPt, hLowPt, hUpPt, nBinsAngle, hLowAngle, hUpAngle); | |
672 | hKinkPosXYPiSelectedPlus = new TH2F("hKinkPosXYPiSelectedPlus", "X-Y Position of selected positive kinks (all cuts); X (cm); Y (cm)", nBinsXY, hLowXY, hUpXY, nBinsXY, hLowXY, hUpXY); | |
673 | hKinkPosZRPiSelectedPlus = new TH2F("hKinkPosZRPiSelectedPlus", "Z vs radius of selected positive kinks (all cuts); Z (cm); R (cm)", nBinsZ, hLowZ, hUpZ,nBinsR, hLowR, hUpR); | |
674 | hPdgCodemdPiSelectedPlus = new TH2F("hPdgCodemdPiSelectedPlus", "Mother vs daughter pdg code for selected positive kinks (all cuts); Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
675 | hPmdPiSelectedPlus = new TH2F("hPmdPiSelectedPlus", "Mother vs daughter momentum magnitude for selected positive kinks (all cuts); Mother's P; Daughter's P", nBinsPt, hLowPt, hUpPt, nBinsPt, hLowPt, hUpPt); | |
676 | hMinvPimuPiSelectedPlus = new TH1F("hMinvPimuPiSelectedPlus", "Invariant mass for #pi^{+} decaying to #mu^{+} for selected kinks (all cuts); m (GeV/c^{2}); dN/dm",nBinsInvMass, hLowInvMass, hUpInvMass); | |
677 | hUIDPiDaumuSelectedPlus = new TH1F("hUIDPiDaumuSelectedPlus", "UID (method of production) of selected positive kinks (all cuts); UID (method of production); Number of particles", 100, 0.0, 20); | |
678 | hdEdxPiSelectedPlus = new TH2F("hdEdxPiSelectedPlus", "dE/dx vs mother's momentum for selected positive kinks (all cuts); p (GeV/c); dE/dx (GeV/cm)", nBinsPt, hLowPt, hUpPt, 100, 0.0, 300.0); | |
679 | hPtPrimPiKinksPlus = new TH1F("hPtPrimPiKinksPlus", "Mother's transverse momentum for selected real #pi^{+} primary kinks; p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
680 | hEtaPrimPiKinksPlus = new TH1F("hEtaPrimPiKinksPlus", "Mother's pseudorapidity for selected real #pi^{+} primary kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
681 | hRapidityPrimPiKinksPlus = new TH1F("hRapidityPrimPiKinksPlus", "Mother's rapidity for selected real #pi^{+} primary kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
682 | hPtSecondPiKinksPlus = new TH1F("hPtSecondPiKinksPlus", "Mother's transverse momentum for selected real #pi^{+} secondary kinks; p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
683 | hEtaSecondPiKinksPlus = new TH1F("hEtaSecondPiKinksPlus", "Mother's pseudorapidity for selected real #pi^{+} secondary kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
684 | hRapiditySecondPiKinksPlus = new TH1F("hRapiditySecondPiKinksPlus", "Mother's rapidity for selected real #pi^{+} secondary kinks; y; dN/dy", nBinsEta, hLowEta, hUpEta); | |
685 | hPtNonPiKinksPlus = new TH1F("hPtNonPiKinksPlus", "Mother's transverse momentum for selected non #pi^{+} kinks; p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
686 | hEtaNonPiKinksPlus = new TH1F("hEtaNonPiKinksPlus", "Mother's pseudorapidity for selected non #pi^{+} kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
687 | hRapidityNonPiKinksPlus = new TH1F("hRapidityNonPiKinksPlus", "Mother's rapidity for selected non #pi^{+} kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
688 | hPdgCodemdNonPiKinksPlus = new TH2F("hPdgCodemdNonPiKinksPlus", "Mother vs daughter pdg code for selected non #pi^{+} kinks; Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
689 | ||
690 | hPtPiSelectedMinus = new TH1F("hPtPiSelectedMinus", "Mother's transverse momentum for selected negative kinks (all cuts); p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
691 | hEtaPiSelectedMinus = new TH1F("hEtaPiSelectedMinus", "Mother's pseudorapidity for selected negative kinks (all cuts); n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
692 | hRapidityPiSelectedMinus = new TH1F("hRapidityPiSelectedMinus", "Mother's rapidity for selected negative kinks (all cuts); n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
693 | hQtPiSelectedMinus = new TH1F("hQtPiSelectedMinus", "Daughter's transverse momentum in mother's frame for selected negative kinks (all cuts); q_{T} (GeV/c); dN/dq_{T}", 200, 0.0, 0.3); | |
694 | hKinkAnglePiSelectedMinus = new TH1F("hKinkAnglePiSelectedMinus", "Kink angle for selected negative kinks (all cuts); #theta (#circ); dN/d#theta", nBinsAngle, hLowAngle, hUpAngle); | |
695 | hDCAkinkPiSelectedMinus = new TH1F("hDCAkinkPiSelectedMinus", "DCA for selected negative kinks (all cuts); DCA(cm); Number of kinks", 100, 0.0, 2.0); | |
696 | hPmKinkAngPiSelectedMinus = new TH2F("hPmKinkAngPiSelectedMinus", "Mother's momentum magnitude vs kink angle for selected negative kinks (all cuts); p_{T} (GeV/c); #theta (#circ); d^{2}N/dp_{T}d#theta", nBinsPt, hLowPt, hUpPt, nBinsAngle, hLowAngle, hUpAngle); | |
697 | hKinkPosXYPiSelectedMinus = new TH2F("hKinkPosXYPiSelectedMinus", "X-Y Position for selected negative kinks (all cuts); X (cm); Y (cm)", nBinsXY, hLowXY, hUpXY, nBinsXY, hLowXY, hUpXY); | |
698 | hKinkPosZRPiSelectedMinus = new TH2F("hKinkPosZRPiSelectedMinus", "Z vs radius for selected negative kinks (all cuts); Z (cm); R (cm)",nBinsZ, hLowZ, hUpZ,nBinsR, hLowR, hUpR); | |
699 | hPdgCodemdPiSelectedMinus = new TH2F("hPdgCodemdPiSelectedMinus", "Mother vs daughter pdg code for selected negative kinks (all cuts); Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
700 | hPmdPiSelectedMinus = new TH2F("hPmdPiSelectedMinus", "Mother vs daughter momentum magnitude for selected negative kinks (all cuts); Mother's P; Daughter's P", nBinsPt, hLowPt, hUpPt, nBinsPt, hLowPt, hUpPt); | |
701 | hMinvPimuPiSelectedMinus = new TH1F("hMinvPimuPiSelectedMinus", "Invariant mass for #pi^{-} decaying to #mu^{-} for selected kinks (all cuts); m (GeV/c^{2}); dN/dm", nBinsInvMass, hLowInvMass, hUpInvMass); | |
702 | hUIDPiDaumuSelectedMinus = new TH1F("hUIDPiDaumuSelectedMinus", "UID (method of production) of selected negative kinks (all cuts); UID (method of production); Number of particles", 100, 0.0, 20); | |
703 | hdEdxPiSelectedMinus = new TH2F("hdEdxPiSelectedMinus", "dE/dx vs mother's momentum for selected negative kinks (all cuts); p (GeV/c); dE/dx (GeV/cm)", nBinsPt, hLowPt, hUpPt, 100, 0.0, 300.0); | |
704 | hPtPrimPiKinksMinus = new TH1F("hPtPrimPiKinksMinus", "Mother's transverse momentum for selected real #pi^{-} primary kinks; p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
705 | hEtaPrimPiKinksMinus = new TH1F("hEtaPrimPiKinksMinus", "Mother's pseudorapidity for selected real #pi^{-} primary kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
706 | hRapidityPrimPiKinksMinus = new TH1F("hRapidityPrimPiKinksMinus", "Mother's rapidity for selected real #pi^{-} primary kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
707 | hPtSecondPiKinksMinus = new TH1F("hPtSecondPiKinksMinus", "Mother's transverse momentum for selected real #pi^{-} secondary kinks; p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
708 | hEtaSecondPiKinksMinus = new TH1F("hEtaSecondPiKinksMinus", "Mother's pseudorapidity for selected real #pi^{-} secondary kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
709 | hRapiditySecondPiKinksMinus = new TH1F("hRapiditySecondPiKinksMinus", "Mother's rapidity for selected real #pi^{-} secondary kinks; y; dN/dy", nBinsEta, hLowEta, hUpEta); | |
710 | hPtNonPiKinksMinus = new TH1F("hPtNonPiKinksMinus", "Mother's transverse momentum for selected non #pi^{-} kinks; p_{T} (GeV/c); dN/dp_{T}", nBinsPt, hLowPt, hUpPt); | |
711 | hEtaNonPiKinksMinus = new TH1F("hEtaNonPiKinksMinus", "Mother's pseudorapidity for selected non #pi^{-} kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
712 | hRapidityNonPiKinksMinus = new TH1F("hRapidityNonPiKinksMinus", "Mother's rapidity for selected non #pi^{-} kinks; n; dN/dn", nBinsEta, hLowEta, hUpEta); | |
713 | hPdgCodemdNonPiKinksMinus = new TH2F("hPdgCodemdNonPiKinksMinus", "Mother vs daughter pdg code for selected non #pi^{-} kinks; Mother's pdg code; Daughter's pdg code", nBinsPdg, hLowPdg, hUpPdg, nBinsPdg, hLowPdg, hUpPdg); | |
714 | ||
715 | ||
716 | ||
717 | fListOfHistos->Add(hMCMult); | |
718 | fListOfHistos->Add(hMCMultPrim); | |
719 | fListOfHistos->Add(hMCPtAll); | |
720 | fListOfHistos->Add(hMCEtaAll); | |
721 | fListOfHistos->Add(hMCPtPrim); | |
722 | fListOfHistos->Add(hMCEtaPrim); | |
723 | fListOfHistos->Add(hMCPt); | |
724 | fListOfHistos->Add(hMCEta); | |
725 | fListOfHistos->Add(hMCPdg); | |
726 | fListOfHistos->Add(hMCMultPiPlus); | |
727 | fListOfHistos->Add(hMCPtPiPlus); | |
728 | fListOfHistos->Add(hMCEtaPiPlus); | |
729 | fListOfHistos->Add(hMCRapidityPiPlus); | |
730 | fListOfHistos->Add(hMCNDaughtersPlus); | |
731 | fListOfHistos->Add(hMCRadPiDauPlus); | |
732 | fListOfHistos->Add(hMCKinkPosZPlus); | |
733 | fListOfHistos->Add(hMCUIDPiDauPlus); | |
734 | fListOfHistos->Add(hMCPdgPiNonDecayedPlus); | |
735 | fListOfHistos->Add(hMCPdgPiDauPlus); | |
736 | fListOfHistos->Add(hMCQtPlus); | |
737 | fListOfHistos->Add(hMCKinkAnglePlus); | |
738 | fListOfHistos->Add(hMCPKinkAngPlus); | |
739 | fListOfHistos->Add(hMCPdgCodemdPlus); | |
740 | fListOfHistos->Add(hMCPtmdPlus); | |
741 | fListOfHistos->Add(hMCPtPimuonPlus); | |
742 | fListOfHistos->Add(hMCEtaPimuonPlus); | |
743 | fListOfHistos->Add(hMCRapidityPimuonPlus); | |
744 | fListOfHistos->Add(hMCQtPimuonPlus); | |
745 | fListOfHistos->Add(hMCPKinkAngPimuonPlus); | |
746 | fListOfHistos->Add(hMCPtPiotherPlus); | |
747 | fListOfHistos->Add(hMCEtaPiotherPlus); | |
748 | fListOfHistos->Add(hMCRapidityPiotherPlus); | |
749 | fListOfHistos->Add(hMCQtPiotherPlus); | |
750 | fListOfHistos->Add(hMCPKinkAngPiotherPlus); | |
751 | fListOfHistos->Add(hMCMultPiMinus); | |
752 | fListOfHistos->Add(hMCPtPiMinus); | |
753 | fListOfHistos->Add(hMCEtaPiMinus); | |
754 | fListOfHistos->Add(hMCRapidityPiMinus); | |
755 | fListOfHistos->Add(hMCNDaughtersMinus); | |
756 | fListOfHistos->Add(hMCRadPiDauMinus); | |
757 | fListOfHistos->Add(hMCKinkPosZMinus); | |
758 | fListOfHistos->Add(hMCUIDPiDauMinus); | |
759 | fListOfHistos->Add(hMCPdgPiNonDecayedMinus); | |
760 | fListOfHistos->Add(hMCPdgPiDauMinus); | |
761 | fListOfHistos->Add(hMCQtMinus); | |
762 | fListOfHistos->Add(hMCKinkAngleMinus); | |
763 | fListOfHistos->Add(hMCPKinkAngMinus); | |
764 | fListOfHistos->Add(hMCPdgCodemdMinus); | |
765 | fListOfHistos->Add(hMCPtmdMinus); | |
766 | fListOfHistos->Add(hMCPtPimuonMinus); | |
767 | fListOfHistos->Add(hMCEtaPimuonMinus); | |
768 | fListOfHistos->Add(hMCRapidityPimuonMinus); | |
769 | fListOfHistos->Add(hMCQtPimuonMinus); | |
770 | fListOfHistos->Add(hMCPKinkAngPimuonMinus); | |
771 | fListOfHistos->Add(hMCPtPiotherMinus); | |
772 | fListOfHistos->Add(hMCEtaPiotherMinus); | |
773 | fListOfHistos->Add(hMCRapidityPiotherMinus); | |
774 | fListOfHistos->Add(hMCQtPiotherMinus); | |
775 | fListOfHistos->Add(hMCPKinkAngPiotherMinus); | |
776 | ||
777 | fListOfHistos->Add(hMult); | |
778 | fListOfHistos->Add(hAcceptedMult); | |
779 | fListOfHistos->Add(hMultPS); | |
780 | fListOfHistos->Add(hvtx); | |
781 | fListOfHistos->Add(hvtxy); | |
782 | fListOfHistos->Add(hvtyz); | |
783 | fListOfHistos->Add(hvtxz); | |
784 | fListOfHistos->Add(hMultPSV); | |
785 | fListOfHistos->Add(hPtAll); | |
786 | fListOfHistos->Add(hEtaAll); | |
787 | fListOfHistos->Add(hTrackPos); | |
788 | fListOfHistos->Add(hTrackPosxy); | |
789 | fListOfHistos->Add(hTrackPosyz); | |
790 | fListOfHistos->Add(hTrackPosxz); | |
791 | //fListOfHistos->Add(hTPCchi2clusters); | |
792 | //fListOfHistos->Add(hdcaToVertexXY); | |
793 | //fListOfHistos->Add(hdcaToVertexZ); | |
794 | fListOfHistos->Add(hMultPrim); | |
795 | fListOfHistos->Add(hPtPrim); | |
796 | fListOfHistos->Add(hEtaPrim); | |
797 | fListOfHistos->Add(hPrimTrackPos); | |
798 | fListOfHistos->Add(hPrimTrackPosxy); | |
799 | fListOfHistos->Add(hPrimTrackPosyz); | |
800 | fListOfHistos->Add(hPrimTrackPosxz); | |
801 | fListOfHistos->Add(hPt); | |
802 | fListOfHistos->Add(hEta); | |
803 | //fListOfHistos->Add(hRapidity); | |
804 | fListOfHistos->Add(hPtKink); | |
805 | fListOfHistos->Add(hEtaKink); | |
806 | fListOfHistos->Add(hRapidityKink); | |
807 | fListOfHistos->Add(hPmP); | |
808 | fListOfHistos->Add(hKinkPosRTPCclusters1); | |
809 | fListOfHistos->Add(hKinkPosRTPCclusters2); | |
810 | fListOfHistos->Add(hQt); | |
811 | fListOfHistos->Add(hKinkAngle); | |
812 | fListOfHistos->Add(hDCAkink); | |
813 | fListOfHistos->Add(hPmKinkAng); | |
814 | fListOfHistos->Add(hKinkPosXY); | |
815 | fListOfHistos->Add(hKinkPosZY); | |
816 | fListOfHistos->Add(hKinkPosZR); | |
817 | fListOfHistos->Add(hKinkPosR); | |
818 | fListOfHistos->Add(hKinkPosZ); | |
819 | fListOfHistos->Add(hKinkPosZMCKinkPosZ); | |
820 | fListOfHistos->Add(hPdgCodemd); | |
821 | fListOfHistos->Add(hPmd); | |
822 | fListOfHistos->Add(hMinvPimu); | |
823 | fListOfHistos->Add(hUIDKinkDau); | |
824 | fListOfHistos->Add(hdEdx); | |
825 | fListOfHistos->Add(hPtKinkFake); | |
826 | fListOfHistos->Add(hEtaKinkFake); | |
827 | fListOfHistos->Add(hRapidityKinkFake); | |
828 | fListOfHistos->Add(hPmPFake); | |
829 | fListOfHistos->Add(hKinkPosRTPCclusters1Fake); | |
830 | fListOfHistos->Add(hKinkPosRTPCclusters2Fake); | |
831 | fListOfHistos->Add(hQtFake); | |
832 | fListOfHistos->Add(hKinkAngleFake); | |
833 | fListOfHistos->Add(hDCAkinkFake); | |
834 | fListOfHistos->Add(hPmKinkAngFake); | |
835 | fListOfHistos->Add(hKinkPosXYFake); | |
836 | fListOfHistos->Add(hKinkPosZYFake); | |
837 | fListOfHistos->Add(hKinkPosZRFake); | |
838 | fListOfHistos->Add(hKinkPosRFake); | |
839 | fListOfHistos->Add(hKinkPosZFake); | |
840 | fListOfHistos->Add(hKinkPosZMCKinkPosZFake); | |
841 | fListOfHistos->Add(hPdgCodemdFake); | |
842 | fListOfHistos->Add(hPmdFake); | |
843 | fListOfHistos->Add(hMinvPimuFake); | |
844 | fListOfHistos->Add(hUIDKinkDauFake); | |
845 | fListOfHistos->Add(hdEdxFake); | |
846 | fListOfHistos->Add(hPtPosRSelected); | |
847 | fListOfHistos->Add(hPdgCodemdZRejected); | |
848 | fListOfHistos->Add(hPtZSelected); | |
849 | fListOfHistos->Add(hPdgCodemdAngRejected); | |
850 | fListOfHistos->Add(hPtAngSelected); | |
851 | fListOfHistos->Add(hPdgCodemdPmRejected); | |
852 | fListOfHistos->Add(hPtPmSelected); | |
853 | fListOfHistos->Add(hPdgCodemdQtLowRejected); | |
854 | fListOfHistos->Add(hPtGoodKink); | |
855 | fListOfHistos->Add(hEtaGoodKink); | |
856 | fListOfHistos->Add(hRapidityGoodKink); | |
857 | fListOfHistos->Add(hQtGoodKink); | |
858 | fListOfHistos->Add(hPmGoodKinkAng); | |
859 | fListOfHistos->Add(hPdgCodemdGoodKink); | |
860 | fListOfHistos->Add(hPmdGoodKink); | |
861 | fListOfHistos->Add(hUIDGoodKinkDau); | |
862 | fListOfHistos->Add(hdEdxGoodKink); | |
863 | fListOfHistos->Add(hUIDPiDauPlus); | |
864 | fListOfHistos->Add(hMultPiPlus); | |
865 | fListOfHistos->Add(hPtPiPlus); | |
866 | fListOfHistos->Add(hEtaPiPlus); | |
867 | fListOfHistos->Add(hRapidityPiPlus); | |
868 | fListOfHistos->Add(hQtPiPlus); | |
869 | fListOfHistos->Add(hKinkAnglePiPlus); | |
870 | fListOfHistos->Add(hPmKinkAngPiPlus); | |
871 | fListOfHistos->Add(hKinkPosXYPiPlus); | |
872 | fListOfHistos->Add(hKinkPosZRPiPlus); | |
873 | fListOfHistos->Add(hKinkPosRPiPlus); | |
874 | fListOfHistos->Add(hDCAkinkPiPlus); | |
875 | fListOfHistos->Add(hPdgCodemdPiPlus); | |
876 | fListOfHistos->Add(hPmdPiPlus); | |
877 | fListOfHistos->Add(hdEdxPiPlus); | |
878 | fListOfHistos->Add(hQtPimuPlus); | |
879 | fListOfHistos->Add(hPmKinkAngPimuPlus); | |
880 | fListOfHistos->Add(hQtPiotherPlus); | |
881 | fListOfHistos->Add(hPmKinkAngPiotherPlus); | |
882 | fListOfHistos->Add(hPdgCodemdPiotherPlus); | |
883 | fListOfHistos->Add(hUIDPiDauMinus); | |
884 | fListOfHistos->Add(hMultPiMinus); | |
885 | fListOfHistos->Add(hPtPiMinus); | |
886 | fListOfHistos->Add(hEtaPiMinus); | |
887 | fListOfHistos->Add(hRapidityPiMinus); | |
888 | fListOfHistos->Add(hQtPiMinus); | |
889 | fListOfHistos->Add(hKinkAnglePiMinus); | |
890 | fListOfHistos->Add(hPmKinkAngPiMinus); | |
891 | fListOfHistos->Add(hKinkPosXYPiMinus); | |
892 | fListOfHistos->Add(hKinkPosZRPiMinus); | |
893 | fListOfHistos->Add(hKinkPosRPiMinus); | |
894 | fListOfHistos->Add(hDCAkinkPiMinus); | |
895 | fListOfHistos->Add(hPdgCodemdPiMinus); | |
896 | fListOfHistos->Add(hPmdPiMinus); | |
897 | fListOfHistos->Add(hdEdxPiMinus); | |
898 | fListOfHistos->Add(hQtPimuMinus); | |
899 | fListOfHistos->Add(hPmKinkAngPimuMinus); | |
900 | fListOfHistos->Add(hQtPiotherMinus); | |
901 | fListOfHistos->Add(hPmKinkAngPiotherMinus); | |
902 | fListOfHistos->Add(hPdgCodemdPiotherMinus); | |
903 | fListOfHistos->Add(hPdgCodemdQtRejected); | |
904 | fListOfHistos->Add(hPtQtSelected); | |
905 | fListOfHistos->Add(hPdgCodemdMaxAngRejected); | |
906 | fListOfHistos->Add(hPtMaxAngSelected); | |
907 | fListOfHistos->Add(hPdgCodemdRTPCclustersRejected); | |
908 | fListOfHistos->Add(hPtRTPCclustersSelected); | |
909 | fListOfHistos->Add(hRTPCclustersRTPCclustersSelected); | |
910 | fListOfHistos->Add(hPdgCodemdMinvRejected); | |
911 | fListOfHistos->Add(hPtSelected); | |
912 | fListOfHistos->Add(hEtaSelected); | |
913 | fListOfHistos->Add(hRapiditySelected); | |
914 | fListOfHistos->Add(hQtSelected); | |
915 | fListOfHistos->Add(hKinkAngleSelected); | |
916 | fListOfHistos->Add(hDCAkinkSelected); | |
917 | fListOfHistos->Add(hPmKinkAngSelected); | |
918 | fListOfHistos->Add(hKinkPosXYSelected); | |
919 | fListOfHistos->Add(hKinkPosZRSelected); | |
920 | fListOfHistos->Add(hKinkPosRSelected); | |
921 | fListOfHistos->Add(hPdgCodemdSelected); | |
922 | fListOfHistos->Add(hPmdSelected); | |
923 | fListOfHistos->Add(hMinvPimuSelected); | |
924 | fListOfHistos->Add(hUIDKinkDauSelected); | |
925 | fListOfHistos->Add(hdEdxSelected); | |
926 | fListOfHistos->Add(hPtSelectedFake); | |
927 | fListOfHistos->Add(hEtaSelectedFake); | |
928 | fListOfHistos->Add(hRapiditySelectedFake); | |
929 | fListOfHistos->Add(hQtSelectedFake); | |
930 | fListOfHistos->Add(hKinkAngleSelectedFake); | |
931 | fListOfHistos->Add(hDCAkinkSelectedFake); | |
932 | fListOfHistos->Add(hPmKinkAngSelectedFake); | |
933 | fListOfHistos->Add(hKinkPosXYSelectedFake); | |
934 | fListOfHistos->Add(hKinkPosZRSelectedFake); | |
935 | fListOfHistos->Add(hKinkPosRSelectedFake); | |
936 | fListOfHistos->Add(hPmdSelectedFake); | |
937 | fListOfHistos->Add(hMinvPimuSelectedFake); | |
938 | fListOfHistos->Add(hdEdxSelectedFake); | |
939 | fListOfHistos->Add(hPdgCodemddEdxRejected); | |
940 | fListOfHistos->Add(hPtPiSelected); | |
941 | fListOfHistos->Add(hEtaPiSelected); | |
942 | fListOfHistos->Add(hRapidityPiSelected); | |
943 | fListOfHistos->Add(hQtPiSelected); | |
944 | fListOfHistos->Add(hKinkAnglePiSelected); | |
945 | fListOfHistos->Add(hDCAkinkPiSelected); | |
946 | fListOfHistos->Add(hPmKinkAngPiSelected); | |
947 | fListOfHistos->Add(hKinkPosRTPCclusters1PiSelected); | |
948 | fListOfHistos->Add(hKinkPosRTPCclusters2PiSelected); | |
949 | fListOfHistos->Add(hKinkPosXYPiSelected); | |
950 | fListOfHistos->Add(hKinkPosZRPiSelected); | |
951 | fListOfHistos->Add(hKinkPosRPiSelected); | |
952 | fListOfHistos->Add(hKinkPosZPiSelected); | |
953 | fListOfHistos->Add(hPmPPiSelected); | |
954 | fListOfHistos->Add(hPdgCodemdPiSelected); | |
955 | fListOfHistos->Add(hPmdPiSelected); | |
956 | fListOfHistos->Add(hMinvPimuPiSelected); | |
957 | fListOfHistos->Add(hUIDKinkDauPiSelected); | |
958 | fListOfHistos->Add(hdEdxPiSelected); | |
959 | ||
960 | fListOfHistos->Add(hPtPiSelectedPlus); | |
961 | fListOfHistos->Add(hEtaPiSelectedPlus); | |
962 | fListOfHistos->Add(hRapidityPiSelectedPlus); | |
963 | fListOfHistos->Add(hQtPiSelectedPlus); | |
964 | fListOfHistos->Add(hKinkAnglePiSelectedPlus); | |
965 | fListOfHistos->Add(hDCAkinkPiSelectedPlus); | |
966 | fListOfHistos->Add(hPmKinkAngPiSelectedPlus); | |
967 | fListOfHistos->Add(hKinkPosXYPiSelectedPlus); | |
968 | fListOfHistos->Add(hKinkPosZRPiSelectedPlus); | |
969 | fListOfHistos->Add(hPdgCodemdPiSelectedPlus); | |
970 | fListOfHistos->Add(hPmdPiSelectedPlus); | |
971 | fListOfHistos->Add(hMinvPimuPiSelectedPlus); | |
972 | fListOfHistos->Add(hUIDPiDaumuSelectedPlus); | |
973 | fListOfHistos->Add(hdEdxPiSelectedPlus); | |
974 | fListOfHistos->Add(hPtPrimPiKinksPlus); | |
975 | fListOfHistos->Add(hEtaPrimPiKinksPlus); | |
976 | fListOfHistos->Add(hRapidityPrimPiKinksPlus); | |
977 | fListOfHistos->Add(hPtSecondPiKinksPlus); | |
978 | fListOfHistos->Add(hEtaSecondPiKinksPlus); | |
979 | fListOfHistos->Add(hRapiditySecondPiKinksPlus); | |
980 | fListOfHistos->Add(hPtNonPiKinksPlus); | |
981 | fListOfHistos->Add(hEtaNonPiKinksPlus); | |
982 | fListOfHistos->Add(hRapidityNonPiKinksPlus); | |
983 | fListOfHistos->Add(hPdgCodemdNonPiKinksPlus); | |
984 | ||
985 | fListOfHistos->Add(hPtPiSelectedMinus); | |
986 | fListOfHistos->Add(hEtaPiSelectedMinus); | |
987 | fListOfHistos->Add(hRapidityPiSelectedMinus); | |
988 | fListOfHistos->Add(hQtPiSelectedMinus); | |
989 | fListOfHistos->Add(hKinkAnglePiSelectedMinus); | |
990 | fListOfHistos->Add(hDCAkinkPiSelectedMinus); | |
991 | fListOfHistos->Add(hPmKinkAngPiSelectedMinus); | |
992 | fListOfHistos->Add(hKinkPosXYPiSelectedMinus); | |
993 | fListOfHistos->Add(hKinkPosZRPiSelectedMinus); | |
994 | fListOfHistos->Add(hPdgCodemdPiSelectedMinus); | |
995 | fListOfHistos->Add(hPmdPiSelectedMinus); | |
996 | fListOfHistos->Add(hMinvPimuPiSelectedMinus); | |
997 | fListOfHistos->Add(hUIDPiDaumuSelectedMinus); | |
998 | fListOfHistos->Add(hdEdxPiSelectedMinus); | |
999 | fListOfHistos->Add(hPtPrimPiKinksMinus); | |
1000 | fListOfHistos->Add(hEtaPrimPiKinksMinus); | |
1001 | fListOfHistos->Add(hRapidityPrimPiKinksMinus); | |
1002 | fListOfHistos->Add(hPtSecondPiKinksMinus); | |
1003 | fListOfHistos->Add(hEtaSecondPiKinksMinus); | |
1004 | fListOfHistos->Add(hRapiditySecondPiKinksMinus); | |
1005 | fListOfHistos->Add(hPtNonPiKinksMinus); | |
1006 | fListOfHistos->Add(hEtaNonPiKinksMinus); | |
1007 | fListOfHistos->Add(hRapidityNonPiKinksMinus); | |
1008 | fListOfHistos->Add(hPdgCodemdNonPiKinksMinus); | |
1009 | ||
1010 | fListOfHistos->SetOwner(kTRUE); | |
1011 | PostData(1, fListOfHistos); | |
1012 | } | |
1013 | ||
1014 | //________________________________________________________________________ | |
1015 | void AliAnalysisPionKinksMCESD::UserExec(Option_t *) { | |
1016 | AliVEvent *event = InputEvent(); | |
1017 | if (!event) { | |
1018 | Printf("ERROR: Could not retrieve event"); | |
1019 | return; | |
1020 | } | |
1021 | ||
1022 | AliMCEvent* mcEvent = MCEvent(); | |
1023 | if (!mcEvent) { | |
1024 | Printf("ERROR: Could not retrieve MC event"); | |
1025 | return; | |
1026 | } | |
1027 | AliESDEvent* esdEvent = dynamic_cast<AliESDEvent*>(event); | |
1028 | if (!esdEvent) { | |
1029 | Printf("ERROR: Could not retrieve esd"); | |
1030 | return; | |
1031 | } | |
1032 | ||
1033 | ||
1034 | //------------------------------ MC Multiplicity unbiased------------------------// | |
1035 | AliStack* MCstack = mcEvent->Stack(); //stack of MC events | |
1036 | Int_t MCNTracks = mcEvent->GetNumberOfTracks(); | |
1037 | // Int_t MCNTracks2 = MCstack->GetNtrack(); | |
1038 | hMCMult->Fill(MCNTracks); | |
1039 | Int_t MCNPrimTracks = MCstack->GetNprimary(); | |
1040 | //Printf("There are %d number of primary tracks in this Monte Carlo event", MCNPrimTracks); | |
1041 | hMCMultPrim->Fill(MCNPrimTracks); | |
1042 | ||
1043 | //------------------------ Data Multiplicity unbiased --------------------------// | |
1044 | Int_t NTracks = esdEvent->GetNumberOfTracks(); //number of ESD tracks | |
1045 | hMult->Fill(NTracks); | |
1046 | ||
1047 | //----------------------------- Accepted Multiplicity -----------------------------// | |
1048 | Float_t NAcceptedTracks = fTrackCuts->CountAcceptedTracks(esdEvent); | |
1049 | if(fLowMulcut>-1) { | |
1050 | if(NAcceptedTracks<fLowMulcut) return; | |
1051 | } | |
1052 | if(fUpMulcut>-1) { | |
1053 | if(NAcceptedTracks>fUpMulcut) return; | |
1054 | } | |
1055 | hAcceptedMult->Fill(NAcceptedTracks); //to check if the multiplicity limits are ok | |
1056 | ||
1057 | ||
1058 | //-------------------------------- MC data Analysis -----------------------------// | |
1059 | for (Int_t iMC = 0; iMC < MCNTracks; iMC++) { //loop on all accepted MC tracks | |
1060 | TParticle* MCparticle = MCstack->Particle(iMC); | |
1061 | if (!MCparticle) { | |
1062 | Printf("ERROR: Could not receive MC particle %d", iMC); | |
1063 | continue; | |
1064 | } | |
1065 | ||
1066 | Double_t MCPt = MCparticle->Pt(); | |
1067 | Double_t MCP = MCparticle->P(); | |
1068 | Double_t MCEta = MCparticle->Eta(); | |
1069 | hMCPtAll->Fill(MCPt); | |
1070 | hMCEtaAll->Fill(MCEta); | |
1071 | ||
1072 | if (!MCstack->IsPhysicalPrimary(iMC)) continue; | |
1073 | hMCPtPrim->Fill(MCPt); | |
1074 | hMCEtaPrim->Fill(MCEta); | |
1075 | ||
1076 | if (MCPt<cLowPt) continue; | |
1077 | ||
1078 | hMCPt->Fill(MCPt); | |
1079 | hMCEta->Fill(MCEta); | |
1080 | ||
1081 | Int_t MCPdg = MCparticle->GetPdgCode(); | |
1082 | hMCPdg->Fill(MCPdg); | |
1083 | ||
1084 | if (MCPdg==cPdgPion) { //positive pion selection | |
1085 | Double_t MCRapidity = GetMCRapidity(MCparticle); | |
1086 | if (TMath::Abs(MCRapidity)>cRapidityLim) continue; | |
1087 | hMCMultPiPlus->Fill(iMC); //MC pion multiplicity | |
1088 | hMCPtPiPlus->Fill(MCPt); | |
1089 | hMCEtaPiPlus->Fill(MCEta); | |
1090 | hMCRapidityPiPlus->Fill(MCRapidity); | |
1091 | ||
1092 | Int_t MCNDaughtersPlus = MCparticle->GetNDaughters(); | |
1093 | hMCNDaughtersPlus->Fill(MCNDaughtersPlus); | |
1094 | Int_t FirstDPlus = MCparticle->GetFirstDaughter(); //first daughter's label | |
1095 | Int_t LastDPlus = MCparticle->GetLastDaughter(); //last daughter's label | |
1096 | if ((FirstDPlus>MCNTracks)||(LastDPlus>MCNTracks)) continue; | |
1097 | ||
1098 | ||
1099 | for (Int_t iMCdPlus=FirstDPlus; iMCdPlus<=LastDPlus; iMCdPlus++) { //loop on pion daughters | |
1100 | if (iMCdPlus<0) continue; //debug | |
1101 | TParticle* MCdaughterPlus = MCstack->Particle(iMCdPlus); | |
1102 | ||
1103 | Double_t RdPlus = MCdaughterPlus->R(); //position radius of daughter's generation vertex | |
1104 | hMCRadPiDauPlus->Fill(RdPlus); | |
1105 | ||
1106 | Double_t MCKinkPosZPlus = MCdaughterPlus->Vz(); | |
1107 | hMCKinkPosZPlus->Fill(MCKinkPosZPlus); | |
1108 | ||
1109 | if ((TMath::Abs(MCKinkPosZPlus)<cLowZ) || (TMath::Abs(MCKinkPosZPlus)>cUpZ)) continue; | |
1110 | ||
1111 | if ((RdPlus<cLowR) || (RdPlus>cUpR)) continue; //selection of daughters that where generated in TPC | |
1112 | ||
1113 | Int_t dcodePlus = MCdaughterPlus->GetPdgCode(); | |
1114 | ||
1115 | UInt_t MCDauUIDPlus = MCdaughterPlus->GetUniqueID(); //daughter's unique id (= method of production) | |
1116 | hMCUIDPiDauPlus->Fill(MCDauUIDPlus); | |
1117 | ||
1118 | if (MCDauUIDPlus!=4) { //selection of decayed daughters | |
1119 | hMCPdgPiNonDecayedPlus->Fill(dcodePlus); | |
1120 | continue; | |
1121 | } | |
1122 | ||
1123 | hMCPdgPiDauPlus->Fill(TMath::Abs(dcodePlus)); | |
1124 | ||
1125 | Double_t MCPtdPlus = MCdaughterPlus->Pt(); //daughter's transverse momentum in lab frame | |
1126 | Double_t MCQtPlus = MCPQt(mcEvent, iMC, MCdaughterPlus); //daughter's transverse momentum in mother's frame (Qt) | |
1127 | Double_t MCKinkAnglePlus2 = fuMCKinkAngle(mcEvent, iMC, MCdaughterPlus, kTRUE); //kink angle in degrees | |
1128 | Double_t MCMaxKinkAngPimuPlus=fMaxKinkAngPimu->Eval(MCP,0.,0.,0.); //maximum decay angle in lab for pion decaying to muon | |
1129 | ||
30687e36 | 1130 | // if (MCKinkAnglePlus2>(MCMaxKinkAngPimuPlus*1.1)) continue; |
1131 | if (MCKinkAnglePlus2>(MCMaxKinkAngPimuPlus)) continue; | |
bd4be5f8 | 1132 | |
1133 | hMCQtPlus->Fill(MCQtPlus); | |
1134 | hMCKinkAnglePlus->Fill(MCKinkAnglePlus2); | |
1135 | hMCPKinkAngPlus->Fill(MCP,MCKinkAnglePlus2); | |
1136 | hMCPdgCodemdPlus->Fill(TMath::Abs(MCPdg),TMath::Abs(dcodePlus)); | |
1137 | hMCPtmdPlus->Fill(MCPt, MCPtdPlus); | |
1138 | ||
1139 | if ((MCQtPlus<cLowQt) || (MCQtPlus>cUpQt) || (MCKinkAnglePlus2<cLowKinkAngle)) continue; | |
1140 | ||
1141 | if (dcodePlus==-cPdgMuon) { //muon daughters selection | |
1142 | hMCPtPimuonPlus->Fill(MCPt); | |
1143 | hMCEtaPimuonPlus->Fill(MCEta); | |
1144 | hMCRapidityPimuonPlus->Fill(MCRapidity); | |
1145 | hMCQtPimuonPlus->Fill(MCQtPlus); | |
1146 | hMCPKinkAngPimuonPlus->Fill(MCKinkAnglePlus2); | |
1147 | } else {hMCPtPiotherPlus->Fill(MCPt); | |
1148 | hMCEtaPiotherPlus->Fill(MCEta); | |
1149 | hMCRapidityPiotherPlus->Fill(MCRapidity); | |
1150 | hMCQtPiotherPlus->Fill(MCQtPlus); | |
1151 | hMCPKinkAngPiotherPlus->Fill(MCKinkAnglePlus2); | |
1152 | } | |
1153 | } //end of pion daughters' loop | |
1154 | } else if (MCPdg==-cPdgPion) { //negative pion selection | |
1155 | Double_t MCRapidity = GetMCRapidity(MCparticle); | |
1156 | if (TMath::Abs(MCRapidity)>cRapidityLim) continue; | |
1157 | hMCMultPiMinus->Fill(iMC); //MC pion multiplicity | |
1158 | hMCPtPiMinus->Fill(MCPt); | |
1159 | hMCEtaPiMinus->Fill(MCEta); | |
1160 | hMCRapidityPiMinus->Fill(MCRapidity); | |
1161 | ||
1162 | Int_t MCNDaughtersMinus = MCparticle->GetNDaughters(); | |
1163 | hMCNDaughtersMinus->Fill(MCNDaughtersMinus); | |
1164 | Int_t FirstDMinus = MCparticle->GetFirstDaughter(); //first daughter's label | |
1165 | Int_t LastDMinus = MCparticle->GetLastDaughter(); //last daughter's label | |
1166 | if ((FirstDMinus>MCNTracks)||(LastDMinus>MCNTracks)) continue; | |
1167 | ||
1168 | for (Int_t iMCdMinus=FirstDMinus; iMCdMinus<=LastDMinus; iMCdMinus++) { //loop on pion daughters | |
1169 | if (iMCdMinus<0) continue; //debug | |
1170 | TParticle* MCdaughterMinus = MCstack->Particle(iMCdMinus); | |
1171 | ||
1172 | Double_t RdMinus = MCdaughterMinus->R(); //position radius of daughter's generation vertex | |
1173 | hMCRadPiDauMinus->Fill(RdMinus); | |
1174 | ||
1175 | Double_t MCKinkPosZMinus = MCdaughterMinus->Vz(); | |
1176 | hMCKinkPosZMinus->Fill(MCKinkPosZMinus); | |
1177 | ||
1178 | if ((TMath::Abs(MCKinkPosZMinus)<cLowZ) || (TMath::Abs(MCKinkPosZMinus)>cUpZ)) continue; | |
1179 | ||
1180 | if ((RdMinus<cLowR) || (RdMinus>cUpR)) continue; //selection of daughters that where generated in TPC | |
1181 | ||
1182 | Int_t dcodeMinus = MCdaughterMinus->GetPdgCode(); | |
1183 | ||
1184 | UInt_t MCDauUIDMinus = MCdaughterMinus->GetUniqueID(); //daughter's unique id (= method of production) | |
1185 | hMCUIDPiDauMinus->Fill(MCDauUIDMinus); | |
1186 | ||
1187 | if (MCDauUIDMinus!=4) { //selection of decayed daughters | |
1188 | hMCPdgPiNonDecayedMinus->Fill(dcodeMinus); | |
1189 | continue; | |
1190 | } | |
1191 | ||
1192 | hMCPdgPiDauMinus->Fill(TMath::Abs(dcodeMinus)); | |
1193 | ||
1194 | ||
1195 | Double_t MCPtdMinus = MCdaughterMinus->Pt(); //daughter's transverse momentum in lab frame | |
1196 | Double_t MCQtMinus = MCPQt(mcEvent, iMC, MCdaughterMinus); //daughter's transverse momentum in mother's frame (Qt) | |
1197 | Double_t MCKinkAngleMinus2 = fuMCKinkAngle(mcEvent, iMC, MCdaughterMinus, kTRUE); //kink angle in degrees | |
1198 | Double_t MCMaxKinkAngPimuMinus=fMaxKinkAngPimu->Eval(MCP,0.,0.,0.); //maximum decay angle in lab for pion decaying to muon | |
1199 | ||
1200 | if (MCKinkAngleMinus2>(MCMaxKinkAngPimuMinus*1.1)) continue; | |
1201 | ||
1202 | hMCQtMinus->Fill(MCQtMinus); | |
1203 | hMCKinkAngleMinus->Fill(MCKinkAngleMinus2); | |
1204 | hMCPKinkAngMinus->Fill(MCP,MCKinkAngleMinus2); | |
1205 | hMCPdgCodemdMinus->Fill(TMath::Abs(MCPdg),TMath::Abs(dcodeMinus)); | |
1206 | hMCPtmdMinus->Fill(MCPt, MCPtdMinus); | |
1207 | ||
1208 | if ((MCQtMinus<cLowQt) || (MCQtMinus>cUpQt) || (MCKinkAngleMinus2<cLowKinkAngle)) continue; | |
1209 | ||
1210 | if (dcodeMinus==cPdgMuon) { //muon daughters selection | |
1211 | hMCPtPimuonMinus->Fill(MCPt); | |
1212 | hMCEtaPimuonMinus->Fill(MCEta); | |
1213 | hMCRapidityPimuonMinus->Fill(MCRapidity); | |
1214 | hMCQtPimuonMinus->Fill(MCQtMinus); | |
1215 | hMCPKinkAngPimuonMinus->Fill(MCKinkAngleMinus2); | |
1216 | } else {hMCPtPiotherMinus->Fill(MCPt);/////////////////////////// | |
1217 | hMCEtaPiotherMinus->Fill(MCEta); | |
1218 | hMCRapidityPiotherMinus->Fill(MCRapidity); | |
1219 | hMCQtPiotherMinus->Fill(MCQtMinus); | |
1220 | hMCPKinkAngPiotherMinus->Fill(MCKinkAngleMinus2); | |
1221 | } | |
1222 | } //end of pion daughters' loop | |
1223 | } | |
1224 | ||
1225 | } // end of MC tracks loop | |
1226 | ||
1227 | ||
1228 | ||
1229 | //----------------------------- Physics selection ------------------------------// | |
1230 | Bool_t IsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kMB; | |
1231 | if ( IsSelected ==kFALSE) return; | |
1232 | ||
1233 | //--------------- Data Multiplicity after Physics selection --------------------// | |
1234 | hMultPS->Fill(NTracks); | |
1235 | ||
1236 | //------------------------------------ Vertex ----------------------------------// | |
1237 | const AliESDVertex* vtx = GetEventVertex(esdEvent); //ESD primary vertex | |
1238 | if (!vtx) return; | |
1239 | ||
1240 | Double_t vtxpos[3]; //vertex position vector | |
1241 | vtx->GetXYZ(vtxpos); | |
1242 | hvtx->Fill(vtxpos[0], vtxpos[1], vtxpos[2]); //ESD primary vertex position (x-y-z) | |
1243 | hvtxy->Fill(vtxpos[0], vtxpos[1]); | |
1244 | hvtyz->Fill(vtxpos[1], vtxpos[2]); | |
1245 | hvtxz->Fill(vtxpos[0], vtxpos[2]); | |
1246 | ||
1247 | if (TMath::Abs(vtxpos[2])>10.) return; | |
1248 | ||
1249 | //-------------------- Data Multiplicity after vertex cut -----------------------// | |
1250 | hMultPSV->Fill(NTracks); | |
1251 | ||
1252 | //------------------------------- dE/dx parameters -----------------------------// | |
1253 | if(!fPIDResponse) { | |
1254 | AliAnalysisManager *man = AliAnalysisManager::GetAnalysisManager(); | |
1255 | AliInputEventHandler* inputHandler = (AliInputEventHandler*)(man->GetInputEventHandler()); | |
1256 | fPIDResponse = inputHandler->GetPIDResponse(); | |
1257 | } | |
1258 | ||
1259 | //------------------------- Reconstructed data Analysis -----------------------// | |
1260 | for (Int_t iData = 0; iData<NTracks; iData++) { //loop on all ESD tracks | |
1261 | AliESDtrack *ESDtrack = esdEvent->GetTrack(iData); | |
1262 | if (!ESDtrack) { | |
1263 | Printf("ERROR: Could not receive ESD track %d", iData); | |
1264 | continue; | |
1265 | } | |
1266 | ||
1267 | Double_t Pt = ESDtrack->Pt(); | |
1268 | Double_t Eta = ESDtrack->Eta(); | |
1269 | ||
1270 | hPtAll->Fill(Pt); | |
1271 | hEtaAll->Fill(Eta); | |
1272 | //hRapidityAll->Fill(Rapidity(ESDtrack)); | |
1273 | ||
1274 | Double_t TrackPos[3]; //starting position of ESD tracks (x-y-z) | |
1275 | ESDtrack->GetXYZ(TrackPos); | |
1276 | hTrackPos->Fill(TrackPos[0],TrackPos[1],TrackPos[2]); | |
1277 | hTrackPosxy->Fill(TrackPos[0], TrackPos[1]); | |
1278 | hTrackPosyz->Fill(TrackPos[1], TrackPos[2]); | |
1279 | hTrackPosxz->Fill(TrackPos[0], TrackPos[2]); | |
1280 | ||
1281 | if ((IsPrimaryTrack(ESDtrack) == kFALSE) || (IsGoodTrack(ESDtrack) == kFALSE)) continue; //reject bad & secondary tracks | |
1282 | hMultPrim->Fill(NTracks); | |
1283 | hPtPrim->Fill(Pt); | |
1284 | hEtaPrim->Fill(Eta); | |
1285 | //hRapidityPrim->Fill(Rapidity(ESDtrack)); | |
1286 | ||
1287 | hPrimTrackPos->Fill(TrackPos[0],TrackPos[1],TrackPos[2]); //starting position of primary - supposed ESD tracks (x-y-z) | |
1288 | hPrimTrackPosxy->Fill(TrackPos[0], TrackPos[1]); | |
1289 | hPrimTrackPosyz->Fill(TrackPos[1], TrackPos[2]); | |
1290 | hPrimTrackPosxz->Fill(TrackPos[0], TrackPos[2]); | |
1291 | ||
1292 | if (Pt<cLowPt) continue; | |
1293 | ||
1294 | hPt->Fill(Pt); | |
1295 | hEta->Fill(Eta); | |
1296 | //hRapidity->Fill(fuRapidity(ESDtrack)); | |
1297 | ||
1298 | Int_t KinkIndex = ESDtrack->GetKinkIndex(0); //kink index (1st component is negative if the track is a kink candidate) | |
1299 | if (KinkIndex>=0) continue; //kink selection | |
1300 | ||
1301 | Double_t Rapidity = fuRapidity(ESDtrack); | |
1302 | if (TMath::Abs(Rapidity)>cRapidityLim) continue; | |
1303 | ||
1304 | Double_t dEdx = ESDtrack->GetTPCsignal(); | |
1305 | Double_t NTPCclusters = ESDtrack->GetTPCclusters(0); | |
1306 | ||
1307 | AliESDkink *kink = esdEvent->GetKink(TMath::Abs(KinkIndex)-1); | |
1308 | ||
1309 | Int_t Label1 = kink->GetLabel(0); //mother's track MC label (first component is mother) | |
1310 | Int_t Label2 = kink->GetLabel(1); //daughter's track MC label (second component is daughter) | |
1311 | if (Label1>MCNTracks) continue; | |
1312 | if (Label2>MCNTracks) continue; | |
1313 | ||
1314 | const TVector3 KinkPos(kink->GetPosition()); | |
1315 | Double_t KinkPosR = kink->GetR(); //kink's position radius | |
1316 | Double_t KinkDistance = kink->GetDistance(); | |
1317 | Double_t Qt = kink->GetQt(); //daughter's transverse momentum in mother's frame | |
1318 | Double_t KinkAngle =TMath::RadToDeg()*kink->GetAngle(2); //kink angle in mother frame (3rd component is angle in rads) | |
1319 | ||
1320 | const TVector3 PMother(kink->GetMotherP()); //ESD mother's momentum | |
1321 | Double_t Pmx = PMother.Px(); | |
1322 | Double_t Pmy = PMother.Py(); | |
1323 | Double_t Pmz = PMother.Pz(); | |
1324 | Double_t Pm = PMother.Mag(); //ESD mother's momentum magnitude | |
1325 | Double_t PTrack[3]; | |
1326 | ESDtrack->GetPxPyPz(PTrack); | |
1327 | TVector3 Pvector3(PTrack[0], PTrack[1], PTrack[2]); | |
1328 | Double_t P = Pvector3.Mag(); | |
1329 | Double_t PTPC = ESDtrack->GetInnerParam()->GetP(); | |
1330 | ||
1331 | const TVector3 PDaughter(kink->GetDaughterP()); //ESD daughter's momentum | |
1332 | Double_t Pdx = PDaughter.Px(); | |
1333 | Double_t Pdy = PDaughter.Py(); | |
1334 | Double_t Pdz = PDaughter.Pz(); | |
1335 | Double_t Pd = PDaughter.Mag(); //ESD daugter's momentum magnitude | |
1336 | Double_t Edmu = TMath::Sqrt(TMath::Power(Pd,2)+TMath::Power(cMuonMass,2)); //ESD muon daughter's energy | |
1337 | ||
1338 | Double_t DP = TMath::Sqrt((Pmx-Pdx)*(Pmx-Pdx)+(Pmy-Pdy)*(Pmy-Pdy)+(Pmz-Pdz)*(Pmz-Pdz)); //transferred momentum magnitude | |
1339 | Double_t MinvPimu = TMath::Sqrt((Edmu+DP)*(Edmu+DP)-TMath::Power(Pm,2)); //pion mother's invariant mass when decaying to muon | |
1340 | Double_t MaxKinkAngPimu=fMaxKinkAngPimu->Eval(P,0.,0.,0.); //maximum decay angle in lab frame for a pion decaying to muon | |
1341 | ||
1342 | TParticle *particle1 = MCstack->Particle(TMath::Abs(kink->GetLabel(0))); //mother MC particle object | |
1343 | TParticle *particle2 = MCstack->Particle(TMath::Abs(kink->GetLabel(1))); //daughter MC particle object | |
1344 | ||
1345 | Int_t code1 = particle1->GetPdgCode(); //mother's pdg code obtained from MC mother object | |
1346 | Int_t code2 = particle2->GetPdgCode(); //daughter's pdg code obtained from MC daughter object | |
1347 | ||
1348 | UInt_t DauUID = particle2->GetUniqueID(); //ESD daughter's unique id (method of production) | |
1349 | ||
1350 | Double_t MCKinkPosZ = particle2->Vz(); | |
1351 | ||
1352 | hPtKink->Fill(Pt); | |
1353 | hEtaKink->Fill(Eta); | |
1354 | hRapidityKink->Fill(Rapidity); | |
1355 | hPmP->Fill(Pm,P); | |
1356 | hKinkPosRTPCclusters1->Fill(NTPCclusters/KinkPosR); | |
1357 | hKinkPosRTPCclusters2->Fill(KinkPosR, NTPCclusters); | |
1358 | hQt->Fill(Qt); | |
1359 | hKinkAngle->Fill(KinkAngle); | |
1360 | hDCAkink->Fill(KinkDistance); | |
1361 | hPmKinkAng->Fill(P, KinkAngle); | |
1362 | hKinkPosXY->Fill(KinkPos[0],KinkPos[1]); | |
1363 | hKinkPosZY->Fill(KinkPos[2],KinkPos[1]); | |
1364 | hKinkPosZR->Fill(KinkPos[2],KinkPosR); | |
1365 | hKinkPosR->Fill(KinkPosR); | |
1366 | hKinkPosZ->Fill(KinkPos[2]); | |
1367 | hKinkPosZMCKinkPosZ->Fill(KinkPos[2], MCKinkPosZ); | |
1368 | hPdgCodemd->Fill(TMath::Abs(code1),TMath::Abs(code2)); | |
1369 | hPmd->Fill(Pm,Pd); | |
1370 | hMinvPimu->Fill(MinvPimu); | |
1371 | hUIDKinkDau->Fill(DauUID); | |
1372 | hdEdx->Fill(PTPC, dEdx); | |
1373 | ||
1374 | if ( (IsRealPionKink(kink, MCstack) == kFALSE) || (Label1>MCNPrimTracks) ) { | |
1375 | hPtKinkFake->Fill(Pt); | |
1376 | hEtaKinkFake->Fill(Eta); | |
1377 | hRapidityKinkFake->Fill(Rapidity); | |
1378 | hPmPFake->Fill(Pm,P); | |
1379 | hKinkPosRTPCclusters1Fake->Fill(NTPCclusters/KinkPosR); | |
1380 | hKinkPosRTPCclusters2Fake->Fill(KinkPosR,NTPCclusters); | |
1381 | hQtFake->Fill(Qt); | |
1382 | hKinkAngleFake->Fill(KinkAngle); | |
1383 | hDCAkinkFake->Fill(KinkDistance); | |
1384 | hPmKinkAngFake->Fill(P, KinkAngle); | |
1385 | hKinkPosXYFake->Fill(KinkPos[0],KinkPos[1]); | |
1386 | hKinkPosZYFake->Fill(KinkPos[2],KinkPos[1]); | |
1387 | hKinkPosZRFake->Fill(KinkPos[2],KinkPosR); | |
1388 | hKinkPosRFake->Fill(KinkPosR); | |
1389 | hKinkPosZFake->Fill(KinkPos[2]); | |
1390 | hKinkPosZMCKinkPosZFake->Fill(KinkPos[2], MCKinkPosZ); | |
1391 | hPdgCodemdFake->Fill(TMath::Abs(code1),TMath::Abs(code2)); | |
1392 | hPmdFake->Fill(Pm,Pd); | |
1393 | hMinvPimuFake->Fill(MinvPimu); | |
1394 | hUIDKinkDauFake->Fill(DauUID); | |
1395 | hdEdxFake->Fill(PTPC, dEdx); | |
1396 | } | |
1397 | ||
1398 | if ((KinkPosR<cLowR)||(KinkPosR>cUpR)) continue; //selection of kinks that are detected in the main region of TPC | |
1399 | ||
1400 | hPtPosRSelected->Fill(Pt); | |
1401 | ||
1402 | if ((TMath::Abs(KinkPos[2])<0.5) || (TMath::Abs(KinkPos[2])>225)){ | |
1403 | hPdgCodemdZRejected->Fill(TMath::Abs(code1),TMath::Abs(code2)); | |
1404 | continue; | |
1405 | } | |
1406 | hPtZSelected->Fill(Pt); | |
1407 | ||
1408 | ||
1409 | if (KinkAngle<cLowKinkAngle) { //reject fake kinks (with very small kink angle) | |
1410 | hPdgCodemdAngRejected->Fill(TMath::Abs(code1), TMath::Abs(code2)); | |
1411 | continue; | |
1412 | } | |
1413 | hPtAngSelected->Fill(Pt); | |
1414 | ||
1415 | if ((Pm/P<0.7) || (1.3<Pm/P)) { | |
1416 | hPdgCodemdPmRejected->Fill(TMath::Abs(code1),TMath::Abs(code2)); | |
1417 | continue; | |
1418 | }//good tracks check mother track and kink if near | |
1419 | hPtPmSelected->Fill(Pt); | |
1420 | ||
1421 | if (Qt<cLowQt) { //pion kinks Qt cuts | |
1422 | hPdgCodemdQtLowRejected->Fill(TMath::Abs(code1),TMath::Abs(code2)); | |
1423 | continue; | |
1424 | } | |
1425 | ||
1426 | //Good Kinks | |
1427 | hPtGoodKink->Fill(Pt); | |
1428 | hEtaGoodKink->Fill(Eta); | |
1429 | hRapidityGoodKink->Fill(Rapidity); | |
1430 | hQtGoodKink->Fill(Qt); | |
1431 | hPmGoodKinkAng->Fill(P, KinkAngle); | |
1432 | hPdgCodemdGoodKink->Fill(TMath::Abs(code1),TMath::Abs(code2)); | |
1433 | hPmdGoodKink->Fill(Pm,Pd); | |
1434 | hUIDGoodKinkDau->Fill(DauUID); | |
1435 | hdEdxGoodKink->Fill(PTPC, dEdx); | |
1436 | ||
1437 | ||
1438 | ||
1439 | //---------------------- perfect PID from pdg code -------------------------// | |
1440 | ||
1441 | if (code1==cPdgPion) { //selection of pion plus kinks | |
1442 | hUIDPiDauPlus->Fill(DauUID); | |
1443 | if ((Label1<=MCNPrimTracks) && (DauUID==4)) { //select primary pions that decay | |
1444 | hMultPiPlus->Fill(NTracks); | |
1445 | hPtPiPlus->Fill(Pt); | |
1446 | hEtaPiPlus->Fill(Eta); | |
1447 | hRapidityPiPlus->Fill(Rapidity); | |
1448 | hQtPiPlus->Fill(Qt); | |
1449 | hKinkAnglePiPlus->Fill(KinkAngle); | |
1450 | hPmKinkAngPiPlus->Fill(P, KinkAngle); | |
1451 | hKinkPosXYPiPlus->Fill(KinkPos[0],KinkPos[1]); | |
1452 | hKinkPosZRPiPlus->Fill(KinkPos[2],KinkPosR); | |
1453 | hKinkPosRPiPlus->Fill(KinkPosR); | |
1454 | hDCAkinkPiPlus->Fill(KinkDistance); | |
1455 | hPdgCodemdPiPlus->Fill(TMath::Abs(code1),TMath::Abs(code2)); | |
1456 | hPmdPiPlus->Fill(Pm,Pd); | |
1457 | hdEdxPiPlus->Fill(PTPC, dEdx); | |
1458 | ||
1459 | if (code2==-cPdgMuon) { //selection of muon daughters | |
1460 | hQtPimuPlus->Fill(Qt); | |
1461 | hPmKinkAngPimuPlus->Fill(P, KinkAngle); | |
1462 | } else { //other daughters? | |
1463 | hQtPiotherPlus->Fill(Qt); | |
1464 | hPmKinkAngPiotherPlus->Fill(P, KinkAngle); | |
1465 | hPdgCodemdPiotherPlus->Fill(TMath::Abs(code1), TMath::Abs(code2)); | |
1466 | } | |
1467 | } | |
1468 | } else if (code1==-cPdgPion) { | |
1469 | hUIDPiDauMinus->Fill(DauUID); | |
1470 | if ((Label1<=MCNPrimTracks) && (DauUID==4)) { //select primary pions that decay | |
1471 | hMultPiMinus->Fill(NTracks); | |
1472 | hPtPiMinus->Fill(Pt); | |
1473 | hEtaPiMinus->Fill(Eta); | |
1474 | hRapidityPiMinus->Fill(Rapidity); | |
1475 | hQtPiMinus->Fill(Qt); | |
1476 | hKinkAnglePiMinus->Fill(KinkAngle); | |
1477 | hPmKinkAngPiMinus->Fill(P, KinkAngle); | |
1478 | hKinkPosXYPiMinus->Fill(KinkPos[0],KinkPos[1]); | |
1479 | hKinkPosZRPiMinus->Fill(KinkPos[2],KinkPosR); | |
1480 | hKinkPosRPiMinus->Fill(KinkPosR); | |
1481 | hDCAkinkPiMinus->Fill(KinkDistance); | |
1482 | hPdgCodemdPiMinus->Fill(TMath::Abs(code1),TMath::Abs(code2)); | |
1483 | hPmdPiMinus->Fill(Pm,Pd); | |
1484 | hdEdxPiMinus->Fill(PTPC, dEdx); | |
1485 | ||
1486 | if (code2==cPdgMuon) { //selection of muon daughters | |
1487 | hQtPimuMinus->Fill(Qt); | |
1488 | hPmKinkAngPimuMinus->Fill(P, KinkAngle); | |
1489 | } else { //other daughters? | |
1490 | hQtPiotherMinus->Fill(Qt); | |
1491 | hPmKinkAngPiotherMinus->Fill(P, KinkAngle); | |
1492 | hPdgCodemdPiotherMinus->Fill(TMath::Abs(code1), TMath::Abs(code2)); | |
1493 | } | |
1494 | } | |
1495 | }// end of pion selection | |
1496 | ||
1497 | ||
1498 | //------------------------ realistic PID from physical criteria --------------------// | |
1499 | ||
1500 | ||
1501 | ||
1502 | if (Qt>cUpQt){ //pion kinks Qt cuts | |
1503 | hPdgCodemdQtRejected->Fill(TMath::Abs(code1),TMath::Abs(code2)); | |
1504 | continue; | |
1505 | } | |
1506 | hPtQtSelected->Fill(Pt); | |
1507 | ||
1508 | if (KinkAngle>(MaxKinkAngPimu*1.1)) { //pion kink angle cuts | |
1509 | hPdgCodemdMaxAngRejected->Fill(TMath::Abs(code1),TMath::Abs(code2)); | |
1510 | continue; | |
1511 | } | |
1512 | hPtMaxAngSelected->Fill(Pt); | |
1513 | ||
1514 | // if ( ((NTPCclusters/KinkPosR)>0.63) || ((NTPCclusters/KinkPosR)<0.20) ) { //good TPC tracks selection | |
1515 | Double_t tpcNClHigh = -51.67+ (11./12.)*KinkPosR; | |
1516 | Double_t tpcNClMin = -85.5 + (65./95.)*KinkPosR; | |
1517 | if ( (NTPCclusters>tpcNClHigh) || (NTPCclusters<tpcNClMin) ){ //good TPC tracks selection | |
1518 | hPdgCodemdRTPCclustersRejected->Fill(TMath::Abs(code1),TMath::Abs(code2)); | |
1519 | continue; | |
1520 | } | |
1521 | hPtRTPCclustersSelected->Fill(Pt); | |
1522 | hRTPCclustersRTPCclustersSelected->Fill(KinkPosR,NTPCclusters); | |
1523 | ||
1524 | if ((MinvPimu>cUpInvMass) || (MinvPimu<cLowInvMass)) { //pion kinks invariant mass cuts | |
1525 | hPdgCodemdMinvRejected->Fill(TMath::Abs(code1),TMath::Abs(code2)); | |
1526 | continue; | |
1527 | } | |
1528 | ||
1529 | ||
1530 | /////////////////selected without dE/dx cut | |
1531 | hPtSelected->Fill(Pt); | |
1532 | hEtaSelected->Fill(Eta); | |
1533 | hRapiditySelected->Fill(Rapidity); | |
1534 | hQtSelected->Fill(Qt); | |
1535 | hKinkAngleSelected->Fill(KinkAngle); | |
1536 | hDCAkinkSelected->Fill(KinkDistance); | |
1537 | hPmKinkAngSelected->Fill(P, KinkAngle); | |
1538 | hKinkPosXYSelected->Fill(KinkPos[0],KinkPos[1]); | |
1539 | hKinkPosZRSelected->Fill(KinkPos[2],KinkPosR); | |
1540 | hKinkPosRSelected->Fill(KinkPosR); | |
1541 | hPdgCodemdSelected->Fill(TMath::Abs(code1),TMath::Abs(code2)); | |
1542 | hPmdSelected->Fill(Pm,Pd); | |
1543 | hMinvPimuSelected->Fill(MinvPimu); | |
1544 | hUIDKinkDauSelected->Fill(DauUID); | |
1545 | hdEdxSelected->Fill(PTPC, dEdx); | |
1546 | if ( (IsRealPionKink(kink, MCstack) == kFALSE) || (Label1>MCNPrimTracks) ) { | |
1547 | hPtSelectedFake->Fill(Pt); | |
1548 | hEtaSelectedFake->Fill(Eta); | |
1549 | hRapiditySelectedFake->Fill(Rapidity); | |
1550 | hQtSelectedFake->Fill(Qt); | |
1551 | hKinkAngleSelectedFake->Fill(KinkAngle); | |
1552 | hDCAkinkSelectedFake->Fill(KinkDistance); | |
1553 | hPmKinkAngSelectedFake->Fill(P, KinkAngle); | |
1554 | hKinkPosXYSelectedFake->Fill(KinkPos[0],KinkPos[1]); | |
1555 | hKinkPosZRSelectedFake->Fill(KinkPos[2],KinkPosR); | |
1556 | hKinkPosRSelectedFake->Fill(KinkPosR); | |
1557 | hPmdSelectedFake->Fill(Pm,Pd); | |
1558 | hMinvPimuSelectedFake->Fill(MinvPimu); | |
1559 | hdEdxSelectedFake->Fill(PTPC, dEdx); | |
1560 | } | |
1561 | ||
1562 | ||
1563 | Double_t NSigmaTPC = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ESDtrack, AliPID::kPion)); | |
1564 | if (NSigmaTPC>cSigmaCut) { // dE/dx cut | |
1565 | hPdgCodemddEdxRejected->Fill(TMath::Abs(code1),TMath::Abs(code2)); | |
1566 | continue; | |
1567 | } | |
1568 | ||
1569 | Double_t Sign = ESDtrack->GetSign(); | |
1570 | ||
1571 | ///////////////// dEdx selected | |
1572 | hPtPiSelected->Fill(Pt); | |
1573 | hEtaPiSelected->Fill(Eta); | |
1574 | hRapidityPiSelected->Fill(Rapidity); | |
1575 | hQtPiSelected->Fill(Qt); | |
1576 | hKinkAnglePiSelected->Fill(KinkAngle); | |
1577 | hDCAkinkPiSelected->Fill(KinkDistance); | |
1578 | hPmKinkAngPiSelected->Fill(P, KinkAngle); | |
1579 | hKinkPosRTPCclusters1PiSelected->Fill(NTPCclusters/KinkPosR); | |
1580 | hKinkPosRTPCclusters2PiSelected->Fill(KinkPosR, NTPCclusters); | |
1581 | hKinkPosXYPiSelected->Fill(KinkPos[0],KinkPos[1]); | |
1582 | hKinkPosZRPiSelected->Fill(KinkPos[2],KinkPosR); | |
1583 | hKinkPosRPiSelected->Fill(KinkPosR); | |
1584 | hKinkPosZPiSelected->Fill(KinkPos[2]); | |
1585 | hPmPPiSelected->Fill(Pm,P); | |
1586 | hPdgCodemdPiSelected->Fill(TMath::Abs(code1),TMath::Abs(code2)); | |
1587 | hPmdPiSelected->Fill(Pm,Pd); | |
1588 | hMinvPimuPiSelected->Fill(MinvPimu); | |
1589 | hUIDKinkDauPiSelected->Fill(DauUID); | |
1590 | hdEdxPiSelected->Fill(PTPC, dEdx); | |
1591 | ||
1592 | if (Sign>0) { | |
1593 | hPtPiSelectedPlus->Fill(Pt); | |
1594 | hEtaPiSelectedPlus->Fill(Eta); | |
1595 | hRapidityPiSelectedPlus->Fill(Rapidity); | |
1596 | hQtPiSelectedPlus->Fill(Qt); | |
1597 | hKinkAnglePiSelectedPlus->Fill(KinkAngle); | |
1598 | hDCAkinkPiSelectedPlus->Fill(KinkDistance); | |
1599 | hPmKinkAngPiSelectedPlus->Fill(P, KinkAngle); | |
1600 | hKinkPosXYPiSelectedPlus->Fill(KinkPos[0],KinkPos[1]); | |
1601 | hKinkPosZRPiSelectedPlus->Fill(KinkPos[2],KinkPosR); | |
1602 | hPdgCodemdPiSelectedPlus->Fill(TMath::Abs(code1),TMath::Abs(code2)); | |
1603 | hPmdPiSelectedPlus->Fill(Pm,Pd); | |
1604 | hMinvPimuPiSelectedPlus->Fill(MinvPimu); | |
1605 | hUIDPiDaumuSelectedPlus->Fill(DauUID); | |
1606 | hdEdxPiSelectedPlus->Fill(PTPC, dEdx); | |
1607 | ||
1608 | //------------------- contamination of results of realistic PID ----------------// | |
1609 | if (IsRealPionKink(kink, MCstack) == kTRUE) { //real pion kinks | |
1610 | if (Label1<=MCNPrimTracks) { //primaries | |
1611 | hPtPrimPiKinksPlus->Fill(Pt); | |
1612 | hEtaPrimPiKinksPlus->Fill(Eta); | |
1613 | hRapidityPrimPiKinksPlus->Fill(Rapidity); | |
1614 | } else { //secondary real kinks | |
1615 | hPtSecondPiKinksPlus->Fill(Pt); | |
1616 | hEtaSecondPiKinksPlus->Fill(Eta); | |
1617 | hRapiditySecondPiKinksPlus->Fill(Rapidity); | |
1618 | } | |
1619 | } else { //fakes | |
1620 | hPtNonPiKinksPlus->Fill(Pt); | |
1621 | hEtaNonPiKinksPlus->Fill(Eta); | |
1622 | hRapidityNonPiKinksPlus->Fill(Rapidity); | |
1623 | hPdgCodemdNonPiKinksPlus->Fill(TMath::Abs(code1),TMath::Abs(code2)); | |
1624 | } | |
1625 | ||
1626 | } else if (Sign<0) { | |
1627 | hPtPiSelectedMinus->Fill(Pt); | |
1628 | hEtaPiSelectedMinus->Fill(Eta); | |
1629 | hRapidityPiSelectedMinus->Fill(Rapidity); | |
1630 | hQtPiSelectedMinus->Fill(Qt); | |
1631 | hKinkAnglePiSelectedMinus->Fill(KinkAngle); | |
1632 | hDCAkinkPiSelectedMinus->Fill(KinkDistance); | |
1633 | hPmKinkAngPiSelectedMinus->Fill(P, KinkAngle); | |
1634 | hKinkPosXYPiSelectedMinus->Fill(KinkPos[0],KinkPos[1]); | |
1635 | hKinkPosZRPiSelectedMinus->Fill(KinkPos[2],KinkPosR); | |
1636 | hPdgCodemdPiSelectedMinus->Fill(TMath::Abs(code1),TMath::Abs(code2)); | |
1637 | hPmdPiSelectedMinus->Fill(Pm,Pd); | |
1638 | hMinvPimuPiSelectedMinus->Fill(MinvPimu); | |
1639 | hUIDPiDaumuSelectedMinus->Fill(DauUID); | |
1640 | hdEdxPiSelectedMinus->Fill(PTPC, dEdx); | |
1641 | ||
1642 | //------------------- contamination of results of realistic PID ----------------// | |
1643 | if (IsRealPionKink(kink, MCstack) == kTRUE) { //real pion kinks | |
1644 | if (Label1<=MCNPrimTracks) { //primaries | |
1645 | hPtPrimPiKinksMinus->Fill(Pt); | |
1646 | hEtaPrimPiKinksMinus->Fill(Eta); | |
1647 | hRapidityPrimPiKinksMinus->Fill(Rapidity); | |
1648 | } else { //secondary real kinks | |
1649 | hPtSecondPiKinksMinus->Fill(Pt); | |
1650 | hEtaSecondPiKinksMinus->Fill(Eta); | |
1651 | hRapiditySecondPiKinksMinus->Fill(Rapidity); | |
1652 | } | |
1653 | } else { //fakes | |
1654 | hPtNonPiKinksMinus->Fill(Pt); | |
1655 | hEtaNonPiKinksMinus->Fill(Eta); | |
1656 | hRapidityNonPiKinksMinus->Fill(Rapidity); | |
1657 | hPdgCodemdNonPiKinksMinus->Fill(TMath::Abs(code1),TMath::Abs(code2)); | |
1658 | } | |
1659 | } | |
1660 | } //end of ESD track loop | |
1661 | PostData(1, fListOfHistos); | |
1662 | } | |
1663 | ||
1664 | ||
1665 | //________________________________________________________________________ | |
1666 | void AliAnalysisPionKinksMCESD::Terminate(Option_t *) { | |
1667 | } | |
1668 | ||
1669 | //_________________________________________________________________________ | |
1670 | const AliESDVertex* AliAnalysisPionKinksMCESD::GetEventVertex(AliESDEvent* esd) { //Gets ESD vertex and returns it if it is valid | |
1671 | const AliESDVertex* vertex = esd->GetPrimaryVertexTracks(); | |
1672 | if(vertex->GetStatus()==kTRUE) return vertex; | |
1673 | else { | |
1674 | vertex = esd->GetPrimaryVertexSPD(); | |
1675 | if((vertex->GetStatus()==kTRUE)&&(vertex->GetNContributors()>0)) return vertex; | |
1676 | else return 0; | |
1677 | } | |
1678 | } | |
1679 | ||
1680 | //________________________________________________________________________ | |
1681 | Double_t AliAnalysisPionKinksMCESD::Energy(AliESDtrack* track) const { //calculates the energy for a pion track | |
1682 | Double_t TrackMom[3]; | |
1683 | track->GetPxPyPz(TrackMom); | |
1684 | TVector3 P(TrackMom[0], TrackMom[1], TrackMom[2]); | |
1685 | //Double_t EnergyK = TMath::Sqrt(P.Mag()*P.Mag()+0.493677*0.493677); //kaon's energy | |
1686 | Double_t EnergyPi = TMath::Sqrt(P.Mag()*P.Mag()+0.13957018*0.13957018); //pion's energy | |
1687 | return EnergyPi; | |
1688 | } | |
1689 | ||
1690 | //________________________________________________________________________ | |
1691 | Double_t AliAnalysisPionKinksMCESD::GetMCRapidity(TParticle* particle) const { //calculates the rapidity of a track | |
1692 | TVector3 P(particle->Px(),particle->Py(),particle->Pz()); | |
1693 | Double_t MCRapidity = 0.5*(TMath::Log(((particle->Energy())+P[2])/((particle->Energy())-P[2]))); | |
1694 | return MCRapidity; | |
1695 | } | |
1696 | ||
1697 | //________________________________________________________________________ | |
1698 | Double_t AliAnalysisPionKinksMCESD::fuRapidity(AliESDtrack* track) const { //calculates the rapidity for a track | |
1699 | Double_t TrackMom[3]; | |
1700 | track->GetPxPyPz(TrackMom); | |
1701 | TVector3 P(TrackMom[0], TrackMom[1], TrackMom[2]); | |
1702 | Double_t RapidityPi = 0.5*(TMath::Log((Energy(track)+P[2])/(Energy(track)-P[2]))); | |
1703 | return RapidityPi; | |
1704 | } | |
1705 | ||
1706 | //________________________________________________________________________ | |
1707 | Double_t AliAnalysisPionKinksMCESD::MCPQt(AliMCEvent* mcEvent, Int_t iMC, TParticle* MCdaughter) const { | |
1708 | TVector3 DecayMomentumPi(0,0,0); //mother's momentum when it decays | |
1709 | TClonesArray* trArray=0; | |
1710 | TParticle* tempParticle=0; | |
1711 | if (mcEvent->GetParticleAndTR(iMC, tempParticle, trArray) != -1) { | |
1712 | AliTrackReference* MCtrackReference = static_cast<AliTrackReference*>(trArray->Last()); | |
1713 | DecayMomentumPi.SetXYZ(MCtrackReference->Px(), MCtrackReference->Py(), MCtrackReference->Pz()); | |
1714 | } else return 0; | |
1715 | ||
1716 | const TVector3 MCP3d(MCdaughter->Px(), MCdaughter->Py(), MCdaughter->Pz()); //daughter's momentum when producedframe | |
1717 | Double_t MCQt = MCP3d.Perp(DecayMomentumPi); //daughter's transverse momentum in mother's frame (Qt) | |
1718 | return MCQt; | |
1719 | } | |
1720 | ||
1721 | //________________________________________________________________________ | |
1722 | Double_t AliAnalysisPionKinksMCESD::fuMCKinkAngle(AliMCEvent* mcEvent, Int_t iMC, TParticle* MCdaughter, Bool_t degrees) const { | |
1723 | Double_t MCQt=MCPQt(mcEvent, iMC, MCdaughter); | |
1724 | Double_t MCKinkAngle = TMath::ASin(MCQt/(MCdaughter->P())); //kink angle in rads | |
1725 | if (degrees==kFALSE) { | |
1726 | return MCKinkAngle; | |
1727 | } else { | |
1728 | MCKinkAngle = TMath::RadToDeg()*MCKinkAngle; //kink angle in degrees | |
1729 | return MCKinkAngle; | |
1730 | } | |
1731 | } | |
1732 | ||
1733 | //________________________________________________________________________ | |
1734 | Bool_t AliAnalysisPionKinksMCESD::IsGoodTrack(AliESDtrack* ESDtrack) const { //Checks if a track is acceptable as good | |
1735 | UInt_t status = ESDtrack->GetStatus(); | |
1736 | if ((status&AliESDtrack::kITSrefit)==0) return kFALSE; //cut tracks that cannot be reconstructed by ITS only | |
1737 | if ((status&AliESDtrack::kTPCrefit)==0) return kFALSE; //cut tracks that cannot be reconstructed by TPC only | |
1738 | ||
1739 | Double_t NTPCclusters = ESDtrack->GetTPCclusters(0); | |
1740 | Double_t TPCchi2 = ESDtrack->GetTPCchi2(); | |
1741 | if (NTPCclusters<20) return kFALSE; | |
1742 | //if (NTPCclusters<30) return kFALSE; // cut sta 30 gia syst | |
1743 | ||
1744 | //hTPCchi2clusters->Fill(TPCchi2/NTPCclusters);//histo to check??????? | |
1745 | if (TPCchi2/NTPCclusters>3.8) return kFALSE; //cut tracks of bad quality fit with the contributing clusters | |
1746 | ||
1747 | /*Double_t ExtCov[15]; //external covariances matrix | |
1748 | ESDtrack->GetExternalCovariance(ExtCov); | |
1749 | if(ExtCov[0]>2) return kFALSE; //sigma(y^2) | |
1750 | if(ExtCov[2]>2) return kFALSE; //sigma(z^2) | |
1751 | if(ExtCov[5]>0.5) return kFALSE; //sigma(sinphi^2) | |
1752 | if(ExtCov[9]>0.5) return kFALSE; //sigma(tanlamda^2) | |
1753 | if(ExtCov[14]>2) return kFALSE; //sigma(1/Pt^2)*/ | |
1754 | ||
1755 | return kTRUE; | |
1756 | } | |
1757 | ||
1758 | //________________________________________________________________________ | |
1759 | Bool_t AliAnalysisPionKinksMCESD::IsPrimaryTrack(AliESDtrack* ESDtrack) const { //Checks if a track is acceptable as a primary | |
1760 | Float_t ImpParam[2]; //DCA to vertex, 0->in x-y plane, 1->in z | |
1761 | Float_t ImpParamCov[3]; //covariances of DCA to vertex | |
1762 | ESDtrack->GetImpactParameters(ImpParam,ImpParamCov); | |
1763 | //hdcaToVertexXY->Fill(ImpParam[0]); | |
1764 | //hdcaToVertexZ->Fill(ImpParam[1]); | |
1765 | if (ImpParamCov[0]<=0 || ImpParamCov[2]<=0) { | |
1766 | AliDebug (1, "Estimated DCA covariance lower or equal zero!"); | |
1767 | ImpParamCov[0]=0; ImpParamCov[2]=0; | |
1768 | } | |
1769 | ||
1770 | //if((TMath::Abs(ImpParam[0])>0.3) || (TMath::Abs((ImpParam[1])>2.5))) return kFALSE; //absolute DCA cut | |
1771 | if (!fMaxDCAtoVtxCut->AcceptTrack(ESDtrack)) return kFALSE; | |
1772 | else return kTRUE; | |
1773 | } | |
1774 | ||
1775 | ||
1776 | //________________________________________________________________________ | |
1777 | Bool_t AliAnalysisPionKinksMCESD::IsRealPionKink(AliESDkink* kink, AliStack* MCstack) const { //checks if a reconstructed kink is a pion kink | |
1778 | Int_t Label1 = kink->GetLabel(0); //mother's track MC label (first component is mother) | |
1779 | Int_t Label2 = kink->GetLabel(1); //daughter's track MC label (second component is daughter) | |
1780 | //if (Label1>MCNTracks) return kFALSE; | |
1781 | //if (Label2>MCNTracks) return kFALSE; | |
1782 | ||
1783 | TParticle *particle1 = MCstack->Particle(TMath::Abs(Label1)); //mother MC particle object | |
1784 | TParticle *particle2 = MCstack->Particle(TMath::Abs(Label2)); //daughter MC particle object | |
1785 | ||
1786 | Int_t code1 = particle1->GetPdgCode(); //mother's pdg code obtained from MC mother object | |
1787 | Int_t code2 = particle2->GetPdgCode(); //daughter's pdg code obtained from MC daughter object | |
1788 | ||
1789 | UInt_t UID = particle2->GetUniqueID(); //ESD daughter's unique id (method of production) | |
1790 | if (UID!=4) return kFALSE; | |
1791 | ||
1792 | if( (code1==cPdgPion) && (code2==-cPdgMuon) ){ | |
1793 | return kTRUE; | |
1794 | } else if ( (code1==-cPdgPion) && (code2==cPdgMuon) ){ | |
1795 | return kTRUE; | |
1796 | } else { | |
1797 | return kFALSE; | |
1798 | } | |
1799 | } | |
1800 |