1 void InitHistograms(AliDielectron *die, Int_t cutDefinition);
2 void InitCF(AliDielectron* die, Int_t cutDefinition);
3 void InitHF(AliDielectron* die, Int_t cutDefinition);
5 void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition);
6 void SetupPairCuts(AliDielectron *die, Int_t cutDefinition);
8 void AddMCSignals(AliDielectron *die);
9 void SetEtaCorrection();
10 TVectorD *GetRunNumbers();
12 TString names=("TPC;TOF;TRD;TOFTRD;TOFTRD2D;rec;Gam0;Gam01;Gam05;Gam10;Gam15;Gam20;EtaGap01;EtaGap02;EtaGap03;EtaGap04;EtaGap05;SubLS;SubRndm");
13 enum { kTPC=0, kTOF, kTRD, kTOFTRD, kTOFTRD2D, krec,kGam0, kGam01, kGam05, kGam10, kGam15, kGam20, kEtaGap01, kEtaGap02, kEtaGap03, kEtaGap04, kEtaGap05, kSubLS, kSubRndm };
15 TObjArray *arrNames=names.Tokenize(";");
16 const Int_t nDie=arrNames->GetEntries();
19 Bool_t hasMC = kFALSE;
20 TString list = gSystem->Getenv("LIST");
23 AliDielectron* ConfigJpsi_jb_PbPb(Int_t cutDefinition, TString prod="")
26 // Setup the instance of AliDielectron
30 if( list.IsNull()) list=prod;
31 if( list.Contains("LHC10h") || list.Contains("LHC11h") ) hasMC=kFALSE;
32 if( list.Contains("LHC11a10") || list.Contains("LHC12a17") ) hasMC=kTRUE;
35 isESD=(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()->IsA()==AliESDInputHandler::Class());
37 // switch off some configurations
38 if(hasMC) { // MONTE CARLO
39 switch(cutDefinition) {
40 case kTPC: return 0x0;
41 case kTOF: return 0x0;
42 case kTRD: return 0x0;
43 case kTOFTRD: return 0x0;
44 case kTOFTRD2D: return 0x0;
45 case krec: return 0x0;
46 case kGam0: return 0x0;
47 case kGam01: return 0x0;
48 case kGam05: return 0x0;
49 case kGam10: return 0x0;
50 case kGam15: return 0x0;
51 case kGam20: return 0x0;
52 case kEtaGap01: return 0x0;
53 case kEtaGap02: return 0x0;
54 case kEtaGap03: return 0x0;
55 case kEtaGap04: return 0x0;
56 case kEtaGap05: return 0x0;
57 case kSubLS: return 0x0;
58 case kSubRndm: return 0x0;
60 } else { // COLLISION DATA
61 switch(cutDefinition) {
62 case kTPC: return 0x0;
63 // case kTOF: return 0x0;
64 case kTRD: return 0x0;
65 // case kTOFTRD: return 0x0;
66 // case kTOFTRD2D: return 0x0;
67 case krec: return 0x0;
68 case kGam0: return 0x0;
69 case kGam01: return 0x0;
70 case kGam05: return 0x0;
71 case kGam10: return 0x0;
72 case kGam15: return 0x0;
73 case kGam20: return 0x0;
74 case kEtaGap01: return 0x0;
75 case kEtaGap02: return 0x0;
76 case kEtaGap03: return 0x0;
77 case kEtaGap04: return 0x0;
78 case kEtaGap05: return 0x0;
79 case kSubLS: return 0x0;
80 case kSubRndm: return 0x0;
84 // create the actual framework object
85 TString name=Form("%02d",cutDefinition);
86 if (cutDefinition<arrNames->GetEntriesFast()){
87 name=arrNames->At(cutDefinition)->GetName();
89 AliDielectron *die = new AliDielectron(Form("%s",name.Data()), Form("Track cuts: %s",name.Data()));
92 printf(" Add %s %s config %s for %s \n",(isESD?"ESD":"AOD"),(hasMC?"MC":""),name.Data(),list.Data());
94 // Monte Carlo Signals and TRD efficiency tables
97 printf(" Add %d MC signals \n",die->GetMCSignals()->GetEntriesFast());
100 /* if (list.Contains("LHC11a") ) {
101 TString pidTab="$TRAIN_ROOT/util/dielectron/dielectron/TRDpidEff_eleProb07_TRDntr4_6.root";
102 TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
103 if (trainRoot.IsNull()) pidTab="$ALICE_ROOT/PWGDQ/dielectron/files/TRDpidEff_eleProb07_TRDntr4_6.root";
105 if (gSystem->AccessPathName(gSystem->ExpandPathName(pidTab.Data())))
106 Error("ConfigPbPb","PID table not found: %s",pidTab.Data());
108 die->SetTRDcorrectionFilename(pidTab.Data());
113 SetupTrackCuts(die,cutDefinition);
114 SetupPairCuts(die,cutDefinition);
117 InitHistograms(die,cutDefinition);
118 printf(" Add %d types and %03d histos to the manager \n",die->GetHistogramList()->GetEntries(),
119 0/*die->GetHistoManager()->GetList()->GetEntries()*/);
121 // CF container setup, switched off
122 if(cutDefinition < kEtaGap01 ||
123 cutDefinition == kSubRndm ) {
124 if(0) InitCF(die,cutDefinition);
125 if(0) printf(" Add %d pair, %d leg vars, %p steps and %p bins to the container \n",
126 die->GetCFManagerPair()->GetNvarsPair(),die->GetCFManagerPair()->GetNvarsLeg(),
127 die->GetCFManagerPair()->GetContainer(), die->GetCFManagerPair()->GetContainer() );
131 // if(cutDefinition < kEtaGap01 ) {
132 InitHF(die,cutDefinition);
138 printf(" Activate bgrd estimators: ME and ROT \n");
141 AliDielectronTrackRotator *rot=new AliDielectronTrackRotator;
142 rot->SetIterations(10);
143 rot->SetConeAnglePhi(TMath::Pi());
144 rot->SetStartAnglePhi(TMath::Pi());
145 // die->SetTrackRotator(rot);
148 AliDielectronMixingHandler *mix=new AliDielectronMixingHandler;
149 mix->AddVariable(AliDielectronVarManager::kZvPrim, 20,-10.,10.);
150 mix->AddVariable(AliDielectronVarManager::kCentrality, 8, 0.,80.);
151 mix->AddVariable(AliDielectronVarManager::kv0ACrpH2, 8, TMath::Pi()/-2., TMath::Pi()/2.);
152 mix->SetMixType(AliDielectronMixingHandler::kAll);
154 die->SetMixingHandler(mix);
156 // TPC event plane configurations
158 switch(cutDefinition) {
159 case kEtaGap01: gGap=0.1; break;
160 case kEtaGap02: gGap=0.2; break;
161 case kEtaGap03: gGap=0.3; break;
162 case kEtaGap04: gGap=0.4; break;
163 case kEtaGap05: gGap=0.5; break;
167 AliDielectronVarCuts *poi = new AliDielectronVarCuts("PoI","PoI");
168 poi->AddCut(AliDielectronVarManager::kM,2.92,3.20); // particles of interest, jpsi mass window
169 die->GetEventPlanePOIPreFilter().AddCuts(poi);
171 if(cutDefinition >= kEtaGap01 &&
172 cutDefinition < kSubLS ) {
173 AliDielectronVarCuts *etaGap = new AliDielectronVarCuts(AliDielectronVarManager::GetValueName(AliDielectronVarManager::kEta),"etaGap");
174 etaGap->AddCut(AliDielectronVarManager::kEta,-1*gGap,gGap,kTRUE);
175 die->GetEventPlanePreFilter().AddCuts(etaGap);
178 if(cutDefinition==kSubLS) die->SetLikeSignSubEvents();
179 die->SetPreFilterEventPlane();
182 // prefilter settings
183 //die->SetNoPairing();
184 //die->SetPreFilterAllSigns();
185 die->SetPreFilterUnlikeOnly();
187 // setup eta correction
188 // if(isESD && list.Contains("LHC10h")) SetEtaCorrection();
191 TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
192 if (!trainRoot.IsNull()) {
193 die->SetVZEROCalibrationFilename("$TRAIN_ROOT/util/dielectron/dielectron/VzeroCalibrationLHC10h.root");
194 die->SetVZERORecenteringFilename("$TRAIN_ROOT/util/dielectron/dielectron/VzeroRecenteringLHC10h.root");
200 //______________________________________________________________________________________
201 void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition)
204 // Setup the track cuts
208 AliDielectronCutGroup* cuts = new AliDielectronCutGroup("cuts","cuts",AliDielectronCutGroup::kCompAND);
209 die->GetTrackFilter().AddCuts(cuts);
211 // AOD track filter (needs to be first cut to speed up)
212 AliDielectronTrackCuts *trkFilter = new AliDielectronTrackCuts("TrkFilter","TrkFilter");
213 trkFilter->SetAODFilterBit(AliDielectronTrackCuts::kTPCqual);
214 // trkFilter->SetMinNCrossedRowsOverFindable(0.6);
215 if(!isESD) cuts->AddCut(trkFilter);
217 //Pt cut, should make execution a bit faster
218 AliDielectronVarCuts *pt = new AliDielectronVarCuts("PtCut","PtCut");
219 pt->AddCut(AliDielectronVarManager::kPt,1.1,1e30); //0.8
222 // track cuts ESD and AOD
223 AliDielectronVarCuts *varCuts = new AliDielectronVarCuts("VarCuts","VarCuts");
224 varCuts->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
225 varCuts->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
226 varCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9);
227 varCuts->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0);
228 varCuts->AddCut(AliDielectronVarManager::kNclsTPC, 70.0, 160.0);
229 varCuts->AddCut(AliDielectronVarManager::kKinkIndex0, 0.0);
230 if(cutDefinition==kTOF || cutDefinition==kTOFTRD || cutDefinition==kTOFTRD2D)
231 varCuts->AddCut(AliDielectronVarManager::kTOFbeta, 0.2, 0.9, kTRUE);
232 cuts->AddCut(varCuts);
234 AliDielectronTrackCuts *trkCuts = new AliDielectronTrackCuts("TrkCuts","TrkCuts");
235 // trkCuts->SetClusterRequirementITS(AliDielectronTrackCuts::kSPD,AliDielectronTrackCuts::kAny);
236 // trkCuts->SetClusterRequirementITS(AliDielectronTrackCuts::kSPD,AliDielectronTrackCuts::kFirst);
237 trkCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 15); // ITS-4 = 1+2+4+8
238 // trkCuts->SetMaxWaivedITSNcls(1);
239 trkCuts->SetRequireITSRefit(kTRUE);
240 trkCuts->SetRequireTPCRefit(kTRUE);
241 cuts->AddCut(trkCuts);
243 /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv PID CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
244 AliDielectronPID *pid = new AliDielectronPID("PID","PID");
246 ////////////////////////////////// DATA
248 pid->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-100.,4.0,0.,0.,kTRUE);
249 pid->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-100.,3.5,0.,0.,kTRUE);
251 if(cutDefinition==kTRD || cutDefinition==kTOFTRD)
252 pid->AddCut(AliDielectronPID::kTRDeleEff,AliPID::kElectron,.8,1.,3.5.,6.,kFALSE,
253 AliDielectronPID::kIfAvailable,AliDielectronVarManager::kTRDpidQuality);
255 if(cutDefinition==kTOFTRD2D)
256 pid->AddCut(AliDielectronPID::kTRDeleEff2D,AliPID::kElectron,.8,1.,3.5.,6.,kFALSE,
257 AliDielectronPID::kIfAvailable,AliDielectronVarManager::kTRDpidQuality);
260 ////////////////////////////////// MC
264 Double_t nSigmaPi = 3.5; Double_t nSigmaP = 3.5;
265 Double_t resolution=0.0549;
266 Double_t BBpro[5] = {0};
267 Double_t BBpio[5] = {0};
269 for(Int_t icent=0; icent<8; icent++) {
273 BBpro[0] = 0.031555; BBpro[1] = 26.0595; BBpro[2] = 3.02422e-11; BBpro[3] = 2.05594; BBpro[4] = 5.99848;
274 BBpio[0] = 0.0252122; BBpio[1] = 38.8991; BBpio[2] = 4.0901e-11; BBpio[3] = 5.27988; BBpio[4] = 4.3108;
277 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
278 BBpio[0] = 0.0252127; BBpio[1] = 33.8617; BBpio[2] = 3.56866e-11; BBpio[3] = 5.24831; BBpio[4] = 4.31093;
281 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
282 BBpio[0] = 0.0263205; BBpio[1] = 37.9307; BBpio[2] = 4.29724e-11; BBpio[3] = 5.74458; BBpio[4] = 4.32459;
285 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
286 BBpio[0] = 0.026294; BBpio[1] = 39.0346; BBpio[2] = 4.12261e-11; BBpio[3] = 5.28808; BBpio[4] = 4.31301;
289 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
290 BBpio[0] = 0.0263134; BBpio[1] = 38.2084; BBpio[2] = 3.75159e-11; BBpio[3] = 5.78125; BBpio[4] = 4.31363;
293 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
294 BBpio[0] = 0.0263134; BBpio[1] = 38.2084; BBpio[2] = 3.75159e-11; BBpio[3] = 5.78125; BBpio[4] = 4.31363;
297 BBpro[0] = 0.031555; BBpro[1] = 26.0595; BBpro[2] = 3.02422e-11; BBpro[3] = 2.05594; BBpro[4] = 5.99848;
298 BBpio[0] = 0.026302; BBpio[1] = 38.6888; BBpio[2] = 3.56792e-11; BBpio[3] = 5.2465; BBpio[4] = 4.31094;
301 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
302 BBpio[0] = 0.0263134; BBpio[1] = 38.2084; BBpio[2] = 3.75159e-11; BBpio[3] = 5.78125; BBpio[4] = 4.31363;
305 BBpro[0] = 0.0313438; BBpro[1] = 25.8666; BBpro[2] = 4.5457e-11; BBpro[3] = 2.07912; BBpro[4] = 5.99986;
306 BBpio[0] = 0.0252127; BBpio[1] = 33.8617; BBpio[2] = 3.56866e-11; BBpio[3] = 5.24831; BBpio[4] = 4.31093;
309 BBpro[0] = 0.0319126; BBpro[1] = 36.8784; BBpro[2] = 3.4274e-11; BBpro[3] = 3.2431; BBpro[4] = 5.93388;
310 BBpio[0] = 0.027079; BBpio[1] = 67.5936; BBpio[2] = 9.72548e-11; BBpio[3] = 9.61382; BBpio[4] = 5.99372;
315 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.);
317 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.);
320 if (list.Contains("LHC11a10b")) {
321 printf(" LHC11a10b parameters\n");
322 ffPro->SetParameters(BBpro[0],BBpro[1],BBpro[2],BBpro[3],BBpro[4]);
323 ffPio->SetParameters(BBpio[0],BBpio[1],BBpio[2],BBpio[3],BBpio[4]);
326 pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,ffPro,10,((double)icent)*10.,((double)icent+1)*10,
327 kFALSE,AliDielectronPID::kRequire,AliDielectronVarManager::kCentrality);
329 pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,ffPio,10,((double)icent)*10.,((double)icent+1)*10,
330 kFALSE,AliDielectronPID::kRequire,AliDielectronVarManager::kCentrality);
334 // shifts for the nSigma electrons
335 TGraph* nSigmaCorrection = new TGraph();
337 if (list.Contains("LHC11a10b")) {
338 nSigmaCorrection->SetPoint(0, 137161., -0.50-(0.28));
339 nSigmaCorrection->SetPoint(1, 139510., -0.50-(0.28));
340 pid->SetCorrGraph(nSigmaCorrection);
345 ////////////////////////////////// DATA + MC
346 // pid cuts TPC + TOF & TRD
347 pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-4.,4.);
349 if(cutDefinition==kTOF || cutDefinition==kTOFTRD || cutDefinition==kTOFTRD2D)
350 pid->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,3.,0.,0.,kFALSE,AliDielectronPID::kIfAvailable);
352 if(cutDefinition!=krec) cuts->AddCut(pid);
353 /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PID CUTS ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
356 // exclude conversion electrons selected by the tender
357 AliDielectronTrackCuts *noconv=new AliDielectronTrackCuts("noConv","noConv");
358 noconv->SetV0DaughterCut(AliPID::kElectron,kTRUE);
359 cuts->AddCut(noconv);
363 //______________________________________________________________________________________
364 void SetupPairCuts(AliDielectron *die, Int_t cutDefinition)
367 // Setup the pair cuts
370 // conversion rejection
372 switch(cutDefinition) {
373 case kTPC: gCut=0.05; break;
374 case krec: gCut=0.05; break;
375 case kGam10: gCut=0.1; break;
376 case kGam15: gCut=0.15; break;
377 case kGam20: gCut=0.2; break;
378 case kGam05: gCut=0.05; break;
379 case kGam01: gCut=0.01; break;
380 case kGam0: gCut=0.0; break;
381 default: gCut=0.05; // default
384 AliDielectronVarCuts *gammaCuts = new AliDielectronVarCuts("GammaCuts","GammaCuts");
385 // gammaCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.1, kTRUE);
386 // gammaCuts->AddCut(AliDielectronVarManager::kLegDist, 0.0, 0.25, kTRUE);
387 // gammaCuts->AddCut(AliDielectronVarManager::kR, 3.0, 90.0, kTRUE);
388 // gammaCuts->AddCut(AliDielectronVarManager::kPsiPair, 0.0, 0.05, kTRUE);
389 // gammaCuts->AddCut(AliDielectronVarManager::kChi2NDF, 0.0, 10.0, kTRUE);
390 gammaCuts->AddCut(AliDielectronVarManager::kM, 0.0, gCut);
391 die->GetPairPreFilter().AddCuts(gammaCuts);
394 // rapidity selection
395 // AliDielectronVarCuts *rapCut=new AliDielectronVarCuts("|Y|<.9","|Y|<.9");
396 // rapCut->AddCut(AliDielectronVarManager::kY,-0.9,0.9);
397 // die->GetPairFilter().AddCuts(rapCut);
401 //______________________________________________________________________________________
402 void InitHistograms(AliDielectron *die, Int_t cutDefinition)
405 // Initialise the histograms
408 // booleans for histo selection
409 Bool_t bHistEvts = kFALSE, bHistPair = kFALSE, bHistPairME = kFALSE, bHistFlow = kFALSE, bHistFlowQA=kFALSE;
410 switch (cutDefinition) {
412 case kTOF: bHistEvts=kTRUE; bHistFlow=kTRUE; bHistPair=kTRUE; bHistPairME=kTRUE; break;
415 case kTOFTRD2D: bHistFlow=kTRUE; bHistPair=kTRUE; break;
426 case kSubRndm: bHistFlow=kTRUE; bHistFlowQA=kTRUE; break;
427 case kSubLS: bHistFlow=kTRUE; bHistFlowQA=kTRUE; bHistEvts=kTRUE; break;
437 //Setup histogram Manager
438 AliDielectronHistos *histos=new AliDielectronHistos(die->GetName(),die->GetTitle());
440 //add histograms to event class
441 histos->AddClass("Event");
442 histos->UserHistogram("Event","Centrality","Centrality;centrality (%);events",
443 "0.,5.,10.,20.,40.,50.,60.,80.",
444 AliDielectronVarManager::kCentrality);
446 ////// EVENT HISTOS /////
448 histos->UserHistogram("Event","RunNumber","Events per run;run;events",
450 AliDielectronVarManager::kRunNumber);
451 histos->UserHistogram("Event","VtxZ","Vertex Z;z (cm)", 300,-15.,15.,
452 AliDielectronVarManager::kZvPrim);
453 histos->UserHistogram("Event","Multiplicity","Multiplicity V0;Multiplicity V0;events", 500,0.,25000.,
454 AliDielectronVarManager::kMultV0);
455 histos->UserHistogram("Event","Cent_Mult","Centrality vs. Multiplicity;centrality (%);Multiplicity V0",
456 10,0.,100., 500,0.,25000.,
457 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kMultV0);
458 histos->UserProfile("Event","Cent_Nacc", "accepted tracks;centrality (%)",
459 AliDielectronVarManager::kNacc,
460 "0.,5.,10.,20.,40.,50.,60.,80.,100.",
461 AliDielectronVarManager::kCentrality);
462 histos->UserProfile("Event","Cent_NVtxContrib", "number of vertex contributors;centrality (%)",
463 AliDielectronVarManager::kNVtxContrib,
464 "0.,5.,10.,20.,40.,50.,60.,80.,100.",
465 AliDielectronVarManager::kCentrality);
472 // RP angles versus centrality
473 histos->UserHistogram("Event","Cent_TPCrpH2","TPC RP;centrality (%);#Psi^{TPC} (rad.)",
474 10,0.,100.,100,-2.,2.,
475 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCrpH2);
476 histos->UserHistogram("Event","Cent_TPCsub1rpH2","TPC-1 RP;centrality (%);#Psi^{sub1} (rad.)",
477 10,0.,100.,100,-2.,2.,
478 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsub1rpH2);
479 histos->UserHistogram("Event","Cent_TPCsub2rpH2","TPC-2 RP;centrality (%);#Psi^{sub2} (rad.)",
480 10,0.,100.,100,-2.,2.,
481 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsub2rpH2);
483 histos->UserHistogram("Event","Cent_v0ACrpH2","VZERO-AC RP;centrality (%);#Psi_{2}^{V0AC} (rad.)",
484 10,0.,100.,100,-2.0,2.0,
485 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0ACrpH2);
486 histos->UserHistogram("Event","Cent_v0ArpH2","VZERO-A RP;centrality (%);#Psi_{2}^{V0A} (rad.)",
487 10,0.,100.,100,-2.0,2.0,
488 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0ArpH2);
489 histos->UserHistogram("Event","Cent_v0CrpH2","VZERO-C RP;centrality (%);#Psi_{2}^{V0C} (rad.)",
490 10,0.,100.,100,-2.0,2.0,
491 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0CrpH2);
493 histos->UserHistogram("Event","Cent_v0A0rpH2","VZERO-A RP;centrality (%);#Psi_{2}^{V0A0} (rad.)",
494 10,0.,100.,100,-2.0,2.0,
495 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0A0rpH2);
496 histos->UserHistogram("Event","Cent_v0A3rpH2","VZERO-A RP;centrality (%);#Psi_{2}^{V0A3} (rad.)",
497 10,0.,100.,100,-2.0,2.0,
498 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0A3rpH2);
499 histos->UserHistogram("Event","Cent_v0C0rpH2","VZERO-C RP;centrality (%);#Psi_{2}^{V0C0} (rad.)",
500 10,0.,100.,100,-2.0,2.0,
501 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0C0rpH2);
502 histos->UserHistogram("Event","Cent_v0C3rpH2","VZERO-C RP;centrality (%);#Psi_{2}^{V0C3} (rad.)",
503 10,0.,100.,100,-2.0,2.0,
504 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0C3rpH2);
509 histos->UserHistogram("Event","TPCxH2","TPC Qx component;TPCxH2",
511 AliDielectronVarManager::kTPCxH2);
512 histos->UserHistogram("Event","TPCyH2","TPC Qy component;TPCyH2",
514 AliDielectronVarManager::kTPCyH2);
515 histos->UserHistogram("Event","TPCrpH2","TPC reaction plane; #Psi^{TPC}",
517 AliDielectronVarManager::kTPCrpH2);
518 histos->UserHistogram("Event","TPCsub1rpH2","TPC reaction plane sub1; #Psi^{sub1}",
520 AliDielectronVarManager::kTPCsub1rpH2);
521 histos->UserHistogram("Event","TPCsub2rpH2","TPC reaction plane sub2; #Psi^{sub2}",
523 AliDielectronVarManager::kTPCsub2rpH2);
524 histos->UserHistogram("Event","TPCsub12DiffH2","TPC reaction plane diff; cos(2(#Psi^{sub1}-#Psi^{sub2}))",
526 AliDielectronVarManager::kTPCsub12DiffH2);
527 /* // uncorrected eventplane
528 histos->UserHistogram("Event","TPCxH2uc","TPC Qx component;TPCxH2uc",
530 AliDielectronVarManager::kTPCxH2uc);
531 histos->UserHistogram("Event","TPCyH2uc","TPC Qy component;TPCyH2uc",
533 AliDielectronVarManager::kTPCyH2uc);
534 histos->UserHistogram("Event","TPCrpH2uc","TPC reaction plane;TPCrpH2uc",
536 AliDielectronVarManager::kTPCrpH2uc);
537 histos->UserHistogram("Event","TPCsub1xH2uc","TPC Qx component sub1;TPCsub1xH2uc",
539 AliDielectronVarManager::kTPCsub1xH2uc);
540 histos->UserHistogram("Event","TPCsub1yH2uc","TPC Qy component sub1;TPCsub1yH2uc",
542 AliDielectronVarManager::kTPCsub1yH2uc);
543 histos->UserHistogram("Event","TPCsub1rpH2uc","TPC reaction plane sub1;TPCsub1rpH2uc",
545 AliDielectronVarManager::kTPCsub1rpH2uc);
546 histos->UserHistogram("Event","TPCsub2xH2uc","TPC Qx component sub2;TPCsub2xH2uc",
548 AliDielectronVarManager::kTPCsub2xH2uc);
549 histos->UserHistogram("Event","TPCsub2yH2uc","TPC Qy component sub2;TPCsub2yH2uc",
551 AliDielectronVarManager::kTPCsub2yH2uc);
552 histos->UserHistogram("Event","TPCsub2rpH2uc","TPC reaction plane sub2;TPCsub2rpH2uc",
554 AliDielectronVarManager::kTPCsub2rpH2uc);
555 histos->UserHistogram("Event","TPCsub12DiffH2uc","TPC reaction plane difference;TPCsub12DiffH2uc",
557 AliDielectronVarManager::kTPCsub12DiffH2uc);
560 // EP resolution calculation
561 histos->UserHistogram("Event","Cent_v0ATPCDiffH2","VZERO-A TPC diff;centrality (%);cos(2(#Psi^{V0A}-#Psi^{TPC}))",
562 10,0.,100.,300,-1.0,1.0,
563 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0ATPCDiffH2);
564 histos->UserHistogram("Event","Cent_v0CTPCDiffH2","VZERO-C TPC diff;centrality (%);cos(2(#Psi^{V0C}-#Psi^{TPC}))",
565 10,0.,100.,300,-1.0,1.0,
566 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0CTPCDiffH2);
567 histos->UserHistogram("Event","Cent_v0Av0CDiffH2","VZERO-A VZERO-C diff;centrality (%);cos(2(#Psi^{V0A}-#Psi^{V0C}))",
568 10,0.,100.,300,-1.0,1.0,
569 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0Av0CDiffH2);
570 histos->UserHistogram("Event","Cent_TPCsub12DiffH2","TPC-sub1 TPC-sub2 diff;centrality (%);cos(2(#Psi^{sub1}-#Psi^{sub2}))",
571 10,0.,100.,300,-1.0,1.0,
572 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsub12DiffH2);
574 histos->UserHistogram("Event","Cent_TPCsub12DiffH2Sin","TPC-sub1 TPC-sub2 diff;centrality (%);sin(2(#Psi^{sub1}-#Psi^{sub2}))",
575 10,0.,100.,300,-1.0,1.0,
576 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsub12DiffH2Sin);
578 histos->UserProfile("Pair","TPCxH2-Cent-RunNumber", ";centrality (%);run;#LTQ_{x}#GT",
579 AliDielectronVarManager::kTPCxH2,
580 AliDielectronHelper::MakeLinBinning(10, 0.,100.), GetRunNumbers(),
581 AliDielectronVarManager::kCentrality, AliDielectronVarManager::kRunNumber);
582 histos->UserProfile("Pair","TPCyH2-Cent-RunNumber", ";centrality (%);run;#LTQ_{x}#GT",
583 AliDielectronVarManager::kTPCyH2,
584 AliDielectronHelper::MakeLinBinning(10, 0.,100.), GetRunNumbers(),
585 AliDielectronVarManager::kCentrality, AliDielectronVarManager::kRunNumber);
590 //Initialise histogram classes
591 histos->SetReservedWords("Track;Pair");
594 // to fill also mixed event histograms loop until 7 or 10
595 for (Int_t i=0; i<(bHistPairME ? 8 : 3); ++i){
596 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
598 //legs from pair (fill SE)
599 for (Int_t i=0; i<3; ++i){
600 histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i)));
603 //to fill also track info from 2nd event loop until 2
604 for (Int_t i=0; i<2; ++i){
605 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
608 // histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
609 // histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
612 histos->UserHistogram("Track","ImpactParXY",";dXY (cm);#tracks", 500,-1.,1.,
613 AliDielectronVarManager::kImpactParXY);
614 histos->UserHistogram("Track","ImpactParZ",";dZ (cm);#tracks", 600,-3.,3.,
615 AliDielectronVarManager::kImpactParZ);
618 histos->UserHistogram("Track","Pt",";p_{T} (GeV/c);#tracks", 400,0,20.,
619 AliDielectronVarManager::kPt);
620 histos->UserHistogram("Track","Eta_Phi",";#eta;#varphi;#tracks", 200,-1,1,200,0,6.285,
621 AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
624 histos->UserHistogram("Track","TPCnCls",";N_{cls}^{TPC};#tracks", 160,-0.5,159.5,
625 AliDielectronVarManager::kNclsTPC);
626 histos->UserHistogram("Track","TPCsignalN",";N_{cls}^{TPC};#tracks", 160,-0.5,159.5,
627 AliDielectronVarManager::kTPCsignalN);
628 histos->UserHistogram("Track","NclFr",";N_{max.cls}^{TPC};#tracks", 160,-0.5,159.5,
629 AliDielectronVarManager::kNFclsTPCr);
630 histos->UserHistogram("Track","Ncl_NclFr",";N_{cls}^{TPC};N_{max.cls}^{TPC};#tracks",
631 160,-0.5,159.5,160,-0.5,159.5,
632 AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr);
635 histos->UserHistogram("Track","NtrklTRD",";N_{trkl}^{TRD};#tracks",
637 AliDielectronVarManager::kTRDpidQuality);
640 histos->UserHistogram("Track","dEdx_P",";p (GeV/c);TPC signal (arb units);#tracks",
641 400,0.2,20.,200,0.,200.,
642 AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
643 histos->UserHistogram("Track","TPCnSigmaEle_P","p (GeV/c);n#sigma_{ele}^{TPC};#tracks",
644 400,0.2,20.,200,-10.,10.,
645 AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
646 histos->UserHistogram("Track","TOFbeta_P",";p (GeV/c);#beta;#tracks",
647 250,0.0,5.0,300,0.,1.2,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFbeta,kTRUE);
649 ///// add histograms to Pair classes /////
650 histos->UserHistogram("Pair","InvMass",";m_{ee} (GeV/c^{2});#pairs",
651 300,.0,300*0.04, AliDielectronVarManager::kM); // 40MeV bins, 12GeV/c2
652 histos->UserHistogram("Pair","Rapidity",";y;#pairs",
653 100,-1.,1., AliDielectronVarManager::kY);
654 histos->UserHistogram("Pair","Pt",";p_{T} (GeV/c);#pairs",
655 400,0,20., AliDielectronVarManager::kPt);
656 histos->UserHistogram("Pair","OpeningAngle","opening angle (rad.);#pairs",
657 100,0.,3.15, AliDielectronVarManager::kOpeningAngle);
658 histos->UserHistogram("Pair","Chi2NDF",";#chi^{2}/NDF;#pairs",
659 100,0.,20, AliDielectronVarManager::kChi2NDF);
660 histos->UserHistogram("Pair","PsiPair",";#psi;#pairs",
661 100,0.,3.15, AliDielectronVarManager::kPsiPair);
662 histos->UserHistogram("Pair","R",";r (cm)",
663 200,0.,100., AliDielectronVarManager::kR);
664 histos->UserHistogram("Pair","LegDist",";dca (cm)",
665 50,0.,5., AliDielectronVarManager::kLegDist);
666 histos->UserHistogram("Pair","LegDistXY",";dca_{xy} (cm)",
667 50,0.,5., AliDielectronVarManager::kLegDistXY);
669 //// FLOW results use tprofiles
671 histos->UserProfile("Pair","M_Cent_Pt_v0ACrpH2FlowV2",
672 "cos(2(#varphi-#Psi^{V0AC}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)",
673 AliDielectronVarManager::kv0ACrpH2FlowV2,
674 125,0.,125*.04, 10, 0.,100., 200,0.,100.,
675 AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt);
676 histos->UserProfile("Pair","M_Cent_Pt_v0ArpH2FlowV2",
677 "cos(2(#varphi-#Psi^{V0A}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)",
678 AliDielectronVarManager::kv0ArpH2FlowV2,
679 125,0.,125*.04, 10, 0.,100., 200,0.,100.,
680 AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt);
681 histos->UserProfile("Pair","M_Cent_Pt_v0CrpH2FlowV2",
682 "cos(2(#varphi-#Psi^{V0C}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)",
683 AliDielectronVarManager::kv0CrpH2FlowV2,
684 125,0.,125*.04, 10, 0.,100., 200,0.,100.,
685 AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt);
690 ////// MONTE CARLO //////
692 if(cutDefinition == kTOFTRD && hasMC) {
693 histos->AddClass("MCEvent");
694 histos->UserHistogram("MCEvent","Cent_NJPsis","Centrality vs. generated incl. J/#psi per event;centrality (%);N_{J/#psi}",
695 10,0.,100., 21,-0.5,20.5,
696 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kNumberOfJPsis);
700 histos->UserHistogram("Track","TRDprobEle",";P_{ele}^{TRD};#tracks",
701 100,0.,1., AliDielectronVarManager::kTRDprobEle);
703 die->SetHistogramManager(histos);
706 void InitHF(AliDielectron* die, Int_t cutDefinition)
709 // Setup the HF arrays
712 AliDielectronHF *hf=new AliDielectronHF(die->GetName(),die->GetTitle());
713 // if(hasMC) hf->SetStepForMCGenerated();
714 hf->SetPairTypes(AliDielectronHF::kAll);
715 hf->SetVariable(AliDielectronVarManager::kM, 125, 0.0, 0.04*125);
717 hf->AddCutVariable(AliDielectronVarManager::kCentrality, "0.,5.,10.,20.,40.,50.,60.,80." );
718 hf->AddCutVariable(AliDielectronVarManager::kPt, "0.,2.5,5.,100." );
719 hf->AddCutVariable(AliDielectronVarManager::kDeltaPhiv0ArpH2, 8,-1.*TMath::Pi(),TMath::Pi());
720 // hf->AddCutVariable(AliDielectronVarManager::kY, 1, -0.9, 0.9 );
721 // hf->AddCutVariable(AliDielectronVarManager::kPt, "0.8, 1.0, 1.1, 1.2, 1.5, 100.0", kTRUE, AliDielectronHF::kBinToMax);
722 // hf->AddCutVariable(AliDielectronVarManager::kNclsTPC, "70,90,100,120,160", kTRUE, AliDielectronHF::kBinToMax);
723 // hf->AddCutVariable(AliDielectronVarManager::kTPCnSigmaEle,"-4,-3,-2.5,-2,2,2.5,3,4", kTRUE, AliDielectronHF::kSymBin);
724 //hf->AddCutVariable(AliDielectronVarManager::kTPCnSigmaPio,"3.,3.5,4.,100.", kTRUE, AliDielectronHF::kBinToMax);
725 //hf->AddCutVariable(AliDielectronVarManager::kITSLayerFirstCls,4,0.,4., kFALSE, kTRUE, AliDielectronHF::kBinFromMin);
726 //hf->AddCutVariable(AliDielectronVarManager::kNclsITS, 5,2.,7., kFALSE, kTRUE, AliDielectronHF::kBinToMax);
727 //hf->AddCutVariable(AliDielectronVarManager::kRunNumber, GetRunNumbers());
729 die->SetHistogramArray(hf);
732 void InitCF(AliDielectron* die, Int_t cutDefinition)
735 // Setup the CF Manager if needed
738 AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
741 cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,5.,10.,20.,40.,50.,60.,80.");
742 // if(!hasMC) cf->AddVariable(AliDielectronVarManager::kZvPrim,20, -10., 10.);
743 if(hasMC) cf->AddVariable(AliDielectronVarManager::kNacc,20,0.,3000.0);
744 if(hasMC) cf->AddVariable(AliDielectronVarManager::kNVtxContrib,20,0.,4000.);
745 if(hasMC) cf->AddVariable(AliDielectronVarManager::kRunNumber, GetRunNumbers() );
748 // cf->AddVariable(AliDielectronVarManager::kY,"-0.8,0.8");
749 cf->AddVariable(AliDielectronVarManager::kM,125,0.,125*.04); //40Mev Steps
750 cf->AddVariable(AliDielectronVarManager::kPairType,11,0,11);
751 cf->AddVariable(AliDielectronVarManager::kPt,"0., 1., 2.5, 5., 100.0");
752 if(hasMC) cf->AddVariable(AliDielectronVarManager::kTRDpidEffPair,101,0.0,1.01);
753 // if(hasMC) cf->AddVariable(AliDielectronVarManager::kThetaCS,15,-1.,1.);
756 cf->AddVariable(AliDielectronVarManager::kDeltaPhiv0ArpH2,4,-1.*TMath::Pi(),TMath::Pi());
757 cf->AddVariable(AliDielectronVarManager::kDeltaPhiv0CrpH2,4,-1.*TMath::Pi(),TMath::Pi());
760 cf->AddVariable(AliDielectronVarManager::kPt,"0.8, 1.0, 1.1, 1.2, 1.5, 100.0",kTRUE);
761 if(hasMC) cf->AddVariable(AliDielectronVarManager::kEta,"-0.9,0.9",kTRUE);
762 // cf->AddVariable(AliDielectronVarManager::kITSLayerFirstCls,7,-1.5,5.5,kTRUE);
763 // cf->AddVariable(AliDielectronVarManager::kNclsITS,"1,2,3,4,5,6",kTRUE);
764 cf->AddVariable(AliDielectronVarManager::kTPCnSigmaEle,"-3,-2.5,-2,2,2.5,3",kTRUE);
765 cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPio,"2.5,3.0,3.5,4.0,4.5,100",kTRUE);
766 cf->AddVariable(AliDielectronVarManager::kNclsTPC,"70, 90, 100, 120, 160",kTRUE);
767 // cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPro,"3.5,4.0,4.5,5.0,100",kTRUE);
768 // cf->AddVariable(AliDielectronVarManager::kTOFnSigmaEle,"-3,-2,2,3",kTRUE); break;
769 // cf->AddVariable(AliDielectronVarManager::kTRDpidQuality,"3.5, 4.5, 5.5, 6.5",kTRUE);
770 // if(!hasMC && isESD) cf->AddVariable(AliDielectronVarManager::kTRDchi2,"-1.,0.,2.,4.",kTRUE);
774 if(cutDefinition==kTOFTRD) cf->SetStepForMCtruth();
775 cf->SetStepsForMCtruthOnly();
776 // cf->SetStepsForBackground();
779 die->SetCFManagerPair(cf);
782 void AddMCSignals(AliDielectron *die){
783 //Do we have an MC handler?
786 AliDielectronSignalMC* inclusiveJpsi = new AliDielectronSignalMC("inclusiveJpsi","Inclusive J/psi");
787 inclusiveJpsi->SetLegPDGs(11,-11);
788 inclusiveJpsi->SetMotherPDGs(443,443);
789 inclusiveJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
790 inclusiveJpsi->SetFillPureMCStep(kTRUE);
791 inclusiveJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
792 inclusiveJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
793 die->AddSignalMC(inclusiveJpsi);
795 AliDielectronSignalMC* promptJpsi = new AliDielectronSignalMC("promptJpsi","Prompt J/psi"); // prompt J/psi (not from beauty decays)
796 promptJpsi->SetLegPDGs(11,-11);
797 promptJpsi->SetMotherPDGs(443,443);
798 promptJpsi->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons
799 promptJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
800 promptJpsi->SetFillPureMCStep(kTRUE);
801 promptJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
802 promptJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
803 promptJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
804 promptJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
805 die->AddSignalMC(promptJpsi);
807 AliDielectronSignalMC* beautyJpsi = new AliDielectronSignalMC("beautyJpsi","Beauty J/psi");
808 beautyJpsi->SetLegPDGs(11,-11);
809 beautyJpsi->SetMotherPDGs(443,443);
810 beautyJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
811 beautyJpsi->SetGrandMotherPDGs(500,500);
812 beautyJpsi->SetFillPureMCStep(kTRUE);
813 beautyJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
814 beautyJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
815 beautyJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
816 die->AddSignalMC(beautyJpsi);
818 AliDielectronSignalMC* directJpsi = new AliDielectronSignalMC("directJpsi","Direct J/psi"); // embedded J/psi
819 directJpsi->SetLegPDGs(11,-11);
820 directJpsi->SetMotherPDGs(443,443);
821 directJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
822 directJpsi->SetFillPureMCStep(kTRUE);
823 directJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
824 directJpsi->SetMotherSources(AliDielectronSignalMC::kDirect, AliDielectronSignalMC::kDirect);
825 directJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
826 directJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
827 die->AddSignalMC(directJpsi);
829 AliDielectronSignalMC* conversionElePairs = new AliDielectronSignalMC("conversionElePairs","conversion electron pairs"); // pairs made from conversion (may be also from 2 different conversions)
830 conversionElePairs->SetLegPDGs(11,-11);
831 conversionElePairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
832 conversionElePairs->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary);
833 conversionElePairs->SetMotherPDGs(22,22);
834 // die->AddSignalMC(conversionElePairs);
837 void SetEtaCorrection()
839 if (AliDielectronPID::GetEtaCorrFunction()) return;
841 TString etaMap="$TRAIN_ROOT/jpsi_JPSI/EtaCorrMaps.root";
842 TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
843 if (trainRoot.IsNull()) etaMap="$ALICE_ROOT/PWGDQ/dielectron/files/EtaCorrMaps.root";
844 if (gSystem->AccessPathName(gSystem->ExpandPathName(etaMap.Data()))){
845 Error("ConfigPbPb","Eta map not found: %s",etaMap.Data());
849 TFile f(etaMap.Data());
850 if (!f.IsOpen()) return;
851 TList *keys=f.GetListOfKeys();
853 for (Int_t i=0; i<keys->GetEntries(); ++i){
854 TString kName=keys->At(i)->GetName();
856 if (reg.MatchB(list)){
857 printf(" Using Eta Correction Function: %s\n",kName.Data());
858 AliDielectronPID::SetEtaCorrFunction((TF1*)f.Get(kName.Data()));
863 TVectorD *GetRunNumbers() {
865 Double_t runLHC10h[] = { // all good runs based on RCT 29.Mai
866 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
869 Double_t runLHC11h[] = { // all good runs based on RCT 29.Mai
870 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, 169590, 169588, 169587, 169586, 169557, 169555, 169554, 169553, 169550, 169515, 169512, 169506, 169504, 169498, 169475, 169420, 169419, 169418, 169417, 169415, 169411, 169238, 169167, 169160, 169156, 169148, 169145, 169144, 169138, 169099, 169094, 169091, 169045, 169044, 169040, 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
873 // selection via environement variable (works only for gsi trains)
876 if(list.Contains("LHC10h") || list.Contains("LHC11a10")) {
877 Int_t size = (int) (sizeof(runLHC10h)/sizeof(Double_t));
878 TVectorD *vec = new TVectorD(size+1);
880 (*vec)[size] = runLHC10h[0] + 1;
881 for (int i = 0; i < size; i++) {
882 (*vec)[i] = runLHC10h[size-1-i];
888 if( list.Contains("LHC11h") || list.Contains("LHC12a17") ) {
890 Int_t size = (int) (sizeof(runLHC11h)/sizeof(Double_t));
891 TVectorD *vec = new TVectorD(size+1);
893 (*vec)[size] = runLHC11h[0] + 1;
894 for (int i = 0; i < size; i++) {
895 (*vec)[i] = runLHC11h[size-1-i];
901 TVectorD *vec = new TVectorD(2);