]>
Commit | Line | Data |
---|---|---|
36be14b3 | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-2009, 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 | **************************************************************************/ | |
15 | ||
16 | /////////////////////////////////////////////////////////////////////////// | |
17 | // AliAnalysisTaskSE for the extraction of the various histograms to | |
18 | // study the pt spectra of identified hadrons: | |
19 | // - log(dEdx)-log(dEdxBB) distributions for pions, kaons and protons in pt bins | |
20 | // - Pt distributions of pions, kaons and protons with nSigma PID | |
21 | // Authors: | |
22 | // E. Biolcati, biolcati@to.infn.it | |
23 | // L. Milano, milano@to.infn.it | |
24 | // F. Prino, prino@to.infn.it | |
25 | /////////////////////////////////////////////////////////////////////////// | |
26 | ||
36be14b3 | 27 | #include <TH1F.h> |
28 | #include <TRandom3.h> | |
29 | #include <TH2F.h> | |
30 | #include <TChain.h> | |
31 | #include <TNtuple.h> | |
32 | #include <TParticle.h> | |
33 | #include <Rtypes.h> | |
34 | #include "AliAnalysisTaskSE.h" | |
35 | #include "AliAnalysisManager.h" | |
36 | #include "AliAnalysisDataContainer.h" | |
37 | #include "AliESDEvent.h" | |
38 | #include "AliESDInputHandler.h" | |
39 | #include "AliESDtrack.h" | |
40 | #include "AliStack.h" | |
41 | #include "AliMCEventHandler.h" | |
42 | #include "AliMCEvent.h" | |
43 | #include "AliPhysicsSelection.h" | |
44 | #include "AliAnalysisTaskSEITSsaSpectra.h" | |
c841b89f | 45 | #include "AliESDtrackCuts.h" |
1f75ac7d | 46 | #include "AliCentrality.h" |
47 | #include "AliMultiplicity.h" | |
48 | #include "AliESDUtils.h" | |
98bb3219 | 49 | #include "AliITSPIDResponse.h" |
36be14b3 | 50 | |
51 | ClassImp(AliAnalysisTaskSEITSsaSpectra) | |
6b77d2c0 | 52 | /* $Id$ */ |
36be14b3 | 53 | |
54 | //________________________________________________________________________ | |
55 | AliAnalysisTaskSEITSsaSpectra::AliAnalysisTaskSEITSsaSpectra(): | |
1f75ac7d | 56 | AliAnalysisTaskSE("Task CFit"), |
36be14b3 | 57 | fESD(0), |
7f8f788e | 58 | fesdTrackCutsMult(0), |
36be14b3 | 59 | fOutput(0), |
60 | fHistNEvents(0), | |
c841b89f | 61 | fHistMult(0), |
1f75ac7d | 62 | fHistCen(0), |
36be14b3 | 63 | fHistNTracks(0), |
c841b89f | 64 | fHistNTracksPos(0), |
65 | fHistNTracksNeg(0), | |
36be14b3 | 66 | fHistDEDX(0), |
67 | fHistDEDXdouble(0), | |
68 | fHistBeforeEvSel(0), | |
69 | fHistAfterEvSel(0), | |
98bb3219 | 70 | fITSPIDResponse(0), |
36be14b3 | 71 | fMinSPDPts(1), |
72 | fMinNdEdxSamples(3), | |
73 | fMindEdx(0.), | |
c841b89f | 74 | fMinNSigma(1.5), |
36be14b3 | 75 | fMaxY(0.5), |
c841b89f | 76 | fMaxChi2Clu(2.5), |
36be14b3 | 77 | fNSigmaDCAxy(7.), |
78 | fNSigmaDCAz(7.), | |
dac69cb0 | 79 | fEtaRange(0.8), |
1f75ac7d | 80 | fLowMult(-1), |
81 | fUpMult(-1), | |
82 | fLowCentrality(-1.0), | |
83 | fUpCentrality(-1.0), | |
84 | fSPD(0), | |
85 | fHImode(0), | |
6b77d2c0 | 86 | fYear(2010), |
36be14b3 | 87 | fMC(kFALSE), |
88 | fSmearMC(kFALSE), | |
89 | fSmearP(0.), | |
90 | fSmeardEdx(0.), | |
91 | fRandGener(0), | |
92 | fFillNtuple(kFALSE), | |
146d18ee | 93 | fLowEnergypp(kFALSE), |
36be14b3 | 94 | fNtupleNSigma(0), |
95 | fNtupleMC(0) | |
96 | { | |
97 | // Constructor | |
98 | Double_t xbins[kNbins+1]={0.08,0.10,0.12,0.14,0.16,0.18,0.20,0.25,0.30,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.70,0.75,0.80,0.85,0.90,0.95,1.0}; | |
99 | for(Int_t iBin=0; iBin<kNbins+1; iBin++) fPtBinLimits[iBin]=xbins[iBin]; | |
100 | fRandGener=new TRandom3(0); | |
7f8f788e | 101 | fesdTrackCutsMult = new AliESDtrackCuts; |
98bb3219 | 102 | |
7f8f788e | 103 | // TPC |
104 | fesdTrackCutsMult->SetMinNClustersTPC(70); | |
105 | fesdTrackCutsMult->SetMaxChi2PerClusterTPC(4); | |
106 | fesdTrackCutsMult->SetAcceptKinkDaughters(kFALSE); | |
107 | fesdTrackCutsMult->SetRequireTPCRefit(kTRUE); | |
108 | // ITS | |
109 | fesdTrackCutsMult->SetRequireITSRefit(kTRUE); | |
110 | fesdTrackCutsMult->SetClusterRequirementITS(AliESDtrackCuts::kSPD, | |
111 | AliESDtrackCuts::kAny); | |
112 | fesdTrackCutsMult->SetDCAToVertex2D(kFALSE); | |
113 | fesdTrackCutsMult->SetRequireSigmaToVertex(kFALSE); | |
114 | fesdTrackCutsMult->SetEtaRange(-0.8,+0.8); | |
115 | fesdTrackCutsMult->SetPtRange(0.15, 1e10); | |
116 | SetYear(2010); | |
36be14b3 | 117 | |
118 | DefineInput(0, TChain::Class()); | |
119 | DefineOutput(1, TList::Class()); | |
120 | Printf("end of AliAnalysisTaskSEITSsaSpectra"); | |
121 | } | |
122 | ||
123 | //___________________________________________________________________________ | |
124 | AliAnalysisTaskSEITSsaSpectra::~AliAnalysisTaskSEITSsaSpectra(){ | |
125 | // Destructor | |
126 | if (fOutput) { | |
127 | delete fOutput; | |
128 | fOutput = 0; | |
129 | } | |
130 | if(fRandGener) delete fRandGener; | |
98bb3219 | 131 | if(fITSPIDResponse) delete fITSPIDResponse; |
36be14b3 | 132 | } |
133 | ||
134 | //________________________________________________________________________ | |
4d668cf7 | 135 | Double_t AliAnalysisTaskSEITSsaSpectra::CookdEdx(Double_t *s) const { |
36be14b3 | 136 | // truncated mean for the dEdx |
137 | Int_t nc=0; | |
138 | Double_t dedx[4]={0.,0.,0.,0.}; | |
139 | for (Int_t il=0; il<4; il++) { // count good (>0) dE/dx values | |
140 | if(s[il]>fMindEdx){ | |
141 | dedx[nc]= s[il]; | |
142 | nc++; | |
143 | } | |
144 | } | |
145 | if(nc<fMinNdEdxSamples) return -1.; | |
146 | ||
147 | Double_t tmp; | |
148 | Int_t swap; // sort in ascending order | |
149 | do { | |
150 | swap=0; | |
151 | for (Int_t i=0; i<nc-1; i++) { | |
152 | if (dedx[i]<=dedx[i+1]) continue; | |
153 | tmp=dedx[i]; | |
154 | dedx[i]=dedx[i+1]; | |
155 | dedx[i+1]=tmp; | |
156 | swap++; | |
157 | } | |
158 | } while (swap); | |
159 | ||
160 | Double_t sumamp=0,sumweight=0; | |
161 | Double_t weight[4]={1.,1.,0.,0.}; | |
162 | if(nc==3) weight[1]=0.5; | |
163 | else if(nc<3) weight[1]=0.; | |
164 | for (Int_t i=0; i<nc; i++) { | |
165 | sumamp+= dedx[i]*weight[i]; | |
166 | sumweight+=weight[i]; | |
167 | } | |
168 | return sumamp/sumweight; | |
169 | } | |
170 | ||
171 | ||
7f8f788e | 172 | //________________________________________________________________________ |
173 | void AliAnalysisTaskSEITSsaSpectra::SetYear(Int_t year){ | |
174 | // Set year dependent quantities | |
175 | fYear=year; | |
176 | if(fYear==2009){ | |
177 | fesdTrackCutsMult->SetMaxDCAToVertexXYPtDep("0.0350+0.0420/TMath::Power(pt,0.9)"); //2009 standard cut | |
178 | fesdTrackCutsMult->SetMaxDCAToVertexZ(20); //2009 standard cut | |
179 | }else{ | |
180 | fesdTrackCutsMult->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01"); //2010 standard cut | |
181 | fesdTrackCutsMult->SetMaxDCAToVertexZ(2); //2010 standard cut | |
182 | } | |
183 | } | |
184 | ||
36be14b3 | 185 | //________________________________________________________________________ |
4d668cf7 | 186 | Bool_t AliAnalysisTaskSEITSsaSpectra::DCAcut(Double_t impactXY, Double_t impactZ, Double_t pt, Bool_t optMC) const { |
36be14b3 | 187 | // cut on transverse impact parameter updaated on 20-5-2010 |
188 | // from the study of L. Milano, F. Prino on the ITS standalone tracks | |
189 | // using the common binning of the TPC tracks | |
190 | Double_t xyP[3]; | |
191 | Double_t zP[3]; | |
192 | if(optMC){ | |
6b77d2c0 | 193 | if(fYear==2009){ |
194 | xyP[0]=88.63; //MC LHC10a12 | |
195 | xyP[1]=19.57; | |
196 | xyP[2]=1.65; | |
197 | zP[0]=140.98; | |
198 | zP[1]=62.33; | |
199 | zP[2]=1.15; | |
200 | }else{ | |
201 | xyP[0]=36.; //MC LHC10d1 | |
202 | xyP[1]=43.9; | |
203 | xyP[2]=1.3; | |
204 | zP[0]=111.9; | |
205 | zP[1]=59.8; | |
206 | zP[2]=1.2; | |
207 | } | |
36be14b3 | 208 | } |
209 | else{ | |
6b77d2c0 | 210 | if(fYear==2009){ |
211 | xyP[0]=85.28;//DATA 900 GeV pass6 | |
212 | xyP[1]=25.78; | |
213 | xyP[2]=1.55; | |
214 | zP[0]=146.80; | |
215 | zP[1]=70.07; | |
216 | zP[2]=1.11; | |
217 | }else{ | |
218 | xyP[0]=32.7;//DATA 7 TeV pass2 | |
219 | xyP[1]=44.8; | |
220 | xyP[2]=1.3; | |
221 | zP[0]=117.3; | |
222 | zP[1]=66.8; | |
223 | zP[2]=1.2; | |
224 | } | |
36be14b3 | 225 | } |
226 | Double_t xySigma = xyP[0] + xyP[1]/TMath::Power(TMath::Abs(pt),xyP[2]); | |
227 | Double_t xyMax = fNSigmaDCAxy*xySigma; //in micron | |
228 | if((TMath::Abs(impactXY)*10000)>xyMax) return kFALSE; | |
229 | ||
230 | Double_t zSigma = zP[0] + zP[1]/TMath::Power(TMath::Abs(pt),zP[2]); | |
231 | Double_t zMax = fNSigmaDCAz*zSigma; //in micron | |
232 | if((TMath::Abs(impactZ)*10000)>zMax) return kFALSE; | |
233 | ||
234 | return kTRUE; | |
235 | } | |
236 | ||
237 | //________________________________________________________________________ | |
4d668cf7 | 238 | Double_t AliAnalysisTaskSEITSsaSpectra::Eta2y(Double_t pt, Double_t m, Double_t eta) const { |
239 | // convert eta to y | |
36be14b3 | 240 | Double_t mt = TMath::Sqrt(m*m + pt*pt); |
241 | return TMath::ASinH(pt/mt*TMath::SinH(eta)); | |
242 | } | |
243 | ||
244 | ||
36be14b3 | 245 | //________________________________________________________________________ |
246 | void AliAnalysisTaskSEITSsaSpectra::UserCreateOutputObjects(){ | |
4d668cf7 | 247 | // Create a TList with histograms and a TNtuple |
248 | // Called once | |
029e1796 | 249 | |
36be14b3 | 250 | fOutput = new TList(); |
251 | fOutput->SetOwner(); | |
252 | fOutput->SetName("Spiderman"); | |
253 | ||
146d18ee | 254 | fHistNEvents = new TH1F("fHistNEvents", "Number of processed events",8,-1.5,6.5); |
36be14b3 | 255 | fHistNEvents->Sumw2(); |
256 | fHistNEvents->SetMinimum(0); | |
257 | fOutput->Add(fHistNEvents); | |
258 | ||
1f75ac7d | 259 | fHistMult = new TH1F("fHistMult", "Event Multiplicity",3000,-0.5,2999.5); |
c841b89f | 260 | fHistMult->Sumw2(); |
261 | fHistMult->SetMinimum(0); | |
262 | fOutput->Add(fHistMult); | |
263 | ||
1f75ac7d | 264 | fHistCen = new TH1F("fHistCen", "Event Centrality",101,-0.5,100.5); |
265 | fHistCen->Sumw2(); | |
266 | fHistCen->SetMinimum(0); | |
267 | fOutput->Add(fHistCen); | |
268 | ||
36be14b3 | 269 | fHistNTracks = new TH1F("fHistNTracks", "Number of ITSsa tracks",20,0.5,20.5); |
270 | fHistNTracks->Sumw2(); | |
271 | fHistNTracks->SetMinimum(0); | |
272 | fOutput->Add(fHistNTracks); | |
273 | ||
c841b89f | 274 | fHistNTracksPos = new TH1F("fHistNTracksPos", "Number of positive ITSsa tracks",20,0.5,20.5); |
275 | fHistNTracksPos->Sumw2(); | |
276 | fHistNTracksPos->SetMinimum(0); | |
277 | fOutput->Add(fHistNTracksPos); | |
278 | ||
279 | fHistNTracksNeg = new TH1F("fHistNTracksNeg", "Number of negative ITSsa tracks",20,0.5,20.5); | |
280 | fHistNTracksNeg->Sumw2(); | |
281 | fHistNTracksNeg->SetMinimum(0); | |
282 | fOutput->Add(fHistNTracksNeg); | |
283 | ||
36be14b3 | 284 | //binning for the histogram |
285 | const Int_t hnbins=400; | |
286 | Double_t hxmin = 0.01; | |
287 | Double_t hxmax = 10; | |
288 | Double_t hlogxmin = TMath::Log10(hxmin); | |
289 | Double_t hlogxmax = TMath::Log10(hxmax); | |
290 | Double_t hbinwidth = (hlogxmax-hlogxmin)/hnbins; | |
291 | Double_t hxbins[hnbins+1]; | |
292 | hxbins[0] = 0.01; | |
293 | for (Int_t i=1;i<=hnbins;i++) { | |
294 | hxbins[i] = hxmin + TMath::Power(10,hlogxmin+i*hbinwidth); | |
295 | } | |
296 | ||
297 | fHistDEDX = new TH2F("fHistDEDX","",hnbins,hxbins,900,0,1000); | |
298 | fOutput->Add(fHistDEDX); | |
299 | ||
300 | fHistDEDXdouble = new TH2F("fHistDEDXdouble","",500,-5,5,900,0,1000); | |
301 | fOutput->Add(fHistDEDXdouble); | |
302 | ||
36be14b3 | 303 | fHistBeforeEvSel = new TH1F("fHistBeforeEvSel","fHistBeforeEvSel",kNbins,fPtBinLimits); |
304 | fHistAfterEvSel = new TH1F("fHistAfterEvSel","fHistAfterEvSel",kNbins,fPtBinLimits); | |
305 | fOutput->Add(fHistBeforeEvSel); | |
306 | fOutput->Add(fHistAfterEvSel); | |
307 | ||
308 | ||
309 | ||
310 | for(Int_t j=0;j<3;j++){ | |
98bb3219 | 311 | |
312 | fHistPosNSigmaSep[j] = new TH2F(Form("fHistPosNSigmaSep%d",j),"",hnbins,hxbins,1000,-10,10); | |
313 | fOutput->Add(fHistPosNSigmaSep[j]); | |
314 | fHistNegNSigmaSep[j] = new TH2F(Form("fHistNegNSigmaSep%d",j),"",hnbins,hxbins,1000,-10,10); | |
315 | fOutput->Add(fHistNegNSigmaSep[j]); | |
316 | ||
10ba520e | 317 | fHistPrimMCpos[j] = new TH1F(Form("fHistPrimMCpos%d",j),Form("fHistPrimMCpos%d",j),kNbins,fPtBinLimits); |
318 | fHistPrimMCneg[j] = new TH1F(Form("fHistPrimMCneg%d",j),Form("fHistPrimMCneg%d",j),kNbins,fPtBinLimits); | |
319 | fOutput->Add(fHistPrimMCneg[j]); | |
320 | fOutput->Add(fHistPrimMCpos[j]); | |
321 | fHistSecStrMCpos[j] = new TH1F(Form("fHistSecStrMCpos%d",j),Form("fHistSecStrMCpos%d",j),kNbins,fPtBinLimits); | |
322 | fHistSecStrMCneg[j] = new TH1F(Form("fHistSecStrMCneg%d",j),Form("fHistSecStrMCneg%d",j),kNbins,fPtBinLimits); | |
323 | fOutput->Add(fHistSecStrMCneg[j]); | |
324 | fOutput->Add(fHistSecStrMCpos[j]); | |
325 | fHistSecMatMCpos[j] = new TH1F(Form("fHistSecMatMCpos%d",j),Form("fHistSecMatMCpos%d",j),kNbins,fPtBinLimits); | |
326 | fHistSecMatMCneg[j] = new TH1F(Form("fHistSecMatMCneg%d",j),Form("fHistSecMatMCneg%d",j),kNbins,fPtBinLimits); | |
327 | fOutput->Add(fHistSecMatMCneg[j]); | |
328 | fOutput->Add(fHistSecMatMCpos[j]); | |
329 | // | |
330 | fHistPrimMCposBefEvSel[j] = new TH1F(Form("fHistPrimMCposBefEvSel%d",j),Form("fHistPrimMCposBefEvSel%d",j),kNbins,fPtBinLimits); | |
331 | fHistPrimMCnegBefEvSel[j] = new TH1F(Form("fHistPrimMCnegBefEvSel%d",j),Form("fHistPrimMCnegBefEvSel%d",j),kNbins,fPtBinLimits); | |
332 | fOutput->Add(fHistPrimMCnegBefEvSel[j]); | |
333 | fOutput->Add(fHistPrimMCposBefEvSel[j]); | |
334 | fHistSecStrMCposBefEvSel[j] = new TH1F(Form("fHistSecStrMCposBefEvSel%d",j),Form("fHistSecStrMCposBefEvSel%d",j),kNbins,fPtBinLimits); | |
335 | fHistSecStrMCnegBefEvSel[j] = new TH1F(Form("fHistSecStrMCnegBefEvSel%d",j),Form("fHistSecStrMCnegBefEvSel%d",j),kNbins,fPtBinLimits); | |
336 | fOutput->Add(fHistSecStrMCnegBefEvSel[j]); | |
337 | fOutput->Add(fHistSecStrMCposBefEvSel[j]); | |
338 | fHistSecMatMCposBefEvSel[j] = new TH1F(Form("fHistSecMatMCposBefEvSel%d",j),Form("fHistSecMatMCposBefEvSel%d",j),kNbins,fPtBinLimits); | |
339 | fHistSecMatMCnegBefEvSel[j] = new TH1F(Form("fHistSecMatMCnegBefEvSel%d",j),Form("fHistSecMatMCnegBefEvSel%d",j),kNbins,fPtBinLimits); | |
340 | fOutput->Add(fHistSecMatMCnegBefEvSel[j]); | |
341 | fOutput->Add(fHistSecMatMCposBefEvSel[j]); | |
342 | // | |
343 | fHistPrimMCposReco[j] = new TH1F(Form("fHistPrimMCposReco%d",j),Form("fHistPrimMCposReco%d",j),kNbins,fPtBinLimits); | |
344 | fHistPrimMCnegReco[j] = new TH1F(Form("fHistPrimMCnegReco%d",j),Form("fHistPrimMCnegReco%d",j),kNbins,fPtBinLimits); | |
345 | fOutput->Add(fHistPrimMCnegReco[j]); | |
346 | fOutput->Add(fHistPrimMCposReco[j]); | |
347 | fHistSecStrMCposReco[j] = new TH1F(Form("fHistSecStrMCposReco%d",j),Form("fHistSecStrMCposReco%d",j),kNbins,fPtBinLimits); | |
348 | fHistSecStrMCnegReco[j] = new TH1F(Form("fHistSecStrMCnegReco%d",j),Form("fHistSecStrMCnegReco%d",j),kNbins,fPtBinLimits); | |
349 | fOutput->Add(fHistSecStrMCnegReco[j]); | |
350 | fOutput->Add(fHistSecStrMCposReco[j]); | |
351 | fHistSecMatMCposReco[j] = new TH1F(Form("fHistSecMatMCposReco%d",j),Form("fHistSecMatMCposReco%d",j),kNbins,fPtBinLimits); | |
352 | fHistSecMatMCnegReco[j] = new TH1F(Form("fHistSecMatMCnegReco%d",j),Form("fHistSecMatMCnegReco%d",j),kNbins,fPtBinLimits); | |
353 | fOutput->Add(fHistSecMatMCnegReco[j]); | |
354 | fOutput->Add(fHistSecMatMCposReco[j]); | |
36be14b3 | 355 | |
36be14b3 | 356 | } |
357 | ||
358 | for(Int_t i=0; i<4; i++){ | |
359 | fHistCharge[i] = new TH1F(Form("fHistChargeLay%d",i),Form("fHistChargeLay%d",i),100,0,300); | |
360 | fOutput->Add(fHistCharge[i]); | |
361 | } | |
362 | ||
363 | for(Int_t i=0; i<kNbins; i++){ | |
364 | fHistPosPi[i] = new TH1F(Form("fHistPosPi%d",i),Form("fHistPosPi%d",i),175,-3.5,3.5); | |
365 | fHistPosK[i] = new TH1F(Form("fHistPosK%d",i),Form("fHistPosK%d",i),175,-3.5,3.5); | |
366 | fHistPosP[i] = new TH1F(Form("fHistPosP%d",i),Form("fHistPosP%d",i),175,-3.5,3.5); | |
367 | fHistNegPi[i] = new TH1F(Form("fHistNegPi%d",i),Form("fHistNegPi%d",i),175,-3.5,3.5); | |
368 | fHistNegK[i] = new TH1F(Form("fHistNegK%d",i),Form("fHistNegK%d",i),175,-3.5,3.5); | |
369 | fHistNegP[i] = new TH1F(Form("fHistNegP%d",i),Form("fHistNegP%d",i),175,-3.5,3.5); | |
370 | ||
10ba520e | 371 | fHistDCAPosPi[i] = new TH1F(Form("fHistDCAPosPi%d",i),Form("fHistDCAPosPi%d",i),2000,-1,1); //DCA distr. with NSigma PID |
36be14b3 | 372 | fHistDCAPosK[i] = new TH1F(Form("fHistDCAPosK%d",i),Form("fHistDCAPosK%d",i),2000,-1,1); |
373 | fHistDCAPosP[i] = new TH1F(Form("fHistDCAPosP%d",i),Form("fHistDCAPosP%d",i),2000,-1,1); | |
374 | fHistDCANegPi[i] = new TH1F(Form("fHistDCANegPi%d",i),Form("fHistDCANegPi%d",i),2000,-1,1); | |
375 | fHistDCANegK[i] = new TH1F(Form("fHistDCANegK%d",i),Form("fHistDCANegK%d",i),2000,-1,1); | |
376 | fHistDCANegP[i] = new TH1F(Form("fHistDCANegP%d",i),Form("fHistDCANegP%d",i),2000,-1,1); | |
377 | ||
10ba520e | 378 | fHistMCPrimDCAPosPi[i] = new TH1F(Form("fHistMCPrimDCAPosPi%d",i),Form("fHistMCPrimDCAPosPi%d",i),2000,-1,1); //DCA distr. with MC truth |
379 | fHistMCPrimDCAPosK[i] = new TH1F(Form("fHistMCPrimDCAPosK%d",i),Form("fHistMCPrimDCAPosK%d",i),2000,-1,1); | |
380 | fHistMCPrimDCAPosP[i] = new TH1F(Form("fHistMCPrimDCAPosP%d",i),Form("fHistMCPrimDCAPosP%d",i),2000,-1,1); | |
381 | fHistMCPrimDCANegPi[i] = new TH1F(Form("fHistMCPrimDCANegPi%d",i),Form("fHistMCPrimDCANegPi%d",i),2000,-1,1); | |
382 | fHistMCPrimDCANegK[i] = new TH1F(Form("fHistMCPrimDCANegK%d",i),Form("fHistMCPrimDCANegK%d",i),2000,-1,1); | |
383 | fHistMCPrimDCANegP[i] = new TH1F(Form("fHistMCPrimDCANegP%d",i),Form("fHistMCPrimDCANegP%d",i),2000,-1,1); | |
384 | ||
385 | fHistMCSecStDCAPosPi[i] = new TH1F(Form("fHistMCSecStDCAPosPi%d",i),Form("fHistMCSecStDCAPosPi%d",i),2000,-1,1); //DCA distr. with MC truth | |
386 | fHistMCSecStDCAPosK[i] = new TH1F(Form("fHistMCSecStDCAPosK%d",i),Form("fHistMCSecStDCAPosK%d",i),2000,-1,1); | |
387 | fHistMCSecStDCAPosP[i] = new TH1F(Form("fHistMCSecStDCAPosP%d",i),Form("fHistMCSecStDCAPosP%d",i),2000,-1,1); | |
388 | fHistMCSecStDCANegPi[i] = new TH1F(Form("fHistMCSecStDCANegPi%d",i),Form("fHistMCSecStDCANegPi%d",i),2000,-1,1); | |
389 | fHistMCSecStDCANegK[i] = new TH1F(Form("fHistMCSecStDCANegK%d",i),Form("fHistMCSecStDCANegK%d",i),2000,-1,1); | |
390 | fHistMCSecStDCANegP[i] = new TH1F(Form("fHistMCSecStDCANegP%d",i),Form("fHistMCSecStDCANegP%d",i),2000,-1,1); | |
391 | ||
392 | fHistMCSecMatDCAPosPi[i] = new TH1F(Form("fHistMCSecMatDCAPosPi%d",i),Form("fHistMCSecMatDCAPosPi%d",i),2000,-1,1); //DCA distr. with MC truth | |
393 | fHistMCSecMatDCAPosK[i] = new TH1F(Form("fHistMCSecMatDCAPosK%d",i),Form("fHistMCSecMatDCAPosK%d",i),2000,-1,1); | |
394 | fHistMCSecMatDCAPosP[i] = new TH1F(Form("fHistMCSecMatDCAPosP%d",i),Form("fHistMCSecMatDCAPosP%d",i),2000,-1,1); | |
395 | fHistMCSecMatDCANegPi[i] = new TH1F(Form("fHistMCSecMatDCANegPi%d",i),Form("fHistMCSecMatDCANegPi%d",i),2000,-1,1); | |
396 | fHistMCSecMatDCANegK[i] = new TH1F(Form("fHistMCSecMatDCANegK%d",i),Form("fHistMCSecMatDCANegK%d",i),2000,-1,1); | |
397 | fHistMCSecMatDCANegP[i] = new TH1F(Form("fHistMCSecMatDCANegP%d",i),Form("fHistMCSecMatDCANegP%d",i),2000,-1,1); | |
398 | ||
16c730d4 | 399 | fHistMCPosOtherHypPion[i] = new TH1F(Form("fHistMCPosOtherHypPion%d",i),Form("fHistMCPosOtherHypPion%d",i),175,-3.5,3.5); //MC truth |
400 | fHistMCPosOtherHypKaon[i] = new TH1F(Form("fHistMCPosOtherHypKaon%d",i),Form("fHistMCPosOtherHypKaon%d",i),175,-3.5,3.5); | |
401 | fHistMCPosOtherHypProton[i] = new TH1F(Form("fHistMCPosOtherHypProton%d",i),Form("fHistMCPosOtherHypProton%d",i),175,-3.5,3.5); | |
402 | fHistMCPosElHypPion[i] = new TH1F(Form("fHistMCPosElHypPion%d",i),Form("fHistMCPosElHypPion%d",i),175,-3.5,3.5); | |
403 | fHistMCPosElHypKaon[i] = new TH1F(Form("fHistMCPosElHypKaon%d",i),Form("fHistMCPosElHypKaon%d",i),175,-3.5,3.5); | |
404 | fHistMCPosElHypProton[i] = new TH1F(Form("fHistMCPosElHypProton%d",i),Form("fHistMCPosElHypProton%d",i),175,-3.5,3.5); | |
405 | fHistMCPosPiHypPion[i] = new TH1F(Form("fHistMCPosPiHypPion%d",i),Form("fHistMCPosPiHypPion%d",i),175,-3.5,3.5); | |
e6076bb8 | 406 | fHistMCPosPiHypKaon[i] = new TH1F(Form("fHistMCPosPiHypKaon%d",i),Form("fHistMCPosPiHypKaon%d",i),175,-3.5,3.5); |
407 | fHistMCPosPiHypProton[i] = new TH1F(Form("fHistMCPosPiHypProton%d",i),Form("fHistMCPosPiHypProton%d",i),175,-3.5,3.5); | |
408 | fHistMCPosKHypPion[i] = new TH1F(Form("fHistMCPosKHypPion%d",i),Form("fHistMCPosKHypPion%d",i),175,-3.5,3.5); | |
409 | fHistMCPosKHypKaon[i] = new TH1F(Form("fHistMCPosKHypKaon%d",i),Form("fHistMCPosKHypKaon%d",i),175,-3.5,3.5); | |
410 | fHistMCPosKHypProton[i] = new TH1F(Form("fHistMCPosKHypProton%d",i),Form("fHistMCPosKHypProton%d",i),175,-3.5,3.5); | |
411 | fHistMCPosPHypPion[i] = new TH1F(Form("fHistMCPosPHypPion%d",i),Form("fHistMCPosPHypPion%d",i),175,-3.5,3.5); | |
412 | fHistMCPosPHypKaon[i] = new TH1F(Form("fHistMCPosPHypKaon%d",i),Form("fHistMCPosPHypKaon%d",i),175,-3.5,3.5); | |
413 | fHistMCPosPHypProton[i] = new TH1F(Form("fHistMCPosPHypProton%d",i),Form("fHistMCPosPHypProton%d",i),175,-3.5,3.5); | |
414 | ||
16c730d4 | 415 | fHistMCNegOtherHypPion[i] = new TH1F(Form("fHistMCNegOtherHypPion%d",i),Form("fHistMCNegOtherHypPion%d",i),175,-3.5,3.5); //MC truth |
416 | fHistMCNegOtherHypKaon[i] = new TH1F(Form("fHistMCNegOtherHypKaon%d",i),Form("fHistMCNegOtherHypKaon%d",i),175,-3.5,3.5); | |
417 | fHistMCNegOtherHypProton[i] = new TH1F(Form("fHistMCNegOtherHypProton%d",i),Form("fHistMCNegOtherHypProton%d",i),175,-3.5,3.5); | |
418 | fHistMCNegElHypPion[i] = new TH1F(Form("fHistMCNegElHypPion%d",i),Form("fHistMCNegElHypPion%d",i),175,-3.5,3.5); | |
419 | fHistMCNegElHypKaon[i] = new TH1F(Form("fHistMCNegElHypKaon%d",i),Form("fHistMCNegElHypKaon%d",i),175,-3.5,3.5); | |
420 | fHistMCNegElHypProton[i] = new TH1F(Form("fHistMCNegElHypProton%d",i),Form("fHistMCNegElHypProton%d",i),175,-3.5,3.5); | |
421 | fHistMCNegPiHypPion[i] = new TH1F(Form("fHistMCNegPiHypPion%d",i),Form("fHistMCNegPiHypPion%d",i),175,-3.5,3.5); | |
e6076bb8 | 422 | fHistMCNegPiHypKaon[i] = new TH1F(Form("fHistMCNegPiHypKaon%d",i),Form("fHistMCNegPiHypKaon%d",i),175,-3.5,3.5); |
423 | fHistMCNegPiHypProton[i] = new TH1F(Form("fHistMCNegPiHypProton%d",i),Form("fHistMCNegPiHypProton%d",i),175,-3.5,3.5); | |
424 | fHistMCNegKHypPion[i] = new TH1F(Form("fHistMCNegKHypPion%d",i),Form("fHistMCNegKHypPion%d",i),175,-3.5,3.5); | |
425 | fHistMCNegKHypKaon[i] = new TH1F(Form("fHistMCNegKHypKaon%d",i),Form("fHistMCNegKHypKaon%d",i),175,-3.5,3.5); | |
426 | fHistMCNegKHypProton[i] = new TH1F(Form("fHistMCNegKHypProton%d",i),Form("fHistMCNegKHypProton%d",i),175,-3.5,3.5); | |
427 | fHistMCNegPHypPion[i] = new TH1F(Form("fHistMCNegPHypPion%d",i),Form("fHistMCNegPHypPion%d",i),175,-3.5,3.5); | |
428 | fHistMCNegPHypKaon[i] = new TH1F(Form("fHistMCNegPHypKaon%d",i),Form("fHistMCNegPHypKaon%d",i),175,-3.5,3.5); | |
429 | fHistMCNegPHypProton[i] = new TH1F(Form("fHistMCNegPHypProton%d",i),Form("fHistMCNegPHypProton%d",i),175,-3.5,3.5); | |
430 | ||
431 | ||
36be14b3 | 432 | fOutput->Add(fHistPosPi[i]); |
433 | fOutput->Add(fHistPosK[i]); | |
434 | fOutput->Add(fHistPosP[i]); | |
435 | fOutput->Add(fHistNegPi[i]); | |
436 | fOutput->Add(fHistNegK[i]); | |
437 | fOutput->Add(fHistNegP[i]); | |
438 | ||
6b77d2c0 | 439 | fOutput->Add(fHistDCAPosPi[i]); //DCA distr |
36be14b3 | 440 | fOutput->Add(fHistDCAPosK[i]); |
441 | fOutput->Add(fHistDCAPosP[i]); | |
442 | fOutput->Add(fHistDCANegPi[i]); | |
443 | fOutput->Add(fHistDCANegK[i]); | |
444 | fOutput->Add(fHistDCANegP[i]); | |
445 | ||
10ba520e | 446 | fOutput->Add(fHistMCPrimDCAPosPi[i]);//DCA distr. |
447 | fOutput->Add(fHistMCPrimDCAPosK[i]); | |
448 | fOutput->Add(fHistMCPrimDCAPosP[i]); | |
449 | fOutput->Add(fHistMCPrimDCANegPi[i]); | |
450 | fOutput->Add(fHistMCPrimDCANegK[i]); | |
451 | fOutput->Add(fHistMCPrimDCANegP[i]); | |
452 | ||
453 | fOutput->Add(fHistMCSecStDCAPosPi[i]);//DCA distr. | |
454 | fOutput->Add(fHistMCSecStDCAPosK[i]); | |
455 | fOutput->Add(fHistMCSecStDCAPosP[i]); | |
456 | fOutput->Add(fHistMCSecStDCANegPi[i]); | |
457 | fOutput->Add(fHistMCSecStDCANegK[i]); | |
458 | fOutput->Add(fHistMCSecStDCANegP[i]); | |
459 | ||
460 | fOutput->Add(fHistMCSecMatDCAPosPi[i]);//DCA distr. | |
461 | fOutput->Add(fHistMCSecMatDCAPosK[i]); | |
462 | fOutput->Add(fHistMCSecMatDCAPosP[i]); | |
463 | fOutput->Add(fHistMCSecMatDCANegPi[i]); | |
464 | fOutput->Add(fHistMCSecMatDCANegK[i]); | |
465 | fOutput->Add(fHistMCSecMatDCANegP[i]); | |
466 | ||
16c730d4 | 467 | fOutput->Add(fHistMCPosOtherHypPion[i]);//MC truth |
468 | fOutput->Add(fHistMCPosOtherHypKaon[i]); | |
469 | fOutput->Add(fHistMCPosOtherHypProton[i]); | |
470 | fOutput->Add(fHistMCPosElHypPion[i]); | |
471 | fOutput->Add(fHistMCPosElHypKaon[i]); | |
472 | fOutput->Add(fHistMCPosElHypProton[i]); | |
473 | fOutput->Add(fHistMCPosPiHypPion[i]); | |
e6076bb8 | 474 | fOutput->Add(fHistMCPosPiHypKaon[i]); |
475 | fOutput->Add(fHistMCPosPiHypProton[i]); | |
476 | fOutput->Add(fHistMCPosKHypPion[i]); | |
477 | fOutput->Add(fHistMCPosKHypKaon[i]); | |
478 | fOutput->Add(fHistMCPosKHypProton[i]); | |
479 | fOutput->Add(fHistMCPosPHypPion[i]); | |
480 | fOutput->Add(fHistMCPosPHypKaon[i]); | |
481 | fOutput->Add(fHistMCPosPHypProton[i]); | |
482 | ||
16c730d4 | 483 | fOutput->Add(fHistMCNegOtherHypPion[i]);//MC truth |
484 | fOutput->Add(fHistMCNegOtherHypKaon[i]); | |
485 | fOutput->Add(fHistMCNegOtherHypProton[i]); | |
486 | fOutput->Add(fHistMCNegElHypPion[i]); | |
487 | fOutput->Add(fHistMCNegElHypKaon[i]); | |
488 | fOutput->Add(fHistMCNegElHypProton[i]); | |
489 | fOutput->Add(fHistMCNegPiHypPion[i]); | |
e6076bb8 | 490 | fOutput->Add(fHistMCNegPiHypKaon[i]); |
491 | fOutput->Add(fHistMCNegPiHypProton[i]); | |
492 | fOutput->Add(fHistMCNegKHypPion[i]); | |
493 | fOutput->Add(fHistMCNegKHypKaon[i]); | |
494 | fOutput->Add(fHistMCNegKHypProton[i]); | |
495 | fOutput->Add(fHistMCNegPHypPion[i]); | |
496 | fOutput->Add(fHistMCNegPHypKaon[i]); | |
497 | fOutput->Add(fHistMCNegPHypProton[i]); | |
498 | ||
36be14b3 | 499 | } |
500 | ||
501 | //NSigma Histos | |
502 | for(Int_t j=0;j<3;j++){ | |
10ba520e | 503 | |
504 | fHistPosNSigmaMean[j] = new TH1F(Form("hHistPosNSigmaMean%d",j),Form("hHistPosNSigmaMean%d",j),kNbins,fPtBinLimits); | |
505 | fHistNegNSigmaMean[j] = new TH1F(Form("hHistNegNSigmaMean%d",j),Form("hHistNegNSigmaMean%d",j),kNbins,fPtBinLimits); | |
506 | fHistPosNSigmaMCMean[j] = new TH1F(Form("hHistPosNSigmaMCMean%d",j),Form("hHistPosNSigmaMCMean%d",j),kNbins,fPtBinLimits); | |
507 | fHistNegNSigmaMCMean[j] = new TH1F(Form("hHistNegNSigmaMCMean%d",j),Form("hHistNegNSigmaMCMean%d",j),kNbins,fPtBinLimits); | |
508 | fHistPosNSigmaPrimMean[j] = new TH1F(Form("hHistPosNSigmaPrimMean%d",j),Form("hHistPosNSigmaPrimMean%d",j),kNbins,fPtBinLimits); | |
509 | fHistNegNSigmaPrimMean[j] = new TH1F(Form("hHistNegNSigmaPrimMean%d",j),Form("hHistNegNSigmaPrimMean%d",j),kNbins,fPtBinLimits); | |
510 | fHistPosNSigmaPrimMCMean[j] = new TH1F(Form("hHistPosNSigmaPrimMCMean%d",j),Form("hHistPosNSigmaPrimMCMean%d",j),kNbins,fPtBinLimits); | |
511 | fHistNegNSigmaPrimMCMean[j] = new TH1F(Form("hHistNegNSigmaPrimMCMean%d",j),Form("hHistNegNSigmaPrimMCMean%d",j),kNbins,fPtBinLimits); | |
512 | fOutput->Add(fHistPosNSigmaMean[j]); | |
513 | fOutput->Add(fHistNegNSigmaMean[j]); | |
514 | fOutput->Add(fHistPosNSigmaMCMean[j]); | |
515 | fOutput->Add(fHistNegNSigmaMCMean[j]); | |
516 | fOutput->Add(fHistPosNSigmaPrimMean[j]); | |
517 | fOutput->Add(fHistNegNSigmaPrimMean[j]); | |
518 | fOutput->Add(fHistPosNSigmaPrimMCMean[j]); | |
519 | fOutput->Add(fHistNegNSigmaPrimMCMean[j]); | |
520 | ||
36be14b3 | 521 | fHistPosNSigma[j] = new TH1F(Form("hHistPosNSigma%d",j),Form("hHistPosNSigma%d",j),kNbins,fPtBinLimits); |
522 | fHistNegNSigma[j] = new TH1F(Form("hHistNegNSigma%d",j),Form("hHistNegNSigma%d",j),kNbins,fPtBinLimits); | |
10ba520e | 523 | fHistPosNSigmaMC[j] = new TH1F(Form("hHistPosNSigmaMC%d",j),Form("hHistPosNSigmaMC%d",j),kNbins,fPtBinLimits); |
524 | fHistNegNSigmaMC[j] = new TH1F(Form("hHistNegNSigmaMC%d",j),Form("hHistNegNSigmaMC%d",j),kNbins,fPtBinLimits); | |
36be14b3 | 525 | fHistPosNSigmaPrim[j] = new TH1F(Form("hHistPosNSigmaPrim%d",j),Form("hHistPosNSigmaPrim%d",j),kNbins,fPtBinLimits); |
526 | fHistNegNSigmaPrim[j] = new TH1F(Form("hHistNegNSigmaPrim%d",j),Form("hHistNegNSigmaPrim%d",j),kNbins,fPtBinLimits); | |
527 | fHistPosNSigmaPrimMC[j] = new TH1F(Form("hHistPosNSigmaPrimMC%d",j),Form("hHistPosNSigmaPrimMC%d",j),kNbins,fPtBinLimits); | |
528 | fHistNegNSigmaPrimMC[j] = new TH1F(Form("hHistNegNSigmaPrimMC%d",j),Form("hHistNegNSigmaPrimMC%d",j),kNbins,fPtBinLimits); | |
529 | fOutput->Add(fHistPosNSigma[j]); | |
530 | fOutput->Add(fHistNegNSigma[j]); | |
10ba520e | 531 | fOutput->Add(fHistPosNSigmaMC[j]); |
532 | fOutput->Add(fHistNegNSigmaMC[j]); | |
36be14b3 | 533 | fOutput->Add(fHistPosNSigmaPrim[j]); |
534 | fOutput->Add(fHistNegNSigmaPrim[j]); | |
535 | fOutput->Add(fHistPosNSigmaPrimMC[j]); | |
536 | fOutput->Add(fHistNegNSigmaPrimMC[j]); | |
10ba520e | 537 | |
36be14b3 | 538 | } |
539 | ||
146d18ee | 540 | fNtupleNSigma = new TNtuple("fNtupleNSigma","fNtupleNSigma","p:pt:dedx:dedx3:dedx4:dedx5:dedx6:ncls:nclspid:sign:run:eta:impactXY:impactZ:isph:pdgcode:mfl:chi2ncls"); |
36be14b3 | 541 | fOutput->Add(fNtupleNSigma); |
542 | fNtupleMC = new TNtuple("fNtupleMC","fNtupleMC","ptMC:pdgcode:signMC:etaMC:yMC:isph:evSel:run"); | |
543 | fOutput->Add(fNtupleMC); | |
7f8f788e | 544 | |
545 | // Post output data. | |
546 | PostData(1,fOutput); | |
547 | ||
36be14b3 | 548 | Printf("end of CreateOutputObjects"); |
549 | } | |
550 | ||
551 | //________________________________________________________________________ | |
552 | void AliAnalysisTaskSEITSsaSpectra::UserExec(Option_t *){ | |
4d668cf7 | 553 | // Main loop |
554 | // Called for each event | |
36be14b3 | 555 | |
1f75ac7d | 556 | /////////////////////////////////////// |
36be14b3 | 557 | //variables |
10ba520e | 558 | Float_t pdgmass[4]={0.13957,0.493677,0.938272,1.8756}; //mass for pi, K, P (Gev/c^2) |
36be14b3 | 559 | Int_t listcode[3]={211,321,2212};//code for pi, K, P (Gev/c^2) |
146d18ee | 560 | Double_t dedxLay[4]; |
5c112001 | 561 | Float_t ptMC=-999; |
10ba520e | 562 | Int_t code=-999, signMC=-999,isph=-999,mfl=-999; |
36be14b3 | 563 | Float_t impactXY=-999, impactZ=-999; |
564 | Int_t evSel=1; | |
565 | AliESDtrack* track; | |
566 | UInt_t status; | |
567 | AliStack* stack=0; | |
568 | TParticle *part=0; | |
569 | TParticlePDG *pdgPart=0; | |
570 | ||
36be14b3 | 571 | ///////////////////// |
146d18ee | 572 | |
573 | fESD=(AliESDEvent*)InputEvent(); | |
574 | if(!fESD) { | |
575 | printf("AliAnalysisTaskSDDRP::Exec(): bad ESD\n"); | |
576 | return; | |
577 | } | |
578 | fHistNEvents->Fill(-1); | |
579 | ||
580 | if(fLowEnergypp){ // remove events without SDD in pp 2.6 TeV | |
581 | Bool_t hasSDD=kFALSE; | |
582 | for (Int_t iTrack=0; iTrack<fESD->GetNumberOfTracks(); iTrack++) { | |
583 | track = (AliESDtrack*)fESD->GetTrack(iTrack); | |
584 | if (!track) continue; | |
585 | UInt_t clumap = track->GetITSClusterMap(); | |
586 | if(clumap&4) hasSDD=kTRUE; | |
587 | if(clumap&8) hasSDD=kTRUE; | |
588 | if(hasSDD) break; | |
589 | } | |
590 | if(!hasSDD) return; | |
591 | } | |
592 | fHistNEvents->Fill(0); | |
593 | ||
594 | ||
36be14b3 | 595 | if(fMC){ |
596 | AliMCEventHandler* eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()); | |
597 | if (!eventHandler) { | |
598 | Printf("ERROR: Could not retrieve MC event handler"); | |
599 | return; | |
600 | } | |
601 | AliMCEvent* mcEvent = eventHandler->MCEvent(); | |
602 | if (!mcEvent) { | |
603 | Printf("ERROR: Could not retrieve MC event"); | |
604 | return; | |
605 | } | |
606 | stack = mcEvent->Stack(); | |
607 | if (!stack) { | |
608 | printf("ERROR: stack not available\n"); | |
609 | return; | |
610 | } | |
611 | } | |
98bb3219 | 612 | if(!fITSPIDResponse){ |
613 | fITSPIDResponse=new AliITSPIDResponse(fMC); | |
614 | } | |
615 | ||
146d18ee | 616 | //flags for MC |
36be14b3 | 617 | Int_t nTrackMC=0; |
618 | if(stack) nTrackMC = stack->GetNtrack(); | |
619 | const AliESDVertex *vtx = fESD->GetPrimaryVertexSPD(); | |
1f75ac7d | 620 | |
621 | ///////////selection of the centrality or multiplicity bin | |
622 | ||
623 | //selection on the event centrality | |
624 | if(fHImode){ | |
625 | if(!(fLowCentrality<0.0)&&fUpCentrality>0.0) | |
626 | { | |
627 | AliCentrality *centrality = fESD->GetCentrality(); | |
628 | if(!centrality->IsEventInCentralityClass(fLowCentrality,fUpCentrality,"V0M")) | |
629 | return; | |
630 | Printf("Centrality of the event: %.1f",centrality->GetCentralityPercentile("V0M")); | |
631 | Printf("Centrality cut: %.1f to %.1f",fLowCentrality,fUpCentrality); | |
632 | fHistCen->Fill(centrality->GetCentralityPercentile("V0M")); | |
633 | } | |
634 | } | |
635 | ||
636 | //selection on the event multiplicity based on global tracks | |
637 | Int_t multiplicity = fesdTrackCutsMult->CountAcceptedTracks(fESD); | |
638 | if(!fSPD){ | |
639 | if(fLowMult>-1) | |
640 | { | |
641 | if(multiplicity<fLowMult) | |
642 | return; | |
643 | } | |
644 | if(fUpMult>-1) | |
645 | { | |
646 | if(multiplicity>fUpMult) | |
647 | return; | |
648 | } | |
649 | ||
650 | Printf("Multiplicity of the event (global tracks) : %i",multiplicity); | |
651 | Printf("Multiplicity cut (global tracks) : %i to %i",fLowMult,fUpMult); | |
652 | fHistMult->Fill(multiplicity); | |
653 | } | |
654 | ||
655 | //multipicity selection based on SPD | |
656 | if(fSPD){ | |
657 | Float_t spdCorr=-1.0; | |
658 | const AliMultiplicity *mult = fESD->GetMultiplicity(); | |
659 | Float_t nClusters[6]={0.0,0.0,0.0,0.0,0.0,0.0}; | |
660 | for(Int_t ilay=0; ilay<6; ilay++) | |
661 | { | |
662 | nClusters[ilay] = (Float_t)mult->GetNumberOfITSClusters(ilay); | |
663 | } | |
664 | spdCorr = AliESDUtils::GetCorrSPD2(nClusters[1],vtx->GetZ()); | |
665 | { | |
666 | if(fLowMult>-1) | |
667 | { | |
668 | if(((Int_t)spdCorr)<fLowMult) | |
669 | { | |
670 | return; | |
671 | } | |
672 | } | |
673 | if(fUpMult>-1) | |
674 | { | |
675 | if(((Int_t)spdCorr)>fUpMult) | |
676 | { | |
677 | return; | |
678 | } | |
679 | } | |
680 | } | |
681 | ||
682 | Printf("Multiplicity of the event (SPD) : %i",(Int_t)spdCorr); | |
683 | Printf("Multiplicity cut (SPD) : %i to %i",fLowMult,fUpMult); | |
684 | fHistMult->Fill(spdCorr); | |
685 | } | |
686 | ||
687 | ||
36be14b3 | 688 | |
689 | //event selection | |
690 | fHistNEvents->Fill(1); | |
691 | if(!vtx)evSel=0; | |
692 | else{ | |
693 | fHistNEvents->Fill(2); | |
694 | if(vtx->GetNContributors()<0) evSel=0; | |
695 | else{ | |
696 | fHistNEvents->Fill(3); | |
697 | if(TMath::Abs(vtx->GetZv())>10) evSel=0; | |
698 | else{ | |
699 | fHistNEvents->Fill(4); | |
700 | if(vtx->GetZRes()>0.5) evSel=0; | |
701 | else{ | |
702 | fHistNEvents->Fill(5); | |
703 | if(vtx->IsFromVertexerZ() && vtx->GetDispersion()>0.03) evSel=0; | |
704 | else fHistNEvents->Fill(6); | |
705 | } | |
706 | } | |
707 | } | |
708 | } | |
146d18ee | 709 | |
710 | ||
1f75ac7d | 711 | /////first loop on stack, before event selection, filling MC ntuple |
36be14b3 | 712 | |
713 | for(Int_t imc=0; imc<nTrackMC; imc++){ | |
714 | part = stack->Particle(imc); | |
10ba520e | 715 | isph=1; |
716 | if(!stack->IsPhysicalPrimary(imc)) isph=0; | |
36be14b3 | 717 | pdgPart = part->GetPDG(); |
10ba520e | 718 | if(!pdgPart)continue; |
36be14b3 | 719 | if(pdgPart->Charge()==0) continue; //no neutral particles |
5c112001 | 720 | Float_t yMC=-999.; |
36be14b3 | 721 | if(part->Energy() != TMath::Abs(part->Pz())) yMC = 0.5*TMath::Log((part->Energy()+part->Pz())/(part->Energy()-part->Pz())); |
722 | if(TMath::Abs(yMC) > fMaxY) continue; //rapidity cut | |
36be14b3 | 723 | if(pdgPart->Charge()>0) signMC=1; |
724 | else signMC=-1; | |
725 | ptMC=part->Pt(); | |
726 | code=pdgPart->PdgCode(); | |
10ba520e | 727 | Int_t jpart=-1; |
728 | for(Int_t j=0; j<3; j++){ | |
729 | if(TMath::Abs(code)==listcode[j]){ | |
730 | jpart=j; | |
731 | break; | |
732 | } | |
733 | } | |
734 | Int_t indexMoth=part->GetFirstMother(); | |
735 | if(indexMoth>=0){ | |
736 | TParticle* moth = stack->Particle(indexMoth); | |
737 | Float_t codemoth = TMath::Abs(moth->GetPdgCode()); | |
738 | mfl = Int_t (codemoth/ TMath::Power(10, Int_t(TMath::Log10(codemoth)))); | |
739 | } | |
36be14b3 | 740 | |
36be14b3 | 741 | //filling MC ntuple |
742 | if(TMath::Abs(code)==211 || TMath::Abs(code)==321 || TMath::Abs(code)==2212){ | |
743 | Float_t xntMC[8]; | |
744 | Int_t indexMC=0; | |
745 | xntMC[indexMC++]=(Float_t)ptMC; | |
746 | xntMC[indexMC++]=(Float_t)code; | |
747 | xntMC[indexMC++]=(Float_t)signMC; | |
748 | xntMC[indexMC++]=(Float_t)part->Eta(); | |
749 | xntMC[indexMC++]=(Float_t)yMC; | |
750 | xntMC[indexMC++]=(Float_t)isph; | |
751 | xntMC[indexMC++]=(Float_t)evSel; | |
752 | xntMC[indexMC++]=(Float_t)fESD->GetRunNumber(); | |
10ba520e | 753 | |
36be14b3 | 754 | if(fFillNtuple) fNtupleMC->Fill(xntMC); |
755 | } | |
756 | ||
10ba520e | 757 | if(jpart>=0){ |
758 | if(stack->IsPhysicalPrimary(imc)){ | |
759 | if(signMC>0) fHistPrimMCposBefEvSel[jpart]->Fill(TMath::Abs(ptMC)); | |
760 | else fHistPrimMCnegBefEvSel[jpart]->Fill(TMath::Abs(ptMC)); | |
761 | if(evSel==1){ | |
762 | if(signMC>0) fHistPrimMCpos[jpart]->Fill(TMath::Abs(ptMC)); | |
763 | else fHistPrimMCneg[jpart]->Fill(TMath::Abs(ptMC)); | |
764 | } | |
765 | }else{ | |
766 | if(mfl==3){ // strangeness | |
767 | if(signMC>0) fHistSecStrMCposBefEvSel[jpart]->Fill(TMath::Abs(ptMC)); | |
768 | else fHistSecStrMCnegBefEvSel[jpart]->Fill(TMath::Abs(ptMC)); | |
769 | if(evSel==1){ | |
770 | if(signMC>0) fHistSecStrMCpos[jpart]->Fill(TMath::Abs(ptMC)); | |
771 | else fHistSecStrMCneg[jpart]->Fill(TMath::Abs(ptMC)); | |
772 | } | |
773 | }else{ | |
774 | if(signMC>0) fHistSecMatMCposBefEvSel[jpart]->Fill(TMath::Abs(ptMC)); | |
775 | else fHistSecMatMCnegBefEvSel[jpart]->Fill(TMath::Abs(ptMC)); | |
776 | if(evSel==1){ | |
777 | if(signMC>0) fHistSecMatMCpos[jpart]->Fill(TMath::Abs(ptMC)); | |
778 | else fHistSecMatMCneg[jpart]->Fill(TMath::Abs(ptMC)); | |
779 | } | |
36be14b3 | 780 | } |
781 | } | |
10ba520e | 782 | } |
783 | } | |
784 | ||
36be14b3 | 785 | |
10ba520e | 786 | if(evSel==0)return; //event selection |
1f75ac7d | 787 | |
788 | ||
36be14b3 | 789 | //loop on tracks |
790 | for (Int_t iTrack=0; iTrack<fESD->GetNumberOfTracks(); iTrack++) { | |
10ba520e | 791 | isph=-999; |
36be14b3 | 792 | code=-999; |
793 | mfl=-999; | |
10ba520e | 794 | |
36be14b3 | 795 | track = (AliESDtrack*)fESD->GetTrack(iTrack); |
796 | if (!track) continue; | |
797 | ||
798 | //track selection | |
c841b89f | 799 | Int_t countBinTrk=1; |
800 | TString label; | |
801 | ||
802 | label="no selection"; | |
803 | fHistNTracks->Fill(countBinTrk); | |
804 | if(track->GetSign()>0)fHistNTracksPos->Fill(countBinTrk); | |
805 | if(track->GetSign()<0)fHistNTracksNeg->Fill(countBinTrk); | |
806 | fHistNTracks->GetXaxis()->SetBinLabel(fHistNTracks->FindBin(countBinTrk),label.Data()); | |
807 | fHistNTracksPos->GetXaxis()->SetBinLabel(fHistNTracksPos->FindBin(countBinTrk),label.Data()); | |
808 | fHistNTracksNeg->GetXaxis()->SetBinLabel(fHistNTracksNeg->FindBin(countBinTrk),label.Data()); | |
809 | countBinTrk++; | |
810 | ||
36be14b3 | 811 | status=track->GetStatus(); |
812 | if((status&AliESDtrack::kITSpureSA)==0) continue; //its standalone | |
c841b89f | 813 | |
814 | label="ITSsa"; | |
815 | fHistNTracks->Fill(countBinTrk); | |
816 | if(track->GetSign()>0)fHistNTracksPos->Fill(countBinTrk); | |
817 | if(track->GetSign()<0)fHistNTracksNeg->Fill(countBinTrk); | |
818 | fHistNTracks->GetXaxis()->SetBinLabel(fHistNTracks->FindBin(countBinTrk),label.Data()); | |
819 | fHistNTracksPos->GetXaxis()->SetBinLabel(fHistNTracksPos->FindBin(countBinTrk),label.Data()); | |
820 | fHistNTracksNeg->GetXaxis()->SetBinLabel(fHistNTracksNeg->FindBin(countBinTrk),label.Data()); | |
821 | countBinTrk++; | |
822 | ||
36be14b3 | 823 | if((status&AliESDtrack::kITSrefit)==0) continue; //its refit |
c841b89f | 824 | |
825 | label="ITSrefit"; | |
826 | fHistNTracks->Fill(countBinTrk); | |
827 | if(track->GetSign()>0)fHistNTracksPos->Fill(countBinTrk); | |
828 | if(track->GetSign()<0)fHistNTracksNeg->Fill(countBinTrk); | |
829 | fHistNTracks->GetXaxis()->SetBinLabel(fHistNTracks->FindBin(countBinTrk),label.Data()); | |
830 | fHistNTracksPos->GetXaxis()->SetBinLabel(fHistNTracksPos->FindBin(countBinTrk),label.Data()); | |
831 | fHistNTracksNeg->GetXaxis()->SetBinLabel(fHistNTracksNeg->FindBin(countBinTrk),label.Data()); | |
832 | countBinTrk++; | |
833 | ||
029e1796 | 834 | if(TMath::Abs(track->GetSign())<0.0001) continue; //no neutral particles |
c841b89f | 835 | |
836 | label="neutral particle"; | |
837 | fHistNTracks->Fill(countBinTrk); | |
838 | if(track->GetSign()>0)fHistNTracksPos->Fill(countBinTrk); | |
839 | if(track->GetSign()<0)fHistNTracksNeg->Fill(countBinTrk); | |
840 | fHistNTracks->GetXaxis()->SetBinLabel(fHistNTracks->FindBin(countBinTrk),label.Data()); | |
841 | fHistNTracksPos->GetXaxis()->SetBinLabel(fHistNTracksPos->FindBin(countBinTrk),label.Data()); | |
842 | fHistNTracksNeg->GetXaxis()->SetBinLabel(fHistNTracksNeg->FindBin(countBinTrk),label.Data()); | |
843 | countBinTrk++; | |
10ba520e | 844 | |
36be14b3 | 845 | //cluster in ITS |
846 | UInt_t clumap = track->GetITSClusterMap(); | |
847 | Int_t nSPD=0; | |
848 | for(Int_t il=0; il<2; il++) if(TESTBIT(clumap,il)) nSPD++; | |
849 | if(nSPD<fMinSPDPts) continue; | |
c841b89f | 850 | |
851 | label="SPDcls"; | |
852 | fHistNTracks->Fill(countBinTrk); | |
853 | if(track->GetSign()>0)fHistNTracksPos->Fill(countBinTrk); | |
854 | if(track->GetSign()<0)fHistNTracksNeg->Fill(countBinTrk); | |
855 | fHistNTracks->GetXaxis()->SetBinLabel(fHistNTracks->FindBin(countBinTrk),label.Data()); | |
856 | fHistNTracksPos->GetXaxis()->SetBinLabel(fHistNTracksPos->FindBin(countBinTrk),label.Data()); | |
857 | fHistNTracksNeg->GetXaxis()->SetBinLabel(fHistNTracksNeg->FindBin(countBinTrk),label.Data()); | |
858 | countBinTrk++; | |
859 | ||
146d18ee | 860 | Int_t nPtsForPid=0; |
861 | for(Int_t j=2;j<6;j++) if(TESTBIT(clumap,j)) nPtsForPid++; | |
862 | if(nPtsForPid<fMinNdEdxSamples) continue; //at least 3 points on SSD/SDD | |
c841b89f | 863 | |
864 | label="SDD+SSD cls"; | |
865 | fHistNTracks->Fill(countBinTrk); | |
866 | if(track->GetSign()>0)fHistNTracksPos->Fill(countBinTrk); | |
867 | if(track->GetSign()<0)fHistNTracksNeg->Fill(countBinTrk); | |
868 | fHistNTracks->GetXaxis()->SetBinLabel(fHistNTracks->FindBin(countBinTrk),label.Data()); | |
869 | fHistNTracksPos->GetXaxis()->SetBinLabel(fHistNTracksPos->FindBin(countBinTrk),label.Data()); | |
870 | fHistNTracksNeg->GetXaxis()->SetBinLabel(fHistNTracksNeg->FindBin(countBinTrk),label.Data()); | |
871 | countBinTrk++; | |
872 | ||
36be14b3 | 873 | //chisquare/nclusters |
146d18ee | 874 | Int_t nclu=nSPD+nPtsForPid; |
36be14b3 | 875 | if(track->GetITSchi2()/nclu > fMaxChi2Clu) continue; |
c841b89f | 876 | |
877 | label="chi2/ncls"; | |
878 | fHistNTracks->Fill(countBinTrk); | |
879 | if(track->GetSign()>0)fHistNTracksPos->Fill(countBinTrk); | |
880 | if(track->GetSign()<0)fHistNTracksNeg->Fill(countBinTrk); | |
881 | fHistNTracks->GetXaxis()->SetBinLabel(fHistNTracks->FindBin(countBinTrk),label.Data()); | |
882 | fHistNTracksPos->GetXaxis()->SetBinLabel(fHistNTracksPos->FindBin(countBinTrk),label.Data()); | |
883 | fHistNTracksNeg->GetXaxis()->SetBinLabel(fHistNTracksNeg->FindBin(countBinTrk),label.Data()); | |
884 | countBinTrk++; | |
885 | ||
36be14b3 | 886 | //pseudorapidity and rapidity |
dac69cb0 | 887 | if(TMath::Abs(track->Eta()) > fEtaRange) continue; |
c841b89f | 888 | |
889 | label="eta"; | |
890 | fHistNTracks->Fill(countBinTrk); | |
891 | if(track->GetSign()>0)fHistNTracksPos->Fill(countBinTrk); | |
892 | if(track->GetSign()<0)fHistNTracksNeg->Fill(countBinTrk); | |
893 | fHistNTracks->GetXaxis()->SetBinLabel(fHistNTracks->FindBin(countBinTrk),label.Data()); | |
894 | fHistNTracksPos->GetXaxis()->SetBinLabel(fHistNTracksPos->FindBin(countBinTrk),label.Data()); | |
895 | fHistNTracksNeg->GetXaxis()->SetBinLabel(fHistNTracksNeg->FindBin(countBinTrk),label.Data()); | |
896 | countBinTrk++; | |
897 | ||
36be14b3 | 898 | //truncated mean |
146d18ee | 899 | track->GetITSdEdxSamples(dedxLay); |
900 | Double_t dedx = CookdEdx(dedxLay); | |
36be14b3 | 901 | if(dedx<0) continue; |
36be14b3 | 902 | |
c841b89f | 903 | label="de/dx<0"; |
904 | fHistNTracks->Fill(countBinTrk); | |
905 | if(track->GetSign()>0)fHistNTracksPos->Fill(countBinTrk); | |
906 | if(track->GetSign()<0)fHistNTracksNeg->Fill(countBinTrk); | |
907 | fHistNTracks->GetXaxis()->SetBinLabel(fHistNTracks->FindBin(countBinTrk),label.Data()); | |
908 | fHistNTracksPos->GetXaxis()->SetBinLabel(fHistNTracksPos->FindBin(countBinTrk),label.Data()); | |
909 | fHistNTracksNeg->GetXaxis()->SetBinLabel(fHistNTracksNeg->FindBin(countBinTrk),label.Data()); | |
910 | countBinTrk++; | |
911 | ||
36be14b3 | 912 | Float_t pt = track->Pt(); |
913 | Int_t theBin=-1; | |
914 | for(Int_t m=0; m<kNbins; m++){ | |
915 | if(TMath::Abs(pt) > fPtBinLimits[m] && TMath::Abs(pt) < fPtBinLimits[m+1]){ | |
916 | theBin=m; | |
917 | break; | |
918 | } | |
919 | } | |
920 | track->GetImpactParameters(impactXY, impactZ); | |
10ba520e | 921 | |
36be14b3 | 922 | //Filling Ntuple |
923 | //information from the MC kinematics | |
924 | if(fMC){ | |
10ba520e | 925 | if(track->GetLabel()<0)isph=-1; |
36be14b3 | 926 | if(track->GetLabel()>=0){ |
927 | part = (TParticle*)stack->Particle(track->GetLabel()); | |
928 | pdgPart = part->GetPDG(); | |
929 | code = pdgPart->PdgCode(); | |
10ba520e | 930 | if(stack->IsPhysicalPrimary(track->GetLabel())) isph=1; |
36be14b3 | 931 | else{ |
10ba520e | 932 | isph=0; |
933 | Int_t indexMoth=part->GetFirstMother(); | |
934 | if(indexMoth>=0){ | |
935 | TParticle* moth = stack->Particle(indexMoth); | |
936 | Float_t codemoth = TMath::Abs(moth->GetPdgCode()); | |
937 | mfl = Int_t (codemoth/ TMath::Power(10, Int_t(TMath::Log10(codemoth)))); | |
938 | } | |
939 | } | |
940 | ||
941 | //Filling DCA distribution with MC truth | |
942 | ||
943 | if(theBin>=0 && theBin<kNbins){ | |
944 | if(isph==1){//primaries in MC | |
945 | if(track->GetSign()>0){ | |
946 | if(TMath::Abs(code)==listcode[0]) fHistMCPrimDCAPosPi[theBin]->Fill(impactXY); | |
947 | if(TMath::Abs(code)==listcode[1]) fHistMCPrimDCAPosK[theBin]->Fill(impactXY); | |
948 | if(TMath::Abs(code)==listcode[2]) fHistMCPrimDCAPosP[theBin]->Fill(impactXY); | |
949 | }else{ | |
950 | if(TMath::Abs(code)==listcode[0]) fHistMCPrimDCANegPi[theBin]->Fill(impactXY); | |
951 | if(TMath::Abs(code)==listcode[1]) fHistMCPrimDCANegK[theBin]->Fill(impactXY); | |
952 | if(TMath::Abs(code)==listcode[2]) fHistMCPrimDCANegP[theBin]->Fill(impactXY); | |
953 | } | |
954 | } | |
955 | ||
956 | if(isph==0){//primaries in MC | |
957 | if(mfl==3){ | |
958 | if(track->GetSign()>0){ | |
959 | if(TMath::Abs(code)==listcode[0]) fHistMCSecStDCAPosPi[theBin]->Fill(impactXY); | |
960 | if(TMath::Abs(code)==listcode[1]) fHistMCSecStDCAPosK[theBin]->Fill(impactXY); | |
961 | if(TMath::Abs(code)==listcode[2]) fHistMCSecStDCAPosP[theBin]->Fill(impactXY); | |
962 | }else{ | |
963 | if(TMath::Abs(code)==listcode[0]) fHistMCSecStDCANegPi[theBin]->Fill(impactXY); | |
964 | if(TMath::Abs(code)==listcode[1]) fHistMCSecStDCANegK[theBin]->Fill(impactXY); | |
965 | if(TMath::Abs(code)==listcode[2]) fHistMCSecStDCANegP[theBin]->Fill(impactXY); | |
966 | } | |
967 | }else{ | |
968 | if(track->GetSign()>0){ | |
969 | if(TMath::Abs(code)==listcode[0]) fHistMCSecMatDCAPosPi[theBin]->Fill(impactXY); | |
970 | if(TMath::Abs(code)==listcode[1]) fHistMCSecMatDCAPosK[theBin]->Fill(impactXY); | |
971 | if(TMath::Abs(code)==listcode[2]) fHistMCSecMatDCAPosP[theBin]->Fill(impactXY); | |
972 | }else{ | |
973 | if(TMath::Abs(code)==listcode[0]) fHistMCSecMatDCANegPi[theBin]->Fill(impactXY); | |
974 | if(TMath::Abs(code)==listcode[1]) fHistMCSecMatDCANegK[theBin]->Fill(impactXY); | |
975 | if(TMath::Abs(code)==listcode[2]) fHistMCSecMatDCANegP[theBin]->Fill(impactXY); | |
976 | } | |
977 | } | |
978 | } | |
36be14b3 | 979 | } |
980 | } | |
981 | } | |
146d18ee | 982 | Float_t xnt[18]; |
36be14b3 | 983 | Int_t index=0; |
984 | xnt[index++]=(Float_t)track->GetP(); | |
985 | xnt[index++]=(Float_t)track->Pt(); | |
986 | xnt[index++]=(Float_t)dedx; | |
146d18ee | 987 | xnt[index++]=(Float_t)dedxLay[0]; |
988 | xnt[index++]=(Float_t)dedxLay[1]; | |
989 | xnt[index++]=(Float_t)dedxLay[2]; | |
990 | xnt[index++]=(Float_t)dedxLay[3]; | |
991 | xnt[index++]=(Float_t)nclu; | |
992 | xnt[index++]=(Float_t)nPtsForPid; | |
36be14b3 | 993 | xnt[index++]=(Float_t)track->GetSign(); |
994 | xnt[index++]=(Float_t)fESD->GetRunNumber(); | |
995 | xnt[index++]=(Float_t)track->Eta(); | |
996 | xnt[index++]=(Float_t)impactXY; | |
997 | xnt[index++]=(Float_t)impactZ; | |
998 | xnt[index++]=(Float_t)isph; | |
999 | xnt[index++]=(Float_t)code; | |
c841b89f | 1000 | xnt[index++]=(Float_t)mfl; |
1001 | xnt[index]=(Float_t)track->GetITSchi2()/nclu; | |
36be14b3 | 1002 | |
1003 | if(fFillNtuple) fNtupleNSigma->Fill(xnt); | |
1004 | ||
1005 | ||
1006 | ||
1007 | //Compute y and bb | |
10ba520e | 1008 | Double_t y[4],bbtheo[4],logdiff[4]; |
36be14b3 | 1009 | Float_t p=track->GetP(); |
1010 | if(fMC && fSmearMC){ | |
1011 | dedx=fRandGener->Gaus(dedx,fSmeardEdx*dedx); | |
1012 | p=fRandGener->Gaus(p,fSmearP*p); | |
1013 | } | |
98bb3219 | 1014 | |
1015 | //Nsigma Method | |
1016 | Float_t resodedx[4]; | |
1017 | for(Int_t ires=0;ires<4;ires++){ | |
1018 | resodedx[ires]=fITSPIDResponse->GetResolution(1,ires+1,kTRUE); | |
1019 | } | |
1020 | ||
10ba520e | 1021 | for(Int_t i=0;i<4;i++){ |
36be14b3 | 1022 | y[i] = Eta2y(pt,pdgmass[i],track->Eta()); |
98bb3219 | 1023 | bbtheo[i]=fITSPIDResponse->Bethe(p,pdgmass[i],kTRUE); |
36be14b3 | 1024 | logdiff[i]=TMath::Log(dedx) - TMath::Log(bbtheo[i]); |
1025 | } | |
98bb3219 | 1026 | |
146d18ee | 1027 | Int_t resocls=(Int_t)nPtsForPid-1; |
10ba520e | 1028 | |
1029 | //NSigma Method, with asymmetric bands | |
10ba520e | 1030 | Int_t minPosMean=-1; |
1031 | for(Int_t isp=0; isp<3; isp++){ | |
1032 | if(dedx<bbtheo[0])continue; | |
1033 | Double_t bb=bbtheo[isp]; | |
1034 | if(dedx<bb){ | |
1035 | Double_t bbdistance=TMath::Abs((bbtheo[isp]-bbtheo[isp-1])/2); | |
1036 | Double_t nsigma=TMath::Abs((dedx-bb)/bbdistance); | |
1037 | if(nsigma<1.)minPosMean=isp; | |
1038 | } | |
1039 | else{ | |
1040 | Double_t bbdistance=TMath::Abs((bbtheo[isp]-bbtheo[isp+1])/2); | |
1041 | Double_t nsigma=TMath::Abs((dedx-bb)/bbdistance); | |
1042 | if(nsigma<1.)minPosMean=isp; | |
1043 | } | |
1044 | } | |
1045 | if(dedx<bbtheo[0] && TMath::Abs((dedx-bbtheo[0])/(resodedx[resocls]*bbtheo[0]))<2)minPosMean=0; | |
1046 | ||
1047 | //NSigma method with simmetric bands | |
98bb3219 | 1048 | |
36be14b3 | 1049 | Double_t nsigmas[3]; |
1050 | Double_t min=999999.; | |
1051 | Int_t minPos=-1; | |
1052 | for(Int_t isp=0; isp<3; isp++){ | |
1053 | Double_t bb=bbtheo[isp]; | |
1054 | nsigmas[isp]=TMath::Abs((dedx-bb)/(resodedx[resocls]*bb)); | |
1055 | if(nsigmas[isp]<min){ | |
1056 | min=nsigmas[isp]; | |
1057 | minPos=isp; | |
1058 | } | |
98bb3219 | 1059 | //Filling histos with nsigma separation |
1060 | if(track->GetSign()>0)fHistPosNSigmaSep[isp]->Fill(track->GetP(),((dedx-bb)/(resodedx[resocls]*bb))); | |
1061 | else fHistNegNSigmaSep[isp]->Fill(track->GetP(),((dedx-bb)/(resodedx[resocls]*bb))); | |
36be14b3 | 1062 | } |
10ba520e | 1063 | |
1064 | // y calculation | |
1065 | Double_t yPartMean=y[minPosMean]; | |
36be14b3 | 1066 | Double_t yPart=y[minPos]; |
1067 | ||
10ba520e | 1068 | if(yPartMean<fMaxY){ |
1069 | //DCA distributions, before the DCA cuts, based on asymmetrinc nsigma approach | |
36be14b3 | 1070 | if(theBin>=0 && theBin<kNbins){ |
1071 | if(track->GetSign()>0){ | |
10ba520e | 1072 | if(minPosMean==0) fHistDCAPosPi[theBin]->Fill(impactXY); |
1073 | else if(minPosMean==1) fHistDCAPosK[theBin]->Fill(impactXY); | |
1074 | else if(minPosMean==2) fHistDCAPosP[theBin]->Fill(impactXY); | |
36be14b3 | 1075 | }else{ |
10ba520e | 1076 | if(minPosMean==0) fHistDCANegPi[theBin]->Fill(impactXY); |
1077 | else if(minPosMean==1) fHistDCANegK[theBin]->Fill(impactXY); | |
1078 | else if(minPosMean==2) fHistDCANegP[theBin]->Fill(impactXY); | |
36be14b3 | 1079 | } |
1080 | } | |
1081 | } | |
1082 | ||
1083 | //DCA cut on xy and z | |
1084 | if(!DCAcut(impactXY,impactZ,pt,fMC)) continue; | |
c841b89f | 1085 | |
1086 | label="DCA"; | |
1087 | fHistNTracks->Fill(countBinTrk); | |
1088 | if(track->GetSign()>0)fHistNTracksPos->Fill(countBinTrk); | |
1089 | if(track->GetSign()<0)fHistNTracksNeg->Fill(countBinTrk); | |
1090 | fHistNTracks->GetXaxis()->SetBinLabel(fHistNTracks->FindBin(countBinTrk),label.Data()); | |
1091 | fHistNTracksPos->GetXaxis()->SetBinLabel(fHistNTracksPos->FindBin(countBinTrk),label.Data()); | |
1092 | fHistNTracksNeg->GetXaxis()->SetBinLabel(fHistNTracksNeg->FindBin(countBinTrk),label.Data()); | |
1093 | countBinTrk++; | |
16c730d4 | 1094 | |
1095 | ||
1096 | Int_t jpart=-1; | |
10ba520e | 1097 | |
1098 | //Filling Histos for Reco Efficiency | |
1099 | //information from the MC kinematics | |
1100 | if(fMC){ | |
1101 | if(track->GetLabel()<0)isph=-1; | |
1102 | if(track->GetLabel()>=0){ | |
1103 | part = (TParticle*)stack->Particle(track->GetLabel()); | |
1104 | pdgPart = part->GetPDG(); | |
1105 | code = pdgPart->PdgCode(); | |
10ba520e | 1106 | for(Int_t j=0; j<3; j++){ |
1107 | if(TMath::Abs(code)==listcode[j]){ | |
1108 | jpart=j; | |
1109 | break; | |
1110 | } | |
1111 | } | |
16c730d4 | 1112 | if(jpart>=0){ |
1113 | if(pdgPart->Charge()>0) signMC=1; | |
1114 | else signMC=-1; | |
1115 | ptMC=part->Pt(); | |
1116 | if(stack->IsPhysicalPrimary(track->GetLabel())){ | |
1117 | if(signMC>0) fHistPrimMCposReco[jpart]->Fill(TMath::Abs(ptMC)); | |
1118 | else fHistPrimMCnegReco[jpart]->Fill(TMath::Abs(ptMC)); | |
1119 | }else{ | |
1120 | Int_t indexMoth=part->GetFirstMother(); | |
1121 | if(indexMoth>=0){ | |
1122 | TParticle* moth = stack->Particle(indexMoth); | |
1123 | Float_t codemoth = TMath::Abs(moth->GetPdgCode()); | |
1124 | mfl = Int_t (codemoth/ TMath::Power(10, Int_t(TMath::Log10(codemoth)))); | |
1125 | } | |
1126 | if(mfl==3){ // strangeness | |
1127 | if(signMC>0) fHistSecStrMCposReco[jpart]->Fill(TMath::Abs(ptMC)); | |
1128 | else fHistSecStrMCnegReco[jpart]->Fill(TMath::Abs(ptMC)); | |
1129 | }else{ | |
1130 | if(signMC>0) fHistSecMatMCposReco[jpart]->Fill(TMath::Abs(ptMC)); | |
1131 | else fHistSecMatMCnegReco[jpart]->Fill(TMath::Abs(ptMC)); | |
1132 | } | |
10ba520e | 1133 | } |
1134 | } | |
1135 | } | |
1136 | } | |
1137 | ||
1138 | //Nsigma histos with MC truth | |
1139 | ||
1140 | //asymmetric approach | |
1141 | if(yPartMean<fMaxY){ | |
1142 | //nsigma histos | |
1143 | if(track->GetSign()>0) fHistPosNSigmaMean[minPosMean]->Fill(pt); | |
1144 | else fHistNegNSigmaMean[minPosMean]->Fill(pt); | |
1145 | if(fMC){ | |
1146 | //nsigma histos with MC truth on PID | |
1147 | if(TMath::Abs(code)==listcode[minPosMean]){ | |
1148 | if(track->GetSign()>0) fHistPosNSigmaMCMean[minPosMean]->Fill(pt); | |
1149 | else fHistNegNSigmaMCMean[minPosMean]->Fill(pt); | |
1150 | } | |
1151 | //nsigma histos with MC truth on IsPhysicalPrimary | |
1152 | if(isph==1){ | |
1153 | if(track->GetSign()>0) fHistPosNSigmaPrimMean[minPosMean]->Fill(pt); | |
1154 | else fHistNegNSigmaPrimMean[minPosMean]->Fill(pt); | |
1155 | //nsigma histos with MC truth on IsPhysicalPrimary and PID | |
1156 | if(TMath::Abs(code)==listcode[minPosMean]){ | |
1157 | if(track->GetSign()>0) fHistPosNSigmaPrimMCMean[minPosMean]->Fill(pt); | |
1158 | else fHistNegNSigmaPrimMCMean[minPosMean]->Fill(pt); | |
1159 | } | |
1160 | } | |
1161 | } | |
1162 | } | |
36be14b3 | 1163 | |
10ba520e | 1164 | //symmetric bands |
36be14b3 | 1165 | if(min<fMinNSigma && yPart<fMaxY){ |
10ba520e | 1166 | //nsigma histos |
36be14b3 | 1167 | if(track->GetSign()>0) fHistPosNSigma[minPos]->Fill(pt); |
1168 | else fHistNegNSigma[minPos]->Fill(pt); | |
1169 | if(fMC){ | |
10ba520e | 1170 | //nsigma histos with MC truth on PID |
1171 | if(TMath::Abs(code)==listcode[minPos]){ | |
1172 | if(track->GetSign()>0) fHistPosNSigmaMC[minPos]->Fill(pt); | |
1173 | else fHistNegNSigmaMC[minPos]->Fill(pt); | |
1174 | } | |
1175 | //nsigma histos with MC truth on IsPhysicalPrimary | |
36be14b3 | 1176 | if(isph==1){ |
1177 | if(track->GetSign()>0) fHistPosNSigmaPrim[minPos]->Fill(pt); | |
1178 | else fHistNegNSigmaPrim[minPos]->Fill(pt); | |
16c730d4 | 1179 | //nsigma histos with MC truth on IsPhysicalPrimary and PID |
36be14b3 | 1180 | if(TMath::Abs(code)==listcode[minPos]){ |
1181 | if(track->GetSign()>0) fHistPosNSigmaPrimMC[minPos]->Fill(pt); | |
1182 | else fHistNegNSigmaPrimMC[minPos]->Fill(pt); | |
1183 | } | |
1184 | } | |
1185 | } | |
1186 | } | |
1187 | ||
10ba520e | 1188 | |
1189 | //integral approach histograms | |
36be14b3 | 1190 | if(theBin>=0 && theBin<kNbins){ |
1191 | if(track->GetSign()>0){ | |
1192 | if(TMath::Abs(y[0]) < fMaxY)fHistPosPi[theBin]->Fill(logdiff[0]); | |
1193 | if(TMath::Abs(y[1]) < fMaxY)fHistPosK[theBin]->Fill(logdiff[1]); | |
1194 | if(TMath::Abs(y[2]) < fMaxY)fHistPosP[theBin]->Fill(logdiff[2]); | |
1195 | if(fMC){ | |
e6076bb8 | 1196 | if(TMath::Abs(y[0])<fMaxY){ |
16c730d4 | 1197 | if(TMath::Abs(code)!=11 && jpart<0)fHistMCPosOtherHypPion[theBin]->Fill(logdiff[0]); |
1198 | if(TMath::Abs(code)==11)fHistMCPosElHypPion[theBin]->Fill(logdiff[0]); | |
e6076bb8 | 1199 | if(TMath::Abs(code)==211)fHistMCPosPiHypPion[theBin]->Fill(logdiff[0]); |
98bb3219 | 1200 | if(TMath::Abs(code)==321)fHistMCPosKHypPion[theBin]->Fill(logdiff[0]); |
e6076bb8 | 1201 | if(TMath::Abs(code)==2212)fHistMCPosPHypPion[theBin]->Fill(logdiff[0]); |
1202 | } | |
1203 | if(TMath::Abs(y[1])<fMaxY){ | |
16c730d4 | 1204 | if(TMath::Abs(code)!=11 && jpart<0)fHistMCPosOtherHypKaon[theBin]->Fill(logdiff[1]); |
1205 | if(TMath::Abs(code)==11)fHistMCPosElHypKaon[theBin]->Fill(logdiff[1]); | |
e6076bb8 | 1206 | if(TMath::Abs(code)==211)fHistMCPosPiHypKaon[theBin]->Fill(logdiff[1]); |
98bb3219 | 1207 | if(TMath::Abs(code)==321)fHistMCPosKHypKaon[theBin]->Fill(logdiff[1]); |
e6076bb8 | 1208 | if(TMath::Abs(code)==2212)fHistMCPosPHypKaon[theBin]->Fill(logdiff[1]); |
1209 | } | |
1210 | if(TMath::Abs(y[2])<fMaxY){ | |
16c730d4 | 1211 | if(TMath::Abs(code)!=11 && jpart<0)fHistMCPosOtherHypProton[theBin]->Fill(logdiff[2]); |
1212 | if(TMath::Abs(code)==11)fHistMCPosElHypProton[theBin]->Fill(logdiff[2]); | |
1213 | if(TMath::Abs(code)==211)fHistMCPosPiHypProton[theBin]->Fill(logdiff[2]); | |
1214 | if(TMath::Abs(code)==321)fHistMCPosKHypProton[theBin]->Fill(logdiff[2]); | |
1215 | if(TMath::Abs(code)==2212)fHistMCPosPHypProton[theBin]->Fill(logdiff[2]); | |
e6076bb8 | 1216 | } |
36be14b3 | 1217 | } |
1218 | }else{ | |
1219 | if(TMath::Abs(y[0]) < fMaxY)fHistNegPi[theBin]->Fill(logdiff[0]); | |
1220 | if(TMath::Abs(y[1]) < fMaxY)fHistNegK[theBin]->Fill(logdiff[1]); | |
1221 | if(TMath::Abs(y[2]) < fMaxY)fHistNegP[theBin]->Fill(logdiff[2]); | |
1222 | if(fMC){ | |
e6076bb8 | 1223 | if(TMath::Abs(y[0])<fMaxY){ |
16c730d4 | 1224 | if(TMath::Abs(code)!=11 && jpart<0)fHistMCNegOtherHypPion[theBin]->Fill(logdiff[0]); |
1225 | if(TMath::Abs(code)==11)fHistMCNegElHypPion[theBin]->Fill(logdiff[0]); | |
98bb3219 | 1226 | if(TMath::Abs(code)==211)fHistMCNegPiHypPion[theBin]->Fill(logdiff[0]); |
1227 | if(TMath::Abs(code)==321)fHistMCNegKHypPion[theBin]->Fill(logdiff[0]); | |
1228 | if(TMath::Abs(code)==2212)fHistMCNegPHypPion[theBin]->Fill(logdiff[0]); | |
e6076bb8 | 1229 | } |
1230 | if(TMath::Abs(y[1])<fMaxY){ | |
16c730d4 | 1231 | if(TMath::Abs(code)!=11 && jpart<0)fHistMCNegOtherHypKaon[theBin]->Fill(logdiff[1]); |
1232 | if(TMath::Abs(code)==11)fHistMCNegElHypKaon[theBin]->Fill(logdiff[1]); | |
98bb3219 | 1233 | if(TMath::Abs(code)==211)fHistMCNegPiHypKaon[theBin]->Fill(logdiff[1]); |
1234 | if(TMath::Abs(code)==321)fHistMCNegKHypKaon[theBin]->Fill(logdiff[1]); | |
1235 | if(TMath::Abs(code)==2212)fHistMCNegPHypKaon[theBin]->Fill(logdiff[1]); | |
e6076bb8 | 1236 | } |
1237 | if(TMath::Abs(y[2])<fMaxY){ | |
16c730d4 | 1238 | if(TMath::Abs(code)!=11 && jpart<0)fHistMCNegOtherHypProton[theBin]->Fill(logdiff[2]); |
1239 | if(TMath::Abs(code)==11)fHistMCNegElHypProton[theBin]->Fill(logdiff[2]); | |
98bb3219 | 1240 | if(TMath::Abs(code)==211)fHistMCNegPiHypProton[theBin]->Fill(logdiff[2]); |
1241 | if(TMath::Abs(code)==321)fHistMCNegKHypProton[theBin]->Fill(logdiff[2]); | |
1242 | if(TMath::Abs(code)==2212)fHistMCNegPHypProton[theBin]->Fill(logdiff[2]); | |
e6076bb8 | 1243 | } |
36be14b3 | 1244 | } |
1245 | } | |
1246 | } | |
1247 | ||
1248 | ||
1249 | //fill propaganda plot with dedx | |
1250 | fHistDEDX->Fill(track->GetP(),dedx); | |
1251 | fHistDEDXdouble->Fill(track->GetP()*track->GetSign(),dedx); | |
1252 | ||
1253 | //fill charge distribution histo to check the calibration | |
1254 | for(Int_t j=0;j<4;j++){ | |
146d18ee | 1255 | if(dedxLay[j]<5) continue; |
1256 | fHistCharge[j]->Fill(dedxLay[j]); | |
36be14b3 | 1257 | } |
1258 | } | |
1259 | ||
1260 | // Post output data. | |
1261 | PostData(1,fOutput); | |
1262 | Printf("............. end of Exec"); | |
1263 | } | |
1264 | ||
1265 | //________________________________________________________________________ | |
1266 | void AliAnalysisTaskSEITSsaSpectra::Terminate(Option_t *) { | |
4d668cf7 | 1267 | // Merge output |
1268 | // Called once at the end of the query | |
36be14b3 | 1269 | |
1270 | fOutput = dynamic_cast<TList*>(GetOutputData(1)); | |
1271 | if (!fOutput) { | |
1272 | printf("ERROR: fOutput not available\n"); | |
1273 | return; | |
1274 | } | |
1275 | fHistNEvents = dynamic_cast<TH1F*>(fOutput->FindObject("fHistNEvents")); | |
c841b89f | 1276 | fHistMult = dynamic_cast<TH1F*>(fOutput->FindObject("fHistMult")); |
1f75ac7d | 1277 | fHistCen = dynamic_cast<TH1F*>(fOutput->FindObject("fHistCen")); |
36be14b3 | 1278 | fHistNTracks = dynamic_cast<TH1F*>(fOutput->FindObject("fHistNTracks")); |
c841b89f | 1279 | fHistNTracksPos = dynamic_cast<TH1F*>(fOutput->FindObject("fHistNTracksPos")); |
1280 | fHistNTracksNeg = dynamic_cast<TH1F*>(fOutput->FindObject("fHistNTracksNeg")); | |
36be14b3 | 1281 | fHistDEDX = dynamic_cast<TH2F*>(fOutput->FindObject("fHistDEDX")); |
1282 | fHistDEDXdouble = dynamic_cast<TH2F*>(fOutput->FindObject("fHistDEDXdouble")); | |
1283 | ||
98bb3219 | 1284 | |
36be14b3 | 1285 | fHistBeforeEvSel = dynamic_cast<TH1F*>(fOutput->FindObject("fHistBeforeEvSel")); |
1286 | fHistAfterEvSel = dynamic_cast<TH1F*>(fOutput->FindObject("fHistAfterEvSel")); | |
1287 | ||
1288 | ||
1289 | for(Int_t j=0;j<3;j++){ | |
98bb3219 | 1290 | fHistPosNSigmaSep[j] = dynamic_cast<TH2F*>(fOutput->FindObject(Form("fHistPosNSigmaSep%d",j))); |
1291 | fHistNegNSigmaSep[j] = dynamic_cast<TH2F*>(fOutput->FindObject(Form("fHistNegNSigmaSep%d",j))); | |
10ba520e | 1292 | if(fMC){ |
1293 | fHistPrimMCpos[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistPrimMCpos%d",j))); | |
1294 | fHistPrimMCneg[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistPrimMCneg%d",j))); | |
1295 | fHistSecStrMCpos[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistSecStrMCpos%d",j))); | |
1296 | fHistSecStrMCneg[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistSecStrMCneg%d",j))); | |
1297 | fHistSecMatMCpos[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistSecMatMCpos%d",j))); | |
1298 | fHistSecMatMCneg[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistSecMatMCneg%d",j))); | |
1299 | // | |
1300 | fHistPrimMCposBefEvSel[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistPrimMCposBefEvSel%d",j))); | |
1301 | fHistPrimMCnegBefEvSel[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistPrimMCnegBefEvSel%d",j))); | |
1302 | fHistSecStrMCposBefEvSel[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistSecStrMCposBefEvSel%d",j))); | |
1303 | fHistSecStrMCnegBefEvSel[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistSecStrMCnegBefEvSel%d",j))); | |
1304 | fHistSecMatMCposBefEvSel[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistSecMatMCposBefEvSel%d",j))); | |
1305 | fHistSecMatMCnegBefEvSel[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistSecMatMCnegBefEvSel%d",j))); | |
1306 | // | |
1307 | fHistPrimMCposReco[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistPrimMCposReco%d",j))); | |
1308 | fHistPrimMCnegReco[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistPrimMCnegReco%d",j))); | |
1309 | fHistSecStrMCposReco[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistSecStrMCposReco%d",j))); | |
1310 | fHistSecStrMCnegReco[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistSecStrMCnegReco%d",j))); | |
1311 | fHistSecMatMCposReco[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistSecMatMCposReco%d",j))); | |
1312 | fHistSecMatMCnegReco[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistSecMatMCnegReco%d",j))); | |
1313 | } | |
36be14b3 | 1314 | } |
36be14b3 | 1315 | |
36be14b3 | 1316 | for(Int_t i=0; i<4; i++){ |
1317 | fHistCharge[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistChargeLay%d",i))); | |
1318 | } | |
1319 | ||
1320 | for(Int_t i=0; i<kNbins; i++){ | |
1321 | fHistPosPi[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistPosPi%d",i))); | |
1322 | fHistPosK[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistPosK%d",i))); | |
1323 | fHistPosP[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistPosP%d",i))); | |
1324 | fHistNegPi[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistNegPi%d",i))); | |
1325 | fHistNegK[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistNegK%d",i))); | |
1326 | fHistNegP[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistNegP%d",i))); | |
1327 | ||
1328 | fHistDCAPosPi[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistDCAPosPi%d",i))); | |
1329 | fHistDCAPosK[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistDCAPosK%d",i))); | |
1330 | fHistDCAPosP[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistDCAPosP%d",i))); | |
1331 | fHistDCANegPi[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistDCANegPi%d",i))); | |
1332 | fHistDCANegK[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistDCANegK%d",i))); | |
1333 | fHistDCANegP[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistDCANegP%d",i))); | |
1334 | ||
1335 | ||
1336 | if(fMC){ | |
10ba520e | 1337 | |
1338 | fHistMCPrimDCAPosPi[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPrimDCAPosPi%d",i))); | |
1339 | fHistMCPrimDCAPosK[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPrimDCAPosK%d",i))); | |
1340 | fHistMCPrimDCAPosP[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPrimDCAPosP%d",i))); | |
1341 | fHistMCPrimDCANegPi[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPrimDCANegPi%d",i))); | |
1342 | fHistMCPrimDCANegK[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPrimDCANegK%d",i))); | |
1343 | fHistMCPrimDCANegP[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPrimDCANegP%d",i))); | |
1344 | ||
1345 | fHistMCSecStDCAPosPi[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCSecStDCAPosPi%d",i))); | |
1346 | fHistMCSecStDCAPosK[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCSecStDCAPosK%d",i))); | |
1347 | fHistMCSecStDCAPosP[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCSecStDCAPosP%d",i))); | |
1348 | fHistMCSecStDCANegPi[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCSecStDCANegPi%d",i))); | |
1349 | fHistMCSecStDCANegK[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCSecStDCANegK%d",i))); | |
1350 | fHistMCSecStDCANegP[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCSecStDCANegP%d",i))); | |
1351 | ||
1352 | fHistMCSecMatDCAPosPi[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCSecMatDCAPosPi%d",i))); | |
1353 | fHistMCSecMatDCAPosK[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCSecMatDCAPosK%d",i))); | |
1354 | fHistMCSecMatDCAPosP[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCSecMatDCAPosP%d",i))); | |
1355 | fHistMCSecMatDCANegPi[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCSecMatDCANegPi%d",i))); | |
1356 | fHistMCSecMatDCANegK[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCSecMatDCANegK%d",i))); | |
1357 | fHistMCSecMatDCANegP[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCSecMatDCANegP%d",i))); | |
1358 | ||
16c730d4 | 1359 | fHistMCPosOtherHypPion[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosOtherHypPion%d",i))); |
1360 | fHistMCPosOtherHypKaon[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosOtherHypKaon%d",i))); | |
1361 | fHistMCPosOtherHypProton[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosOtherHypProton%d",i))); | |
1362 | fHistMCPosElHypPion[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosElHypPion%d",i))); | |
1363 | fHistMCPosElHypKaon[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosElHypKaon%d",i))); | |
1364 | fHistMCPosElHypProton[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosElHypProton%d",i))); | |
e6076bb8 | 1365 | fHistMCPosPiHypPion[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosPiHypPion%d",i))); |
1366 | fHistMCPosPiHypKaon[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosPiHypKaon%d",i))); | |
1367 | fHistMCPosPiHypProton[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosPiHypProton%d",i))); | |
1368 | fHistMCPosKHypPion[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosKHypPion%d",i))); | |
1369 | fHistMCPosKHypKaon[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosKHypKaon%d",i))); | |
1370 | fHistMCPosKHypProton[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosKHypProton%d",i))); | |
1371 | fHistMCPosPHypPion[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosPHypPion%d",i))); | |
1372 | fHistMCPosPHypKaon[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosPHypKaon%d",i))); | |
1373 | fHistMCPosPHypProton[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCPosPHypProton%d",i))); | |
1374 | ||
16c730d4 | 1375 | fHistMCNegOtherHypPion[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegOtherHypPion%d",i))); |
1376 | fHistMCNegOtherHypKaon[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegOtherHypKaon%d",i))); | |
1377 | fHistMCNegOtherHypProton[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegOtherHypProton%d",i))); | |
1378 | fHistMCNegElHypPion[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegElHypPion%d",i))); | |
1379 | fHistMCNegElHypKaon[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegElHypKaon%d",i))); | |
1380 | fHistMCNegElHypProton[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegElHypProton%d",i))); | |
e6076bb8 | 1381 | fHistMCNegPiHypPion[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegPiHypPion%d",i))); |
1382 | fHistMCNegPiHypKaon[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegPiHypKaon%d",i))); | |
1383 | fHistMCNegPiHypProton[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegPiHypProton%d",i))); | |
1384 | fHistMCNegKHypPion[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegKHypPion%d",i))); | |
1385 | fHistMCNegKHypKaon[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegKHypKaon%d",i))); | |
1386 | fHistMCNegKHypProton[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegKHypProton%d",i))); | |
1387 | fHistMCNegPHypPion[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegPHypPion%d",i))); | |
1388 | fHistMCNegPHypKaon[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegPHypKaon%d",i))); | |
1389 | fHistMCNegPHypProton[i] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("fHistMCNegPHypProton%d",i))); | |
1390 | ||
36be14b3 | 1391 | } |
1392 | } | |
10ba520e | 1393 | |
36be14b3 | 1394 | for(Int_t j=0;j<3;j++){ |
10ba520e | 1395 | fHistPosNSigmaMean[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("hHistPosNSigmaMean%d",j))); |
1396 | fHistNegNSigmaMean[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("hHistNegNSigmaMean%d",j))); | |
1397 | fHistPosNSigmaMCMean[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("hHistPosNSigmaMCMean%d",j))); | |
1398 | fHistNegNSigmaMCMean[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("hHistNegNSigmaMCMean%d",j))); | |
1399 | fHistPosNSigmaPrimMean[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("hHistPosNSigmaPrimMean%d",j))); | |
1400 | fHistNegNSigmaPrimMean[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("hHistNegNSigmaPrimMean%d",j))); | |
1401 | fHistPosNSigmaPrimMCMean[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("hHistPosNSigmaPrimMCMean%d",j))); | |
1402 | fHistNegNSigmaPrimMCMean[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("hHistNegNSigmaPrimMCMean%d",j))); | |
1403 | ||
36be14b3 | 1404 | fHistPosNSigma[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("hHistPosNSigma%d",j))); |
1405 | fHistNegNSigma[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("hHistNegNSigma%d",j))); | |
10ba520e | 1406 | fHistPosNSigmaMC[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("hHistPosNSigmaMC%d",j))); |
1407 | fHistNegNSigmaMC[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("hHistNegNSigmaMC%d",j))); | |
36be14b3 | 1408 | fHistPosNSigmaPrim[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("hHistPosNSigmaPrim%d",j))); |
1409 | fHistNegNSigmaPrim[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("hHistNegNSigmaPrim%d",j))); | |
1410 | fHistPosNSigmaPrimMC[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("hHistPosNSigmaPrimMC%d",j))); | |
1411 | fHistNegNSigmaPrimMC[j] = dynamic_cast<TH1F*>(fOutput->FindObject(Form("hHistNegNSigmaPrimMC%d",j))); | |
10ba520e | 1412 | |
36be14b3 | 1413 | } |
1414 | ||
1415 | fNtupleNSigma = dynamic_cast<TNtuple*>(fOutput->FindObject("fNtupleNSigma")); | |
1416 | fNtupleMC = dynamic_cast<TNtuple*>(fOutput->FindObject("fNtupleMC")); | |
1417 | ||
1418 | Printf("end of Terminate"); | |
1419 | return; | |
1420 | } |