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();
18 Bool_t hasMC = kFALSE;
19 TString list = gSystem->Getenv("LIST");
22 AliDielectron* ConfigJpsi_jb_PbPb(Int_t cutDefinition, TString prod="")
25 // Setup the instance of AliDielectron
29 if( list.IsNull()) list=prod;
30 if( list.Contains("LHC10h") || list.Contains("LHC11h") ) hasMC=kFALSE;
31 if( list.Contains("LHC11a10") || list.Contains("LHC12a17") ) hasMC=kTRUE;
34 isESD=(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()->IsA()==AliESDInputHandler::Class());
36 // switch off some configurations
37 switch(cutDefinition) {
45 if(!hasMC) return 0x0;
67 if( hasMC) return 0x0;
71 // create the actual framework object
72 TString name=Form("%02d",cutDefinition);
73 if (cutDefinition<arrNames->GetEntriesFast()){
74 name=arrNames->At(cutDefinition)->GetName();
76 AliDielectron *die = new AliDielectron(Form("%s",name.Data()), Form("Track cuts: %s",name.Data()));
79 printf(" Add %s %s config %s for %s \n",(isESD?"ESD":"AOD"),(hasMC?"MC":""),name.Data(),list.Data());
81 // Monte Carlo Signals and TRD efficiency tables
84 printf(" Add %d MC signals \n",die->GetMCSignals()->GetEntriesFast());
87 /* if (list.Contains("LHC11a") ) {
88 TString pidTab="$TRAIN_ROOT/util/dielectron/dielectron/TRDpidEff_eleProb07_TRDntr4_6.root";
89 TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
90 if (trainRoot.IsNull()) pidTab="$ALICE_ROOT/PWGDQ/dielectron/files/TRDpidEff_eleProb07_TRDntr4_6.root";
92 if (gSystem->AccessPathName(gSystem->ExpandPathName(pidTab.Data())))
93 Error("ConfigPbPb","PID table not found: %s",pidTab.Data());
95 die->SetTRDcorrectionFilename(pidTab.Data());
100 SetupTrackCuts(die,cutDefinition);
101 SetupPairCuts(die,cutDefinition);
104 if(cutDefinition == kTOFTRD ||
105 cutDefinition == kGam0 ||
106 cutDefinition == kTOFTRD2 ||
107 cutDefinition >= kEtaGap01 ) {
108 InitHistograms(die,cutDefinition);
109 printf(" Add %d types and %03d histos to the manager \n",die->GetHistogramList()->GetEntries(),
110 0/*die->GetHistoManager()->GetList()->GetEntries()*/);
113 // CF container setup
114 if(cutDefinition < kEtaGap01 ||
115 cutDefinition == kSubRndm ) {
116 InitCF(die,cutDefinition);
117 printf(" Add %d pair, %d leg vars, %p steps and %p bins to the container \n",
118 die->GetCFManagerPair()->GetNvarsPair(),die->GetCFManagerPair()->GetNvarsLeg(),
119 die->GetCFManagerPair()->GetContainer(), die->GetCFManagerPair()->GetContainer() );
124 if(cutDefinition == kTOFTRD) {
125 printf(" Activate bgrd estimators: ME and ROT \n");
128 AliDielectronTrackRotator *rot=new AliDielectronTrackRotator;
129 rot->SetIterations(10);
130 rot->SetConeAnglePhi(TMath::Pi());
131 rot->SetStartAnglePhi(TMath::Pi());
132 die->SetTrackRotator(rot);
134 AliDielectronMixingHandler *mix=new AliDielectronMixingHandler;
135 mix->AddVariable(AliDielectronVarManager::kZvPrim,10,-10.,10.);
136 mix->AddVariable(AliDielectronVarManager::kCentrality,16,0.,80.);
137 mix->SetMixType(AliDielectronMixingHandler::kAll);
139 die->SetMixingHandler(mix);
143 // TPC event plane configurations
145 switch(cutDefinition) {
146 case kEtaGap01: gGap=0.1; break;
147 case kEtaGap02: gGap=0.2; break;
148 case kEtaGap03: gGap=0.3; break;
149 case kEtaGap04: gGap=0.4; break;
150 case kEtaGap05: gGap=0.5; break;
154 AliDielectronVarCuts *poi = new AliDielectronVarCuts("PoI","PoI");
155 poi->AddCut(AliDielectronVarManager::kM,2.92,3.20); // particles of interest, jpsi mass window
156 die->GetEventPlanePOIPreFilter().AddCuts(poi);
158 if(cutDefinition >= kEtaGap01 &&
159 cutDefinition < kSubLS ) {
160 AliDielectronVarCuts *etaGap = new AliDielectronVarCuts(AliDielectronVarManager::GetValueName(AliDielectronVarManager::kEta),"etaGap");
161 etaGap->AddCut(AliDielectronVarManager::kEta,-1*gGap,gGap,kTRUE);
162 die->GetEventPlanePreFilter().AddCuts(etaGap);
165 if(cutDefinition==kSubLS) die->SetLikeSignSubEvents();
166 die->SetPreFilterEventPlane();
169 // prefilter settings
170 if(cutDefinition == kTOFTRD2)
171 die->SetPreFilterAllSigns();
173 die->SetPreFilterUnlikeOnly();
175 // setup eta correction
176 // if(isESD && list.Contains("LHC10h")) SetEtaCorrection();
179 TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
180 if (!trainRoot.IsNull()) {
181 die->SetVZEROCalibrationFilename("$TRAIN_ROOT/util/dielectron/dielectron/VzeroCalibrationLHC10h.root");
182 die->SetVZERORecenteringFilename("$TRAIN_ROOT/util/dielectron/dielectron/VzeroRecenteringLHC10h.root");
188 //______________________________________________________________________________________
189 void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition)
192 // Setup the track cuts
196 AliDielectronCutGroup* cuts = new AliDielectronCutGroup("cuts","cuts",AliDielectronCutGroup::kCompAND);
197 die->GetTrackFilter().AddCuts(cuts);
199 // AOD track filter (needs to be first cut)
200 AliDielectronTrackCuts *trkFilter = new AliDielectronTrackCuts("TrkFilter","TrkFilter");
201 trkFilter->SetAODFilterBit(AliDielectronTrackCuts::kTPCqualSPDanyPIDele);
202 // if(!isESD) cuts->AddCut(trkFilter);
204 //Pt cut, should make execution a bit faster
205 AliDielectronVarCuts *pt = new AliDielectronVarCuts("PtCut","PtCut");
206 // if(cutDefinition >= kEtaGap01 )
207 pt->AddCut(AliDielectronVarManager::kPt,1.1,1e30);
209 // pt->AddCut(AliDielectronVarManager::kPt,0.8,1e30);
212 // track cuts ESD and AOD
213 AliDielectronVarCuts *varCuts = new AliDielectronVarCuts("VarCuts","VarCuts");
214 varCuts->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
215 varCuts->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
216 varCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9);
217 varCuts->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0);
218 varCuts->AddCut(AliDielectronVarManager::kNclsTPC, 70.0, 160.0);
219 varCuts->AddCut(AliDielectronVarManager::kKinkIndex0, 0.0);
220 cuts->AddCut(varCuts);
222 AliDielectronTrackCuts *trkCuts = new AliDielectronTrackCuts("TrkCuts","TrkCuts");
223 switch(cutDefinition) {
224 case kTOFTRD2: trkCuts->SetClusterRequirementITS(AliDielectronTrackCuts::kSPD,AliDielectronTrackCuts::kFirst);
226 default: trkCuts->SetClusterRequirementITS(AliDielectronTrackCuts::kSPD,AliDielectronTrackCuts::kAny);
229 trkCuts->SetRequireITSRefit(kTRUE);
230 trkCuts->SetRequireTPCRefit(kTRUE);
231 cuts->AddCut(trkCuts);
233 /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv PID CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
234 AliDielectronPID *pid = new AliDielectronPID("PID","PID");
236 ////////////////////////////////// DATA
238 pid->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-100.,2.5,0.,0.,kTRUE);
239 pid->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-100.,3.5,0.,0.,kTRUE);
241 if(cutDefinition==kTRD || cutDefinition>=kTOFTRD || cutDefinition>=kTOFTRD2)
242 pid->AddCut(AliDielectronPID::kTRDeleEff,AliPID::kElectron,.8,1.,3.5.,6.,kFALSE,
243 AliDielectronPID::kIfAvailable,AliDielectronVarManager::kTRDpidQuality);
246 ////////////////////////////////// MC
250 Double_t nSigmaPi = 3.5; Double_t nSigmaP = 3.5;
251 Double_t resolution=0.0549;
252 Double_t BBpro[5] = {0};
253 Double_t BBpio[5] = {0};
255 for(Int_t icent=0; icent<8; icent++) {
259 BBpro[0] = 0.031555; BBpro[1] = 26.0595; BBpro[2] = 3.02422e-11; BBpro[3] = 2.05594; BBpro[4] = 5.99848;
260 BBpio[0] = 0.0252122; BBpio[1] = 38.8991; BBpio[2] = 4.0901e-11; BBpio[3] = 5.27988; BBpio[4] = 4.3108;
263 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
264 BBpio[0] = 0.0252127; BBpio[1] = 33.8617; BBpio[2] = 3.56866e-11; BBpio[3] = 5.24831; BBpio[4] = 4.31093;
267 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
268 BBpio[0] = 0.0263205; BBpio[1] = 37.9307; BBpio[2] = 4.29724e-11; BBpio[3] = 5.74458; BBpio[4] = 4.32459;
271 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
272 BBpio[0] = 0.026294; BBpio[1] = 39.0346; BBpio[2] = 4.12261e-11; BBpio[3] = 5.28808; BBpio[4] = 4.31301;
275 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
276 BBpio[0] = 0.0263134; BBpio[1] = 38.2084; BBpio[2] = 3.75159e-11; BBpio[3] = 5.78125; BBpio[4] = 4.31363;
279 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
280 BBpio[0] = 0.0263134; BBpio[1] = 38.2084; BBpio[2] = 3.75159e-11; BBpio[3] = 5.78125; BBpio[4] = 4.31363;
283 BBpro[0] = 0.031555; BBpro[1] = 26.0595; BBpro[2] = 3.02422e-11; BBpro[3] = 2.05594; BBpro[4] = 5.99848;
284 BBpio[0] = 0.026302; BBpio[1] = 38.6888; BBpio[2] = 3.56792e-11; BBpio[3] = 5.2465; BBpio[4] = 4.31094;
287 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
288 BBpio[0] = 0.0263134; BBpio[1] = 38.2084; BBpio[2] = 3.75159e-11; BBpio[3] = 5.78125; BBpio[4] = 4.31363;
291 BBpro[0] = 0.0313438; BBpro[1] = 25.8666; BBpro[2] = 4.5457e-11; BBpro[3] = 2.07912; BBpro[4] = 5.99986;
292 BBpio[0] = 0.0252127; BBpio[1] = 33.8617; BBpio[2] = 3.56866e-11; BBpio[3] = 5.24831; BBpio[4] = 4.31093;
295 BBpro[0] = 0.0319126; BBpro[1] = 36.8784; BBpro[2] = 3.4274e-11; BBpro[3] = 3.2431; BBpro[4] = 5.93388;
296 BBpio[0] = 0.027079; BBpio[1] = 67.5936; BBpio[2] = 9.72548e-11; BBpio[3] = 9.61382; BBpio[4] = 5.99372;
301 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.);
303 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.);
306 if (list.Contains("LHC11a10b")) {
307 printf(" LHC11a10b parameters\n");
308 ffPro->SetParameters(BBpro[0],BBpro[1],BBpro[2],BBpro[3],BBpro[4]);
309 ffPio->SetParameters(BBpio[0],BBpio[1],BBpio[2],BBpio[3],BBpio[4]);
312 pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,ffPro,10,((double)icent)*10.,((double)icent+1)*10,
313 kFALSE,AliDielectronPID::kRequire,AliDielectronVarManager::kCentrality);
315 pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,ffPio,10,((double)icent)*10.,((double)icent+1)*10,
316 kFALSE,AliDielectronPID::kRequire,AliDielectronVarManager::kCentrality);
320 // shifts for the nSigma electrons
321 TGraph* nSigmaCorrection = new TGraph();
323 if (list.Contains("LHC11a10b")) {
324 nSigmaCorrection->SetPoint(0, 137161., -0.50-(0.28));
325 nSigmaCorrection->SetPoint(1, 139510., -0.50-(0.28));
326 pid->SetCorrGraph(nSigmaCorrection);
331 ////////////////////////////////// DATA + MC
332 // pid cuts TPC + TOF & TRD
333 pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.);
334 if(cutDefinition==kTOF || cutDefinition>=kTOFTRD || cutDefinition>=kTOFTRD2)
335 pid->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,3.,0.,0.,kFALSE,AliDielectronPID::kIfAvailable);
337 if(cutDefinition!=krec) cuts->AddCut(pid);
338 /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PID CUTS ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
341 // exclude conversion electrons selected by the tender
342 AliDielectronTrackCuts *noconv=new AliDielectronTrackCuts("noConv","noConv");
343 noconv->SetV0DaughterCut(AliPID::kElectron,kTRUE);
344 cuts->AddCut(noconv);
348 //______________________________________________________________________________________
349 void SetupPairCuts(AliDielectron *die, Int_t cutDefinition)
352 // Setup the pair cuts
355 // conversion rejection
357 switch(cutDefinition) {
358 case kTPC: gCut=0.05; break;
359 case krec: gCut=0.05; break;
360 case kGam10: gCut=0.1; break;
361 case kGam15: gCut=0.15; break;
362 case kGam20: gCut=0.2; break;
363 case kGam05: gCut=0.05; break;
364 case kGam01: gCut=0.01; break;
365 case kGam0: gCut=0.0; break;
366 default: gCut=0.05; // default
369 AliDielectronVarCuts *gammaCuts = new AliDielectronVarCuts("GammaCuts","GammaCuts");
370 // gammaCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.1, kTRUE);
371 // gammaCuts->AddCut(AliDielectronVarManager::kLegDist, 0.0, 0.25, kTRUE);
372 // gammaCuts->AddCut(AliDielectronVarManager::kR, 3.0, 90.0, kTRUE);
373 // gammaCuts->AddCut(AliDielectronVarManager::kPsiPair, 0.0, 0.05, kTRUE);
374 // gammaCuts->AddCut(AliDielectronVarManager::kChi2NDF, 0.0, 10.0, kTRUE);
375 gammaCuts->AddCut(AliDielectronVarManager::kM, 0.0, gCut);
376 die->GetPairPreFilter().AddCuts(gammaCuts);
379 // rapidity selection
380 AliDielectronVarCuts *rapCut=new AliDielectronVarCuts("|Y|<.9","|Y|<.9");
381 rapCut->AddCut(AliDielectronVarManager::kY,-0.9,0.9);
382 die->GetPairFilter().AddCuts(rapCut);
386 //______________________________________________________________________________________
387 void InitHistograms(AliDielectron *die, Int_t cutDefinition)
390 // Initialise the histograms
393 //Setup histogram Manager
394 AliDielectronHistos *histos=new AliDielectronHistos(die->GetName(),die->GetTitle());
397 //add histograms to event class
398 histos->AddClass("Event");
399 histos->UserHistogram("Event","VtxZ","Vertex Z;z (cm)",
401 AliDielectronVarManager::kZvPrim);
402 histos->UserHistogram("Event","Centrality","Centrality;centrality (%)",
403 "0.,5.,10.,20.,40.,50.,60.,80.,100.",
404 AliDielectronVarManager::kCentrality);
405 histos->UserHistogram("Event","Multiplicity","Multiplicity V0;Multiplicity V0",
407 AliDielectronVarManager::kMultV0);
408 histos->UserHistogram("Event","Cent_Mult","Centrality vs. Multiplicity;centrality (%);Multiplicity V0",
409 10,0.,100., 500,0.,25000.,
410 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kMultV0);
411 histos->UserProfile("Event","Cent_Nacc",
412 "accepted tracks;centrality (%)",
413 AliDielectronVarManager::kNacc,
414 "0.,5.,10.,20.,40.,50.,60.,80.,100.",
415 AliDielectronVarManager::kCentrality);
416 histos->UserProfile("Event","Cent_NVtxContrib",
417 "number of vertex contributors;centrality (%)",
418 AliDielectronVarManager::kNVtxContrib,
419 "0.,5.,10.,20.,40.,50.,60.,80.,100.",
420 AliDielectronVarManager::kCentrality);
424 if(cutDefinition == kTOFTRD || cutDefinition >= kEtaGap01) {
425 histos->UserHistogram("Event","TPCxH2","TPC Qx component;TPCxH2",
427 AliDielectronVarManager::kTPCxH2);
428 histos->UserHistogram("Event","TPCyH2","TPC Qy component;TPCyH2",
430 AliDielectronVarManager::kTPCyH2);
431 histos->UserHistogram("Event","TPCrpH2","TPC reaction plane; #Psi^{TPC}",
433 AliDielectronVarManager::kTPCrpH2);
434 histos->UserHistogram("Event","TPCsub1xH2","TPC Qx component sub1;TPCsub1xH2",
436 AliDielectronVarManager::kTPCsub1xH2);
437 histos->UserHistogram("Event","TPCsub1yH2","TPC Qy component sub1;TPCsub1yH2",
439 AliDielectronVarManager::kTPCsub1yH2);
440 histos->UserHistogram("Event","TPCsub1rpH2","TPC reaction plane sub1; #Psi^{sub1}",
442 AliDielectronVarManager::kTPCsub1rpH2);
443 histos->UserHistogram("Event","TPCsub2xH2","TPC Qx component sub2;TPCsub2xH2",
445 AliDielectronVarManager::kTPCsub2xH2);
446 histos->UserHistogram("Event","TPCsub2yH2","TPC Qy component sub2;TPCsub2yH2",
448 AliDielectronVarManager::kTPCsub2yH2);
449 histos->UserHistogram("Event","TPCsub2rpH2","TPC reaction plane sub2; #Psi^{sub2}",
451 AliDielectronVarManager::kTPCsub2rpH2);
452 histos->UserHistogram("Event","TPCsub12DiffH2","TPC reaction plane diff; cos(2(#Psi^{sub1}-#Psi^{sub2}))",
454 AliDielectronVarManager::kTPCsub12DiffH2);
455 /* // uncorrected eventplane
456 histos->UserHistogram("Event","TPCxH2uc","TPC Qx component;TPCxH2uc",
458 AliDielectronVarManager::kTPCxH2uc);
459 histos->UserHistogram("Event","TPCyH2uc","TPC Qy component;TPCyH2uc",
461 AliDielectronVarManager::kTPCyH2uc);
462 histos->UserHistogram("Event","TPCrpH2uc","TPC reaction plane;TPCrpH2uc",
464 AliDielectronVarManager::kTPCrpH2uc);
465 histos->UserHistogram("Event","TPCsub1xH2uc","TPC Qx component sub1;TPCsub1xH2uc",
467 AliDielectronVarManager::kTPCsub1xH2uc);
468 histos->UserHistogram("Event","TPCsub1yH2uc","TPC Qy component sub1;TPCsub1yH2uc",
470 AliDielectronVarManager::kTPCsub1yH2uc);
471 histos->UserHistogram("Event","TPCsub1rpH2uc","TPC reaction plane sub1;TPCsub1rpH2uc",
473 AliDielectronVarManager::kTPCsub1rpH2uc);
474 histos->UserHistogram("Event","TPCsub2xH2uc","TPC Qx component sub2;TPCsub2xH2uc",
476 AliDielectronVarManager::kTPCsub2xH2uc);
477 histos->UserHistogram("Event","TPCsub2yH2uc","TPC Qy component sub2;TPCsub2yH2uc",
479 AliDielectronVarManager::kTPCsub2yH2uc);
480 histos->UserHistogram("Event","TPCsub2rpH2uc","TPC reaction plane sub2;TPCsub2rpH2uc",
482 AliDielectronVarManager::kTPCsub2rpH2uc);
483 histos->UserHistogram("Event","TPCsub12DiffH2uc","TPC reaction plane difference;TPCsub12DiffH2uc",
485 AliDielectronVarManager::kTPCsub12DiffH2uc);
487 histos->UserHistogram("Event","V0ACrpH2","VZERO-AC RP; #Psi_{2}^{V0AC} (rad.)",
489 AliDielectronVarManager::kV0ACrpH2);
490 histos->UserHistogram("Event","V0ArpH2","VZERO-A RP; #Psi_{2}^{V0A} (rad.)",
492 AliDielectronVarManager::kV0ArpH2);
493 histos->UserHistogram("Event","V0CrpH2","VZERO-C RP; #Psi_{2}^{V0C} (rad.)",
495 AliDielectronVarManager::kV0CrpH2);
497 histos->UserHistogram("Event","V0ATPCDiffH2","VZERO-A TPC diff; cos(2(#Psi^{V0A}-#Psi^{TPC}))",
499 AliDielectronVarManager::kV0ATPCDiffH2);
500 histos->UserHistogram("Event","V0CTPCDiffH2","VZERO-C TPC diff; cos(2(#Psi^{V0C}-#Psi^{TPC}))",
502 AliDielectronVarManager::kV0CTPCDiffH2);
503 histos->UserHistogram("Event","V0AV0CDiffH2","VZERO-A VZERO-C diff; cos(2(#Psi^{V0A}-#Psi^{V0C}))",
505 AliDielectronVarManager::kV0AV0CDiffH2);
507 // centrality dependent event plane histograms
508 histos->UserHistogram("Event","Cent_TPCrpH2","TPC RP;centrality (%);#Psi^{TPC} (rad.)",
509 10,0.,100.,100,-2.,2.,
510 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCrpH2);
511 histos->UserHistogram("Event","Cent_TPCsub1rpH2","TPC-1 RP;centrality (%);#Psi^{sub1} (rad.)",
512 10,0.,100.,100,-2.,2.,
513 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsub1rpH2);
514 histos->UserHistogram("Event","Cent_TPCsub2rpH2","TPC-2 RP;centrality (%);#Psi^{sub2} (rad.)",
515 10,0.,100.,100,-2.,2.,
516 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsub2rpH2);
518 histos->UserHistogram("Event","Cent_V0ACrpH2","VZERO-AC RP;centrality (%);#Psi_{2}^{V0AC} (rad.)",
519 10,0.,100.,100,-2.0,2.0,
520 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kV0ACrpH2);
521 histos->UserHistogram("Event","Cent_V0ArpH2","VZERO-A RP;centrality (%);#Psi_{2}^{V0A} (rad.)",
522 10,0.,100.,100,-2.0,2.0,
523 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kV0ArpH2);
524 histos->UserHistogram("Event","Cent_V0CrpH2","VZERO-C RP;centrality (%);#Psi_{2}^{V0C} (rad.)",
525 10,0.,100.,100,-2.0,2.0,
526 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kV0CrpH2);
527 // for resolution calculation
528 histos->UserHistogram("Event","Cent_V0ATPCDiffH2","VZERO-A TPC diff;centrality (%);cos(2(#Psi^{V0A}-#Psi^{TPC}))",
529 10,0.,100.,300,-1.0,1.0,
530 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kV0ATPCDiffH2);
531 histos->UserHistogram("Event","Cent_V0CTPCDiffH2","VZERO-C TPC diff;centrality (%);cos(2(#Psi^{V0C}-#Psi^{TPC}))",
532 10,0.,100.,300,-1.0,1.0,
533 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kV0CTPCDiffH2);
534 histos->UserHistogram("Event","Cent_V0AV0CDiffH2","VZERO-A VZERO-C diff;centrality (%);cos(2(#Psi^{V0A}-#Psi^{V0C}))",
535 10,0.,100.,300,-1.0,1.0,
536 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kV0AV0CDiffH2);
537 histos->UserHistogram("Event","Cent_TPCsub12DiffH2","TPC-sub1 TPC-sub2 diff;centrality (%);cos(2(#Psi^{sub1}-#Psi^{sub2}))",
538 10,0.,100.,300,-1.0,1.0,
539 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsub12DiffH2);
541 histos->UserHistogram("Event","Cent_TPCsub12DiffH2Sin","TPC-sub1 TPC-sub2 diff;centrality (%);sin(2(#Psi^{sub1}-#Psi^{sub2}))",
542 10,0.,100.,300,-1.0,1.0,AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsub12DiffH2Sin);
543 //// EPSelectionTask V0 information directly from the ESDs
544 histos->UserHistogram("Event","Cent_v0ACrpH2","VZERO-AC RP;centrality (%);#Psi_{2}^{v0AC} (rad.)",
545 10,0.,100.,100,-2.0,2.0,
546 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0ACrpH2);
547 histos->UserHistogram("Event","Cent_v0ArpH2","VZERO-A RP;centrality (%);#Psi_{2}^{v0A} (rad.)",
548 10,0.,100.,100,-2.0,2.0,
549 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0ArpH2);
550 histos->UserHistogram("Event","Cent_v0CrpH2","VZERO-C RP;centrality (%);#Psi_{2}^{v0C} (rad.)",
551 10,0.,100.,100,-2.0,2.0,
552 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0CrpH2);
553 // for resolution calculation
554 histos->UserHistogram("Event","Cent_v0ATPCDiffH2","VZERO-A TPC diff;centrality (%);cos(2(#Psi^{v0A}-#Psi^{TPC}))",
555 10,0.,100.,300,-1.0,1.0,
556 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0ATPCDiffH2);
557 histos->UserHistogram("Event","Cent_v0CTPCDiffH2","VZERO-C TPC diff;centrality (%);cos(2(#Psi^{v0C}-#Psi^{TPC}))",
558 10,0.,100.,300,-1.0,1.0,
559 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0CTPCDiffH2);
560 histos->UserHistogram("Event","Cent_v0Av0CDiffH2","VZERO-A VZERO-C diff;centrality (%);cos(2(#Psi^{v0A}-#Psi^{v0C}))",
561 10,0.,100.,300,-1.0,1.0,
562 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0Av0CDiffH2);
566 ////// MONTE CARLO //////
568 if(cutDefinition == kTOFTRD && hasMC) {
569 histos->AddClass("MCEvent");
570 histos->UserHistogram("MCEvent","Cent_NJPsis","Centrality vs. generated incl. J/#psi per event;centrality (%);N_{J/#psi}",
571 10,0.,100., 21,-0.5,20.5,
572 AliDielectronVarManager::kCentrality,AliDielectronVarManager::kNumberOfJPsis);
577 //Initialise histogram classes
578 histos->SetReservedWords("Track;Pair");
582 // to fill also mixed event histograms loop until 10
583 for (Int_t i=0; i<3; ++i){
584 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
587 if(cutDefinition < kEtaGap01) {
590 for (Int_t i=0; i<3; ++i){
591 histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i)));
595 //to fill also track info from 2nd event loop until 2
596 for (Int_t i=0; i<2; ++i){
597 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
601 // histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
602 // histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
604 //add histograms to Track classes
605 //histos->UserHistogram("Track","TOFbit","TOFbit;bit;#tracks",19,-9.5,9.5,AliDielectronVarManager::kTOFPIDBit);
606 histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",
608 AliDielectronVarManager::kPt);
609 histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",
611 AliDielectronVarManager::kNclsTPC);
612 histos->UserHistogram("Track","TPCsignalN","Number of Clusters TPC;TPC number clusteres;#tracks",
614 AliDielectronVarManager::kTPCsignalN);
616 histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",
618 AliDielectronVarManager::kImpactParXY);
619 histos->UserHistogram("Track","dZ","dZ;dZ [cm];#tracks",
621 AliDielectronVarManager::kImpactParZ);
622 histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
623 200,-1,1,200,0,6.285,
624 AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
626 histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
627 400,0.2,20.,200,0.,200.,
628 AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
629 histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
630 400,0.2,20.,200,-10.,10.,
631 AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
633 histos->UserHistogram("Track","Ncl",";Number clusters TPC;Number clusters TPC",
635 AliDielectronVarManager::kNclsTPC);
636 histos->UserHistogram("Track","NclFr",";Number of findable clusters (robust);Number findable clusters TPC",
638 AliDielectronVarManager::kNFclsTPCr);
639 histos->UserHistogram("Track","Ncl_NclFr","Number of (findable) clusters TPC;found clusters;findable clusters",
640 160,-0.5,159.5,160,-0.5,159.5,
641 AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr);
642 histos->UserHistogram("Track","NtrklTRD",";Number tracklets TRD for pid;Number tracklets TRD",
644 AliDielectronVarManager::kTRDpidQuality);
646 //add histograms to Pair classes
647 histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
648 300,.0,300*0.04, AliDielectronVarManager::kM); // 40MeV bins, 12GeV/c2
649 histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
650 100,-1.,1., AliDielectronVarManager::kY);
651 histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
652 100,0.,3.15, AliDielectronVarManager::kOpeningAngle);
653 histos->UserHistogram("Pair","Chi2NDF","#chi^{2}/NDF;#chi^{2}/NDF",
654 100,0.,20, AliDielectronVarManager::kChi2NDF);
655 histos->UserHistogram("Pair","PsiPair","PsiPair;#psi",
656 100,0.,3.15, AliDielectronVarManager::kPsiPair);
657 histos->UserHistogram("Pair","R","Radius;r (cm)",
658 200,0.,100., AliDielectronVarManager::kR);
659 histos->UserHistogram("Pair","LegDist",";dca (cm)",
660 50,0.,5., AliDielectronVarManager::kLegDist);
661 histos->UserHistogram("Pair","LegDistXY",";dca_{xy} (cm)",
662 50,0.,5., AliDielectronVarManager::kLegDistXY);
667 //// FLOW results use tprofiles
668 if(cutDefinition == kTOFTRD || cutDefinition == kTOFTRD2 || cutDefinition >= kEtaGap01) {
670 histos->UserProfile("Pair","M_Cent_Pt_V0ACrpH2FlowV2",
671 "cos(2(#varphi-#Psi^{V0AC}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)",
672 AliDielectronVarManager::kV0ACrpH2FlowV2,
673 125,0.,125*.04, 10, 0.,100., 200,0.,100.,
674 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);
682 histos->UserProfile("Pair","M_Cent_Pt_V0CrpH2FlowV2",
683 "cos(2(#varphi-#Psi^{V0C}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)",
684 AliDielectronVarManager::kV0CrpH2FlowV2,
685 125,0.,125*.04, 10, 0.,100., 200,0.,100.,
686 AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt);
688 histos->UserProfile("Pair","M_Cent_Pt_v0ACrpH2FlowV2",
689 "cos(2(#varphi-#Psi^{V0AC}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)",
690 AliDielectronVarManager::kv0ACrpH2FlowV2,
691 125,0.,125*.04, 10, 0.,100., 200,0.,100.,
692 AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt);
694 histos->UserProfile("Pair","M_Cent_Pt_v0ArpH2FlowV2",
695 "cos(2(#varphi-#Psi^{V0A}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)",
696 AliDielectronVarManager::kv0ArpH2FlowV2,
697 125,0.,125*.04, 10, 0.,100., 200,0.,100.,
698 AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt);
700 histos->UserProfile("Pair","M_Cent_Pt_v0CrpH2FlowV2",
701 "cos(2(#varphi-#Psi^{V0C}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)",
702 AliDielectronVarManager::kv0CrpH2FlowV2,
703 125,0.,125*.04, 10, 0.,100., 200,0.,100.,
704 AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt);
707 histos->UserProfile("Pair","M_V0ACrpH2FlowV2",
708 "cos(2(#varphi-#Psi^{V0AC}));mass (GeV/c^{2})",
709 AliDielectronVarManager::kV0ACrpH2FlowV2,
711 AliDielectronVarManager::kM);
713 histos->UserProfile("Pair","M_V0ArpH2FlowV2",
714 "cos(2(#varphi-#Psi^{V0AC}));mass (GeV/c^{2})",
715 AliDielectronVarManager::kV0ArpH2FlowV2,
717 AliDielectronVarManager::kM);
719 histos->UserProfile("Pair","M_V0CrpH2FlowV2",
720 "cos(2(#varphi-#Psi^{V0AC}));mass (GeV/c^{2})",
721 AliDielectronVarManager::kV0CrpH2FlowV2,
723 AliDielectronVarManager::kM);
726 die->SetHistogramManager(histos);
730 void InitCF(AliDielectron* die, Int_t cutDefinition)
733 // Setup the CF Manager if needed
736 AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
739 cf->AddVariable(AliDielectronVarManager::kM,125,0.,125*.04); //40Mev Steps
740 if(cutDefinition!=kSubRndm) cf->AddVariable(AliDielectronVarManager::kPairType,11,0,11);
742 if(cutDefinition < kGam0 || cutDefinition == kSubRndm) {
744 // pair and event vars
745 if(cutDefinition <= kChi || cutDefinition == kSubRndm) {
746 cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,5.,10.,20.,40.,50.,60.,80.");
747 cf->AddVariable(AliDielectronVarManager::kPt,"0., 1., 2.5, 5., 100.0");
748 if(!hasMC) cf->AddVariable(AliDielectronVarManager::kZvPrim,20, -10., 10.);
749 if(hasMC) cf->AddVariable(AliDielectronVarManager::kNacc,20,0.,3000.0);
750 if(hasMC) cf->AddVariable(AliDielectronVarManager::kNVtxContrib,20,0.,4000.);
751 if(hasMC) cf->AddVariable(AliDielectronVarManager::kTRDpidEffPair,101,0.0,1.01);
752 //cf->AddVariable(AliDielectronVarManager::kY,"-0.8,0.8");
753 cf->AddVariable(AliDielectronVarManager::kDeltaPhiv0ArpH2,4,-1.*TMath::Pi(),TMath::Pi());
754 cf->AddVariable(AliDielectronVarManager::kDeltaPhiv0CrpH2,4,-1.*TMath::Pi(),TMath::Pi());
758 if(cutDefinition!=kSubRndm) {
759 cf->AddVariable(AliDielectronVarManager::kPt,"0.8, 1.0, 1.1, 1.2, 1.5, 100.0",kTRUE);
760 cf->AddVariable(AliDielectronVarManager::kTPCnSigmaEle,"-3,-2.5,-2,2,2.5,3",kTRUE);
761 cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPio,"2.5,3.0,3.5,4.0,4.5,100",kTRUE);
762 // cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPro,"3.5,4.0,4.5,5.0,100",kTRUE);
763 // cf->AddVariable(AliDielectronVarManager::kTRDpidQuality,"3.5, 4.5, 5.5, 6.5",kTRUE);
764 if(!hasMC && isESD) cf->AddVariable(AliDielectronVarManager::kTRDchi2,"-1.,0.,2.,4.",kTRUE);
765 cf->AddVariable(AliDielectronVarManager::kITSLayerFirstCls,7,-1.5,5.5,kTRUE);
768 if(cutDefinition<=kChi) {
769 if(hasMC) cf->AddVariable(AliDielectronVarManager::kEta,"-0.9,0.9",kTRUE);
770 //cf->AddVariable(AliDielectronVarManager::kNclsTPC,"70, 90, 100, 120, 160",kTRUE);
774 switch(cutDefinition) {
777 case kTOF: //cf->AddVariable(AliDielectronVarManager::kTOFnSigmaEle,"-3,-2,2,3",kTRUE); break;
780 // if(hasMC) cf->AddVariable(AliDielectronVarManager::kThetaCS,15,-1.,1.);
781 //cf->AddVariable(AliDielectronVarManager::kITSLayerFirstCls,7,-1.5,5.5,kTRUE); break;
783 case kITScls: cf->AddVariable(AliDielectronVarManager::kNclsITS,"1,2,3,4,5,6",kTRUE); break;
784 case kITSamy: cf->AddVariable(AliDielectronVarManager::kITSLayerFirstCls,7,-1.5,5.5,kTRUE); break;
786 cf->AddVariable(AliDielectronVarManager::kITSLayerFirstCls,7,-1.5,5.5,kTRUE);
787 cf->AddVariable(AliDielectronVarManager::kImpactParXY,8,-2.,2.,kTRUE);
788 cf->AddVariable(AliDielectronVarManager::kImpactParZ,8,-4.,4.,kTRUE);
790 case kChi: cf->AddVariable(AliDielectronVarManager::kChi2NDF,"0,1,2,3,4,5",kTRUE); break;
791 // cf->AddVariable(AliDielectronVarManager::kTOFnSigmaEle,"-3,-2,2,3",kTRUE);
792 // cf->AddVariable(AliDielectronVarManager::kTOFPIDBit,"-.5,.5,1.5",kTRUE);
799 cf->AddVariable(AliDielectronVarManager::kRunNumber, GetRunNumbers() );
800 //if(cutDefinition==kTOFTRD || cutDefinition==kGam0)
801 cf->SetStepForMCtruth();
802 // if(cutDefinition!=kTOFTRD)
803 cf->SetStepsForMCtruthOnly();
804 // cf->SetStepsForBackground();
807 die->SetCFManagerPair(cf);
810 void AddMCSignals(AliDielectron *die){
811 //Do we have an MC handler?
814 AliDielectronSignalMC* inclusiveJpsi = new AliDielectronSignalMC("inclusiveJpsi","Inclusive J/psi");
815 inclusiveJpsi->SetLegPDGs(11,-11);
816 inclusiveJpsi->SetMotherPDGs(443,443);
817 inclusiveJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
818 inclusiveJpsi->SetFillPureMCStep(kTRUE);
819 inclusiveJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
820 inclusiveJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
821 die->AddSignalMC(inclusiveJpsi);
823 AliDielectronSignalMC* promptJpsi = new AliDielectronSignalMC("promptJpsi","Prompt J/psi"); // prompt J/psi (not from beauty decays)
824 promptJpsi->SetLegPDGs(11,-11);
825 promptJpsi->SetMotherPDGs(443,443);
826 promptJpsi->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons
827 promptJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
828 promptJpsi->SetFillPureMCStep(kTRUE);
829 promptJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
830 promptJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
831 promptJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
832 promptJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
833 die->AddSignalMC(promptJpsi);
835 AliDielectronSignalMC* beautyJpsi = new AliDielectronSignalMC("beautyJpsi","Beauty J/psi");
836 beautyJpsi->SetLegPDGs(11,-11);
837 beautyJpsi->SetMotherPDGs(443,443);
838 beautyJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
839 beautyJpsi->SetGrandMotherPDGs(500,500);
840 beautyJpsi->SetFillPureMCStep(kTRUE);
841 beautyJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
842 beautyJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
843 beautyJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
844 die->AddSignalMC(beautyJpsi);
846 AliDielectronSignalMC* directJpsi = new AliDielectronSignalMC("directJpsi","Direct J/psi"); // embedded J/psi
847 directJpsi->SetLegPDGs(11,-11);
848 directJpsi->SetMotherPDGs(443,443);
849 directJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
850 directJpsi->SetFillPureMCStep(kTRUE);
851 directJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
852 directJpsi->SetMotherSources(AliDielectronSignalMC::kDirect, AliDielectronSignalMC::kDirect);
853 directJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
854 directJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
855 die->AddSignalMC(directJpsi);
857 AliDielectronSignalMC* conversionElePairs = new AliDielectronSignalMC("conversionElePairs","conversion electron pairs"); // pairs made from conversion (may be also from 2 different conversions)
858 conversionElePairs->SetLegPDGs(11,-11);
859 conversionElePairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
860 conversionElePairs->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary);
861 conversionElePairs->SetMotherPDGs(22,22);
862 // die->AddSignalMC(conversionElePairs);
865 void SetEtaCorrection()
867 if (AliDielectronPID::GetEtaCorrFunction()) return;
869 TString etaMap="$TRAIN_ROOT/jpsi_JPSI/EtaCorrMaps.root";
870 TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
871 if (trainRoot.IsNull()) etaMap="$ALICE_ROOT/PWGDQ/dielectron/files/EtaCorrMaps.root";
872 if (gSystem->AccessPathName(gSystem->ExpandPathName(etaMap.Data()))){
873 Error("ConfigPbPb","Eta map not found: %s",etaMap.Data());
877 TFile f(etaMap.Data());
878 if (!f.IsOpen()) return;
879 TList *keys=f.GetListOfKeys();
881 for (Int_t i=0; i<keys->GetEntries(); ++i){
882 TString kName=keys->At(i)->GetName();
884 if (reg.MatchB(list)){
885 printf(" Using Eta Correction Function: %s\n",kName.Data());
886 AliDielectronPID::SetEtaCorrFunction((TF1*)f.Get(kName.Data()));
891 TVectorD *GetRunNumbers() {
893 Double_t runLHC10h[] = { // all good runs based on RCT 29.Mai
894 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
897 Double_t runLHC11h[] = { // all good runs based on RCT 29.Mai
898 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
901 // selection via environement variable (works only for gsi trains)
904 if(list.Contains("LHC10h") || list.Contains("LHC11a10")) {
905 Int_t size = (int) (sizeof(runLHC10h)/sizeof(Double_t));
906 TVectorD *vec = new TVectorD(size+1);
908 (*vec)[size] = runLHC10h[0] + 1;
909 for (int i = 0; i < size; i++) {
910 (*vec)[i] = runLHC10h[size-1-i];
916 if( list.Contains("LHC11h") || list.Contains("LHC12a17") ) {
918 Int_t size = (int) (sizeof(runLHC11h)/sizeof(Double_t));
919 TVectorD *vec = new TVectorD(size+1);
921 (*vec)[size] = runLHC11h[0] + 1;
922 for (int i = 0; i < size; i++) {
923 (*vec)[i] = runLHC11h[size-1-i];
929 TVectorD *vec = new TVectorD(2);