1 void InitHistograms(AliDielectron *die, Int_t cutDefinition);
2 void InitCF(AliDielectron* die, Int_t cutDefinition);
4 void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition);
5 void SetupPairCuts(AliDielectron *die, Int_t cutDefinition);
7 void AddMCSignals(AliDielectron *die);
8 void SetEtaCorrection();
9 TVectorD *GetRunNumbers();
11 TString names=("TPC;TOF;TRD;rec;TOFTRD;TOFTRD2;ITScls;ITSamy;dca;chi2;Gam0;Gam01;Gam05;Gam10;Gam15;Gam20;EtaGap01;EtaGap02;EtaGap03;EtaGap04;EtaGap05;SubLS;SubRndm");
12 enum { kTPC=0, kTOF, kTRD, krec, kTOFTRD, kTOFTRD2, kITScls, kITSamy, kDCA, kChi, kGam0, kGam01, kGam05, kGam10, kGam15, kGam20, kEtaGap01, kEtaGap02, kEtaGap03, kEtaGap04, kEtaGap05, kSubLS, kSubRndm };
14 TObjArray *arrNames=names.Tokenize(";");
15 const Int_t nDie=arrNames->GetEntries();
17 Bool_t hasMC = kFALSE;
18 TString list = gSystem->Getenv("LIST");
20 AliDielectron* ConfigJpsi_jb_PbPb(Int_t cutDefinition, TString prod="")
23 // Setup the instance of AliDielectron
27 if( list.IsNull()) list=prod;
28 if( list.Contains("LHC10h") || list.Contains("LHC11h") ) hasMC=kFALSE;
29 if( list.Contains("LHC11a10") || list.Contains("LHC12a17") ) hasMC=kTRUE;
34 //(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
37 Bool_t isESD=(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()->IsA()==AliESDInputHandler::Class());
39 // switch off some configurations
40 switch(cutDefinition) {
48 if(!hasMC) return 0x0;
70 if( hasMC) return 0x0;
74 // create the actual framework object
75 TString name=Form("%02d",cutDefinition);
76 if (cutDefinition<arrNames->GetEntriesFast()){
77 name=arrNames->At(cutDefinition)->GetName();
79 AliDielectron *die = new AliDielectron(Form("%s",name.Data()), Form("Track cuts: %s",name.Data()));
82 // Monte Carlo Signals and TRD efficiency tables
87 TString pidTab="$TRAIN_ROOT/util/dielectron/dielectron/TRDpidEff_eleProb07_TRDntr4_6.root";
88 TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
89 if (trainRoot.IsNull()) pidTab="$ALICE_ROOT/PWGDQ/dielectron/files/TRDpidEff_eleProb07_TRDntr4_6.root";
91 if (gSystem->AccessPathName(gSystem->ExpandPathName(pidTab.Data())))
92 Error("ConfigPbPb","PID table not found: %s",pidTab.Data());
94 die->SetTRDcorrectionFilename(pidTab.Data());
98 SetupTrackCuts(die,cutDefinition);
99 SetupPairCuts(die,cutDefinition);
102 if(cutDefinition == kTOFTRD ||
103 cutDefinition == kGam0 ||
104 cutDefinition == kTOFTRD2 ||
105 cutDefinition >= kEtaGap01 )
106 InitHistograms(die,cutDefinition);
108 // CF container setup
109 if(cutDefinition < kEtaGap01 ||
110 cutDefinition == kSubRndm )
111 InitCF(die,cutDefinition);
116 if(cutDefinition == kTOFTRD) {
118 AliDielectronTrackRotator *rot=new AliDielectronTrackRotator;
119 rot->SetIterations(10);
120 rot->SetConeAnglePhi(TMath::Pi());
121 rot->SetStartAnglePhi(TMath::Pi());
122 die->SetTrackRotator(rot);
124 AliDielectronMixingHandler *mix=new AliDielectronMixingHandler;
125 mix->AddVariable(AliDielectronVarManager::kZvPrim,10,-10.,10.);
126 mix->AddVariable(AliDielectronVarManager::kCentrality,16,0.,80.);
127 mix->SetMixType(AliDielectronMixingHandler::kAll);
129 die->SetMixingHandler(mix);
133 // TPC event plane configurations
135 switch(cutDefinition) {
136 case kEtaGap01: gGap=0.1; break;
137 case kEtaGap02: gGap=0.2; break;
138 case kEtaGap03: gGap=0.3; break;
139 case kEtaGap04: gGap=0.4; break;
140 case kEtaGap05: gGap=0.5; break;
144 AliDielectronVarCuts *poi = new AliDielectronVarCuts("PoI","PoI");
145 poi->AddCut(AliDielectronVarManager::kM,2.92,3.20); // particles of interest, jpsi mass window
146 die->GetEventPlanePOIPreFilter().AddCuts(poi);
148 if(cutDefinition >= kEtaGap01 &&
149 cutDefinition < kSubLS ) {
150 AliDielectronVarCuts *etaGap = new AliDielectronVarCuts(AliDielectronVarManager::GetValueName(AliDielectronVarManager::kEta),"etaGap");
151 etaGap->AddCut(AliDielectronVarManager::kEta,-1*gGap,gGap,kTRUE);
152 die->GetEventPlanePreFilter().AddCuts(etaGap);
155 if(cutDefinition==kSubLS) die->SetLikeSignSubEvents();
156 die->SetPreFilterEventPlane();
159 // prefilter settings
160 if(cutDefinition == kTOFTRD2)
161 die->SetPreFilterAllSigns();
163 die->SetPreFilterUnlikeOnly();
165 // setup eta correction
166 if(isESD) SetEtaCorrection();
169 TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
170 if (!trainRoot.IsNull()) {
171 die->SetVZEROCalibrationFilename("$TRAIN_ROOT/util/dielectron/dielectron/VzeroCalibrationLHC10h.root");
172 die->SetVZERORecenteringFilename("$TRAIN_ROOT/util/dielectron/dielectron/VzeroRecenteringLHC10h.root");
178 //______________________________________________________________________________________
179 void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition)
182 // Setup the track cuts
185 Bool_t isESD=(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()->IsA()==AliESDInputHandler::Class());
188 AliDielectronCutGroup* cuts = new AliDielectronCutGroup("cuts","cuts",AliDielectronCutGroup::kCompAND);
189 die->GetTrackFilter().AddCuts(cuts);
191 // AOD track filter (needs to be first cut)
192 AliDielectronTrackCuts *trkFilter = new AliDielectronTrackCuts("TrkFilter","TrkFilter");
193 trkFilter->SetAODFilterBit(AliDielectronTrackCuts::kTPCqualSPDanyPIDele);
194 if(!isESD) cuts->AddCut(trkFilter);
196 //Pt cut, should make execution a bit faster
197 AliDielectronVarCuts *pt = new AliDielectronVarCuts("PtCut","PtCut");
198 if(cutDefinition >= kEtaGap01 )
199 pt->AddCut(AliDielectronVarManager::kPt,1.1,1e30);
201 pt->AddCut(AliDielectronVarManager::kPt,0.8,1e30);
204 // track cuts ESD and AOD
205 AliDielectronVarCuts *varCuts = new AliDielectronVarCuts("VarCuts","VarCuts");
206 varCuts->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
207 varCuts->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
208 varCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9);
209 varCuts->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0);
210 varCuts->AddCut(AliDielectronVarManager::kNclsTPC, 70.0, 160.0);
211 varCuts->AddCut(AliDielectronVarManager::kKinkIndex0, 0.0);
213 varCuts->AddCut(AliDielectronVarManager::kTRDchi2, 0.0, 2.0);
214 cuts->AddCut(varCuts);
216 AliDielectronTrackCuts *trkCuts = new AliDielectronTrackCuts("TrkCuts","TrkCuts");
217 switch(cutDefinition) {
218 case kTOFTRD2: trkCuts->SetClusterRequirementITS(AliDielectronTrackCuts::kSPD,AliDielectronTrackCuts::kFirst);
220 default: trkCuts->SetClusterRequirementITS(AliDielectronTrackCuts::kSPD,AliDielectronTrackCuts::kAny);
223 trkCuts->SetRequireITSRefit(kTRUE);
224 trkCuts->SetRequireTPCRefit(kTRUE);
225 cuts->AddCut(trkCuts);
227 //Do we have an MC handler?
228 // Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
230 /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv PID CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
231 AliDielectronPID *pid = new AliDielectronPID("PID","PID");
233 ////////////////////////////////// DATA
235 pid->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-100.,2.5,0.,0.,kTRUE);
236 pid->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-100.,3.5,0.,0.,kTRUE);
238 if(cutDefinition==kTRD || cutDefinition>=kTOFTRD || cutDefinition>=kTOFTRD2)
239 pid->AddCut(AliDielectronPID::kTRDeleEff,AliPID::kElectron,.8,1.,3.5.,6.,kFALSE,
240 AliDielectronPID::kIfAvailable,AliDielectronVarManager::kTRDpidQuality);
243 ////////////////////////////////// MC
247 Double_t nSigmaPi = 3.5; Double_t nSigmaP = 3.5;
248 Double_t resolution=0.0549;
249 Double_t BBpro[5] = {0};
250 Double_t BBpio[5] = {0};
252 for(Int_t icent=0; icent<8; icent++) {
256 BBpro[0] = 0.031555; BBpro[1] = 26.0595; BBpro[2] = 3.02422e-11; BBpro[3] = 2.05594; BBpro[4] = 5.99848;
257 BBpio[0] = 0.0252122; BBpio[1] = 38.8991; BBpio[2] = 4.0901e-11; BBpio[3] = 5.27988; BBpio[4] = 4.3108;
260 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
261 BBpio[0] = 0.0252127; BBpio[1] = 33.8617; BBpio[2] = 3.56866e-11; BBpio[3] = 5.24831; BBpio[4] = 4.31093;
264 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
265 BBpio[0] = 0.0263205; BBpio[1] = 37.9307; BBpio[2] = 4.29724e-11; BBpio[3] = 5.74458; BBpio[4] = 4.32459;
268 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
269 BBpio[0] = 0.026294; BBpio[1] = 39.0346; BBpio[2] = 4.12261e-11; BBpio[3] = 5.28808; BBpio[4] = 4.31301;
272 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
273 BBpio[0] = 0.0263134; BBpio[1] = 38.2084; BBpio[2] = 3.75159e-11; BBpio[3] = 5.78125; BBpio[4] = 4.31363;
276 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
277 BBpio[0] = 0.0263134; BBpio[1] = 38.2084; BBpio[2] = 3.75159e-11; BBpio[3] = 5.78125; BBpio[4] = 4.31363;
280 BBpro[0] = 0.031555; BBpro[1] = 26.0595; BBpro[2] = 3.02422e-11; BBpro[3] = 2.05594; BBpro[4] = 5.99848;
281 BBpio[0] = 0.026302; BBpio[1] = 38.6888; BBpio[2] = 3.56792e-11; BBpio[3] = 5.2465; BBpio[4] = 4.31094;
284 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
285 BBpio[0] = 0.0263134; BBpio[1] = 38.2084; BBpio[2] = 3.75159e-11; BBpio[3] = 5.78125; BBpio[4] = 4.31363;
288 BBpro[0] = 0.0313438; BBpro[1] = 25.8666; BBpro[2] = 4.5457e-11; BBpro[3] = 2.07912; BBpro[4] = 5.99986;
289 BBpio[0] = 0.0252127; BBpio[1] = 33.8617; BBpio[2] = 3.56866e-11; BBpio[3] = 5.24831; BBpio[4] = 4.31093;
292 BBpro[0] = 0.0319126; BBpro[1] = 36.8784; BBpro[2] = 3.4274e-11; BBpro[3] = 3.2431; BBpro[4] = 5.93388;
293 BBpio[0] = 0.027079; BBpio[1] = 67.5936; BBpio[2] = 9.72548e-11; BBpio[3] = 9.61382; BBpio[4] = 5.99372;
298 TF1 *ffPro=new TF1(Form("fBethe%d_c%d",AliPID::kProton,icent), Form("(%f*%f+(AliExternalTrackParam::BetheBlochAleph(x/%f,[0],[1],[2],[3],[4])-AliExternalTrackParam::BetheBlochAleph(x/%f,[0],[1],[2],[3],[4])))/%f", nSigmaP,resolution, AliPID::ParticleMass(AliPID::kProton), AliPID::ParticleMass(AliPID::kElectron), resolution), 0.05,200.);
300 TF1 *ffPio=new TF1(Form("fBethe%d_c%d",AliPID::kPion,icent), Form("(%f*%f+(AliExternalTrackParam::BetheBlochAleph(x/%f,[0],[1],[2],[3],[4])-AliExternalTrackParam::BetheBlochAleph(x/%f,[0],[1],[2],[3],[4])))/%f", nSigmaPi,resolution, AliPID::ParticleMass(AliPID::kPion), AliPID::ParticleMass(AliPID::kElectron), resolution), 0.05,200.);
303 if (list.Contains("LHC11a10b")) {
304 printf("LHC11a10b parameters\n");
305 ffPro->SetParameters(BBpro[0],BBpro[1],BBpro[2],BBpro[3],BBpro[4]);
306 ffPio->SetParameters(BBpio[0],BBpio[1],BBpio[2],BBpio[3],BBpio[4]);
309 pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,ffPro,10,((double)icent)*10.,((double)icent+1)*10,
310 kFALSE,AliDielectronPID::kRequire,AliDielectronVarManager::kCentrality);
312 pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,ffPio,10,((double)icent)*10.,((double)icent+1)*10,
313 kFALSE,AliDielectronPID::kRequire,AliDielectronVarManager::kCentrality);
317 // shifts for the nSigma electrons
318 TGraph* nSigmaCorrection = new TGraph();
320 if (list.Contains("LHC11a10b")) {
321 nSigmaCorrection->SetPoint(0, 137161., -0.50-(0.28));
322 nSigmaCorrection->SetPoint(1, 139510., -0.50-(0.28));
323 pid->SetCorrGraph(nSigmaCorrection);
328 ////////////////////////////////// DATA + MC
329 // pid cuts TPC + TOF & TRD
330 pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.);
331 if(cutDefinition==kTOF || cutDefinition>=kTOFTRD || cutDefinition>=kTOFTRD2)
332 pid->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,3.,0.,0.,kFALSE,AliDielectronPID::kIfAvailable);
334 if(cutDefinition!=krec) cuts->AddCut(pid);
335 /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PID CUTS ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
338 // exclude conversion electrons selected by the tender
339 AliDielectronTrackCuts *noconv=new AliDielectronTrackCuts("noConv","noConv");
340 noconv->SetV0DaughterCut(AliPID::kElectron,kTRUE);
341 cuts->AddCut(noconv);
345 //______________________________________________________________________________________
346 void SetupPairCuts(AliDielectron *die, Int_t cutDefinition)
349 // Setup the pair cuts
352 // conversion rejection
354 switch(cutDefinition) {
355 case kTPC: gCut=0.05; break;
356 case krec: gCut=0.05; break;
357 case kGam10: gCut=0.1; break;
358 case kGam15: gCut=0.15; break;
359 case kGam20: gCut=0.2; break;
360 case kGam05: gCut=0.05; break;
361 case kGam01: gCut=0.01; break;
362 case kGam0: gCut=0.0; break;
363 default: gCut=0.05; // default
366 AliDielectronVarCuts *gammaCuts = new AliDielectronVarCuts("GammaCuts","GammaCuts");
367 // gammaCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.1, kTRUE);
368 // gammaCuts->AddCut(AliDielectronVarManager::kLegDist, 0.0, 0.25, kTRUE);
369 // gammaCuts->AddCut(AliDielectronVarManager::kR, 3.0, 90.0, kTRUE);
370 // gammaCuts->AddCut(AliDielectronVarManager::kPsiPair, 0.0, 0.05, kTRUE);
371 // gammaCuts->AddCut(AliDielectronVarManager::kChi2NDF, 0.0, 10.0, kTRUE);
372 gammaCuts->AddCut(AliDielectronVarManager::kM, 0.0, gCut);
373 die->GetPairPreFilter().AddCuts(gammaCuts);
376 // rapidity selection
377 AliDielectronVarCuts *rapCut=new AliDielectronVarCuts("|Y|<.9","|Y|<.9");
378 rapCut->AddCut(AliDielectronVarManager::kY,-0.9,0.9);
379 die->GetPairFilter().AddCuts(rapCut);
383 //______________________________________________________________________________________
384 void InitHistograms(AliDielectron *die, Int_t cutDefinition)
387 // Initialise the histograms
389 // Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
391 //Setup histogram Manager
392 AliDielectronHistos *histos=new AliDielectronHistos(die->GetName(),die->GetTitle());
395 //add histograms to event class
396 histos->AddClass("Event");
397 histos->UserHistogram("Event","VtxZ","Vertex Z;z (cm)",
399 AliDielectronVarManager::kZvPrim);
400 histos->UserHistogram("Event","Centrality","Centrality;centrality (%)",
401 "0.,5.,10.,20.,40.,50.,60.,80.,100.",
402 AliDielectronVarManager::kCentrality);
403 histos->UserHistogram("Event","Multiplicity","Multiplicity V0;Multiplicity V0",
405 AliDielectronVarManager::kMultV0);
406 histos->UserHistogram("Event","Cent_Mult","Centrality vs. Multiplicity;centrality (%);Multiplicity V0",
407 10,0.,100., 500,0.,25000.,
408 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kMultV0);
409 histos->UserProfile("Event","Cent_Nacc",
410 "accepted tracks;centrality (%)",
411 AliDielectronVarManager::kNacc,
412 "0.,5.,10.,20.,40.,50.,60.,80.,100.",
413 AliDielectronVarManager::kCentrality);
414 histos->UserProfile("Event","Cent_NVtxContrib",
415 "number of vertex contributors;centrality (%)",
416 AliDielectronVarManager::kNVtxContrib,
417 "0.,5.,10.,20.,40.,50.,60.,80.,100.",
418 AliDielectronVarManager::kCentrality);
422 if(cutDefinition == kTOFTRD || cutDefinition >= kEtaGap01) {
423 histos->UserHistogram("Event","TPCxH2","TPC Qx component;TPCxH2",
425 AliDielectronVarManager::kTPCxH2);
426 histos->UserHistogram("Event","TPCyH2","TPC Qy component;TPCyH2",
428 AliDielectronVarManager::kTPCyH2);
429 histos->UserHistogram("Event","TPCrpH2","TPC reaction plane; #Psi^{TPC}",
431 AliDielectronVarManager::kTPCrpH2);
432 histos->UserHistogram("Event","TPCsub1xH2","TPC Qx component sub1;TPCsub1xH2",
434 AliDielectronVarManager::kTPCsub1xH2);
435 histos->UserHistogram("Event","TPCsub1yH2","TPC Qy component sub1;TPCsub1yH2",
437 AliDielectronVarManager::kTPCsub1yH2);
438 histos->UserHistogram("Event","TPCsub1rpH2","TPC reaction plane sub1; #Psi^{sub1}",
440 AliDielectronVarManager::kTPCsub1rpH2);
441 histos->UserHistogram("Event","TPCsub2xH2","TPC Qx component sub2;TPCsub2xH2",
443 AliDielectronVarManager::kTPCsub2xH2);
444 histos->UserHistogram("Event","TPCsub2yH2","TPC Qy component sub2;TPCsub2yH2",
446 AliDielectronVarManager::kTPCsub2yH2);
447 histos->UserHistogram("Event","TPCsub2rpH2","TPC reaction plane sub2; #Psi^{sub2}",
449 AliDielectronVarManager::kTPCsub2rpH2);
450 histos->UserHistogram("Event","TPCsub12DiffH2","TPC reaction plane diff; cos(2(#Psi^{sub1}-#Psi^{sub2}))",
452 AliDielectronVarManager::kTPCsub12DiffH2);
453 /* // uncorrected eventplane
454 histos->UserHistogram("Event","TPCxH2uc","TPC Qx component;TPCxH2uc",
456 AliDielectronVarManager::kTPCxH2uc);
457 histos->UserHistogram("Event","TPCyH2uc","TPC Qy component;TPCyH2uc",
459 AliDielectronVarManager::kTPCyH2uc);
460 histos->UserHistogram("Event","TPCrpH2uc","TPC reaction plane;TPCrpH2uc",
462 AliDielectronVarManager::kTPCrpH2uc);
463 histos->UserHistogram("Event","TPCsub1xH2uc","TPC Qx component sub1;TPCsub1xH2uc",
465 AliDielectronVarManager::kTPCsub1xH2uc);
466 histos->UserHistogram("Event","TPCsub1yH2uc","TPC Qy component sub1;TPCsub1yH2uc",
468 AliDielectronVarManager::kTPCsub1yH2uc);
469 histos->UserHistogram("Event","TPCsub1rpH2uc","TPC reaction plane sub1;TPCsub1rpH2uc",
471 AliDielectronVarManager::kTPCsub1rpH2uc);
472 histos->UserHistogram("Event","TPCsub2xH2uc","TPC Qx component sub2;TPCsub2xH2uc",
474 AliDielectronVarManager::kTPCsub2xH2uc);
475 histos->UserHistogram("Event","TPCsub2yH2uc","TPC Qy component sub2;TPCsub2yH2uc",
477 AliDielectronVarManager::kTPCsub2yH2uc);
478 histos->UserHistogram("Event","TPCsub2rpH2uc","TPC reaction plane sub2;TPCsub2rpH2uc",
480 AliDielectronVarManager::kTPCsub2rpH2uc);
481 histos->UserHistogram("Event","TPCsub12DiffH2uc","TPC reaction plane difference;TPCsub12DiffH2uc",
483 AliDielectronVarManager::kTPCsub12DiffH2uc);
485 histos->UserHistogram("Event","V0ACrpH2","VZERO-AC RP; #Psi_{2}^{V0AC} (rad.)",
487 AliDielectronVarManager::kV0ACrpH2);
488 histos->UserHistogram("Event","V0ArpH2","VZERO-A RP; #Psi_{2}^{V0A} (rad.)",
490 AliDielectronVarManager::kV0ArpH2);
491 histos->UserHistogram("Event","V0CrpH2","VZERO-C RP; #Psi_{2}^{V0C} (rad.)",
493 AliDielectronVarManager::kV0CrpH2);
495 histos->UserHistogram("Event","V0ATPCDiffH2","VZERO-A TPC diff; cos(2(#Psi^{V0A}-#Psi^{TPC}))",
497 AliDielectronVarManager::kV0ATPCDiffH2);
498 histos->UserHistogram("Event","V0CTPCDiffH2","VZERO-C TPC diff; cos(2(#Psi^{V0C}-#Psi^{TPC}))",
500 AliDielectronVarManager::kV0CTPCDiffH2);
501 histos->UserHistogram("Event","V0AV0CDiffH2","VZERO-A VZERO-C diff; cos(2(#Psi^{V0A}-#Psi^{V0C}))",
503 AliDielectronVarManager::kV0AV0CDiffH2);
505 // centrality dependent event plane histograms
506 histos->UserHistogram("Event","Cent_TPCrpH2","TPC RP;centrality (%);#Psi^{TPC} (rad.)",
507 10,0.,100.,100,-2.,2.,
508 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCrpH2);
509 histos->UserHistogram("Event","Cent_TPCsub1rpH2","TPC-1 RP;centrality (%);#Psi^{sub1} (rad.)",
510 10,0.,100.,100,-2.,2.,
511 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsub1rpH2);
512 histos->UserHistogram("Event","Cent_TPCsub2rpH2","TPC-2 RP;centrality (%);#Psi^{sub2} (rad.)",
513 10,0.,100.,100,-2.,2.,
514 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsub2rpH2);
516 histos->UserHistogram("Event","Cent_V0ACrpH2","VZERO-AC RP;centrality (%);#Psi_{2}^{V0AC} (rad.)",
517 10,0.,100.,100,-2.0,2.0,
518 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kV0ACrpH2);
519 histos->UserHistogram("Event","Cent_V0ArpH2","VZERO-A RP;centrality (%);#Psi_{2}^{V0A} (rad.)",
520 10,0.,100.,100,-2.0,2.0,
521 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kV0ArpH2);
522 histos->UserHistogram("Event","Cent_V0CrpH2","VZERO-C RP;centrality (%);#Psi_{2}^{V0C} (rad.)",
523 10,0.,100.,100,-2.0,2.0,
524 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kV0CrpH2);
525 // for resolution calculation
526 histos->UserHistogram("Event","Cent_V0ATPCDiffH2","VZERO-A TPC diff;centrality (%);cos(2(#Psi^{V0A}-#Psi^{TPC}))",
527 10,0.,100.,300,-1.0,1.0,
528 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kV0ATPCDiffH2);
529 histos->UserHistogram("Event","Cent_V0CTPCDiffH2","VZERO-C TPC diff;centrality (%);cos(2(#Psi^{V0C}-#Psi^{TPC}))",
530 10,0.,100.,300,-1.0,1.0,
531 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kV0CTPCDiffH2);
532 histos->UserHistogram("Event","Cent_V0AV0CDiffH2","VZERO-A VZERO-C diff;centrality (%);cos(2(#Psi^{V0A}-#Psi^{V0C}))",
533 10,0.,100.,300,-1.0,1.0,
534 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kV0AV0CDiffH2);
535 histos->UserHistogram("Event","Cent_TPCsub12DiffH2","TPC-sub1 TPC-sub2 diff;centrality (%);cos(2(#Psi^{sub1}-#Psi^{sub2}))",
536 10,0.,100.,300,-1.0,1.0,
537 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsub12DiffH2);
539 histos->UserHistogram("Event","Cent_TPCsub12DiffH2Sin","TPC-sub1 TPC-sub2 diff;centrality (%);sin(2(#Psi^{sub1}-#Psi^{sub2}))",
540 10,0.,100.,300,-1.0,1.0,AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsub12DiffH2Sin);
541 //// EPSelectionTask V0 information directly from the ESDs
542 histos->UserHistogram("Event","Cent_v0ACrpH2","VZERO-AC RP;centrality (%);#Psi_{2}^{v0AC} (rad.)",
543 10,0.,100.,100,-2.0,2.0,
544 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0ACrpH2);
545 histos->UserHistogram("Event","Cent_v0ArpH2","VZERO-A RP;centrality (%);#Psi_{2}^{v0A} (rad.)",
546 10,0.,100.,100,-2.0,2.0,
547 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0ArpH2);
548 histos->UserHistogram("Event","Cent_v0CrpH2","VZERO-C RP;centrality (%);#Psi_{2}^{v0C} (rad.)",
549 10,0.,100.,100,-2.0,2.0,
550 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0CrpH2);
551 // for resolution calculation
552 histos->UserHistogram("Event","Cent_v0ATPCDiffH2","VZERO-A TPC diff;centrality (%);cos(2(#Psi^{v0A}-#Psi^{TPC}))",
553 10,0.,100.,300,-1.0,1.0,
554 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0ATPCDiffH2);
555 histos->UserHistogram("Event","Cent_v0CTPCDiffH2","VZERO-C TPC diff;centrality (%);cos(2(#Psi^{v0C}-#Psi^{TPC}))",
556 10,0.,100.,300,-1.0,1.0,
557 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0CTPCDiffH2);
558 histos->UserHistogram("Event","Cent_v0Av0CDiffH2","VZERO-A VZERO-C diff;centrality (%);cos(2(#Psi^{v0A}-#Psi^{v0C}))",
559 10,0.,100.,300,-1.0,1.0,
560 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0Av0CDiffH2);
564 ////// MONTE CARLO //////
566 if(cutDefinition == kTOFTRD && hasMC) {
567 histos->AddClass("MCEvent");
568 histos->UserHistogram("MCEvent","Cent_NJPsis","Centrality vs. generated incl. J/#psi per event;centrality (%);N_{J/#psi}",
569 10,0.,100., 21,-0.5,20.5,
570 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kNumberOfJPsis);
575 //Initialise histogram classes
576 histos->SetReservedWords("Track;Pair");
580 // to fill also mixed event histograms loop until 10
581 for (Int_t i=0; i<3; ++i){
582 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
585 if(cutDefinition < kEtaGap01) {
588 for (Int_t i=0; i<3; ++i){
589 histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i)));
593 //to fill also track info from 2nd event loop until 2
594 for (Int_t i=0; i<2; ++i){
595 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
599 // histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
600 // histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
602 //add histograms to Track classes
603 //histos->UserHistogram("Track","TOFbit","TOFbit;bit;#tracks",19,-9.5,9.5,AliDielectronVarManager::kTOFPIDBit);
604 histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",
606 AliDielectronVarManager::kPt);
607 histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",
609 AliDielectronVarManager::kNclsTPC);
610 histos->UserHistogram("Track","TPCsignalN","Number of Clusters TPC;TPC number clusteres;#tracks",
612 AliDielectronVarManager::kTPCsignalN);
614 histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",
616 AliDielectronVarManager::kImpactParXY);
617 histos->UserHistogram("Track","dZ","dZ;dZ [cm];#tracks",
619 AliDielectronVarManager::kImpactParZ);
620 histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
621 200,-1,1,200,0,6.285,
622 AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
624 histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
625 400,0.2,20.,200,0.,200.,
626 AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
627 histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
628 400,0.2,20.,200,-10.,10.,
629 AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
631 histos->UserHistogram("Track","Ncl",";Number clusters TPC;Number clusters TPC",
633 AliDielectronVarManager::kNclsTPC);
634 histos->UserHistogram("Track","NclFr",";Number of findable clusters (robust);Number findable clusters TPC",
636 AliDielectronVarManager::kNFclsTPCr);
637 histos->UserHistogram("Track","Ncl_NclFr","Number of (findable) clusters TPC;found clusters;findable clusters",
638 160,-0.5,159.5,160,-0.5,159.5,
639 AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr);
640 histos->UserHistogram("Track","NtrklTRD",";Number tracklets TRD for pid;Number tracklets TRD",
642 AliDielectronVarManager::kTRDpidQuality);
644 //add histograms to Pair classes
645 histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
646 300,.0,300*0.04, AliDielectronVarManager::kM); // 40MeV bins, 12GeV/c2
647 histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
648 100,-1.,1., AliDielectronVarManager::kY);
649 histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
650 100,0.,3.15, AliDielectronVarManager::kOpeningAngle);
651 histos->UserHistogram("Pair","Chi2NDF","#chi^{2}/NDF;#chi^{2}/NDF",
652 100,0.,20, AliDielectronVarManager::kChi2NDF);
653 histos->UserHistogram("Pair","PsiPair","PsiPair;#psi",
654 100,0.,3.15, AliDielectronVarManager::kPsiPair);
655 histos->UserHistogram("Pair","R","Radius;r (cm)",
656 200,0.,100., AliDielectronVarManager::kR);
657 histos->UserHistogram("Pair","LegDist",";dca (cm)",
658 50,0.,5., AliDielectronVarManager::kLegDist);
659 histos->UserHistogram("Pair","LegDistXY",";dca_{xy} (cm)",
660 50,0.,5., AliDielectronVarManager::kLegDistXY);
665 //// FLOW results use tprofiles
666 if(cutDefinition == kTOFTRD || cutDefinition == kTOFTRD2 || cutDefinition >= kEtaGap01) {
668 histos->UserProfile("Pair","M_Cent_Pt_V0ACrpH2FlowV2",
669 "cos(2(#varphi-#Psi^{V0AC}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)",
670 AliDielectronVarManager::kV0ACrpH2FlowV2,
671 125,0.,125*.04, 10, 0.,100., 200,0.,100.,
672 AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt);
674 histos->UserProfile("Pair","M_Cent_Pt_V0ArpH2FlowV2",
675 "cos(2(#varphi-#Psi^{V0A}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)",
676 AliDielectronVarManager::kV0ArpH2FlowV2,
677 125,0.,125*.04, 10, 0.,100., 200,0.,100.,
678 AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt);
680 histos->UserProfile("Pair","M_Cent_Pt_V0CrpH2FlowV2",
681 "cos(2(#varphi-#Psi^{V0C}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)",
682 AliDielectronVarManager::kV0CrpH2FlowV2,
683 125,0.,125*.04, 10, 0.,100., 200,0.,100.,
684 AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt);
686 histos->UserProfile("Pair","M_Cent_Pt_v0ACrpH2FlowV2",
687 "cos(2(#varphi-#Psi^{V0AC}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)",
688 AliDielectronVarManager::kv0ACrpH2FlowV2,
689 125,0.,125*.04, 10, 0.,100., 200,0.,100.,
690 AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt);
692 histos->UserProfile("Pair","M_Cent_Pt_v0ArpH2FlowV2",
693 "cos(2(#varphi-#Psi^{V0A}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)",
694 AliDielectronVarManager::kv0ArpH2FlowV2,
695 125,0.,125*.04, 10, 0.,100., 200,0.,100.,
696 AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt);
698 histos->UserProfile("Pair","M_Cent_Pt_v0CrpH2FlowV2",
699 "cos(2(#varphi-#Psi^{V0C}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)",
700 AliDielectronVarManager::kv0CrpH2FlowV2,
701 125,0.,125*.04, 10, 0.,100., 200,0.,100.,
702 AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt);
705 histos->UserProfile("Pair","M_V0ACrpH2FlowV2",
706 "cos(2(#varphi-#Psi^{V0AC}));mass (GeV/c^{2})",
707 AliDielectronVarManager::kV0ACrpH2FlowV2,
709 AliDielectronVarManager::kM);
711 histos->UserProfile("Pair","M_V0ArpH2FlowV2",
712 "cos(2(#varphi-#Psi^{V0AC}));mass (GeV/c^{2})",
713 AliDielectronVarManager::kV0ArpH2FlowV2,
715 AliDielectronVarManager::kM);
717 histos->UserProfile("Pair","M_V0CrpH2FlowV2",
718 "cos(2(#varphi-#Psi^{V0AC}));mass (GeV/c^{2})",
719 AliDielectronVarManager::kV0CrpH2FlowV2,
721 AliDielectronVarManager::kM);
724 die->SetHistogramManager(histos);
728 void InitCF(AliDielectron* die, Int_t cutDefinition)
731 // Setup the CF Manager if needed
733 // Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
735 AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
738 cf->AddVariable(AliDielectronVarManager::kM,125,0.,125*.04); //40Mev Steps
739 if(cutDefinition!=kSubRndm) cf->AddVariable(AliDielectronVarManager::kPairType,11,0,11);
741 if(cutDefinition < kGam0 || cutDefinition == kSubRndm) {
743 // pair and event vars
744 if(cutDefinition <= kChi || cutDefinition == kSubRndm) {
745 cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,5.,10.,20.,40.,50.,60.,80.");
746 cf->AddVariable(AliDielectronVarManager::kPt,"0., 1., 2.5, 5., 100.0");
747 if(!hasMC) cf->AddVariable(AliDielectronVarManager::kZvPrim,20, -10., 10.);
748 if(hasMC) cf->AddVariable(AliDielectronVarManager::kNacc,20,0.,3000.0);
749 if(hasMC) cf->AddVariable(AliDielectronVarManager::kNVtxContrib,20,0.,4000.);
750 if(hasMC) cf->AddVariable(AliDielectronVarManager::kTRDpidEffPair,101,0.0,1.01);
751 //cf->AddVariable(AliDielectronVarManager::kY,"-0.8,0.8");
755 if(cutDefinition!=kSubRndm) {
756 cf->AddVariable(AliDielectronVarManager::kPt,"0.8, 1.0, 1.1, 1.2, 1.5, 100.0",kTRUE);
757 cf->AddVariable(AliDielectronVarManager::kTPCnSigmaEle,"-3,-2.5,-2,2,2.5,3",kTRUE);
758 cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPio,"2.5,3.0,3.5,4.0,4.5,100",kTRUE);
759 // cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPro,"3.5,4.0,4.5,5.0,100",kTRUE);
760 cf->AddVariable(AliDielectronVarManager::kTRDpidQuality,"3.5, 4.5, 5.5, 6.5",kTRUE);
763 if(cutDefinition<=kChi) {
764 if(hasMC) cf->AddVariable(AliDielectronVarManager::kEta,"-0.9,0.9",kTRUE);
765 //cf->AddVariable(AliDielectronVarManager::kNclsTPC,"70, 90, 100, 120, 160",kTRUE);
769 switch(cutDefinition) {
772 case kTOF: //cf->AddVariable(AliDielectronVarManager::kTOFnSigmaEle,"-3,-2,2,3",kTRUE); break;
775 // if(hasMC) cf->AddVariable(AliDielectronVarManager::kThetaCS,15,-1.,1.);
776 //cf->AddVariable(AliDielectronVarManager::kITSLayerFirstCls,7,-1.5,5.5,kTRUE); break;
778 case kITScls: cf->AddVariable(AliDielectronVarManager::kNclsITS,"1,2,3,4,5,6",kTRUE); break;
779 case kITSamy: cf->AddVariable(AliDielectronVarManager::kITSLayerFirstCls,7,-1.5,5.5,kTRUE); break;
781 cf->AddVariable(AliDielectronVarManager::kITSLayerFirstCls,7,-1.5,5.5,kTRUE);
782 cf->AddVariable(AliDielectronVarManager::kImpactParXY,8,-2.,2.,kTRUE);
783 cf->AddVariable(AliDielectronVarManager::kImpactParZ,8,-4.,4.,kTRUE);
785 case kChi: cf->AddVariable(AliDielectronVarManager::kChi2NDF,"0,1,2,3,4,5",kTRUE); break;
786 // cf->AddVariable(AliDielectronVarManager::kTOFnSigmaEle,"-3,-2,2,3",kTRUE);
787 // cf->AddVariable(AliDielectronVarManager::kTOFPIDBit,"-.5,.5,1.5",kTRUE);
794 cf->AddVariable(AliDielectronVarManager::kRunNumber, GetRunNumbers() );
795 if(cutDefinition==kTOFTRD || cutDefinition==kGam0) cf->SetStepForMCtruth();
796 // if(cutDefinition!=kTOFTRD)
797 cf->SetStepsForMCtruthOnly();
798 // cf->SetStepsForBackground();
801 die->SetCFManagerPair(cf);
804 void AddMCSignals(AliDielectron *die){
805 //Do we have an MC handler?
806 //Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
809 AliDielectronSignalMC* inclusiveJpsi = new AliDielectronSignalMC("inclusiveJpsi","Inclusive J/psi");
810 inclusiveJpsi->SetLegPDGs(11,-11);
811 inclusiveJpsi->SetMotherPDGs(443,443);
812 inclusiveJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
813 inclusiveJpsi->SetFillPureMCStep(kTRUE);
814 inclusiveJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
815 inclusiveJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
816 die->AddSignalMC(inclusiveJpsi);
818 AliDielectronSignalMC* promptJpsi = new AliDielectronSignalMC("promptJpsi","Prompt J/psi"); // prompt J/psi (not from beauty decays)
819 promptJpsi->SetLegPDGs(11,-11);
820 promptJpsi->SetMotherPDGs(443,443);
821 promptJpsi->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons
822 promptJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
823 promptJpsi->SetFillPureMCStep(kTRUE);
824 promptJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
825 promptJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
826 promptJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
827 promptJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
828 die->AddSignalMC(promptJpsi);
830 AliDielectronSignalMC* beautyJpsi = new AliDielectronSignalMC("beautyJpsi","Beauty J/psi");
831 beautyJpsi->SetLegPDGs(11,-11);
832 beautyJpsi->SetMotherPDGs(443,443);
833 beautyJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
834 beautyJpsi->SetGrandMotherPDGs(500,500);
835 beautyJpsi->SetFillPureMCStep(kTRUE);
836 beautyJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
837 beautyJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
838 beautyJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
839 die->AddSignalMC(beautyJpsi);
841 AliDielectronSignalMC* directJpsi = new AliDielectronSignalMC("directJpsi","Direct J/psi"); // embedded J/psi
842 directJpsi->SetLegPDGs(11,-11);
843 directJpsi->SetMotherPDGs(443,443);
844 directJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
845 directJpsi->SetFillPureMCStep(kTRUE);
846 directJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
847 directJpsi->SetMotherSources(AliDielectronSignalMC::kDirect, AliDielectronSignalMC::kDirect);
848 directJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
849 directJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
850 die->AddSignalMC(directJpsi);
852 AliDielectronSignalMC* conversionElePairs = new AliDielectronSignalMC("conversionElePairs","conversion electron pairs"); // pairs made from conversion (may be also from 2 different conversions)
853 conversionElePairs->SetLegPDGs(11,-11);
854 conversionElePairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
855 conversionElePairs->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary);
856 conversionElePairs->SetMotherPDGs(22,22);
857 // die->AddSignalMC(conversionElePairs);
860 void SetEtaCorrection()
862 if (AliDielectronPID::GetEtaCorrFunction()) return;
864 TString etaMap="$TRAIN_ROOT/jpsi_JPSI/EtaCorrMaps.root";
865 TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
866 if (trainRoot.IsNull()) etaMap="$ALICE_ROOT/PWGDQ/dielectron/files/EtaCorrMaps.root";
867 if (gSystem->AccessPathName(gSystem->ExpandPathName(etaMap.Data()))){
868 Error("ConfigPbPb","Eta map not found: %s",etaMap.Data());
872 TFile f(etaMap.Data());
873 if (!f.IsOpen()) return;
874 TList *keys=f.GetListOfKeys();
876 for (Int_t i=0; i<keys->GetEntries(); ++i){
877 TString kName=keys->At(i)->GetName();
879 if (reg.MatchB(list)){
880 printf("Using Eta Correction Function: %s\n",kName.Data());
881 AliDielectronPID::SetEtaCorrFunction((TF1*)f.Get(kName.Data()));
886 TVectorD *GetRunNumbers() {
888 Double_t runLHC10h[] = { // all good runs based on RCT 29.Mai
889 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
892 Double_t runLHC11h[] = { // all good runs based on RCT 29.Mai
893 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
896 // selection via environement variable (works only for gsi trains)
899 if(list.Contains("LHC10h") || list.Contains("LHC11a10")) {
900 Int_t size = (int) (sizeof(runLHC10h)/sizeof(Double_t));
901 TVectorD *vec = new TVectorD(size+1);
903 (*vec)[size] = runLHC10h[0] + 1;
904 for (int i = 0; i < size; i++) {
905 (*vec)[i] = runLHC10h[size-1-i];
911 if( list.Contains("LHC11h") || list.Contains("LHC12a17") ) {
913 Int_t size = (int) (sizeof(runLHC11h)/sizeof(Double_t));
914 TVectorD *vec = new TVectorD(size+1);
916 (*vec)[size] = runLHC11h[0] + 1;
917 for (int i = 0; i < size; i++) {
918 (*vec)[i] = runLHC11h[size-1-i];