]>
Commit | Line | Data |
---|---|---|
477d6cee | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
477d6cee | 15 | |
16 | //_________________________________________________________________________ | |
17 | // | |
18 | // Class for track selection and identification (not done now) | |
19 | // Tracks from the CTS are kept in the AOD. | |
20 | // Few histograms produced. | |
21 | // | |
22 | //-- Author: Gustavo Conesa (INFN-LNF) | |
23 | //_________________________________________________________________________ | |
24 | ||
25 | ||
26 | // --- ROOT system --- | |
477d6cee | 27 | #include "TParticle.h" |
28 | #include "TH2F.h" | |
05d0d05d | 29 | |
477d6cee | 30 | //---- AliRoot system ---- |
31 | #include "AliAnaChargedParticles.h" | |
32 | #include "AliCaloTrackReader.h" | |
33 | #include "AliAODPWG4Particle.h" | |
34 | #include "AliStack.h" | |
ff45398a | 35 | #include "AliFiducialCut.h" |
88f9563f | 36 | #include "AliVTrack.h" |
591cc579 | 37 | #include "AliAODMCParticle.h" |
fedea415 | 38 | #include "AliAODTrack.h" |
39 | #include "AliAODEvent.h" | |
40 | #include "AliESDEvent.h" | |
477d6cee | 41 | |
42 | ClassImp(AliAnaChargedParticles) | |
43 | ||
05d0d05d | 44 | //__________________________________________________ |
fe9615b9 | 45 | AliAnaChargedParticles::AliAnaChargedParticles() : |
745913ae | 46 | AliAnaCaloTrackCorrBaseClass(), |
9b4a1ee2 | 47 | fFillPileUpHistograms(0), fFillTrackBCHistograms(0), |
52bd777f | 48 | fFillVertexBC0Histograms(0), |
52bd777f | 49 | //Histograms |
50 | fhNtracks(0), fhPt(0), fhPtNoCut(0), | |
51 | fhPtCutDCA(0), fhPtCutDCABCOK(0), | |
8f467228 | 52 | fhPhiNeg(0), fhEtaNeg(0), |
fedea415 | 53 | fhPhiPos(0), fhEtaPos(0), |
54 | fhEtaPhiPos(0), fhEtaPhiNeg(0), | |
52bd777f | 55 | fhPtVtxOutBC0(0), fhEtaPhiVtxOutBC0(0), |
56 | fhPtVtxInBC0(0), fhEtaPhiVtxInBC0(0), | |
8f467228 | 57 | fhPtSPDRefit(0), fhPtNoSPDRefit(0), fhPtNoSPDNoRefit(0), |
58 | fhEtaPhiSPDRefitPt02(0), fhEtaPhiNoSPDRefitPt02(0), fhEtaPhiNoSPDNoRefitPt02(0), | |
59 | fhEtaPhiSPDRefitPt3(0), fhEtaPhiNoSPDRefitPt3(0), fhEtaPhiNoSPDNoRefitPt3(0), | |
62c64236 | 60 | |
52bd777f | 61 | //TOF |
fedea415 | 62 | fhTOFSignal(0), fhTOFSignalPtCut(0), fhTOFSignalBCOK(0), |
cc944149 | 63 | fhPtTOFSignal(0), fhPtTOFSignalDCACut(0), |
64 | fhPtTOFSignalVtxOutBC0(0), fhPtTOFSignalVtxInBC0(0), | |
52bd777f | 65 | fhPtTOFStatus0(0), fhEtaPhiTOFStatus0(0), |
fedea415 | 66 | fhEtaPhiTOFBC0(0), fhEtaPhiTOFBCPlus(0), fhEtaPhiTOFBCMinus(0), |
67 | fhEtaPhiTOFBC0PileUpSPD(0), | |
68 | fhEtaPhiTOFBCPlusPileUpSPD(0), | |
52bd777f | 69 | fhEtaPhiTOFBCMinusPileUpSPD(0), |
85c4406e | 70 | fhProductionVertexBC(0), |
71 | fhPtNPileUpSPDVtx(0), fhPtNPileUpTrkVtx(0), | |
72 | fhPtNPileUpSPDVtxBC0(0), fhPtNPileUpTrkVtxBC0(0) | |
73 | ||
477d6cee | 74 | { |
75 | //Default Ctor | |
76 | ||
fedea415 | 77 | for(Int_t i = 0; i < 7; i++) |
78 | { | |
79 | fhPtPileUp [i] = 0; | |
80 | fhPtTOFSignalPileUp[i] = 0; | |
52bd777f | 81 | fhPtTOFSignalVtxOutBC0PileUp[i] = 0; |
82 | fhPtTOFSignalVtxInBC0PileUp [i] = 0; | |
83 | fhProductionVertexBCPileUp [i] = 0; | |
fedea415 | 84 | } |
85 | ||
86 | for(Int_t i = 0; i < 3; i++) | |
87 | { | |
88 | fhPtDCA [i] = 0 ; | |
8f467228 | 89 | |
90 | fhPtDCASPDRefit [i] = 0 ; | |
91 | fhPtDCANoSPDRefit [i] = 0 ; | |
92 | fhPtDCANoSPDNoRefit [i] = 0 ; | |
93 | ||
fedea415 | 94 | fhPtDCAPileUp [i] = 0 ; |
fedea415 | 95 | fhPtDCATOFBC0 [i] = 0 ; |
52bd777f | 96 | fhPtDCATOFBCOut [i] = 0 ; |
fedea415 | 97 | fhPtDCAPileUpTOFBC0 [i] = 0 ; |
52bd777f | 98 | fhPtDCANoTOFHit [i] = 0 ; |
99 | fhPtDCAPileUpNoTOFHit [i] = 0 ; | |
fedea415 | 100 | |
52bd777f | 101 | fhPtDCAVtxOutBC0 [i] = 0 ; |
102 | fhPtDCAVtxInBC0 [i] = 0 ; | |
103 | fhPtDCAVtxOutBC0PileUp[i] = 0 ; | |
104 | fhPtDCAVtxInBC0PileUp [i] = 0 ; | |
cbd6236f | 105 | fhPtDCAVtxOutBC0NoTOFHit[i] = 0 ; |
106 | fhPtDCAVtxInBC0NoTOFHit [i] = 0 ; | |
52bd777f | 107 | fhPtDCAVtxOutBC0PileUpNoTOFHit[i] = 0 ; |
cbd6236f | 108 | fhPtDCAVtxInBC0PileUpNoTOFHit [i] = 0 ; |
fedea415 | 109 | } |
fe9615b9 | 110 | |
62c64236 | 111 | // MC |
112 | for(Int_t imcPart = 0; imcPart < 6; imcPart++) | |
113 | { | |
114 | fhPtMCPart [imcPart] = 0; | |
115 | fhPtMCPrimPart [imcPart] = 0; | |
116 | fhPhiMCPart [imcPart] = 0; | |
117 | fhPhiMCPrimPart[imcPart] = 0; | |
118 | fhEtaMCPart [imcPart] = 0; | |
119 | fhEtaMCPrimPart[imcPart] = 0; | |
120 | } | |
121 | ||
477d6cee | 122 | //Initialize parameters |
123 | InitParameters(); | |
477d6cee | 124 | |
477d6cee | 125 | } |
126 | ||
05d0d05d | 127 | //_______________________________________________________ |
477d6cee | 128 | TList * AliAnaChargedParticles::GetCreateOutputObjects() |
129 | { | |
130 | // Create histograms to be saved in output file and | |
131 | // store them in fOutputContainer | |
132 | ||
133 | ||
134 | TList * outputContainer = new TList() ; | |
62c64236 | 135 | outputContainer->SetName("ChargedParticleHistos") ; |
477d6cee | 136 | |
745913ae | 137 | Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins(); Int_t netabins = GetHistogramRanges()->GetHistoEtaBins(); |
138 | Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); Float_t phimax = GetHistogramRanges()->GetHistoPhiMax(); Float_t etamax = GetHistogramRanges()->GetHistoEtaMax(); | |
139 | Float_t ptmin = GetHistogramRanges()->GetHistoPtMin(); Float_t phimin = GetHistogramRanges()->GetHistoPhiMin(); Float_t etamin = GetHistogramRanges()->GetHistoEtaMin(); | |
5025c139 | 140 | |
141 | fhNtracks = new TH1F ("hNtracks","# of tracks", 1000,0,1000); | |
142 | fhNtracks->SetXTitle("# of tracks"); | |
143 | outputContainer->Add(fhNtracks); | |
05d0d05d | 144 | |
ed328e78 | 145 | fhPt = new TH1F ("hPt","#it{p}_{T} distribution", nptbins,ptmin,ptmax); |
146 | fhPt->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
477d6cee | 147 | outputContainer->Add(fhPt); |
148 | ||
ed328e78 | 149 | fhPtNoCut = new TH1F ("hPtNoCut","#it{p}_{T} distribution, raw tracks", nptbins,ptmin,ptmax); |
150 | fhPtNoCut->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
52bd777f | 151 | outputContainer->Add(fhPtNoCut); |
152 | ||
ed328e78 | 153 | fhPtCutDCA = new TH1F ("hPtCutDCA","#it{p}_{T} distribution, cut DCA", nptbins,ptmin,ptmax); |
154 | fhPtCutDCA->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
52bd777f | 155 | outputContainer->Add(fhPtCutDCA); |
156 | ||
9b4a1ee2 | 157 | if(fFillVertexBC0Histograms) |
158 | { | |
ed328e78 | 159 | fhPtCutDCABCOK = new TH1F ("hPtCutDCABCOK","#it{p}_{T} distribution, DCA cut, track BC=0 or -100", nptbins,ptmin,ptmax); |
160 | fhPtCutDCABCOK->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
9b4a1ee2 | 161 | outputContainer->Add(fhPtCutDCABCOK); |
162 | } | |
163 | ||
05d0d05d | 164 | fhPhiNeg = new TH2F ("hPhiNegative","#phi of negative charges distribution", |
165 | nptbins,ptmin,ptmax, nphibins,phimin,phimax); | |
166 | fhPhiNeg->SetYTitle("#phi (rad)"); | |
ed328e78 | 167 | fhPhiNeg->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
05d0d05d | 168 | outputContainer->Add(fhPhiNeg); |
169 | ||
170 | fhEtaNeg = new TH2F ("hEtaNegative","#eta of negative charges distribution", | |
171 | nptbins,ptmin,ptmax, netabins,etamin,etamax); | |
172 | fhEtaNeg->SetYTitle("#eta "); | |
ed328e78 | 173 | fhEtaNeg->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
05d0d05d | 174 | outputContainer->Add(fhEtaNeg); |
477d6cee | 175 | |
192689a4 | 176 | fhPhiPos = new TH2F ("hPhiPositive","#phi of positive charges distribution", |
05d0d05d | 177 | nptbins,ptmin,ptmax, nphibins,phimin,phimax); |
178 | fhPhiPos->SetYTitle("#phi (rad)"); | |
ed328e78 | 179 | fhPhiPos->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
05d0d05d | 180 | outputContainer->Add(fhPhiPos); |
477d6cee | 181 | |
192689a4 | 182 | fhEtaPos = new TH2F ("hEtaPositive","#eta of positive charges distribution", |
05d0d05d | 183 | nptbins,ptmin,ptmax, netabins,etamin,etamax); |
184 | fhEtaPos->SetYTitle("#eta "); | |
ed328e78 | 185 | fhEtaPos->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
05d0d05d | 186 | outputContainer->Add(fhEtaPos); |
5025c139 | 187 | |
fe9615b9 | 188 | fhEtaPhiPos = new TH2F ("hEtaPhiPositive","pt/eta/phi of positive charge",netabins,etamin,etamax, nphibins,phimin,phimax); |
4bfeae64 | 189 | fhEtaPhiPos->SetXTitle("#eta "); |
190 | fhEtaPhiPos->SetYTitle("#phi (rad)"); | |
05d0d05d | 191 | outputContainer->Add(fhEtaPhiPos); |
192 | ||
ed328e78 | 193 | fhEtaPhiNeg = new TH2F ("hEtaPhiNegative","#eta vs #phi of negative charge",netabins,etamin,etamax, nphibins,phimin,phimax); |
4bfeae64 | 194 | fhEtaPhiNeg->SetXTitle("#eta "); |
195 | fhEtaPhiNeg->SetYTitle("#phi (rad)"); | |
05d0d05d | 196 | outputContainer->Add(fhEtaPhiNeg); |
477d6cee | 197 | |
52bd777f | 198 | if(fFillVertexBC0Histograms) |
199 | { | |
ed328e78 | 200 | fhPtVtxOutBC0 = new TH1F ("hPtVtxOutBC0","#it{p}_{T} distribution, vertex in BC=0", nptbins,ptmin,ptmax); |
201 | fhPtVtxOutBC0->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
52bd777f | 202 | outputContainer->Add(fhPtVtxOutBC0); |
203 | ||
ed328e78 | 204 | fhEtaPhiVtxOutBC0 = new TH2F ("hEtaPhiVtxOutBC0","#eta vs #phi of all charges with vertex in BC=0",netabins,etamin,etamax, nphibins,phimin,phimax); |
52bd777f | 205 | fhEtaPhiVtxOutBC0->SetXTitle("#eta "); |
206 | fhEtaPhiVtxOutBC0->SetYTitle("#phi (rad)"); | |
207 | outputContainer->Add(fhEtaPhiVtxOutBC0); | |
208 | ||
ed328e78 | 209 | fhPtVtxInBC0 = new TH1F ("hPtVtxInBC0","#it{p}_{T} distribution, vertex in BC=0", nptbins,ptmin,ptmax); |
210 | fhPtVtxInBC0->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
52bd777f | 211 | outputContainer->Add(fhPtVtxInBC0); |
212 | ||
ed328e78 | 213 | fhEtaPhiVtxInBC0 = new TH2F ("hEtaPhiVtxInBC0","#eta vs #phi of all charges with vertex in BC=0",netabins,etamin,etamax, nphibins,phimin,phimax); |
52bd777f | 214 | fhEtaPhiVtxInBC0->SetXTitle("#eta "); |
215 | fhEtaPhiVtxInBC0->SetYTitle("#phi (rad)"); | |
216 | outputContainer->Add(fhEtaPhiVtxInBC0); | |
217 | } | |
218 | ||
ed328e78 | 219 | fhPtSPDRefit = new TH1F ("hPtSPDRefit","#it{p}_{T} distribution of tracks with SPD and ITS refit", nptbins,ptmin,ptmax); |
220 | fhPtSPDRefit->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
8f467228 | 221 | outputContainer->Add(fhPtSPDRefit); |
222 | ||
ed328e78 | 223 | fhEtaPhiSPDRefitPt02 = new TH2F ("hEtaPhiSPDRefitPt02","#eta vs #phi of tracks with SPD and ITS refit, #it{p}_{T}< 2 GeV/#it{c}", |
224 | netabins,etamin,etamax, nphibins,phimin,phimax); | |
8f467228 | 225 | fhEtaPhiSPDRefitPt02->SetXTitle("#eta "); |
226 | fhEtaPhiSPDRefitPt02->SetYTitle("#phi (rad)"); | |
227 | outputContainer->Add(fhEtaPhiSPDRefitPt02); | |
228 | ||
ed328e78 | 229 | fhEtaPhiSPDRefitPt3 = new TH2F ("hEtaPhiSPDRefitPt3","#eta vs #phi of tracks with SPD and ITS refit, #it{p}_{T}> 3 GeV/#it{c}", |
230 | netabins,etamin,etamax, nphibins,phimin,phimax); | |
8f467228 | 231 | fhEtaPhiSPDRefitPt3->SetXTitle("#eta "); |
232 | fhEtaPhiSPDRefitPt3->SetYTitle("#phi (rad)"); | |
233 | outputContainer->Add(fhEtaPhiSPDRefitPt3); | |
234 | ||
ed328e78 | 235 | fhPtNoSPDRefit = new TH1F ("hPtNoSPDRefit","#it{p}_{T} distribution of constrained tracks no SPD and with ITSRefit", |
236 | nptbins,ptmin,ptmax); | |
237 | fhPtNoSPDRefit->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
8f467228 | 238 | outputContainer->Add(fhPtNoSPDRefit); |
239 | ||
ed328e78 | 240 | fhEtaPhiNoSPDRefitPt02 = new TH2F ("hEtaPhiNoSPDRefitPt02","#eta vs #phi of constrained tracks no SPD and with ITSRefit, #it{p}_{T}< 2 GeV/#it{c}", |
241 | netabins,etamin,etamax, nphibins,phimin,phimax); | |
8f467228 | 242 | fhEtaPhiNoSPDRefitPt02->SetXTitle("#eta "); |
243 | fhEtaPhiNoSPDRefitPt02->SetYTitle("#phi (rad)"); | |
244 | outputContainer->Add(fhEtaPhiNoSPDRefitPt02); | |
245 | ||
ed328e78 | 246 | fhEtaPhiNoSPDRefitPt3 = new TH2F ("hEtaPhiNoSPDRefitPt3","#eta vs #phi of of constrained tracks no SPD and with ITSRefit, #it{p}_{T}> 3 GeV/#it{c}", |
247 | netabins,etamin,etamax, nphibins,phimin,phimax); | |
8f467228 | 248 | fhEtaPhiNoSPDRefitPt3->SetXTitle("#eta "); |
249 | fhEtaPhiNoSPDRefitPt3->SetYTitle("#phi (rad)"); | |
250 | outputContainer->Add(fhEtaPhiNoSPDRefitPt3); | |
251 | ||
ed328e78 | 252 | fhPtNoSPDNoRefit = new TH1F ("hPtNoSPDNoRefit","#it{p}_{T} distribution of constrained tracks with no SPD requierement and without ITSRefit", |
253 | nptbins,ptmin,ptmax); | |
254 | fhPtNoSPDNoRefit->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
8f467228 | 255 | outputContainer->Add(fhPtNoSPDNoRefit); |
256 | ||
ed328e78 | 257 | fhEtaPhiNoSPDNoRefitPt02 = new TH2F ("hEtaPhiNoSPDNoRefitPt02", |
258 | "#eta vs #phi of constrained tracks with no SPD requierement and without ITSRefit, #it{p}_{T}< 2 GeV/#it{c}", | |
259 | netabins,etamin,etamax, nphibins,phimin,phimax); | |
8f467228 | 260 | fhEtaPhiNoSPDNoRefitPt02->SetXTitle("#eta "); |
261 | fhEtaPhiNoSPDNoRefitPt02->SetYTitle("#phi (rad)"); | |
262 | outputContainer->Add(fhEtaPhiNoSPDNoRefitPt02); | |
263 | ||
ed328e78 | 264 | fhEtaPhiNoSPDNoRefitPt3 = new TH2F ("hEtaPhiNoSPDNoRefitPt3", |
265 | "#eta vs #phi of constrained tracks with no SPD requierement and without ITSRefit, #it{p}_{T}> 3 GeV/#it{c}", | |
266 | netabins,etamin,etamax, nphibins,phimin,phimax); | |
8f467228 | 267 | fhEtaPhiNoSPDNoRefitPt3->SetXTitle("#eta "); |
268 | fhEtaPhiNoSPDNoRefitPt3->SetYTitle("#phi (rad)"); | |
269 | outputContainer->Add(fhEtaPhiNoSPDNoRefitPt3); | |
270 | ||
52bd777f | 271 | if(fFillVertexBC0Histograms) |
272 | { | |
273 | fhProductionVertexBC = new TH1F("hProductionVertexBC", "tracks production vertex bunch crossing ", 41 , -20 , 20 ) ; | |
274 | fhProductionVertexBC->SetYTitle("# tracks"); | |
275 | fhProductionVertexBC->SetXTitle("Bunch crossing"); | |
276 | outputContainer->Add(fhProductionVertexBC); | |
277 | } | |
8f467228 | 278 | |
fe9615b9 | 279 | Int_t ntofbins = 1000; |
280 | Int_t mintof = -500; | |
281 | Int_t maxtof = 500; | |
fedea415 | 282 | |
fe9615b9 | 283 | fhTOFSignal = new TH1F ("hTOFSignal","TOF signal", ntofbins,mintof,maxtof); |
fedea415 | 284 | fhTOFSignal->SetXTitle("TOF signal (ns)"); |
fe9615b9 | 285 | outputContainer->Add(fhTOFSignal); |
286 | ||
9b4a1ee2 | 287 | if(fFillTrackBCHistograms) |
288 | { | |
289 | fhTOFSignalBCOK = new TH1F ("hTOFSignalBCOK","TOF signal", ntofbins,mintof,maxtof); | |
290 | fhTOFSignalBCOK->SetXTitle("TOF signal (ns)"); | |
291 | outputContainer->Add(fhTOFSignalBCOK); | |
292 | } | |
fedea415 | 293 | |
fe9615b9 | 294 | fhTOFSignalPtCut = new TH1F ("hTOFSignalPtCut","TOF signal", ntofbins,mintof,maxtof); |
fedea415 | 295 | fhTOFSignalPtCut->SetXTitle("TOF signal (ns)"); |
fe9615b9 | 296 | outputContainer->Add(fhTOFSignalPtCut); |
297 | ||
298 | fhPtTOFSignal = new TH2F ("hPtTOFSignal","TOF signal", nptbins,ptmin,ptmax,ntofbins,mintof,maxtof); | |
fedea415 | 299 | fhPtTOFSignal->SetYTitle("TOF signal (ns)"); |
ed328e78 | 300 | fhPtTOFSignal->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
fe9615b9 | 301 | outputContainer->Add(fhPtTOFSignal); |
cc944149 | 302 | |
303 | fhPtTOFSignalDCACut = new TH2F ("hPtTOFSignalDCACut","TOF signal after DCA cut", nptbins,ptmin,ptmax,ntofbins,mintof,maxtof); | |
304 | fhPtTOFSignalDCACut->SetYTitle("TOF signal (ns)"); | |
ed328e78 | 305 | fhPtTOFSignalDCACut->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
cc944149 | 306 | outputContainer->Add(fhPtTOFSignalDCACut); |
fedea415 | 307 | |
52bd777f | 308 | if(fFillVertexBC0Histograms) |
309 | { | |
310 | fhPtTOFSignalVtxOutBC0 = new TH2F ("hPtTOFSignalVtxOutBC0","TOF signal, vtx BC!=0", nptbins,ptmin,ptmax,ntofbins,mintof,maxtof); | |
311 | fhPtTOFSignalVtxOutBC0->SetYTitle("TOF signal (ns)"); | |
ed328e78 | 312 | fhPtTOFSignalVtxOutBC0->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
52bd777f | 313 | outputContainer->Add(fhPtTOFSignalVtxOutBC0); |
314 | ||
b6c46114 | 315 | fhPtTOFSignalVtxInBC0 = new TH2F ("hPtTOFSignalVtxInBC0","TOF signal, vtx BC=0", nptbins,ptmin,ptmax,ntofbins,mintof,maxtof); |
52bd777f | 316 | fhPtTOFSignalVtxInBC0->SetYTitle("TOF signal (ns)"); |
ed328e78 | 317 | fhPtTOFSignalVtxInBC0->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
52bd777f | 318 | outputContainer->Add(fhPtTOFSignalVtxInBC0); |
319 | } | |
320 | ||
fedea415 | 321 | if(fFillPileUpHistograms) |
322 | { | |
323 | TString pileUpName[] = {"SPD","EMCAL","SPDOrEMCAL","SPDAndEMCAL","SPDAndNotEMCAL","EMCALAndNotSPD","NotSPDAndNotEMCAL"} ; | |
324 | ||
325 | for(Int_t i = 0 ; i < 7 ; i++) | |
326 | { | |
327 | fhPtPileUp[i] = new TH1F(Form("hPtPileUp%s",pileUpName[i].Data()), | |
ed328e78 | 328 | Form("Track #it{p}_{T}distribution, %s Pile-Up event",pileUpName[i].Data()), |
fedea415 | 329 | nptbins,ptmin,ptmax); |
ed328e78 | 330 | fhPtPileUp[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
fedea415 | 331 | outputContainer->Add(fhPtPileUp[i]); |
332 | ||
333 | fhPtTOFSignalPileUp[i] = new TH2F(Form("hPtTOFSignalPileUp%s",pileUpName[i].Data()), | |
ed328e78 | 334 | Form("Track TOF vs #it{p}_{T}distribution, %s Pile-Up event",pileUpName[i].Data()), |
fedea415 | 335 | nptbins,ptmin,ptmax,ntofbins,mintof,maxtof); |
ed328e78 | 336 | fhPtTOFSignalPileUp[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
fedea415 | 337 | fhPtTOFSignalPileUp[i]->SetXTitle("TOF signal (ns)"); |
338 | outputContainer->Add(fhPtTOFSignalPileUp[i]); | |
52bd777f | 339 | |
340 | if(fFillVertexBC0Histograms) | |
341 | { | |
342 | fhPtTOFSignalVtxOutBC0PileUp[i] = new TH2F(Form("hPtTOFSignalVtxOutBC0PileUp%s",pileUpName[i].Data()), | |
ed328e78 | 343 | Form("Track TOF vs #it{p}_{T}distribution, %s Pile-Up event, vtx BC!=0",pileUpName[i].Data()), |
52bd777f | 344 | nptbins,ptmin,ptmax,ntofbins,mintof,maxtof); |
ed328e78 | 345 | fhPtTOFSignalVtxOutBC0PileUp[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
52bd777f | 346 | fhPtTOFSignalVtxOutBC0PileUp[i]->SetXTitle("TOF signal (ns)"); |
347 | outputContainer->Add(fhPtTOFSignalVtxOutBC0PileUp[i]); | |
348 | ||
349 | fhPtTOFSignalVtxInBC0PileUp[i] = new TH2F(Form("hPtTOFSignalVtxInBC0PileUp%s",pileUpName[i].Data()), | |
ed328e78 | 350 | Form("Track TOF vs #it{p}_{T}distribution, %s Pile-Up event, vtx BC=0",pileUpName[i].Data()), |
52bd777f | 351 | nptbins,ptmin,ptmax,ntofbins,mintof,maxtof); |
ed328e78 | 352 | fhPtTOFSignalVtxInBC0PileUp[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
52bd777f | 353 | fhPtTOFSignalVtxInBC0PileUp[i]->SetXTitle("TOF signal (ns)"); |
354 | outputContainer->Add(fhPtTOFSignalVtxInBC0PileUp[i]); | |
355 | } | |
356 | ||
357 | if(fFillVertexBC0Histograms) | |
358 | { | |
359 | fhProductionVertexBCPileUp[i] = new TH1F(Form("hProductionVertexBCPileUp%s",pileUpName[i].Data()), | |
360 | Form("tracks production vertex bunch crossing, %s Pile-Up event",pileUpName[i].Data()), | |
361 | 41 , -20 , 20 ) ; | |
362 | fhProductionVertexBCPileUp[i]->SetYTitle("# tracks"); | |
363 | fhProductionVertexBCPileUp[i]->SetXTitle("Bunch crossing"); | |
364 | outputContainer->Add(fhProductionVertexBCPileUp[i]); | |
365 | } | |
fedea415 | 366 | } |
367 | ||
9b4a1ee2 | 368 | |
369 | if(fFillTrackBCHistograms) | |
370 | { | |
371 | fhEtaPhiTOFBC0 = new TH2F ("hEtaPhiTOFBC0","eta-phi for tracks with hit on TOF, and tof corresponding to BC=0",netabins,etamin,etamax, nphibins,phimin,phimax); | |
372 | fhEtaPhiTOFBC0->SetXTitle("#eta "); | |
373 | fhEtaPhiTOFBC0->SetYTitle("#phi (rad)"); | |
374 | outputContainer->Add(fhEtaPhiTOFBC0); | |
375 | ||
376 | fhEtaPhiTOFBCPlus = new TH2F ("hEtaPhiTOFBCPlus","eta-phi for tracks with hit on TOF, and tof corresponding to BC>0",netabins,etamin,etamax, nphibins,phimin,phimax); | |
377 | fhEtaPhiTOFBCPlus->SetXTitle("#eta "); | |
378 | fhEtaPhiTOFBCPlus->SetYTitle("#phi (rad)"); | |
379 | outputContainer->Add(fhEtaPhiTOFBCPlus); | |
380 | ||
381 | fhEtaPhiTOFBCMinus = new TH2F ("hEtaPhiTOFBCMinus","eta-phi for tracks with hit on TOF, and tof corresponding to BC<0",netabins,etamin,etamax, nphibins,phimin,phimax); | |
382 | fhEtaPhiTOFBCMinus->SetXTitle("#eta "); | |
383 | fhEtaPhiTOFBCMinus->SetYTitle("#phi (rad)"); | |
384 | outputContainer->Add(fhEtaPhiTOFBCMinus); | |
385 | ||
386 | if(fFillPileUpHistograms) | |
387 | { | |
388 | fhEtaPhiTOFBC0PileUpSPD = new TH2F ("hEtaPhiTOFBC0PileUpSPD","eta-phi for tracks with hit on TOF, and tof corresponding to BC=0, SPD pile-up",netabins,etamin,etamax, nphibins,phimin,phimax); | |
389 | fhEtaPhiTOFBC0PileUpSPD->SetXTitle("#eta "); | |
390 | fhEtaPhiTOFBC0PileUpSPD->SetYTitle("#phi (rad)"); | |
391 | outputContainer->Add(fhEtaPhiTOFBC0PileUpSPD); | |
392 | ||
393 | fhEtaPhiTOFBCPlusPileUpSPD = new TH2F ("hEtaPhiTOFBCPlusPileUpSPD","eta-phi for tracks with hit on TOF, and tof corresponding to BC>0, SPD pile-up",netabins,etamin,etamax, nphibins,phimin,phimax); | |
394 | fhEtaPhiTOFBCPlusPileUpSPD->SetXTitle("#eta "); | |
395 | fhEtaPhiTOFBCPlusPileUpSPD->SetYTitle("#phi (rad)"); | |
396 | outputContainer->Add(fhEtaPhiTOFBCPlusPileUpSPD); | |
397 | ||
398 | fhEtaPhiTOFBCMinusPileUpSPD = new TH2F ("hEtaPhiTOFBCMinusPileUpSPD","eta-phi for tracks with hit on TOF, and tof corresponding to BC<0, SPD pile-up",netabins,etamin,etamax, nphibins,phimin,phimax); | |
399 | fhEtaPhiTOFBCMinusPileUpSPD->SetXTitle("#eta "); | |
400 | fhEtaPhiTOFBCMinusPileUpSPD->SetYTitle("#phi (rad)"); | |
401 | outputContainer->Add(fhEtaPhiTOFBCMinusPileUpSPD); | |
402 | } | |
403 | } | |
fedea415 | 404 | |
fe9615b9 | 405 | } |
406 | ||
ed328e78 | 407 | fhPtTOFStatus0 = new TH1F ("hPtTOFStatus0","#it{p}_{T} distribution of tracks not hitting TOF", nptbins,ptmin,ptmax); |
408 | fhPtTOFStatus0->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
fe9615b9 | 409 | outputContainer->Add(fhPtTOFStatus0); |
410 | ||
411 | ||
fedea415 | 412 | fhEtaPhiTOFStatus0 = new TH2F ("hEtaPhiTOFStatus0","eta-phi for tracks without hit on TOF",netabins,etamin,etamax, nphibins,phimin,phimax); |
fe9615b9 | 413 | fhEtaPhiTOFStatus0->SetXTitle("#eta "); |
414 | fhEtaPhiTOFStatus0->SetYTitle("#phi (rad)"); | |
415 | outputContainer->Add(fhEtaPhiTOFStatus0); | |
416 | ||
fedea415 | 417 | TString dcaName[] = {"xy","z","Cons"} ; |
418 | Int_t ndcabins = 800; | |
419 | Int_t mindca = -4; | |
420 | Int_t maxdca = 4; | |
421 | ||
422 | for(Int_t i = 0 ; i < 3 ; i++) | |
423 | { | |
424 | ||
425 | fhPtDCA[i] = new TH2F(Form("hPtDCA%s",dcaName[i].Data()), | |
ed328e78 | 426 | Form("Track DCA%s vs #it{p}_{T}distribution",dcaName[i].Data()), |
fedea415 | 427 | nptbins,ptmin,ptmax,ndcabins,mindca,maxdca); |
ed328e78 | 428 | fhPtDCA[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
f9a67d4f | 429 | fhPtDCA[i]->SetYTitle(Form("DCA_{%s}",dcaName[i].Data())); |
fedea415 | 430 | outputContainer->Add(fhPtDCA[i]); |
431 | ||
8f467228 | 432 | fhPtDCASPDRefit[i] = new TH2F(Form("hPtDCA%sSPDRefit",dcaName[i].Data()), |
ed328e78 | 433 | Form("Track DCA%s vs #it{p}_{T}distribution of tracks with SPD and ITS refit",dcaName[i].Data()), |
8f467228 | 434 | nptbins,ptmin,ptmax,ndcabins,mindca,maxdca); |
ed328e78 | 435 | fhPtDCASPDRefit[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
f9a67d4f | 436 | fhPtDCASPDRefit[i]->SetYTitle(Form("DCA_{%s}",dcaName[i].Data())); |
8f467228 | 437 | outputContainer->Add(fhPtDCASPDRefit[i]); |
438 | ||
439 | fhPtDCANoSPDRefit[i] = new TH2F(Form("hPtDCA%sNoSPDRefit",dcaName[i].Data()), | |
ed328e78 | 440 | Form("Track DCA%s vs #it{p}_{T}distributionof constrained tracks no SPD and with ITSRefit",dcaName[i].Data()), |
8f467228 | 441 | nptbins,ptmin,ptmax,ndcabins,mindca,maxdca); |
ed328e78 | 442 | fhPtDCANoSPDRefit[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
f9a67d4f | 443 | fhPtDCANoSPDRefit[i]->SetYTitle(Form("DCA_{%s}",dcaName[i].Data())); |
8f467228 | 444 | outputContainer->Add(fhPtDCANoSPDRefit[i]); |
445 | ||
446 | fhPtDCANoSPDNoRefit[i] = new TH2F(Form("hPtDCA%sNoSPDNoRefit",dcaName[i].Data()), | |
ed328e78 | 447 | Form("Track DCA%s vs #it{p}_{T}distribution, constrained tracks with no SPD requierement and without ITSRefit",dcaName[i].Data()), |
8f467228 | 448 | nptbins,ptmin,ptmax,ndcabins,mindca,maxdca); |
ed328e78 | 449 | fhPtDCANoSPDNoRefit[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
f9a67d4f | 450 | fhPtDCANoSPDNoRefit[i]->SetYTitle(Form("DCA_{%s}",dcaName[i].Data())); |
8f467228 | 451 | outputContainer->Add(fhPtDCANoSPDNoRefit[i]); |
452 | ||
9b4a1ee2 | 453 | if(fFillTrackBCHistograms) |
454 | { | |
455 | fhPtDCATOFBC0[i] = new TH2F(Form("hPtDCA%sTOFBC0",dcaName[i].Data()), | |
ed328e78 | 456 | Form("Track DCA%s vs #it{p}_{T}distribution, BC=0",dcaName[i].Data()), |
9b4a1ee2 | 457 | nptbins,ptmin,ptmax,ndcabins,mindca,maxdca); |
ed328e78 | 458 | fhPtDCATOFBC0[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
9b4a1ee2 | 459 | fhPtDCATOFBC0[i]->SetYTitle(Form("DCA_{%s}",dcaName[i].Data())); |
460 | outputContainer->Add(fhPtDCATOFBC0[i]); | |
461 | ||
462 | fhPtDCATOFBCOut[i] = new TH2F(Form("hPtDCA%sTOFBCOut",dcaName[i].Data()), | |
ed328e78 | 463 | Form("Track DCA%s vs #it{p}_{T}distribution, BC!=0",dcaName[i].Data()), |
9b4a1ee2 | 464 | nptbins,ptmin,ptmax,ndcabins,mindca,maxdca); |
ed328e78 | 465 | fhPtDCATOFBCOut[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
9b4a1ee2 | 466 | fhPtDCATOFBCOut[i]->SetYTitle(Form("DCA_{%s}",dcaName[i].Data())); |
467 | outputContainer->Add(fhPtDCATOFBCOut[i]); | |
468 | } | |
52bd777f | 469 | |
fedea415 | 470 | fhPtDCANoTOFHit[i] = new TH2F(Form("hPtDCA%sNoTOFHit",dcaName[i].Data()), |
ed328e78 | 471 | Form("Track (no TOF hit) DCA%s vs #it{p}_{T}distribution",dcaName[i].Data()), |
fedea415 | 472 | nptbins,ptmin,ptmax,ndcabins,mindca,maxdca); |
ed328e78 | 473 | fhPtDCANoTOFHit[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
f9a67d4f | 474 | fhPtDCANoTOFHit[i]->SetYTitle(Form("DCA_{%s}",dcaName[i].Data())); |
fedea415 | 475 | outputContainer->Add(fhPtDCANoTOFHit[i]); |
476 | ||
52bd777f | 477 | if(fFillVertexBC0Histograms) |
478 | { | |
479 | fhPtDCAVtxOutBC0[i] = new TH2F(Form("hPtDCA%sVtxOutBC0",dcaName[i].Data()), | |
ed328e78 | 480 | Form("Track DCA%s vs #it{p}_{T}distribution, vertex with BC!=0",dcaName[i].Data()), |
52bd777f | 481 | nptbins,ptmin,ptmax,ndcabins,mindca,maxdca); |
ed328e78 | 482 | fhPtDCAVtxOutBC0[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
f9a67d4f | 483 | fhPtDCAVtxOutBC0[i]->SetYTitle(Form("DCA_{%s}",dcaName[i].Data())); |
52bd777f | 484 | outputContainer->Add(fhPtDCAVtxOutBC0[i]); |
485 | ||
486 | fhPtDCAVtxOutBC0NoTOFHit[i] = new TH2F(Form("hPtDCA%sVtxOutBC0NoTOFHit",dcaName[i].Data()), | |
ed328e78 | 487 | Form("Track (no TOF hit) DCA%s vs #it{p}_{T}distribution, vertex with BC!=0",dcaName[i].Data()), |
52bd777f | 488 | nptbins,ptmin,ptmax,ndcabins,mindca,maxdca); |
ed328e78 | 489 | fhPtDCAVtxOutBC0NoTOFHit[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
f9a67d4f | 490 | fhPtDCAVtxOutBC0NoTOFHit[i]->SetYTitle(Form("DCA_{%s}",dcaName[i].Data())); |
52bd777f | 491 | outputContainer->Add(fhPtDCAVtxOutBC0NoTOFHit[i]); |
492 | ||
493 | fhPtDCAVtxInBC0[i] = new TH2F(Form("hPtDCA%sVtxInBC0",dcaName[i].Data()), | |
ed328e78 | 494 | Form("Track DCA%s vs #it{p}_{T}distribution, vertex with BC==0",dcaName[i].Data()), |
52bd777f | 495 | nptbins,ptmin,ptmax,ndcabins,mindca,maxdca); |
ed328e78 | 496 | fhPtDCAVtxInBC0[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
f9a67d4f | 497 | fhPtDCAVtxInBC0[i]->SetYTitle(Form("DCA_{%s}",dcaName[i].Data())); |
52bd777f | 498 | outputContainer->Add(fhPtDCAVtxInBC0[i]); |
499 | ||
500 | fhPtDCAVtxInBC0NoTOFHit[i] = new TH2F(Form("hPtDCA%sVtxInBC0NoTOFHit",dcaName[i].Data()), | |
ed328e78 | 501 | Form("Track (no TOF hit) DCA%s vs #it{p}_{T}distribution, vertex with BC==0",dcaName[i].Data()), |
52bd777f | 502 | nptbins,ptmin,ptmax,ndcabins,mindca,maxdca); |
ed328e78 | 503 | fhPtDCAVtxInBC0NoTOFHit[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
f9a67d4f | 504 | fhPtDCAVtxInBC0NoTOFHit[i]->SetYTitle(Form("DCA_{%s}",dcaName[i].Data())); |
52bd777f | 505 | outputContainer->Add(fhPtDCAVtxInBC0NoTOFHit[i]); |
506 | } | |
fedea415 | 507 | |
508 | if(fFillPileUpHistograms) | |
509 | { | |
510 | fhPtDCAPileUp[i] = new TH2F(Form("hPtDCA%sPileUp",dcaName[i].Data()), | |
ed328e78 | 511 | Form("Track DCA%s vs #it{p}_{T}distribution, SPD Pile-Up",dcaName[i].Data()), |
fedea415 | 512 | nptbins,ptmin,ptmax,ndcabins,mindca,maxdca); |
ed328e78 | 513 | fhPtDCAPileUp[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
f9a67d4f | 514 | fhPtDCAPileUp[i]->SetYTitle(Form("DCA_{%s}",dcaName[i].Data())); |
fedea415 | 515 | outputContainer->Add(fhPtDCAPileUp[i]); |
516 | ||
9b4a1ee2 | 517 | if(fFillTrackBCHistograms) |
518 | { | |
519 | fhPtDCAPileUpTOFBC0[i] = new TH2F(Form("hPtDCA%sPileUpTOFBC0",dcaName[i].Data()), | |
ed328e78 | 520 | Form("Track DCA%s vs #it{p}_{T}distribution",dcaName[i].Data()), |
9b4a1ee2 | 521 | nptbins,ptmin,ptmax,ndcabins,mindca,maxdca); |
ed328e78 | 522 | fhPtDCAPileUpTOFBC0[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
9b4a1ee2 | 523 | fhPtDCAPileUpTOFBC0[i]->SetYTitle(Form("DCA_{%s}",dcaName[i].Data())); |
524 | outputContainer->Add(fhPtDCAPileUpTOFBC0[i]); | |
525 | } | |
fedea415 | 526 | |
527 | fhPtDCAPileUpNoTOFHit[i] = new TH2F(Form("hPtDCA%sPileUpNoTOFHit",dcaName[i].Data()), | |
ed328e78 | 528 | Form("Track (no TOF hit) DCA%s vs #it{p}_{T}distribution, SPD Pile-Up, vertex with BC!=0",dcaName[i].Data()), |
fedea415 | 529 | nptbins,ptmin,ptmax,ndcabins,mindca,maxdca); |
ed328e78 | 530 | fhPtDCAPileUpNoTOFHit[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
f9a67d4f | 531 | fhPtDCAPileUpNoTOFHit[i]->SetYTitle(Form("DCA_{%s}",dcaName[i].Data())); |
fedea415 | 532 | outputContainer->Add(fhPtDCAPileUpNoTOFHit[i]); |
533 | ||
52bd777f | 534 | if(fFillVertexBC0Histograms) |
535 | { | |
536 | fhPtDCAVtxOutBC0PileUp[i] = new TH2F(Form("hPtDCA%sPileUpVtxOutBC0",dcaName[i].Data()), | |
ed328e78 | 537 | Form("Track DCA%s vs #it{p}_{T}distribution, SPD Pile-Up, vertex with BC!=0",dcaName[i].Data()), |
52bd777f | 538 | nptbins,ptmin,ptmax,ndcabins,mindca,maxdca); |
ed328e78 | 539 | fhPtDCAVtxOutBC0PileUp[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
f9a67d4f | 540 | fhPtDCAVtxOutBC0PileUp[i]->SetYTitle(Form("DCA_{%s}",dcaName[i].Data())); |
52bd777f | 541 | outputContainer->Add(fhPtDCAVtxOutBC0PileUp[i]); |
542 | ||
543 | fhPtDCAVtxOutBC0PileUpNoTOFHit[i] = new TH2F(Form("hPtDCA%sVtxOutBC0PileUpNoTOFHit",dcaName[i].Data()), | |
ed328e78 | 544 | Form("Track (no TOF hit) DCA%s vs #it{p}_{T}distribution, SPD Pile-Up, vertex with BC!=0",dcaName[i].Data()), |
52bd777f | 545 | nptbins,ptmin,ptmax,ndcabins,mindca,maxdca); |
ed328e78 | 546 | fhPtDCAVtxOutBC0PileUpNoTOFHit[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
f9a67d4f | 547 | fhPtDCAVtxOutBC0PileUpNoTOFHit[i]->SetYTitle(Form("DCA_{%s}",dcaName[i].Data())); |
52bd777f | 548 | outputContainer->Add(fhPtDCAVtxOutBC0PileUpNoTOFHit[i]); |
549 | ||
550 | fhPtDCAVtxInBC0PileUp[i] = new TH2F(Form("hPtDCA%sPileUpVtxInBC0",dcaName[i].Data()), | |
ed328e78 | 551 | Form("Track DCA%s vs #it{p}_{T}distribution, SPD Pile-Up,vertex with BC==0",dcaName[i].Data()), |
52bd777f | 552 | nptbins,ptmin,ptmax,ndcabins,mindca,maxdca); |
ed328e78 | 553 | fhPtDCAVtxInBC0PileUp[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
f9a67d4f | 554 | fhPtDCAVtxInBC0PileUp[i]->SetYTitle(Form("DCA_{%s}",dcaName[i].Data())); |
52bd777f | 555 | outputContainer->Add(fhPtDCAVtxInBC0PileUp[i]); |
556 | ||
557 | fhPtDCAVtxInBC0PileUpNoTOFHit[i] = new TH2F(Form("hPtDCA%sVtxInBC0PileUpNoTOFHit",dcaName[i].Data()), | |
ed328e78 | 558 | Form("Track (no TOF hit) DCA%s vs #it{p}_{T}distribution, SPD Pile-Up, vertex with BC==0",dcaName[i].Data()), |
52bd777f | 559 | nptbins,ptmin,ptmax,ndcabins,mindca,maxdca); |
ed328e78 | 560 | fhPtDCAVtxInBC0PileUpNoTOFHit[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
f9a67d4f | 561 | fhPtDCAVtxInBC0PileUpNoTOFHit[i]->SetYTitle(Form("DCA_{%s}",dcaName[i].Data())); |
52bd777f | 562 | outputContainer->Add(fhPtDCAVtxInBC0PileUpNoTOFHit[i]); |
563 | ||
564 | } | |
fedea415 | 565 | } |
566 | } | |
567 | ||
52bd777f | 568 | if(IsDataMC()) |
569 | { | |
62c64236 | 570 | //enum mvType{kmcPion = 0, kmcProton = 1, kmcKaon = 2, kmcMuon = 3, kmcElectron = 4, kmcUnknown = 4 }; |
571 | ||
572 | TString histoName[] = {"Pion","Proton","Kaon","Muon","Electron","Unknown"}; | |
573 | TString titleName[] = {"#pi^{#pm}","p^{#pm}","K^{#pm}","#mu^{#pm}","e^{#pm}","x^{#pm}"}; | |
477d6cee | 574 | |
62c64236 | 575 | for(Int_t imcPart = 0; imcPart < 6; imcPart++) |
576 | { | |
577 | fhPtMCPart[imcPart] = new TH1F (Form("hPtMC%s",histoName[imcPart].Data()), | |
578 | Form("reconstructed #it{p}_{T} distribution from %s",titleName[imcPart].Data()), | |
579 | nptbins,ptmin,ptmax); | |
580 | fhPtMCPart[imcPart]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
581 | outputContainer->Add(fhPtMCPart[imcPart]); | |
582 | ||
583 | fhPhiMCPart[imcPart] = new TH2F (Form("hPhiMC%s",histoName[imcPart].Data()), | |
584 | Form("reconstructed #phi vs #it{p}_{T} distribution from %s",titleName[imcPart].Data()), | |
585 | nptbins,ptmin,ptmax, nphibins,phimin,phimax); | |
586 | fhPhiMCPart[imcPart]->SetYTitle("#phi (rad)"); | |
587 | fhPhiMCPart[imcPart]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
588 | outputContainer->Add(fhPhiMCPart[imcPart]); | |
589 | ||
590 | fhEtaMCPart[imcPart] = new TH2F (Form("hEtaMC%s",histoName[imcPart].Data()), | |
591 | Form("reconstructed #eta vs #it{p}_{T} distribution from %s",titleName[imcPart].Data()), | |
592 | nptbins,ptmin,ptmax, netabins,etamin,etamax); | |
593 | fhEtaMCPart[imcPart]->SetYTitle("#eta "); | |
594 | fhEtaMCPart[imcPart]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
595 | outputContainer->Add(fhEtaMCPart[imcPart]); | |
596 | ||
597 | fhPtMCPrimPart[imcPart] = new TH1F (Form("hPtMCPrimary%s",histoName[imcPart].Data()), | |
598 | Form("generated #it{p}_{T} distribution from %s",titleName[imcPart].Data()), | |
599 | nptbins,ptmin,ptmax); | |
600 | fhPtMCPrimPart[imcPart]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
601 | outputContainer->Add(fhPtMCPrimPart[imcPart]); | |
602 | ||
603 | fhPhiMCPrimPart[imcPart] = new TH2F (Form("hPhiMCPrimary%s",histoName[imcPart].Data()), | |
604 | Form("generated #phi vs #it{p}_{T} distribution from %s",titleName[imcPart].Data()), | |
605 | nptbins,ptmin,ptmax, nphibins,phimin,phimax); | |
606 | fhPhiMCPrimPart[imcPart]->SetYTitle("#phi (rad)"); | |
607 | fhPhiMCPrimPart[imcPart]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
608 | outputContainer->Add(fhPhiMCPrimPart[imcPart]); | |
609 | ||
610 | fhEtaMCPrimPart[imcPart] = new TH2F (Form("hEtaMCPrimary%s",histoName[imcPart].Data()), | |
611 | Form("generated #eta vs #it{p}_{T} distribution from %s",titleName[imcPart].Data()), | |
612 | nptbins,ptmin,ptmax, netabins,etamin,etamax); | |
613 | fhEtaMCPrimPart[imcPart]->SetYTitle("#eta "); | |
614 | fhEtaMCPrimPart[imcPart]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
615 | outputContainer->Add(fhEtaMCPrimPart[imcPart]); | |
616 | } | |
477d6cee | 617 | |
477d6cee | 618 | } |
a3aebfff | 619 | |
85c4406e | 620 | fhPtNPileUpSPDVtx = new TH2F ("hPt_NPileUpVertSPD","pT of cluster vs N pile-up SPD vertex", |
621 | nptbins,ptmin,ptmax,20,0,20); | |
622 | fhPtNPileUpSPDVtx->SetYTitle("# vertex "); | |
ed328e78 | 623 | fhPtNPileUpSPDVtx->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
85c4406e | 624 | outputContainer->Add(fhPtNPileUpSPDVtx); |
625 | ||
626 | fhPtNPileUpTrkVtx = new TH2F ("hPt_NPileUpVertTracks","pT of cluster vs N pile-up Tracks vertex", | |
627 | nptbins,ptmin,ptmax, 20,0,20 ); | |
628 | fhPtNPileUpTrkVtx->SetYTitle("# vertex "); | |
ed328e78 | 629 | fhPtNPileUpTrkVtx->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
85c4406e | 630 | outputContainer->Add(fhPtNPileUpTrkVtx); |
631 | ||
632 | if(fFillVertexBC0Histograms) | |
633 | { | |
634 | fhPtNPileUpSPDVtxBC0 = new TH2F ("hPt_NPileUpVertSPD_BC0","pT of cluster vs N pile-up SPD vertex", | |
635 | nptbins,ptmin,ptmax,20,0,20); | |
636 | fhPtNPileUpSPDVtxBC0->SetYTitle("# vertex "); | |
ed328e78 | 637 | fhPtNPileUpSPDVtxBC0->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
85c4406e | 638 | outputContainer->Add(fhPtNPileUpSPDVtxBC0); |
639 | ||
640 | fhPtNPileUpTrkVtxBC0 = new TH2F ("hPt_NPileUpVertTracks_BC0","pT of cluster vs N pile-up Tracks vertex", | |
641 | nptbins,ptmin,ptmax, 20,0,20 ); | |
642 | fhPtNPileUpTrkVtxBC0->SetYTitle("# vertex "); | |
ed328e78 | 643 | fhPtNPileUpTrkVtxBC0->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
85c4406e | 644 | outputContainer->Add(fhPtNPileUpTrkVtxBC0); |
645 | } | |
646 | ||
477d6cee | 647 | return outputContainer; |
a3aebfff | 648 | |
477d6cee | 649 | } |
650 | ||
52bd777f | 651 | |
05d0d05d | 652 | //___________________________________________ |
477d6cee | 653 | void AliAnaChargedParticles::InitParameters() |
654 | { | |
655 | //Initialize the parameters of the analysis. | |
656 | SetOutputAODClassName("AliAODPWG4Particle"); | |
a3aebfff | 657 | SetOutputAODName("PWG4Particle"); |
658 | ||
659 | AddToHistogramsName("AnaCharged_"); | |
477d6cee | 660 | |
cbd6236f | 661 | |
477d6cee | 662 | } |
663 | ||
05d0d05d | 664 | //____________________________________________________________ |
477d6cee | 665 | void AliAnaChargedParticles::Print(const Option_t * opt) const |
666 | { | |
667 | //Print some relevant parameters set for the analysis | |
668 | if(! opt) | |
669 | return; | |
670 | ||
a3aebfff | 671 | printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ; |
745913ae | 672 | AliAnaCaloTrackCorrBaseClass::Print(" "); |
a3aebfff | 673 | |
477d6cee | 674 | printf("Min Pt = %3.2f\n", GetMinPt()); |
675 | printf("Max Pt = %3.2f\n", GetMaxPt()); | |
477d6cee | 676 | |
677 | } | |
678 | ||
05d0d05d | 679 | //_________________________________ |
477d6cee | 680 | void AliAnaChargedParticles::Init() |
681 | { | |
682 | //Init | |
683 | //Do some checks | |
373ffbac | 684 | |
685 | if(!GetReader()->IsCTSSwitchedOn()) | |
686 | AliFatal("STOP!: You want to use CTS tracks in analysis but not read!! \n!!Check the configuration file!!\n"); | |
687 | ||
477d6cee | 688 | |
689 | } | |
690 | ||
05d0d05d | 691 | //_________________________________________________ |
477d6cee | 692 | void AliAnaChargedParticles::MakeAnalysisFillAOD() |
693 | { | |
694 | //Do analysis and fill aods | |
be518ab0 | 695 | if(!GetCTSTracks() || GetCTSTracks()->GetEntriesFast() == 0) return ; |
192689a4 | 696 | |
be518ab0 | 697 | Int_t ntracks = GetCTSTracks()->GetEntriesFast(); |
2244659d | 698 | Double_t vert[3] = {0,0,0}; //vertex ; |
192689a4 | 699 | |
477d6cee | 700 | //Some prints |
701 | if(GetDebug() > 0) | |
a3aebfff | 702 | printf("AliAnaChargedParticles::MakeAnalysisFillAOD() - In CTS aod entries %d\n", ntracks); |
477d6cee | 703 | |
85c4406e | 704 | AliVEvent * event = GetReader()->GetInputEvent(); |
705 | AliESDEvent* esdEv = dynamic_cast<AliESDEvent*> (event); | |
706 | AliAODEvent* aodEv = dynamic_cast<AliAODEvent*> (event); | |
707 | ||
cc944149 | 708 | Int_t vtxBC = GetReader()->GetVertexBC(); |
709 | if(!GetReader()->IsDCACutOn()) vtxBC = GetReader()->GetVertexBC(event->GetPrimaryVertex()); | |
52bd777f | 710 | |
52bd777f | 711 | if(fFillVertexBC0Histograms) |
712 | { | |
713 | fhProductionVertexBC->Fill(vtxBC); | |
714 | if(fFillPileUpHistograms) | |
715 | { | |
716 | if(GetReader()->IsPileUpFromSPD()) fhProductionVertexBCPileUp[0]->Fill(vtxBC); | |
717 | if(GetReader()->IsPileUpFromEMCal()) fhProductionVertexBCPileUp[1]->Fill(vtxBC); | |
718 | if(GetReader()->IsPileUpFromSPDOrEMCal()) fhProductionVertexBCPileUp[2]->Fill(vtxBC); | |
719 | if(GetReader()->IsPileUpFromSPDAndEMCal()) fhProductionVertexBCPileUp[3]->Fill(vtxBC); | |
720 | if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhProductionVertexBCPileUp[4]->Fill(vtxBC); | |
721 | if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhProductionVertexBCPileUp[5]->Fill(vtxBC); | |
722 | if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhProductionVertexBCPileUp[6]->Fill(vtxBC); | |
723 | } | |
724 | } | |
725 | ||
85c4406e | 726 | // N pile up vertices |
727 | Int_t nVtxSPD = -1; | |
728 | Int_t nVtxTrk = -1; | |
729 | ||
730 | if (esdEv) | |
731 | { | |
732 | nVtxSPD = esdEv->GetNumberOfPileupVerticesSPD(); | |
733 | nVtxTrk = esdEv->GetNumberOfPileupVerticesTracks(); | |
734 | ||
735 | }//ESD | |
736 | else if (aodEv) | |
737 | { | |
738 | nVtxSPD = aodEv->GetNumberOfPileupVerticesSPD(); | |
739 | nVtxTrk = aodEv->GetNumberOfPileupVerticesTracks(); | |
740 | }//AOD | |
741 | ||
742 | ||
52bd777f | 743 | //printf("AliAnaChargedParticles::MakeAnalysisFillAOD() - primary vertex BC %d\n",vtxBC); |
744 | ||
745 | Double_t bz = event->GetMagneticField(); | |
fedea415 | 746 | |
477d6cee | 747 | //Fill AODParticle with CTS aods |
52bd777f | 748 | Float_t pt = 0; |
749 | Float_t phi = 0; | |
750 | Float_t eta = 0; | |
5025c139 | 751 | Int_t evtIndex = 0; |
52bd777f | 752 | for(Int_t i = 0; i < ntracks; i++) |
753 | { | |
88f9563f | 754 | AliVTrack * track = (AliVTrack*) (GetCTSTracks()->At(i)); |
52bd777f | 755 | |
756 | pt = track->Pt(); | |
757 | eta = track->Eta(); | |
758 | phi = track->Phi(); | |
759 | ||
760 | fhPtNoCut->Fill(pt); | |
477d6cee | 761 | |
85c4406e | 762 | fhPtNPileUpSPDVtx->Fill(pt,nVtxSPD); |
763 | fhPtNPileUpTrkVtx->Fill(pt,nVtxTrk); | |
764 | ||
52bd777f | 765 | AliAODTrack * aodTrack = dynamic_cast<AliAODTrack*>(track); |
766 | AliESDtrack * esdTrack = dynamic_cast<AliESDtrack*>(track); | |
477d6cee | 767 | |
fe9615b9 | 768 | //TOF |
769 | ULong_t status = track->GetStatus(); | |
fedea415 | 770 | Bool_t okTOF = (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ; |
52bd777f | 771 | Double32_t tof = track->GetTOFsignal()*1e-3; |
fe9615b9 | 772 | |
52bd777f | 773 | //DCA |
fedea415 | 774 | Double_t dcaCons = -999; |
fedea415 | 775 | if(aodTrack) |
776 | { | |
777 | dcaCons = aodTrack->DCA(); | |
309684b9 | 778 | //vtxBC = aodTrack->GetProdVertex()->GetBC(); |
fedea415 | 779 | } |
fedea415 | 780 | |
781 | Double_t dca[2] = {1e6,1e6}; | |
782 | Double_t covar[3] = {1e6,1e6,1e6}; | |
783 | track->PropagateToDCA(GetReader()->GetInputEvent()->GetPrimaryVertex(),bz,100.,dca,covar); | |
784 | ||
52bd777f | 785 | Float_t trackDCA = dca[0]; |
786 | ||
fedea415 | 787 | if(dcaCons == -999) |
788 | { | |
52bd777f | 789 | fhPtDCA[0]->Fill(pt, dca[0]); |
790 | fhPtDCA[1]->Fill(pt, dca[1]); | |
791 | } | |
792 | else | |
793 | { | |
794 | trackDCA = dcaCons; | |
795 | fhPtDCA[2]->Fill(pt, dcaCons); | |
796 | } | |
797 | ||
cc944149 | 798 | if(GetReader()->AcceptDCA(pt,trackDCA)) fhPtCutDCA->Fill(pt); |
52bd777f | 799 | |
800 | if(fFillVertexBC0Histograms) | |
801 | { | |
802 | if(TMath::Abs(vtxBC) > 0 && vtxBC!=AliVTrack::kTOFBCNA) | |
803 | { | |
804 | fhPtVtxOutBC0->Fill(pt); | |
805 | fhEtaPhiVtxOutBC0->Fill(eta,phi); | |
806 | ||
807 | if(dcaCons == -999) | |
808 | { | |
809 | fhPtDCAVtxOutBC0[0]->Fill(pt, dca[0]); | |
810 | fhPtDCAVtxOutBC0[1]->Fill(pt, dca[1]); | |
811 | } | |
812 | else | |
813 | fhPtDCAVtxOutBC0[2]->Fill(pt, dcaCons); | |
814 | } | |
815 | else | |
816 | { | |
817 | fhPtVtxInBC0->Fill(pt); | |
818 | fhEtaPhiVtxInBC0->Fill(eta,phi); | |
85c4406e | 819 | |
820 | fhPtNPileUpSPDVtxBC0->Fill(pt,nVtxSPD); | |
821 | fhPtNPileUpTrkVtxBC0->Fill(pt,nVtxTrk); | |
822 | ||
cc944149 | 823 | if(GetReader()->AcceptDCA(pt,trackDCA)) fhPtCutDCABCOK->Fill(pt); |
52bd777f | 824 | |
825 | if(dcaCons == -999) | |
826 | { | |
827 | fhPtDCAVtxInBC0[0]->Fill(pt, dca[0]); | |
828 | fhPtDCAVtxInBC0[1]->Fill(pt, dca[1]); | |
829 | } | |
830 | else | |
831 | fhPtDCAVtxInBC0[2]->Fill(pt, dcaCons); | |
832 | ||
833 | } | |
fedea415 | 834 | } |
fedea415 | 835 | |
836 | if(fFillPileUpHistograms && GetReader()->IsPileUpFromSPD()) | |
837 | { | |
838 | if(dcaCons == -999) | |
839 | { | |
52bd777f | 840 | fhPtDCAPileUp[0]->Fill(pt, dca[0]); |
841 | fhPtDCAPileUp[1]->Fill(pt, dca[1]); | |
fedea415 | 842 | } |
843 | else | |
52bd777f | 844 | fhPtDCAPileUp[2]->Fill(pt, dcaCons); |
845 | ||
846 | if(fFillVertexBC0Histograms) | |
847 | { | |
848 | if(TMath::Abs(vtxBC) > 0 && vtxBC!=AliVTrack::kTOFBCNA) | |
849 | { | |
850 | if(dcaCons == -999) | |
851 | { | |
852 | fhPtDCAVtxOutBC0PileUp[0]->Fill(pt, dca[0]); | |
853 | fhPtDCAVtxOutBC0PileUp[1]->Fill(pt, dca[1]); | |
854 | } | |
855 | else fhPtDCAVtxOutBC0PileUp[2]->Fill(pt, dcaCons); | |
856 | } | |
857 | else | |
858 | { | |
859 | if(dcaCons == -999) | |
860 | { | |
861 | fhPtDCAVtxInBC0PileUp[0]->Fill(pt, dca[0]); | |
862 | fhPtDCAVtxInBC0PileUp[1]->Fill(pt, dca[1]); | |
863 | } | |
864 | else fhPtDCAVtxInBC0PileUp[2]->Fill(pt, dcaCons); | |
865 | } | |
866 | } | |
fedea415 | 867 | } |
868 | ||
869 | if(!okTOF) | |
870 | { | |
871 | if(dcaCons == -999) | |
872 | { | |
52bd777f | 873 | fhPtDCANoTOFHit[0]->Fill(pt, dca[0]); |
874 | fhPtDCANoTOFHit[1]->Fill(pt, dca[1]); | |
fedea415 | 875 | } |
876 | else | |
52bd777f | 877 | fhPtDCANoTOFHit[2]->Fill(pt, dcaCons); |
fedea415 | 878 | |
52bd777f | 879 | if(fFillVertexBC0Histograms) |
880 | { | |
881 | if(TMath::Abs(vtxBC) > 0 && vtxBC!=AliVTrack::kTOFBCNA) | |
882 | { | |
883 | if(dcaCons == -999) | |
884 | { | |
885 | fhPtDCAVtxOutBC0NoTOFHit[0]->Fill(pt, dca[0]); | |
886 | fhPtDCAVtxOutBC0NoTOFHit[1]->Fill(pt, dca[1]); | |
887 | } | |
888 | else | |
889 | fhPtDCAVtxOutBC0NoTOFHit[2]->Fill(pt, dcaCons); | |
890 | } | |
891 | else | |
892 | { | |
893 | if(dcaCons == -999) | |
894 | { | |
895 | fhPtDCAVtxInBC0NoTOFHit[0]->Fill(pt, dca[0]); | |
896 | fhPtDCAVtxInBC0NoTOFHit[1]->Fill(pt, dca[1]); | |
897 | } | |
898 | else | |
899 | fhPtDCAVtxInBC0NoTOFHit[2]->Fill(pt, dcaCons); | |
900 | ||
901 | } | |
902 | } | |
fedea415 | 903 | |
904 | if(fFillPileUpHistograms && GetReader()->IsPileUpFromSPD()) | |
905 | { | |
906 | if(dcaCons == -999) | |
907 | { | |
52bd777f | 908 | fhPtDCAPileUpNoTOFHit[0]->Fill(pt, dca[0]); |
909 | fhPtDCAPileUpNoTOFHit[1]->Fill(pt, dca[1]); | |
fedea415 | 910 | } |
911 | else | |
52bd777f | 912 | fhPtDCAPileUpNoTOFHit[2]->Fill(pt, dcaCons); |
fedea415 | 913 | |
52bd777f | 914 | if(fFillVertexBC0Histograms) |
915 | { | |
916 | if(TMath::Abs(vtxBC) > 0 && vtxBC!=AliVTrack::kTOFBCNA) | |
917 | { | |
918 | if(dcaCons == -999) | |
919 | { | |
920 | fhPtDCAVtxOutBC0PileUpNoTOFHit[0]->Fill(pt, dca[0]); | |
921 | fhPtDCAVtxOutBC0PileUpNoTOFHit[1]->Fill(pt, dca[1]); | |
922 | } | |
923 | else | |
924 | fhPtDCAVtxOutBC0PileUpNoTOFHit[2]->Fill(pt, dcaCons); | |
925 | } | |
926 | else | |
927 | { | |
928 | if(dcaCons == -999) | |
929 | { | |
930 | fhPtDCAVtxInBC0PileUpNoTOFHit[0]->Fill(pt, dca[0]); | |
931 | fhPtDCAVtxInBC0PileUpNoTOFHit[1]->Fill(pt, dca[1]); | |
932 | } | |
933 | else | |
934 | fhPtDCAVtxInBC0PileUpNoTOFHit[2]->Fill(pt, dcaCons); | |
935 | ||
936 | } | |
937 | } | |
fedea415 | 938 | } |
939 | } | |
940 | ||
941 | //printf("track pT %2.2f, DCA Cons %f, DCA1 %f, DCA2 %f, TOFBC %d, oktof %d, tof %f\n", | |
52bd777f | 942 | // pt,dcaCons,dca[0],dca[1],track->GetTOFBunchCrossing(bz),okTOF, tof); |
fedea415 | 943 | |
fedea415 | 944 | |
52bd777f | 945 | // if( vtxBC == 0 && trackBC !=0 && trackBC!=AliVTrack::kTOFBCNA) |
946 | // printf("TOF Signal %e, BC %d, pt %f, dca_xy %f, dca_z %f, dca_tpc %f \n", tof,trackBC, pt,dca[0],dca[1],dcaCons); | |
947 | ||
948 | ||
949 | if(okTOF) | |
fedea415 | 950 | { |
52bd777f | 951 | fhTOFSignal ->Fill(tof); |
952 | fhPtTOFSignal->Fill(pt, tof); | |
cc944149 | 953 | if(GetReader()->AcceptDCA(pt,trackDCA)) fhPtTOFSignalDCACut->Fill(pt, tof); |
954 | ||
75af435c | 955 | if(fFillVertexBC0Histograms) |
956 | { | |
957 | if(TMath::Abs(vtxBC) > 0 && vtxBC!=AliVTrack::kTOFBCNA) | |
958 | fhPtTOFSignalVtxOutBC0->Fill(pt, tof); | |
959 | else | |
960 | fhPtTOFSignalVtxInBC0->Fill(pt, tof); | |
961 | } | |
fedea415 | 962 | |
9b4a1ee2 | 963 | Int_t trackBC = 1000; |
964 | ||
965 | if(fFillTrackBCHistograms) | |
fedea415 | 966 | { |
9b4a1ee2 | 967 | trackBC = track->GetTOFBunchCrossing(bz); |
968 | ||
969 | if(trackBC==0) | |
fedea415 | 970 | { |
9b4a1ee2 | 971 | fhTOFSignalBCOK->Fill(tof); |
972 | ||
973 | if(dcaCons == -999) | |
974 | { | |
975 | fhPtDCATOFBC0[0]->Fill(pt, dca[0]); | |
976 | fhPtDCATOFBC0[1]->Fill(pt, dca[1]); | |
977 | } | |
978 | else | |
979 | fhPtDCATOFBC0[2]->Fill(pt, dcaCons); | |
980 | ||
981 | if(fFillPileUpHistograms && GetReader()->IsPileUpFromSPD()) | |
982 | { | |
983 | if(dcaCons == -999) | |
984 | { | |
985 | fhPtDCAPileUpTOFBC0[0]->Fill(pt, dca[0]); | |
986 | fhPtDCAPileUpTOFBC0[1]->Fill(pt, dca[1]); | |
987 | } | |
988 | else | |
989 | fhPtDCAPileUpTOFBC0[2]->Fill(pt, dcaCons); | |
990 | } | |
fedea415 | 991 | } |
9b4a1ee2 | 992 | else if(trackBC!=AliVTrack::kTOFBCNA) |
52bd777f | 993 | { |
994 | if(dcaCons == -999) | |
995 | { | |
9b4a1ee2 | 996 | fhPtDCATOFBCOut[0]->Fill(pt, dca[0]); |
997 | fhPtDCATOFBCOut[1]->Fill(pt, dca[1]); | |
52bd777f | 998 | } |
999 | else | |
9b4a1ee2 | 1000 | fhPtDCATOFBCOut[2]->Fill(pt, dcaCons); |
1001 | ||
52bd777f | 1002 | } |
fedea415 | 1003 | } |
fedea415 | 1004 | |
52bd777f | 1005 | if(fFillPileUpHistograms) |
1006 | { | |
1007 | if(GetReader()->IsPileUpFromSPD()) fhPtTOFSignalPileUp[0]->Fill(pt, tof); | |
1008 | if(GetReader()->IsPileUpFromEMCal()) fhPtTOFSignalPileUp[1]->Fill(pt, tof); | |
1009 | if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtTOFSignalPileUp[2]->Fill(pt, tof); | |
1010 | if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtTOFSignalPileUp[3]->Fill(pt, tof); | |
1011 | if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtTOFSignalPileUp[4]->Fill(pt, tof); | |
1012 | if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtTOFSignalPileUp[5]->Fill(pt, tof); | |
1013 | if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtTOFSignalPileUp[6]->Fill(pt, tof); | |
1014 | ||
9b4a1ee2 | 1015 | if(fFillTrackBCHistograms) |
1016 | { | |
1017 | if (trackBC ==0) { fhEtaPhiTOFBC0 ->Fill(eta,phi); if(fFillPileUpHistograms && GetReader()->IsPileUpFromSPD()) fhEtaPhiTOFBC0PileUpSPD ->Fill(eta,phi); } | |
1018 | else if (trackBC < 0) { fhEtaPhiTOFBCPlus ->Fill(eta,phi); if(fFillPileUpHistograms && GetReader()->IsPileUpFromSPD()) fhEtaPhiTOFBCPlusPileUpSPD ->Fill(eta,phi); } | |
1019 | else if (trackBC > 0) { fhEtaPhiTOFBCMinus->Fill(eta,phi); if(fFillPileUpHistograms && GetReader()->IsPileUpFromSPD()) fhEtaPhiTOFBCMinusPileUpSPD->Fill(eta,phi); } | |
1020 | } | |
fedea415 | 1021 | |
52bd777f | 1022 | if(fFillVertexBC0Histograms) |
1023 | { | |
1024 | if(TMath::Abs(vtxBC) > 0 && vtxBC!=AliVTrack::kTOFBCNA) | |
1025 | { | |
1026 | if(GetReader()->IsPileUpFromSPD()) fhPtTOFSignalVtxOutBC0PileUp[0]->Fill(pt, tof); | |
1027 | if(GetReader()->IsPileUpFromEMCal()) fhPtTOFSignalVtxOutBC0PileUp[1]->Fill(pt, tof); | |
1028 | if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtTOFSignalVtxOutBC0PileUp[2]->Fill(pt, tof); | |
1029 | if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtTOFSignalVtxOutBC0PileUp[3]->Fill(pt, tof); | |
1030 | if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtTOFSignalVtxOutBC0PileUp[4]->Fill(pt, tof); | |
1031 | if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtTOFSignalVtxOutBC0PileUp[5]->Fill(pt, tof); | |
1032 | if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtTOFSignalVtxOutBC0PileUp[6]->Fill(pt, tof); | |
1033 | } | |
1034 | else | |
1035 | { | |
1036 | if(GetReader()->IsPileUpFromSPD()) fhPtTOFSignalVtxInBC0PileUp[0]->Fill(pt, tof); | |
1037 | if(GetReader()->IsPileUpFromEMCal()) fhPtTOFSignalVtxInBC0PileUp[1]->Fill(pt, tof); | |
1038 | if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtTOFSignalVtxInBC0PileUp[2]->Fill(pt, tof); | |
1039 | if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtTOFSignalVtxInBC0PileUp[3]->Fill(pt, tof); | |
1040 | if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtTOFSignalVtxInBC0PileUp[4]->Fill(pt, tof); | |
1041 | if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtTOFSignalVtxInBC0PileUp[5]->Fill(pt, tof); | |
1042 | if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtTOFSignalVtxInBC0PileUp[6]->Fill(pt, tof); | |
1043 | } | |
1044 | } | |
1045 | } | |
1046 | } | |
1047 | ||
1048 | //Fill AODParticle after some selection | |
1049 | Double_t mom[3] = {track->Px(),track->Py(),track->Pz()}; | |
1050 | ||
192689a4 | 1051 | Bool_t in = GetFiducialCut()->IsInFiducialCut(mom,"CTS") ; |
1052 | ||
05d0d05d | 1053 | if(GetDebug() > 1) |
52bd777f | 1054 | printf("AliAnaChargedParticles::MakeAnalysisFillAOD() - Track pt %2.2f, eta %2.2f, phi %2.2f in fiducial cut %d\n",pt,eta,phi,in); |
192689a4 | 1055 | |
1056 | //Acceptance selection | |
1057 | if(IsFiducialCutOn() && ! in ) continue ; | |
1058 | ||
1059 | // Momentum selection | |
52bd777f | 1060 | if(pt < GetMinPt() || pt > GetMaxPt()) continue; |
fe9615b9 | 1061 | |
1062 | if(okTOF) fhTOFSignalPtCut->Fill(tof); | |
1063 | else | |
1064 | { | |
52bd777f | 1065 | fhPtTOFStatus0 ->Fill(pt); |
1066 | fhEtaPhiTOFStatus0->Fill(eta,phi); | |
fe9615b9 | 1067 | } |
192689a4 | 1068 | |
8f467228 | 1069 | Bool_t bITSRefit = (status & AliVTrack::kITSrefit) == AliVTrack::kITSrefit; |
1070 | Bool_t bConstrained = kFALSE; | |
41ebe136 | 1071 | if (aodTrack) bConstrained = aodTrack->IsGlobalConstrained(); |
1072 | else if(esdTrack) bConstrained = (!esdTrack->HasPointOnITSLayer(0) && !esdTrack->HasPointOnITSLayer(1)); | |
8f467228 | 1073 | //printf("Track %d, pt %2.2f, eta %2.2f, phi %2.2f, SPDRefit %d, refit %d, dcaCons %2.2f\n", |
52bd777f | 1074 | // i, pt, eta, phi, bConstrained, bITSRefit, dcaCons); |
8f467228 | 1075 | |
1076 | if(bConstrained) | |
1077 | { | |
1078 | if(bITSRefit) | |
1079 | { | |
52bd777f | 1080 | fhPtNoSPDRefit->Fill(pt); |
1081 | if(pt < 2)fhEtaPhiNoSPDRefitPt02->Fill(eta,phi); | |
1082 | if(pt > 3)fhEtaPhiNoSPDRefitPt3 ->Fill(eta,phi); | |
8f467228 | 1083 | |
1084 | if(dcaCons == -999) | |
1085 | { | |
52bd777f | 1086 | fhPtDCANoSPDRefit[0]->Fill(pt, dca[0]); |
1087 | fhPtDCANoSPDRefit[1]->Fill(pt, dca[1]); | |
8f467228 | 1088 | } |
1089 | else | |
52bd777f | 1090 | fhPtDCANoSPDRefit[2]->Fill(pt, dcaCons); |
8f467228 | 1091 | |
1092 | } | |
1093 | else | |
1094 | { | |
52bd777f | 1095 | fhPtNoSPDNoRefit->Fill(pt); |
1096 | if(pt < 2)fhEtaPhiNoSPDNoRefitPt02->Fill(eta,phi); | |
1097 | if(pt > 3)fhEtaPhiNoSPDNoRefitPt3 ->Fill(eta,phi); | |
8f467228 | 1098 | if(dcaCons == -999) |
1099 | { | |
52bd777f | 1100 | fhPtDCANoSPDNoRefit[0]->Fill(pt, dca[0]); |
1101 | fhPtDCANoSPDNoRefit[1]->Fill(pt, dca[1]); | |
8f467228 | 1102 | } |
1103 | else | |
52bd777f | 1104 | fhPtDCANoSPDNoRefit[2]->Fill(pt, dcaCons); |
8f467228 | 1105 | |
1106 | } | |
1107 | } | |
1108 | else | |
1109 | { | |
52bd777f | 1110 | fhPtSPDRefit->Fill(pt); |
1111 | if(pt < 2)fhEtaPhiSPDRefitPt02->Fill(eta,phi); | |
1112 | if(pt > 3)fhEtaPhiSPDRefitPt3 ->Fill(eta,phi); | |
8f467228 | 1113 | if(dcaCons == -999) |
1114 | { | |
52bd777f | 1115 | fhPtDCASPDRefit[0]->Fill(pt, dca[0]); |
1116 | fhPtDCASPDRefit[1]->Fill(pt, dca[1]); | |
8f467228 | 1117 | } |
1118 | else | |
52bd777f | 1119 | fhPtDCASPDRefit[2]->Fill(pt, dcaCons); |
8f467228 | 1120 | } |
52bd777f | 1121 | |
192689a4 | 1122 | // Mixed event |
fe9615b9 | 1123 | if (GetMixedEvent()) |
1124 | { | |
192689a4 | 1125 | evtIndex = GetMixedEvent()->EventIndex(track->GetID()) ; |
fe9615b9 | 1126 | } |
1127 | ||
192689a4 | 1128 | GetVertex(vert,evtIndex); |
1129 | if(TMath::Abs(vert[2])> GetZvertexCut()) return; | |
1130 | ||
1131 | AliAODPWG4Particle tr = AliAODPWG4Particle(mom[0],mom[1],mom[2],0); | |
1132 | tr.SetDetector("CTS"); | |
1133 | tr.SetLabel(track->GetLabel()); | |
1134 | tr.SetTrackLabel(track->GetID(),-1); | |
1135 | tr.SetChargedBit(track->Charge()>0); | |
7cd4e982 | 1136 | |
192689a4 | 1137 | AddAODParticle(tr); |
1138 | ||
477d6cee | 1139 | }//loop |
1140 | ||
1141 | if(GetDebug() > 0) | |
a3aebfff | 1142 | printf("AliAnaChargedParticles::MakeAnalysisFillAOD() - Final aod branch entries %d\n", GetOutputAODBranch()->GetEntriesFast()); |
477d6cee | 1143 | } |
1144 | ||
1145 | //__________________________________________________________________ | |
62c64236 | 1146 | void AliAnaChargedParticles::MakeAnalysisFillHistograms() |
477d6cee | 1147 | { |
1148 | //Do analysis and fill histograms | |
1149 | ||
1150 | //Loop on stored AODParticles | |
1151 | Int_t naod = GetOutputAODBranch()->GetEntriesFast(); | |
05d0d05d | 1152 | |
2244659d | 1153 | fhNtracks->Fill(GetReader()->GetTrackMultiplicity()) ; |
05d0d05d | 1154 | |
62c64236 | 1155 | if(GetDebug() > 0) |
05d0d05d | 1156 | printf("AliAnaChargedParticles::MakeAnalysisFillHistograms() - aod branch entries %d\n", naod); |
1157 | ||
52bd777f | 1158 | Float_t pt = 0; |
1159 | Float_t phi = 0; | |
1160 | Float_t eta = 0; | |
fedea415 | 1161 | |
52bd777f | 1162 | for(Int_t iaod = 0; iaod < naod ; iaod++) |
1163 | { | |
1164 | AliAODPWG4Particle* track = (AliAODPWG4Particle*) (GetOutputAODBranch()->At(iaod)); | |
1165 | ||
1166 | pt = track->Pt(); | |
1167 | eta = track->Eta(); | |
1168 | phi = track->Phi(); | |
1169 | ||
1170 | fhPt->Fill(pt); | |
05d0d05d | 1171 | |
52bd777f | 1172 | if(track->GetChargedBit()) |
1173 | { | |
1174 | fhPhiPos ->Fill(pt, phi); | |
1175 | fhEtaPos ->Fill(pt, eta); | |
1176 | fhEtaPhiPos->Fill(eta,phi); | |
05d0d05d | 1177 | } |
52bd777f | 1178 | else |
1179 | { | |
1180 | fhPhiNeg ->Fill(pt, phi); | |
1181 | fhEtaNeg ->Fill(pt, eta); | |
1182 | fhEtaPhiNeg->Fill(eta,phi); | |
05d0d05d | 1183 | } |
477d6cee | 1184 | |
fedea415 | 1185 | if(fFillPileUpHistograms) |
1186 | { | |
52bd777f | 1187 | if(GetReader()->IsPileUpFromSPD()) {fhPtPileUp[0]->Fill(pt);} |
1188 | if(GetReader()->IsPileUpFromEMCal()) {fhPtPileUp[1]->Fill(pt);} | |
1189 | if(GetReader()->IsPileUpFromSPDOrEMCal()) {fhPtPileUp[2]->Fill(pt);} | |
1190 | if(GetReader()->IsPileUpFromSPDAndEMCal()) {fhPtPileUp[3]->Fill(pt);} | |
1191 | if(GetReader()->IsPileUpFromSPDAndNotEMCal()) {fhPtPileUp[4]->Fill(pt);} | |
1192 | if(GetReader()->IsPileUpFromEMCalAndNotSPD()) {fhPtPileUp[5]->Fill(pt);} | |
1193 | if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) {fhPtPileUp[6]->Fill(pt);} | |
fedea415 | 1194 | } |
62c64236 | 1195 | |
fedea415 | 1196 | |
42b156e0 | 1197 | if(IsDataMC()) |
1198 | { | |
727a309a | 1199 | //Play with the MC stack if available |
5025c139 | 1200 | Int_t mompdg = -1; |
52bd777f | 1201 | Int_t label = track->GetLabel(); |
5025c139 | 1202 | |
62c64236 | 1203 | if(label >= 0) |
42b156e0 | 1204 | { |
62c64236 | 1205 | if( GetReader()->ReadStack() && label < GetMCStack()->GetNtrack()) |
1206 | { | |
1207 | TParticle * mom = GetMCStack()->Particle(label); | |
1208 | mompdg =TMath::Abs(mom->GetPdgCode()); | |
1209 | } | |
1210 | else if(GetReader()->ReadAODMCParticles()) | |
1211 | { | |
1212 | AliAODMCParticle * aodmom = 0; | |
1213 | //Get the list of MC particles | |
1214 | aodmom = (AliAODMCParticle*) (GetReader()->GetAODMCParticles())->At(label); | |
1215 | mompdg =TMath::Abs(aodmom->GetPdgCode()); | |
1216 | } | |
477d6cee | 1217 | } |
62c64236 | 1218 | |
1219 | Int_t mcType = kmcUnknown; | |
1220 | if (mompdg==211 ) mcType = kmcPion; | |
1221 | else if(mompdg==2212) mcType = kmcProton; | |
1222 | else if(mompdg==321 ) mcType = kmcKaon; | |
1223 | else if(mompdg==11 ) mcType = kmcElectron; | |
1224 | else if(mompdg==13 ) mcType = kmcMuon; | |
1225 | ||
1226 | fhPtMCPart [mcType]->Fill(pt); | |
1227 | fhEtaMCPart[mcType]->Fill(pt,eta); | |
1228 | fhPhiMCPart[mcType]->Fill(pt,phi); | |
1229 | ||
477d6cee | 1230 | }//Work with stack also |
f6661bbc | 1231 | |
477d6cee | 1232 | }// aod branch loop |
1233 | ||
727a309a | 1234 | if(IsDataMC()) |
62c64236 | 1235 | { |
1236 | Int_t primpdg = -1; | |
1237 | TLorentzVector mom; | |
1238 | if(GetReader()->ReadStack()) | |
727a309a | 1239 | { |
62c64236 | 1240 | AliStack * stack = GetMCStack(); |
1241 | if(stack) { | |
1242 | for(Int_t i=0 ; i<stack->GetNtrack(); i++) | |
1243 | { | |
1244 | TParticle *prim = stack->Particle(i); | |
1245 | if(prim->IsPrimary()) | |
1246 | { | |
1247 | primpdg = TMath::Abs(prim->GetPdgCode()); | |
1248 | ||
1249 | Int_t mcType = kmcUnknown; | |
1250 | if (primpdg==211 ) mcType = kmcPion; | |
1251 | else if(primpdg==2212) mcType = kmcProton; | |
1252 | else if(primpdg==321 ) mcType = kmcKaon; | |
1253 | else if(primpdg==11 ) mcType = kmcElectron; | |
1254 | else if(primpdg==13 ) mcType = kmcMuon; | |
1255 | ||
1256 | prim->Momentum(mom); | |
1257 | Bool_t in = GetFiducialCut()->IsInFiducialCut(mom,"CTS") ; | |
1258 | ||
1259 | Float_t ptPrim = prim->Pt(); | |
1260 | if(in) fhPtMCPrimPart [mcType]->Fill(ptPrim); | |
1261 | fhEtaMCPrimPart[mcType]->Fill(ptPrim,prim->Eta()); | |
1262 | fhPhiMCPrimPart[mcType]->Fill(ptPrim,prim->Phi()); | |
1263 | } | |
1264 | } | |
727a309a | 1265 | } |
62c64236 | 1266 | } |
1267 | else if(GetReader()->ReadAODMCParticles()) | |
1268 | { | |
1269 | TClonesArray * mcparticles = GetReader()->GetAODMCParticles(); | |
1270 | if(mcparticles) | |
1271 | { | |
1272 | Int_t nprim = mcparticles->GetEntriesFast(); | |
1273 | for(Int_t i=0; i < nprim; i++) | |
1274 | { | |
1275 | AliAODMCParticle * prim = (AliAODMCParticle *) mcparticles->At(i); | |
1276 | ||
1277 | if(prim->IsPrimary()) | |
1278 | { | |
1279 | primpdg = TMath::Abs(prim->GetPdgCode()); | |
1280 | ||
1281 | Int_t mcType = kmcUnknown; | |
1282 | if (primpdg==211 ) mcType = kmcPion; | |
1283 | else if(primpdg==2212) mcType = kmcProton; | |
1284 | else if(primpdg==321 ) mcType = kmcKaon; | |
1285 | else if(primpdg==11 ) mcType = kmcElectron; | |
1286 | else if(primpdg==13 ) mcType = kmcMuon; | |
1287 | ||
1288 | mom.SetPxPyPzE(prim->Px(),prim->Py(),prim->Pz(),prim->E()); | |
1289 | Bool_t in = GetFiducialCut()->IsInFiducialCut(mom,"CTS") ; | |
1290 | ||
1291 | Float_t ptPrim = prim->Pt(); | |
1292 | if(in) fhPtMCPrimPart [mcType]->Fill(ptPrim); | |
1293 | fhEtaMCPrimPart[mcType]->Fill(ptPrim,prim->Eta()); | |
1294 | fhPhiMCPrimPart[mcType]->Fill(ptPrim,prim->Phi()); | |
1295 | } | |
1296 | } | |
727a309a | 1297 | } |
1298 | } | |
1299 | } | |
62c64236 | 1300 | } |