]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGDQ/dielectron/macrosJPSI/ConfigJpsiQA_jb_PbPb.C
comment line that changes the kind of isolation method
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosJPSI / ConfigJpsiQA_jb_PbPb.C
CommitLineData
d28542ba 1void InitHistograms(AliDielectron *die, Int_t cutDefinition);
2void InitCF(AliDielectron* die, Int_t cutDefinition);
3
4void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition);
5void SetupElectronCuts(AliDielectron *die, Int_t cutDefinition);
6
7TVectorD *GetRunNumbers();
8TVectorD *BinsToVector(Int_t nbins, Double_t min, Double_t max);
9
10TString names=("CutStats;noPID;TPC;TOF;TRD;TOFTRD;TRDeff;e_mcPid;jpsi_mcPid;conv_mcPid");
11enum {kCutStats=0, knoPID, kTPC, kTOF, kTRD, kTOFTRD, kTRDeff, kEleMC, kEleJPsiMC, kEleConvMC};
12TObjArray *arrNames=names.Tokenize(";");
13
14const Int_t nDie=arrNames->GetEntries();
15
16Bool_t hasMC=kFALSE;
17
18AliDielectron* 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//______________________________________________________________________________________
72void 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//______________________________________________________________________________________
126void 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//______________________________________________________________________________________
222void 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
519TVectorD *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
559TVectorD *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