1 void InitHistograms(AliDielectron *die, Int_t cutDefinition);
2 void InitCF(AliDielectron* die, Int_t cutDefinition);
5 TString names=("noPairing;TPCTOFCentnoRej;TPCTOFSemiCentnoRej;TPCTOFPerinoRej;TPCTOFCent;TPCTOFSemiCent;TPCTOFPeri;TPCTOFCentnoRejTight;TPCTOFCentTight;TPCTOFCentPhiV;TPCTOFSemiCentPhiV;TPCTOFPeriPhiV;TPCTOFCentOA;TPCTOFSemiCentOA;TPCTOFPeriOA");
6 TObjArray *arrNames=names.Tokenize(";");
7 const Int_t nDie=arrNames->GetEntries();
9 Bool_t MCenabled=kFALSE;
12 AliDielectron* ConfigLMEEPbPb2011(Int_t cutDefinition, Bool_t withMC=kFALSE, Bool_t CFenable=kFALSE)
16 Int_t selectedCentrality=-1;
17 Bool_t rejectionStep=kFALSE;
18 LMEECutLib* LMCL = new LMEECutLib();
21 // Setup the instance of AliDielectron
25 // create the actual framework object
27 TString name=Form("%02d",cutDefinition);
28 if ((cutDefinition)<arrNames->GetEntriesFast()){
29 name=arrNames->At((cutDefinition))->GetName();
32 //thisCut only relevant for MC:
34 new AliDielectron(Form
36 Form("Track cuts: %s",name.Data()));
43 //Setup AnalysisSelection:
44 if (cutDefinition==0) {
47 else if (cutDefinition==1) {
48 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
49 selectedCentrality = LMEECutLib::kPbPb2011Central;
50 rejectionStep = kFALSE;
52 else if (cutDefinition==2) {
53 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
54 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral;
55 rejectionStep = kFALSE;
57 else if (cutDefinition==3) {
58 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
59 selectedCentrality = LMEECutLib::kPbPb2011Peripheral;
60 rejectionStep = kFALSE;
62 else if (cutDefinition==4) {
63 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
64 selectedCentrality = LMEECutLib::kPbPb2011Central;
65 rejectionStep = kTRUE;
67 else if (cutDefinition==5) {
68 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
69 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral;
70 rejectionStep = kTRUE;
72 else if (cutDefinition==6) {
73 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
74 selectedCentrality = LMEECutLib::kPbPb2011Peripheral;
75 rejectionStep = kTRUE;
78 //Legacy cuts, check consistence w/ 1 & 4, then remove
79 else if (cutDefinition==7) {
80 selectedPID = LMEECutLib::kPbPb2011TPCandTOF;
81 selectedCentrality = LMEECutLib::kPbPb2011Central;
82 rejectionStep = kFALSE;
84 else if (cutDefinition==8) {
85 selectedPID = LMEECutLib::kPbPb2011TPCandTOF;
86 selectedCentrality = LMEECutLib::kPbPb2011Central;
87 rejectionStep = kTRUE;
90 else if (cutDefinition==9) {
91 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
92 selectedCentrality = LMEECutLib::kPbPb2011Central;
93 rejectionStep = kFALSE;
95 else if (cutDefinition==10) {
96 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
97 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral;
98 rejectionStep = kFALSE;
100 else if (cutDefinition==11) {
101 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
102 selectedCentrality = LMEECutLib::kPbPb2011Peripheral;
103 rejectionStep = kFALSE;
106 else if (cutDefinition==12) {
107 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
108 selectedCentrality = LMEECutLib::kPbPb2011Central;
109 rejectionStep = kFALSE;
111 else if (cutDefinition==13) {
112 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
113 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral;
114 rejectionStep = kFALSE;
116 else if (cutDefinition==14) {
117 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
118 selectedCentrality = LMEECutLib::kPbPb2011Peripheral;
119 rejectionStep = kFALSE;
123 cout << " =============================== " << endl;
124 cout << " ==== INVALID CONFIGURATION ==== " << endl;
125 cout << " =============================== " << endl;
131 //Apply correct Pre-Filter Scheme, if necessary
132 die->SetPreFilterAllSigns();
135 //for Pb-Pb, only use tight PID (combinatorics) for rejection
136 die->GetTrackFilter().AddCuts( LMCL->GetPIDCutsAna(selectedPID) );
137 //die->GetTrackFilter().AddCuts(LMCL->GetPIDCutsPre(selectedPID) );
138 die->GetPairPreFilterLegs().AddCuts(LMCL->GetPIDCutsAna(selectedPID) );
139 die->GetPairPreFilter().AddCuts(LMCL->GetPairCuts(selectedPID) );
141 else { //No Prefilter, no Pairfilter
142 die->GetTrackFilter().AddCuts( LMCL->GetPIDCutsAna(selectedPID) );
143 if ((cutDefinition >=9) && (cutDefinition <=11)) {
144 die->GetPairFilter().AddCuts(LMCL->GetPairCuts2(selectedPID,kFALSE));
146 if ((cutDefinition >=12) && (cutDefinition <=14)) {
147 die->GetPairFilter().AddCuts(LMCL->GetPairCuts2(selectedPID,kTRUE));
150 //Introduce NULL-check for pp?
151 die->GetEventFilter().AddCuts(LMCL->GetCentralityCuts(selectedCentrality));
156 AliDielectronTrackRotator *rot= 0x0;
157 /*AliDielectronTrackRotator *rot= LMCL->GetTrackRotator(selectedPID);
158 die->SetTrackRotator(rot);
160 AliDielectronMixingHandler *mix=LMCL->GetMixingHandler(selectedPID);
161 die->SetMixingHandler(mix);
164 // only if an AliDielectronHistos object is attached to the
165 // dielectron framework histograms will be filled
167 InitHistograms(die,cutDefinition);
169 // the last definition uses no cuts and only the QA histograms should be filled!
171 InitCF(die,cutDefinition);
176 //______________________________________________________________________________________
178 void InitHistograms(AliDielectron *die, Int_t cutDefinition)
181 // Initialise the histograms
184 //Setup histogram Manager
185 AliDielectronHistos *histos=
186 new AliDielectronHistos(die->GetName(),
188 //Initialise histogram classes
189 histos->SetReservedWords("Track;Pair;Pre;RejTrack;RejPair");
192 // if (cutDefinition==nDie-1)
193 histos->AddClass("Event");
196 //to fill also track info from 2nd event loop until 2
197 for (Int_t i=0; i<2; ++i){
198 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
202 // to fill also mixed event histograms loop until 10
203 for (Int_t i=0; i<3; ++i){
204 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
208 if (die->GetMixingHandler()) {
209 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(3)));
210 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(4)));
211 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(6)));
212 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(7)));
214 if (die->GetTrackRotator()) {
215 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(10)));
219 //to fill also track info from 2nd event loop until 2
220 for (Int_t i=0; i<2; ++i){
221 histos->AddClass(Form("Pre_%s",AliDielectron::TrackClassName(i)));
225 //Create Classes for Rejected Tracks/Pairs:
226 for (Int_t i=0; i<2; ++i){
227 histos->AddClass(Form("RejTrack_%s",AliDielectron::TrackClassName(i)));
229 for (Int_t i=0; i<3; ++i){
230 histos->AddClass(Form("RejPair_%s",AliDielectron::PairClassName(i)));
236 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
237 histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
239 //add histograms to event class
240 histos->UserHistogram("Event","nEvents","Number of processed events after cuts;Number events",
241 1,0.,1.,AliDielectronVarManager::kNevents);
242 histos->UserHistogram("Event","Centrality","Centrality;Centrality [%]","0,10,20,40,80,100,101",
243 AliDielectronVarManager::kCentrality);
246 //add histograms to Track classes, also fills RejTrack
247 histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
248 histos->UserHistogram("Track","NclsSFracTPC","NclsSFracTPC; NclsSFracTPC;#tracks",200,0,10.,AliDielectronVarManager::kNclsSFracTPC);
249 histos->UserHistogram("Track","TPCclsDiff","TPCclsDiff; TPCclsDiff;#tracks",200,0,10.,AliDielectronVarManager::kTPCclsDiff);
251 histos->UserHistogram("Track","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks",
252 400,0.0,20.,1000,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE);
254 histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
255 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
257 histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
258 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
259 histos->UserHistogram("Track","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",
260 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE);
261 histos->UserHistogram("Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
262 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);
264 histos->UserHistogram("Track","TRDpidPobEle_P","TRD PID probability Electrons;P [GeV];TRD prob Electrons;#tracks",
265 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobEle,kTRUE);
266 histos->UserHistogram("Track","TRDpidPobPio_P","TRD PID probability Pions;P [GeV];TRD prob Pions;#tracks",
267 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobPio,kTRUE);
269 histos->UserHistogram("Track","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks",
270 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,kTRUE);
271 histos->UserHistogram("Track","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks",
272 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,kTRUE);
274 histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
275 200,-2,2,200,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
277 histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
279 histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);
281 histos->UserHistogram("Track","TPCnCls_kNFclsTPCr","nTPC vs nTPCr;nTPC vs nTPCr;#tracks",159,0.,159.,159,0.,159.,AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr);
283 histos->UserHistogram("Track","kNFclsTPCr_pT","nTPCr vs pt;nTPCr vs pt;#tracks",159,0.,159.,200,0.,20.,AliDielectronVarManager::kNFclsTPCr,AliDielectronVarManager::kPt);
285 //add histograms to Pair classes, also fills RejPair
286 histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
287 500,0.0,5.00,AliDielectronVarManager::kM);
288 histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
289 100,-2.,2.,AliDielectronVarManager::kY);
290 histos->UserHistogram("Pair","DeltaEta","DeltaEta;DeltaEta",
291 100,0.,3.15,AliDielectronVarManager::kDeltaEta);
292 histos->UserHistogram("Pair","DeltaPhi","DeltaPhi;DeltaPhi",
293 100,0.,3.15,AliDielectronVarManager::kDeltaPhi);
294 histos->UserHistogram("Pair","PhivPair","PhivPair;angle",
295 100,0.,3.15,AliDielectronVarManager::kPhivPair);
296 histos->UserHistogram("Pair","PsiPair","PsiPair;angle",
297 100,0.,3.15,AliDielectronVarManager::kPsiPair);
298 histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
299 100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
301 histos->UserHistogram("Pair","InvMassPairPt","Inv.Mass vs PairPt;Inv. Mass [GeV], pT [GeV];#pairs",
302 500,0.0,5.0,500,0.,50.,AliDielectronVarManager::kM,AliDielectronVarManager::kPt);
305 histos->UserHistogram("Pair","MPhivPair","PhivPair vs M;M ;PhiV",
306 500,0.0,5.0,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kPhivPair);
308 histos->UserHistogram("Pair","PsiPairPhivPair","PhivPair vs PsiPair;PsiPair ;#pairs",
309 200,0.0,6.3,200,0.,6.3,AliDielectronVarManager::kPsiPair,AliDielectronVarManager::kPhivPair);
311 histos->UserHistogram("Pair","PhivPairOpeningAngle","Opening Angle vs PhivPair;PhivPair [GeV];#pairs",
312 200,0.0,6.3,200,0.,6.3,AliDielectronVarManager::kPhivPair,AliDielectronVarManager::kOpeningAngle);
314 histos->UserHistogram("Pair","PsiPairOpeningAngle","Opening Angle vs PsiPair;PsiPair [GeV];#pairs",
315 200,0.0,6.3,200,0.,6.3,AliDielectronVarManager::kPsiPair,AliDielectronVarManager::kOpeningAngle);
317 histos->UserHistogram("Pair","InvMassOpeningAngle","Opening Angle vs Inv.Mass;Inv. Mass [GeV];#pairs",
318 500,0.0,5.0,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kOpeningAngle);
320 //add histograms to Track classes
321 histos->UserHistogram("Pre","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
323 histos->UserHistogram("Pre","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks",
324 400,0.0,20.,1000,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE);
326 histos->UserHistogram("Pre","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
327 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
329 histos->UserHistogram("Pre","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
330 200,-2,2,200,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
332 histos->UserHistogram("Pre","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
334 histos->UserHistogram("Pre","ZVertex ","ZVertex ;ZVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kZv);
335 histos->UserHistogram("Pre","XVertex ","XVertex ;XVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kXv);
336 histos->UserHistogram("Pre","YVertex ","YVertex ;YVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kYv);
338 // histos->UserHistogram("Pre","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);
341 die->SetHistogramManager(histos);
345 void InitCF(AliDielectron* die, Int_t cutDefinition)
348 // Setupd the CF Manager if needed
350 AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
353 cf->AddVariable(AliDielectronVarManager::kP,200,0,20);
354 cf->AddVariable(AliDielectronVarManager::kPt,200,0,20);
355 cf->AddVariable(AliDielectronVarManager::kM,201,-0.01,4.01); //20Mev Steps
356 cf->AddVariable(AliDielectronVarManager::kY,100,-2.,2.);
357 cf->AddVariable(AliDielectronVarManager::kDeltaEta,200,-2.,2.);
358 cf->AddVariable(AliDielectronVarManager::kDeltaPhi,100,0.,3.2);
359 cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);
361 cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,10.0,30.0,40.0,60.,80.,100.");
362 cf->AddVariable(AliDielectronVarManager::kOpeningAngle,320,0.,3.2);
363 cf->AddVariable(AliDielectronVarManager::kPsiPair,320,0.,3.2);
365 cf->AddVariable(AliDielectronVarManager::kP,200,0.,20.,kTRUE);
366 cf->AddVariable(AliDielectronVarManager::kPt,200,0.,20.,kTRUE);
367 cf->AddVariable(AliDielectronVarManager::kITSsignal,1000,0.0.,1000.,kTRUE);
368 cf->AddVariable(AliDielectronVarManager::kTPCsignal,500,0.0.,500.,kTRUE);
369 cf->AddVariable(AliDielectronVarManager::kY,100,-2.,2.,kTRUE);
370 //only in this case write MC truth info
372 cf->SetStepForMCtruth();
373 cf->SetStepsForMCtruthOnly();
374 cf->AddVariable(AliDielectronVarManager::kHaveSameMother,5,-2,2);
375 cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE);
376 cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE);
379 //Added after train commit
380 cf->SetStepsForEachCut();
381 cf->SetStepForAfterAllCuts();
384 cf->SetStepsForSignal();
385 die->SetCFManagerPair(cf);
388 AliDielectronSignalMC* lowMassDiele=new
389 AliDielectronSignalMC("lowMassDiele","low mass dielectron pairs");
390 lowMassDiele->SetLegPDGs(11,-11);
391 lowMassDiele->SetCheckBothChargesLegs(kTRUE,kTRUE);
392 lowMassDiele->SetLegSources(AliDielectronSignalMC::kPrimary,
393 AliDielectronSignalMC::kPrimary);
394 lowMassDiele->SetFillPureMCStep(kTRUE);
395 die->AddSignalMC(lowMassDiele);
397 AliDielectronSignalMC* secondary=new
398 AliDielectronSignalMC("secondary","secondary electrons pairs");
399 secondary->SetLegPDGs(11,-11);
400 secondary->SetCheckBothChargesLegs(kTRUE,kTRUE);
401 secondary->SetLegSources(AliDielectronSignalMC::kSecondary,
402 AliDielectronSignalMC::kSecondary);
403 die->AddSignalMC(secondary);
406 AliDielectronSignalMC* finalState=new
407 AliDielectronSignalMC("finalState","finalState electrons pairs");
408 finalState->SetLegPDGs(11,-11);
409 finalState->SetCheckBothChargesLegs(kTRUE,kTRUE);
410 finalState->SetLegSources(AliDielectronSignalMC::kFinalState,
411 AliDielectronSignalMC::kFinalState);
412 die->AddSignalMC(finalState);
415 AliDielectronSignalMC* eleFromConversions=new
416 AliDielectronSignalMC("eleFromConversions","conversion electrons");
417 eleFromConversions->SetLegPDGs(11,-11);
418 eleFromConversions->SetCheckBothChargesLegs(kTRUE,kTRUE);
419 eleFromConversions->SetLegSources(AliDielectronSignalMC::kSecondary,
420 AliDielectronSignalMC::kSecondary);
421 eleFromConversions->SetMotherPDGs(22,22); // 22- photon
422 die->AddSignalMC(eleFromConversions);
425 AliDielectronSignalMC* dalitzDecays=new
426 AliDielectronSignalMC("dalitzDecays","dalitz Pairs");
427 dalitzDecays->SetLegPDGs(11,-11);
428 dalitzDecays->SetCheckBothChargesLegs(kTRUE,kTRUE);
429 dalitzDecays->SetLegSources(AliDielectronSignalMC::kSecondary,
430 AliDielectronSignalMC::kSecondary);
431 dalitzDecays->SetMotherPDGs(111,111);
432 dalitzDecays->SetFillPureMCStep(kTRUE);
433 die->AddSignalMC(dalitzDecays);
436 AliDielectronSignalMC* PhiDecays=new
437 AliDielectronSignalMC("PhiDecays","Phi Pairs");
438 PhiDecays->SetLegPDGs(11,-11);
439 PhiDecays->SetCheckBothChargesLegs(kTRUE,kTRUE);
440 PhiDecays->SetLegSources(AliDielectronSignalMC::kFinalState,
441 AliDielectronSignalMC::kFinalState);
442 PhiDecays->SetMotherPDGs(333,333);
443 PhiDecays->SetMothersRelation(AliDielectronSignalMC::kSame);
444 PhiDecays->SetFillPureMCStep(kTRUE);
445 die->AddSignalMC(PhiDecays);
447 AliDielectronSignalMC* OmegaDecays=new
448 AliDielectronSignalMC("OmegaDecays","Omega Pairs");
449 OmegaDecays->SetLegPDGs(11,-11);
450 OmegaDecays->SetCheckBothChargesLegs(kTRUE,kTRUE);
451 OmegaDecays->SetLegSources(AliDielectronSignalMC::kFinalState,
452 AliDielectronSignalMC::kFinalState);
453 OmegaDecays->SetMotherPDGs(223,223);
454 OmegaDecays->SetMothersRelation(AliDielectronSignalMC::kSame);
455 OmegaDecays->SetFillPureMCStep(kTRUE);
456 die->AddSignalMC(OmegaDecays);
462 //--------------------------------------