]>
Commit | Line | Data |
---|---|---|
d28542ba | 1 | void InitHistograms(AliDielectron *die, Int_t cutDefinition); |
2 | void InitCF(AliDielectron* die, Int_t cutDefinition); | |
3 | ||
4 | void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition); | |
5 | void SetupElectronCuts(AliDielectron *die, Int_t cutDefinition); | |
6 | ||
7 | TVectorD *GetRunNumbers(); | |
8 | TVectorD *BinsToVector(Int_t nbins, Double_t min, Double_t max); | |
9 | ||
10 | TString names=("CutStats;noPID;TPC;TOF;TRD;TOFTRD;TRDeff;e_mcPid;jpsi_mcPid;conv_mcPid"); | |
11 | enum {kCutStats=0, knoPID, kTPC, kTOF, kTRD, kTOFTRD, kTRDeff, kEleMC, kEleJPsiMC, kEleConvMC}; | |
12 | TObjArray *arrNames=names.Tokenize(";"); | |
13 | ||
14 | const Int_t nDie=arrNames->GetEntries(); | |
15 | ||
16 | Bool_t hasMC=kFALSE; | |
17 | ||
18 | AliDielectron* ConfigJpsiQA_jb_PbPb(Int_t cutDefinition, Bool_t isMC=kFALSE) | |
19 | { | |
20 | // | |
21 | // Setup the instance of AliDielectron | |
22 | // | |
23 | ||
24 | // MC event handler? | |
25 | hasMC=isMC; | |
26 | //hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0); | |
27 | ||
28 | //ESD handler? | |
29 | Bool_t isESD=(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()->IsA()==AliESDInputHandler::Class()); | |
30 | ||
31 | // switch off some configurations | |
32 | switch(cutDefinition) { | |
33 | case kCutStats: | |
34 | //case knoPID: | |
35 | case kTPC: | |
36 | case kTOF: | |
37 | case kTOFTRD: | |
38 | case kTRDeff: | |
39 | if(hasMC) return 0x0; | |
40 | break; | |
41 | case kTRD: return 0x0; break; | |
42 | case kEleMC: return 0x0; break; | |
43 | case kEleJPsiMC: | |
44 | case kEleConvMC: | |
45 | if(!hasMC) return 0x0; | |
46 | break; | |
47 | } | |
48 | ||
49 | // create the actual framework object | |
50 | TString name=Form("%02d",cutDefinition); | |
51 | if (cutDefinition<arrNames->GetEntriesFast()){ | |
52 | name=arrNames->At(cutDefinition)->GetName(); | |
53 | } | |
54 | AliDielectron *die = new AliDielectron(Form("%s",name.Data()), | |
55 | Form("Track cuts: %s",name.Data())); | |
56 | ||
57 | //only track QA, no Pairing | |
58 | if(cutDefinition<kTRDeff) die->SetNoPairing(); | |
59 | ||
60 | // cut setup | |
61 | if(cutDefinition!=kTRDeff) SetupTrackCuts(die,cutDefinition); | |
62 | if(cutDefinition==kTRDeff) SetupElectronCuts(die,cutDefinition); | |
63 | ||
64 | ||
65 | ||
66 | // histogram setup | |
67 | InitHistograms(die,cutDefinition); | |
68 | ||
69 | return die; | |
70 | } | |
71 | //______________________________________________________________________________________ | |
72 | void SetupElectronCuts(AliDielectron *die, Int_t cutDefinition) | |
73 | { | |
74 | // Quality cuts | |
75 | AliDielectronCutGroup* cuts = new AliDielectronCutGroup("cuts","cuts",AliDielectronCutGroup::kCompAND); | |
76 | die->GetTrackFilter().AddCuts(cuts); | |
77 | ||
78 | // track cuts ESD and AOD | |
79 | AliDielectronVarCuts *varCuts = new AliDielectronVarCuts("VarCuts","VarCuts"); | |
80 | varCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9); | |
81 | varCuts->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0); | |
82 | varCuts->AddCut(AliDielectronVarManager::kNclsTPC, 60.0, 160.0); | |
83 | varCuts->AddCut(AliDielectronVarManager::kKinkIndex0, 0.0); | |
84 | varCuts->AddCut(AliDielectronVarManager::kTRDpidQuality,1.0, 6.0); | |
85 | varCuts->AddCut(AliDielectronVarManager::kPt, 0.8, 1e30); | |
86 | cuts->AddCut(varCuts); | |
87 | ||
88 | AliDielectronTrackCuts *trkCuts = new AliDielectronTrackCuts("TrkCuts","TrkCuts"); | |
89 | trkCuts->SetRequireTPCRefit(kTRUE); | |
90 | cuts->AddCut(trkCuts); | |
91 | ||
92 | // PID | |
93 | AliDielectronPID *pid = new AliDielectronPID("PID","PID cut"); | |
94 | pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.0, 3.0, 0.0, 0.0, kFALSE, AliDielectronPID::kRequire); | |
95 | cuts->AddCut(pid); | |
96 | ||
97 | // Pair inclusion | |
98 | AliDielectronVarCuts *gammaCuts = new AliDielectronVarCuts("GammaCuts","GammaCuts"); | |
99 | gammaCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.035); // 0.1 | |
100 | // gammaCuts->AddCut(AliDielectronVarManager::kLegDist, 0.0, 0.25); | |
101 | gammaCuts->AddCut(AliDielectronVarManager::kR, 3.0, 90.0); | |
102 | // gammaCuts->AddCut(AliDielectronVarManager::kPsiPair, 0.0, 0.05); | |
103 | // gammaCuts->AddCut(AliDielectronVarManager::kChi2NDF, 0.0, 10.0); | |
104 | gammaCuts->AddCut(AliDielectronVarManager::kM, 0.0, 0.05); | |
105 | die->GetPairFilter().AddCuts(gammaCuts); | |
106 | ||
107 | // Pair exclusion | |
108 | // AliDielectronVarCuts *lambdaCuts = new AliDielectronVarCuts("LambdaCuts","LambdaCuts"); | |
109 | // lambdaCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.035, kTRUE); // 0.035 | |
110 | // lambdaCuts->AddCut(AliDielectronVarManager::kR, 3.0, 40.0, kTRUE); | |
111 | // lambdaCuts->AddCut(AliDielectronVarManager::kChi2NDF, 0.0, 0.5, kTRUE); | |
112 | // lambdaCuts->AddCut(AliDielectronVarManager::kM, 1.01, 1.03, kTRUE); | |
113 | // lambdaCuts->AddCut(AliDielectronVarManager::kY, -0.9, 0.9, kTRUE); | |
114 | // die->GetPairFilter().AddCuts(lambdaCuts); | |
115 | // | |
116 | // AliDielectronVarCuts *k0sCuts = new AliDielectronVarCuts("K0sCuts","K0sCuts"); | |
117 | // k0sCuts->AddCut(AliDielectronVarManager::kR, 3.0, 40.0, kTRUE); | |
118 | // k0sCuts->AddCut(AliDielectronVarManager::kChi2NDF, 0.0, 0.5, kTRUE); | |
119 | // k0sCuts->AddCut(AliDielectronVarManager::kM, 4.90, 0.504, kTRUE); | |
120 | // k0sCuts->AddCut(AliDielectronVarManager::kY, -0.9, 0.9, kTRUE); | |
121 | // die->GetPairFilter().AddCuts(k0sCuts); | |
122 | ||
123 | ||
124 | } | |
125 | //______________________________________________________________________________________ | |
126 | void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition) | |
127 | { | |
128 | // | |
129 | // Setup the track cuts | |
130 | // | |
131 | //ESD handler? | |
132 | Bool_t isESD=(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()->IsA()==AliESDInputHandler::Class()); | |
133 | ||
134 | // Quality cuts | |
135 | AliDielectronCutGroup* cuts = new AliDielectronCutGroup("cuts","cuts",AliDielectronCutGroup::kCompAND); | |
136 | die->GetTrackFilter().AddCuts(cuts); | |
137 | ||
138 | //Pt cut, should make execution a bit faster | |
139 | AliDielectronVarCuts *pt = new AliDielectronVarCuts("Pt>.8","Pt>.8"); | |
140 | if(cutDefinition<kEleMC) | |
141 | pt->AddCut(AliDielectronVarManager::kPt,1.1,1e30); | |
142 | else | |
143 | pt->AddCut(AliDielectronVarManager::kPt,0.8,1e30); | |
144 | if(cutDefinition!=kCutStats && cutDefinition!=knoPID) cuts->AddCut(pt); | |
145 | ||
146 | // track cuts ESD and AOD | |
147 | AliDielectronVarCuts *varCuts = new AliDielectronVarCuts("VarCuts","VarCuts"); | |
148 | varCuts->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0); | |
149 | varCuts->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0); | |
150 | varCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9); | |
151 | varCuts->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0); | |
152 | varCuts->AddCut(AliDielectronVarManager::kNclsTPC, 70.0, 160.0); | |
153 | varCuts->AddCut(AliDielectronVarManager::kKinkIndex0, 0.0); | |
154 | if(cutDefinition!=kCutStats) cuts->AddCut(varCuts); | |
155 | ||
156 | AliDielectronTrackCuts *trkCuts = new AliDielectronTrackCuts("TrkCuts","TrkCuts"); | |
157 | trkCuts->SetClusterRequirementITS(AliDielectronTrackCuts::kSPD,AliDielectronTrackCuts::kAny); | |
158 | trkCuts->SetRequireITSRefit(kTRUE); | |
159 | trkCuts->SetRequireTPCRefit(kTRUE); | |
160 | if(cutDefinition!=kCutStats) cuts->AddCut(trkCuts); | |
161 | ||
162 | /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv PID CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */ | |
163 | AliDielectronPID *pid = new AliDielectronPID("PID","PID"); | |
164 | ||
165 | ////////////////////////////////// DATA | |
166 | if(!hasMC) { | |
167 | pid->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-100.,3.5,0.,0.,kTRUE); | |
168 | pid->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-100.,3.5,0.,0.,kTRUE); | |
169 | } | |
170 | ||
171 | ////////////////////////////////// MC | |
172 | if(hasMC) { | |
173 | if (cutDefinition>=kEleMC) { | |
174 | AliDielectronVarCuts *pdgCuts=new AliDielectronVarCuts("pdgCuts","pdgCuts"); | |
175 | pdgCuts->SetCutType(AliDielectronVarCuts::kAny); | |
176 | pdgCuts->AddCut(AliDielectronVarManager::kPdgCode,11.); | |
177 | pdgCuts->AddCut(AliDielectronVarManager::kPdgCode,-11.); | |
178 | cuts->AddCut(pdgCuts); | |
179 | ||
180 | AliDielectronVarCuts *pdgMotherCutsT=new AliDielectronVarCuts("pdgMotherCutsT","pdgMotherCutsT"); | |
181 | AliDielectronVarCuts *pdgMotherCutsP=new AliDielectronVarCuts("pdgMotherCutsP","pdgMotherCutsP"); | |
182 | if (cutDefinition==kEleJPsiMC){ | |
183 | // pdgMotherCutsT->AddCut(AliDielectronVarManager::kPdgCodeMother,443.); | |
184 | // cuts->AddCut(pdgMotherCutsT); | |
185 | pdgMotherCutsP->AddCut(AliDielectronVarManager::kPdgCode,443.); | |
186 | pdgMotherCutsP->AddCut(AliDielectronVarManager::kHaveSameMother,1.); | |
187 | die->GetPairFilter().AddCuts(pdgMotherCutsP); | |
188 | } | |
189 | if (cutDefinition==kEleConvMC){ | |
190 | pdgMotherCutsT->AddCut(AliDielectronVarManager::kPdgCodeMother,22.); | |
191 | cuts->AddCut(pdgMotherCutsT); | |
192 | ||
193 | pdgMotherCutsP->AddCut(AliDielectronVarManager::kHaveSameMother,1.); | |
194 | die->GetPairFilter().AddCuts(pdgMotherCutsP); | |
195 | } | |
196 | ||
197 | } | |
198 | } | |
199 | ////////////////////////////////// DATA + MC | |
200 | // pid cuts TPC + TOF & TRD | |
201 | pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.); | |
202 | if(cutDefinition==kTOF || cutDefinition==kTOFTRD) | |
203 | pid->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,3.,0.,0.,kFALSE,AliDielectronPID::kIfAvailable); | |
204 | if(cutDefinition==kTRD || cutDefinition==kTOFTRD) | |
205 | pid->AddCut(AliDielectronPID::kTRDeleEff,AliPID::kElectron,.8,1.,3.5.,6.,kFALSE, | |
206 | AliDielectronPID::kIfAvailable,AliDielectronVarManager::kTRDpidQuality); | |
207 | ||
208 | if(cutDefinition!=knoPID && | |
209 | cutDefinition!=kCutStats && | |
210 | cutDefinition!=kTRDeff && | |
211 | !hasMC ) cuts->AddCut(pid); | |
212 | /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PID CUTS ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/ | |
213 | ||
214 | // exclude conversion electrons selected by the tender | |
215 | //AliDielectronTrackCuts *noconv=new AliDielectronTrackCuts("noConv","noConv"); | |
216 | //noconv->SetV0DaughterCut(AliPID::kElectron,kTRUE); | |
217 | //cuts->AddCut(noconv); | |
218 | ||
219 | } | |
220 | ||
221 | //______________________________________________________________________________________ | |
222 | void InitHistograms(AliDielectron *die, Int_t cutDefinition) | |
223 | { | |
224 | // | |
225 | // Initialise the histograms | |
226 | // | |
227 | ||
228 | //Setup histogram Manager | |
229 | AliDielectronHistos *histos=new AliDielectronHistos(die->GetName(), die->GetTitle()); | |
230 | ||
231 | //Initialise histogram classes | |
232 | histos->SetReservedWords("Track;Pair"); | |
233 | ||
234 | // booleans for histo selection | |
235 | Bool_t bHistEvts = kFALSE, bHistPair = kFALSE, bHistCuts = kFALSE, bHistPID = kFALSE, bHistEff=kFALSE, bHistRunQA=kFALSE; | |
236 | switch (cutDefinition) { | |
237 | case kCutStats: bHistCuts=kTRUE; break; | |
238 | case knoPID: bHistEvts=kTRUE; bHistPID=kTRUE; bHistRunQA=kTRUE; break; | |
239 | case kTPC: | |
240 | case kTOF: | |
241 | case kTRD: | |
242 | case kTOFTRD: | |
243 | bHistPID=kTRUE; break; | |
244 | case kTRDeff: bHistEff=kTRUE; break; | |
245 | case kEleMC: | |
246 | case kEleJPsiMC: | |
247 | case kEleConvMC: | |
248 | bHistPair=kTRUE; break; | |
249 | } | |
250 | ||
251 | ||
252 | //Track classes | |
253 | //to fill also track info from 2nd event loop until 2 | |
254 | for (Int_t i=0; i<2; ++i){ | |
255 | histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i))); | |
256 | } | |
257 | ||
258 | //add histograms to event class | |
259 | if (bHistEvts) { | |
260 | histos->AddClass("Event"); | |
261 | histos->UserHistogram("Event","RunNumber",";run;#events",GetRunNumbers(),AliDielectronVarManager::kRunNumber); | |
262 | histos->UserHistogram("Event","VtxZ",";z_{vtx} (cm)",300,-15.,15.,AliDielectronVarManager::kZvPrim); | |
263 | if(hasMC) { | |
264 | histos->AddClass("MCEvent"); | |
265 | histos->UserHistogram("MCEvent","NumberOfJPsis",";N_{J/#psi};#events",20,0.,20.,AliDielectronVarManager::kNumberOfJPsis); | |
266 | } | |
267 | } | |
268 | ||
269 | if (bHistRunQA && !hasMC) { | |
270 | // Flow QA | |
271 | histos->UserHistogram("Event","TPCrpH2uc_RunNumber",";run;#Psi^{TPC} (rad.)", | |
272 | GetRunNumbers(), BinsToVector(100,-2.,2.) , | |
273 | AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kTPCrpH2uc); | |
274 | histos->UserHistogram("Event","vOArpH2_RunNumber",";run;#Psi_{2}^{V0A} (rad.)", | |
275 | GetRunNumbers(), BinsToVector(100,-2.,2.) , | |
276 | AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kv0ArpH2); | |
277 | histos->UserHistogram("Event","vOCrpH2_RunNumber",";run;#Psi_{2}^{V0C} (rad.)", | |
278 | GetRunNumbers(), BinsToVector(100,-2.,2.) , | |
279 | AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kv0CrpH2); | |
280 | ||
281 | histos->UserHistogram("Event","TPCrpH2uc_Cent_RunNumber",";centrality (%);#Psi^{TPC} (rad.);run", | |
282 | BinsToVector(10,0.,100.), BinsToVector(100,-2.,2.), GetRunNumbers(), | |
283 | AliDielectronVarManager::kCentrality, | |
284 | AliDielectronVarManager::kTPCrpH2uc, | |
285 | AliDielectronVarManager::kRunNumber ); | |
286 | histos->UserHistogram("Event","vOArpH2_Cent_RunNumber",";centrality (%);#Psi_{2}^{V0A} (rad.);run", | |
287 | BinsToVector(10,0.,100.), BinsToVector(100,-2.,2.), GetRunNumbers(), | |
288 | AliDielectronVarManager::kCentrality, | |
289 | AliDielectronVarManager::kv0ArpH2, | |
290 | AliDielectronVarManager::kRunNumber ); | |
291 | histos->UserHistogram("Event","vOCrpH2_Cent_RunNumber",";centrality (%);#Psi_{2}^{V0C} (rad.);run", | |
292 | BinsToVector(10,0.,100.), BinsToVector(100,-2.,2.), GetRunNumbers(), | |
293 | AliDielectronVarManager::kCentrality, | |
294 | AliDielectronVarManager::kv0CrpH2, | |
295 | AliDielectronVarManager::kRunNumber ); | |
296 | ||
297 | // PID QA | |
298 | histos->UserHistogram("Track","TPCnSigmaPio_Nacc_RunNumber",";N_{acc};n#sigma_{pio}^{TPC};run", | |
299 | BinsToVector(60,0.,3000.), BinsToVector(40,-5.,5.), GetRunNumbers(), | |
300 | AliDielectronVarManager::kNacc, | |
301 | AliDielectronVarManager::kTPCnSigmaPio, | |
302 | AliDielectronVarManager::kRunNumber); | |
303 | histos->UserHistogram("Track","TPCnSigmaPio_Nacc",";N_{acc};n#sigma_{pio}^{TPC}", | |
304 | BinsToVector(60,0.,3000.), BinsToVector(40,-5.,5.), | |
305 | AliDielectronVarManager::kNacc, | |
306 | AliDielectronVarManager::kTPCnSigmaPio); | |
307 | ||
308 | histos->UserProfile("Track","TPCnSigmaPio-Nacc-RunNumber",";N_{acc};run;n#sigma_{pio}^{TPC}", | |
309 | AliDielectronVarManager::kTPCnSigmaPio, | |
310 | BinsToVector(60,0.,3000.), GetRunNumbers(), | |
311 | AliDielectronVarManager::kNacc, AliDielectronVarManager::kRunNumber, "s;-5;5" ); | |
312 | histos->UserProfile("Track","TPCnSigmaPio-RunNumber",";run;n#sigma_{pio}^{TPC}", | |
313 | AliDielectronVarManager::kTPCnSigmaPio, | |
314 | GetRunNumbers(), AliDielectronVarManager::kRunNumber, "s;-5;5"); | |
315 | histos->UserProfile("Track","TPCnSigmaPio-Nacc",";N_{acc};n#sigma_{pio}^{TPC}", | |
316 | AliDielectronVarManager::kTPCnSigmaPio, | |
317 | BinsToVector(60,0.,3000.), AliDielectronVarManager::kNacc , "s;-5;5"); | |
318 | ||
319 | } | |
320 | ||
321 | if (bHistPID) { | |
322 | ||
323 | if(cutDefinition==kTPC) { // centrality dependence | |
324 | histos->UserHistogram("Track","dEdx_P_Cent",";p (GeV/c);TPC signal (arb units);centrality (%)", | |
325 | 400,0.2,20., 200,0.,200., 10,0.,100., | |
326 | AliDielectronVarManager::kPIn, | |
327 | AliDielectronVarManager::kTPCsignal, | |
328 | AliDielectronVarManager::kCentrality, | |
329 | kTRUE); | |
330 | ||
331 | histos->UserHistogram("Track","TPCnSigmaEle_P_Cent",";p (GeV/c);n#sigma_{ele}^{TPC};centrality (%)", | |
332 | 100,0.2,20., 100,-10.,10., 10,0.,100., | |
333 | AliDielectronVarManager::kPIn, | |
334 | AliDielectronVarManager::kTPCnSigmaEle, | |
335 | AliDielectronVarManager::kCentrality, | |
336 | kTRUE); | |
337 | ||
338 | histos->UserHistogram("Track","TPCnSigmaPio_P_Cent",";p (GeV/c);n#sigma_{pio}^{TPC};centrality (%)", | |
339 | 100,0.2,20., 100,-10.,10., 10,0.,100., | |
340 | AliDielectronVarManager::kPIn, | |
341 | AliDielectronVarManager::kTPCnSigmaPio, | |
342 | AliDielectronVarManager::kCentrality, | |
343 | kTRUE); | |
344 | ||
345 | histos->UserHistogram("Track","TPCnSigmaPro_P_Cent",";p (GeV/c);n#sigma_{pro}^{TPC};centrality (%)", | |
346 | 100,0.2,20., 100,-10.,10., 10,0.,100., | |
347 | AliDielectronVarManager::kPIn, | |
348 | AliDielectronVarManager::kTPCnSigmaPro, | |
349 | AliDielectronVarManager::kCentrality, | |
350 | kTRUE); | |
351 | ||
352 | histos->UserHistogram("Track","TOFbeta_P_Cent",";p (GeV/c);#beta;centrality (%);#tracks", | |
353 | 250,0.0,5., 300,0.,1.2, 10,0.,100., | |
354 | AliDielectronVarManager::kPIn, | |
355 | AliDielectronVarManager::kTOFbeta, | |
356 | AliDielectronVarManager::kCentrality); | |
357 | ||
358 | histos->UserHistogram("Track","TOFnSigmaEle_P_Cent","dEdxTOF;p (GeV/c);n#sigma_{ele}^{TOF};centrality (%);#tracks", | |
359 | 250,0.0,5., 100,-10.,10., 10,0.,100., | |
360 | AliDielectronVarManager::kPIn, | |
361 | AliDielectronVarManager::kTOFnSigmaEle, | |
362 | AliDielectronVarManager::kCentrality); | |
363 | } | |
364 | ||
365 | // main pid spectra | |
366 | histos->UserHistogram("Track","dEdx_P",";p (GeV/c);TPC signal (arb units);#tracks", | |
367 | 400,0.2,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE); | |
368 | histos->UserHistogram("Track","TPCnSigmaEle_P",";p (GeV/c);n#sigma_{ele}^{TPC}", | |
369 | 100,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE); | |
370 | histos->UserHistogram("Track","TPCnSigmaPio_P",";p (GeV/c);n#sigma_{pio}^{TPC}", | |
371 | 100,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE); | |
372 | histos->UserHistogram("Track","TPCnSigmaPro_P",";p (GeV/c);n#sigma_{pro}^{TPC}", | |
373 | 100,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPro,kTRUE); | |
374 | ||
375 | histos->UserHistogram("Track","TOFbeta_P",";p (GeV/c);#beta;#tracks", | |
376 | 250,0.0,5.0,300,0.,1.2,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFbeta); | |
377 | histos->UserHistogram("Track","TOFnSigmaEle_P",";p (GeV/c);n#sigma_{ele}^{TOF}", | |
378 | 100,0.2,20.,50,-10.,10.,AliDielectronVarManager::kP,AliDielectronVarManager::kTOFnSigmaEle,kTRUE); | |
379 | } | |
380 | ||
381 | if (bHistPair) { | |
382 | //Pair classes | |
383 | for (Int_t i=1; i<=1; ++i){ // only +- pairs | |
384 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i))); | |
385 | } | |
386 | //add histograms to Pair classes | |
387 | histos->UserHistogram("Pair","InvMass",";m_{ee} (GeV/c^{2});#pairs", | |
388 | 100,.0,100*0.005, AliDielectronVarManager::kM); // 5MeV bins, 0.5GeV/c2 | |
389 | histos->UserHistogram("Pair","OpeningAngle",";angle (rad.)", | |
390 | 100,0.,3.15, AliDielectronVarManager::kOpeningAngle); | |
391 | histos->UserHistogram("Pair","Chi2NDF",";#chi^{2}/NDF", | |
392 | 100,0.,20, AliDielectronVarManager::kChi2NDF); | |
393 | histos->UserHistogram("Pair","PsiPair","PsiPair;#psi", | |
394 | 100,0.,3.15, AliDielectronVarManager::kPsiPair); | |
395 | histos->UserHistogram("Pair","R","Radius;r (cm)", | |
396 | 200,0.,100., AliDielectronVarManager::kR); | |
397 | histos->UserHistogram("Pair","LegDist",";dca (cm)", | |
398 | 100,0.,1., AliDielectronVarManager::kLegDist); | |
399 | histos->UserHistogram("Pair","LegDistXY",";dca_{xy} (cm)", | |
400 | 100,0.,1., AliDielectronVarManager::kLegDistXY); | |
401 | histos->UserHistogram("Pair","PdgCode",";mother PDG code;#tracks", | |
402 | 10000,-5000.5,4999.5,AliDielectronVarManager::kPdgCode); | |
403 | ||
404 | // ITS tracks | |
405 | histos->UserHistogram("Track","NclsITS",";N_{cls}^{ITS};#tracks", | |
406 | "0,1,2,3,4,5,6,7", AliDielectronVarManager::kNclsITS); | |
407 | histos->UserHistogram("Track","ITSLayerFirstCls",";ITS layer first cls;#tracks", | |
408 | "-1,0,1,2,3,4,5,6", AliDielectronVarManager::kITSLayerFirstCls); | |
409 | } | |
410 | ||
411 | // TRD efficiency | |
412 | if(bHistEff) { | |
413 | for (Int_t i=1; i<=1; ++i){ // only +- pairs | |
414 | // histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i))); | |
415 | //legs from pair | |
416 | histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i))); | |
417 | } | |
418 | ||
419 | // purity | |
420 | histos->UserHistogram("Track","TPCnSigmaEle",";n#sigma_{ele}^{TPC};#tracks", | |
421 | 100,-10.,10.,AliDielectronVarManager::kTPCnSigmaEle); | |
422 | // TRD | |
423 | histos->UserHistogram("Track","TRDpidQuality",";N_{trkl}^{TRD};#tracks", | |
424 | "0,1,2,3,4,5,6,7", AliDielectronVarManager::kTRDpidQuality); | |
425 | histos->UserHistogram("Track","TRDprobEle",";P_{ele}^{TRD};#tracks", | |
426 | 100,0.,1., AliDielectronVarManager::kTRDprobEle); | |
427 | histos->UserHistogram("Track","TRDprobPio",";P_{pio}^{TRD};#tracks", | |
428 | 100,0.,1., AliDielectronVarManager::kTRDprobPio); | |
429 | ||
430 | histos->UserHistogram("Track","TRDprobEle_TRDpidQuality",";N_{trkl}^{TRD};P_{ele}^{TRD}", | |
431 | 7,0.,7., 20,0.,1., | |
432 | AliDielectronVarManager::kTRDpidQuality, AliDielectronVarManager::kTRDprobEle); | |
433 | histos->UserHistogram("Track","TRDprobPio_TRDpidQuality",";N_{trkl}^{TRD};P_{pio}^{TRD}", | |
434 | 7,0.,7., 20,0.,1., | |
435 | AliDielectronVarManager::kTRDpidQuality, AliDielectronVarManager::kTRDprobPio); | |
436 | ||
437 | histos->UserProfile("Track","TRDprobEle-TRDpidQuality",";N_{trkl}^{TRD};P_{ele}^{TRD}", | |
438 | AliDielectronVarManager::kTRDprobEle, | |
439 | "0,1,2,3,4,5,6,7", AliDielectronVarManager::kTRDpidQuality); | |
440 | histos->UserProfile("Track","TRDprobPio-TRDpidQuality",";N_{trkl}^{TRD};P_{pio}^{TRD}", | |
441 | AliDielectronVarManager::kTRDprobPio, | |
442 | "0,1,2,3,4,5,6,7", AliDielectronVarManager::kTRDpidQuality); | |
443 | ||
444 | } | |
445 | ||
446 | if(0) { | |
447 | histos->UserHistogram("Track","Pt",";p_{T} (GeV/c);#tracks",200,0,20.,AliDielectronVarManager::kPt); | |
448 | histos->UserHistogram("Track","Eta",";#eta;#tracks",100,-2.,2.,AliDielectronVarManager::kEta); | |
449 | histos->UserHistogram("Track","Phi",";#phi;#tracks",360,0.,6.285,AliDielectronVarManager::kPhi); | |
450 | if(hasMC) | |
451 | histos->UserHistogram("Track","PdgCodeMother",";mother PDG code;#tracks",10000,-5000.5,4999.5,AliDielectronVarManager::kPdgCodeMother); | |
452 | // histos->UserHistogram("Track","PdgCode",";tracks PDG code;#tracks",10000,-5000.5,4999.5,AliDielectronVarManager::kPdgCode); | |
453 | } | |
454 | ||
455 | //add histograms to get cut statistics | |
456 | if (bHistCuts) { | |
457 | histos->UserHistogram("Track","Eta",";Eta;#tracks", | |
458 | "-5.,-0.9,-0.8,0.8,0.9,5.", AliDielectronVarManager::kEta); | |
459 | histos->UserHistogram("Track","Pt",";p_{T} (GeV/c);#tracks", | |
460 | "0.0,0.8, 1.0, 1.2, 1.5, 100.0", AliDielectronVarManager::kPt); | |
461 | histos->UserHistogram("Track","ImpactParXY",";dXY (cm);#tracks", | |
462 | 500,-1.,1., AliDielectronVarManager::kImpactParXY); | |
463 | histos->UserHistogram("Track","ImpactParZ",";dZ (cm);#tracks", | |
464 | 600,-3.,3., AliDielectronVarManager::kImpactParZ); | |
465 | // ITS | |
466 | histos->UserHistogram("Track","NclsITS",";N_{cls}^{ITS};#tracks", | |
467 | "0,1,2,3,4,5,6,7", AliDielectronVarManager::kNclsITS); | |
468 | histos->UserHistogram("Track","ITSLayerFirstCls",";ITS layer first cls;#tracks", | |
469 | "-1,0,1,2,3,4,5,6", AliDielectronVarManager::kITSLayerFirstCls); | |
470 | // TPC | |
471 | histos->UserHistogram("Track","NclsTPC",";N_{cls}^{TPC};#tracks", | |
472 | "70, 90, 100, 120, 160", AliDielectronVarManager::kNclsTPC); | |
473 | histos->UserHistogram("Track","TPCchi2PerCluster",";#chi^{2}/N_{cls}^{TPC};#tracks", | |
474 | 10,0,10,AliDielectronVarManager::kTPCchi2Cl); | |
475 | histos->UserHistogram("Track","TPC_nSigma_Electrons",";n#sigma_{ele}^{TPC};#tracks", | |
476 | "-100,-4,-3,-2,-1.5,-1,1,1.5,2,3,4,100",AliDielectronVarManager::kTPCnSigmaEle); | |
477 | histos->UserHistogram("Track","TPC_nSigma_Pions",";n#sigma_{pio}^{TPC};#tracks", | |
478 | "-100,3.5,4.0,4.5,5.0,5.5,100",AliDielectronVarManager::kTPCnSigmaPio); | |
479 | histos->UserHistogram("Track","TPC_nSigma_Protons",";n#sigma_{pro}^{TPC};#tracks", | |
480 | "-100,3.5,4.0,4.5,5.0,5.5,100",AliDielectronVarManager::kTPCnSigmaPro); | |
481 | // TRD | |
482 | histos->UserHistogram("Track","TRDpidQuality",";N_{trkl}^{TRD};#tracks", | |
483 | "0,1,2,3,4,5,6,7", AliDielectronVarManager::kTRDpidQuality); | |
484 | histos->UserHistogram("Track","TRDprobEle",";P_{ele}^{TRD};#tracks", | |
485 | 100,0.,1., AliDielectronVarManager::kTRDprobEle); | |
486 | // histos->UserHistogram("Track","TRD_PIDbit",";TRD pid bit;#tracks", | |
487 | // "-.5,.5,1.5", AliDielectronVarManager::kTRDPIDBit); | |
488 | ||
489 | // TOF | |
490 | histos->UserHistogram("Track","TOF_PIDbit",";TOF pid bit;#tracks", | |
491 | "-.5,.5,1.5", AliDielectronVarManager::kTOFPIDBit); | |
492 | histos->UserHistogram("Track","TOF_nSigma_Electrons",";n#sigma_{ele}^{TOF};#tracks", | |
493 | "-100,-3,-2,2,3,100",AliDielectronVarManager::kTOFnSigmaEle); | |
494 | } | |
495 | ||
496 | ||
497 | // track histos | |
498 | // histos->UserHistogram("Track","Pt",";p_{T} (GeV/c);#tracks",200,0,20.,AliDielectronVarManager::kPt); | |
499 | // histos->UserHistogram("Track","Eta",";#eta;#tracks",100,-2.,2.,AliDielectronVarManager::kEta); | |
500 | // histos->UserHistogram("Track","Phi",";#phi;#tracks",360,0.,6.285,AliDielectronVarManager::kPhi); | |
501 | // histos->UserHistogram("Track","Eta_Phi",";#eta; #phi;#tracks", | |
502 | // 100,-2,2,144,0,6.285,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi); | |
503 | // | |
504 | // histos->UserHistogram("Track","Ncl",";Number clusters TPC;Number clusters TPC", | |
505 | // 160,-0.5,159.5,AliDielectronVarManager::kNclsTPC); | |
506 | // histos->UserHistogram("Track","NclFrFrac",";found/findable clusters (robust);#tracks", | |
507 | // 160,0,1.1,AliDielectronVarManager::kNFclsTPCrFrac); | |
508 | // histos->UserHistogram("Track","TPCsignalN","Number of Clusters TPC PID;#clusteres TPC PID;#tracks", | |
509 | // 160,-0.5,159.5,AliDielectronVarManager::kTPCsignalN); | |
510 | // | |
511 | // histos->UserHistogram("Track","Ncl_NclPid","Number clusters TPC vs. number of clusters PID;#clusters TPC; #clusters TPC PID", | |
512 | // 160,-0.5,159.5,160,-0.5,159.5,AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kTPCsignalN); | |
513 | // histos->UserHistogram("Track","TPCchi2Cl","TPC #chi^{2}/cluster;TPC #chi^{2}/cluster;#tracks", | |
514 | // 100,0.,10.,AliDielectronVarManager::kTPCchi2Cl); | |
515 | ||
516 | die->SetHistogramManager(histos); | |
517 | } | |
518 | ||
519 | TVectorD *GetRunNumbers() { | |
520 | ||
521 | Double_t runLHC10h[] = { // all good runs based on RCT 29.Mai | |
522 | 139510, 139507, 139505, 139503, 139465, 139438, 139437, 139360, 139329, 139328, 139314, 139310, 139309, 139173, 139107, 139105, 139038, 139037, 139036, 139029, 139028, 138872, 138871, 138870, 138837, 138732, 138730, 138666, 138662, 138653, 138652, 138638, 138624, 138621, 138583, 138582, 138579, 138578, 138534, 138469, 138442, 138439, 138438, 138396, 138364, 138275, 138225, 138201, 138197, 138192, 138190, 137848, 137844, 137752, 137751, 137724, 137722, 137718, 137704, 137693, 137692, 137691, 137686, 137685, 137639, 137638, 137608, 137595, 137549, 137546, 137544, 137541, 137539, 137531, 137530, 137443, 137441, 137440, 137439, 137434, 137432, 137431, 137430, 137366, 137243, 137236, 137235, 137232, 137231, 137230, 137162, 137161, 137135 | |
523 | }; | |
524 | ||
525 | Double_t runLHC11h[] = { // all good runs based on RCT 29.Mai | |
526 | 170593, 170572, 170388, 170387, 170315, 170313, 170312, 170311, 170309, 170308, 170306, 170270, 170269, 170268, 170230, 170228, 170207, 170204, 170203, 170193, 170163, 170159, 170155, 170091, 170089, 170088, 170085, 170084, 170083, 170081, 170040, 170027, 169965, 169923, 169859, 169858, 169855, 169846, 169838, 169837, 169835, 169591, 169588, 169586, 169557, 169554, 169550, 169512, 169504, 169498, 169475, 169419, 169418, 169417, 169415, 169411, 169238, 169167, 169160, 169156, 169148, 169145, 169144, 169138, 169099, 169094, 169091, 169044, 169035, 168992, 168988, 168826, 168777, 168514, 168512, 168511, 168467, 168464, 168460, 168458, 168362, 168361, 168342, 168341, 168325, 168322, 168311, 168310, 168115, 168108, 168107, 168105, 168076, 168069, 167988, 167987, 167985, 167920, 167915 | |
527 | }; | |
528 | ||
529 | // selection via environement variable (works only for gsi trains) | |
530 | TString list=gSystem->Getenv("LIST"); | |
531 | ||
532 | if(list.Contains("10h") || list.Contains("11a10b")) { | |
533 | Int_t size = (int) (sizeof(runLHC10h)/sizeof(Double_t)); | |
534 | TVectorD *vec = new TVectorD(size+1); | |
535 | ||
536 | (*vec)[size] = runLHC10h[0] + 1; | |
537 | for (int i = 0; i < size; i++) { | |
538 | (*vec)[i] = runLHC10h[size-1-i]; | |
539 | } | |
540 | // vec->Print(""); | |
541 | return vec; | |
542 | } | |
543 | ||
544 | if( list.IsNull() || list.Contains("11h") || list.Contains("12a17") ) { | |
545 | ||
546 | Int_t size = (int) (sizeof(runLHC11h)/sizeof(Double_t)); | |
547 | TVectorD *vec = new TVectorD(size+1); | |
548 | ||
549 | (*vec)[size] = runLHC11h[0] + 1; | |
550 | for (int i = 0; i < size; i++) { | |
551 | (*vec)[i] = runLHC11h[size-1-i]; | |
552 | } | |
553 | // vec->Print(""); | |
554 | return vec; | |
555 | } | |
556 | ||
557 | } | |
558 | ||
559 | TVectorD *BinsToVector(Int_t nbins, Double_t min, Double_t max) { | |
560 | return AliDielectronHelper::MakeLinBinning(nbins,min,max); | |
561 | // TVectorD *vec = new TVectorD(nbins+1); | |
562 | // | |
563 | // Double_t binwdth = (max-min)/nbins; | |
564 | // for (int i = 0; i < nbins+1; i++) (*vec)[i] = min + i*binwdth; | |
565 | // | |
566 | // return vec; | |
567 | } | |
568 | ||
569 |