1 void InitHistograms(AliDielectron *die, Int_t cutDefinition);
2 void InitCF(AliDielectron* die, Int_t cutDefinition);
4 void SetSignals(AliDielectron *die);
6 //////////////////////////////////////////////////////
8 //// |cutDefinition | CENT | PID | Pair |
9 ///// | 0 | - | - | - |
10 ///// | 1 | 0-10 | kPbPb2011TPCandTOFwide | - |
11 ///// | 2 | 10-30 | kPbPb2011TPCandTOFwide | - |
12 ///// | 3 | 30-50 | kPbPb2011TPCandTOFwide | - |
13 ///// | 4 | 0-10 | kPbPb2011TPCandTOFwide | OP & SetPreFilterAllSigns |
14 ///// | 5 | 10-30 | kPbPb2011TPCandTOFwide | OP & SetPreFilterAllSigns |
15 ///// | 6 | 30-50 | kPbPb2011TPCandTOFwide | OP & SetPreFilterAllSigns |
16 ///// | 7 | 0-10 | kPbPb2011TPCandTOFwide | Phiv & SetPreFilterAllSigns |
17 ///// | 8 | 10-30 | kPbPb2011TPCandTOFwide | Phiv & SetPreFilterAllSigns |
18 ///// | 9 | 30-50 | kPbPb2011TPCandTOFwide | Phiv & SetPreFilterAllSigns |
19 ///// | 10 | 0-10 | kPbPb2011TPCandTOFwide | OP & No SetPreFilterAllSigns |
20 ///// | 11 | 10-30 | kPbPb2011TPCandTOFwide | OP & No SetPreFilterAllSigns |
21 ///// | 12 | 30-50 | kPbPb2011TPCandTOFwide | OP & No SetPreFilterAllSigns |
22 ///// | 13 | 0-10 | kPbPb2011TPCandTOFwide | Phiv & No SetPreFilterAllSigns |
23 ///// | 14 | 10-30 | kPbPb2011TPCandTOFwide | Phiv & No SetPreFilterAllSigns |
24 ///// | 15 | 30-50 | kPbPb2011TPCandTOFwide | Phiv & No SetPreFilterAllSigns |
25 //////////////////////////////////////////////////////////
33 TString names=("noPairing;TPCTOFCentnoPair;TPCTOFSemiCent1noPair;TPCTOFSemiCent2noPair;TPCTOFCentOpPair;TPCTOFSemiCent1OpPair;TPCTOFSemiCent2OpPair;TPCTOFCentPvPair;TPCTOFSemiCent1PvPair;TPCTOFSemiCent2PvPair;TPCTOFCentOpPair2;TPCTOFSemiCent1OpPair2;TPCTOFSemiCent2OpPair2;TPCTOFCentPvPair2;TPCTOFSemiCent1PvPair2;TPCTOFSemiCent2PvPair2");
35 TObjArray *arrNames=names.Tokenize(";");
36 const Int_t nDie=arrNames->GetEntries();
38 Bool_t MCenabled=kFALSE;
41 AliDielectron* ConfigTakuLMEEPbPb2011(Int_t cutDefinition, Bool_t withMC=kFALSE, Bool_t CFenable=kFALSE)
45 Int_t selectedCentrality=-1;
46 Int_t selectedPairCut=-1;
47 Bool_t rejectionStep=kFALSE;
48 Bool_t HasPairCut = kFALSE;
49 LMEECutLib* LMCL = new LMEECutLib();
52 // Setup the instance of AliDielectron
56 // create the actual framework object
58 TString name=Form("%02d",cutDefinition);
59 if ((cutDefinition)<arrNames->GetEntriesFast()){
60 name=arrNames->At((cutDefinition))->GetName();
63 //thisCut only relevant for MC:
65 new AliDielectron(Form
67 Form("Track cuts: %s",name.Data()));
74 //Setup AnalysisSelection:
75 if (cutDefinition==0) {
78 //////////////////////////////////////////////
79 else if (cutDefinition==1) {
80 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
81 selectedCentrality = LMEECutLib::kPbPb2011Central;
82 rejectionStep = kFALSE;
85 else if (cutDefinition==2) {
86 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
87 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral1;
88 rejectionStep = kFALSE;
91 else if (cutDefinition==3) {
92 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
93 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral2;
94 rejectionStep = kFALSE;
97 //////////////////////////////////////////////
98 else if (cutDefinition==4) {
99 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
100 selectedCentrality = LMEECutLib::kPbPb2011Central;
101 selectedPairCut = LMEECutLib::kPbPb2011OP;
102 rejectionStep = kTRUE;
105 else if (cutDefinition==5) {
106 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
107 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral1;
108 selectedPairCut = LMEECutLib::kPbPb2011OP;
109 rejectionStep = kTRUE;
112 else if (cutDefinition==6) {
113 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
114 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral2;
115 selectedPairCut = LMEECutLib::kPbPb2011OP;
116 rejectionStep = kTRUE;
119 //////////////////////////////////////////////
120 else if (cutDefinition==7) {
121 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
122 selectedCentrality = LMEECutLib::kPbPb2011Central;
123 selectedPairCut = LMEECutLib::kPbPb2011Phiv;
124 rejectionStep = kTRUE;
127 else if (cutDefinition==8) {
128 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
129 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral1;
130 selectedPairCut = LMEECutLib::kPbPb2011Phiv;
131 rejectionStep = kTRUE;
134 else if (cutDefinition==9) {
135 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
136 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral2;
137 selectedPairCut = LMEECutLib::kPbPb2011Phiv;
138 rejectionStep = kTRUE;
141 //////////////////////////////////////////////
142 else if (cutDefinition==10) {
143 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
144 selectedCentrality = LMEECutLib::kPbPb2011Central;
145 selectedPairCut = LMEECutLib::kPbPb2011OP;
146 rejectionStep = kFALSE;
149 else if (cutDefinition==11) {
150 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
151 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral1;
152 selectedPairCut = LMEECutLib::kPbPb2011OP;
153 rejectionStep = kFALSE;
156 else if (cutDefinition==12) {
157 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
158 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral2;
159 selectedPairCut = LMEECutLib::kPbPb2011OP;
160 rejectionStep = kFALSE;
163 //////////////////////////////////////////////
164 else if (cutDefinition==13) {
165 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
166 selectedCentrality = LMEECutLib::kPbPb2011Central;
167 selectedPairCut = LMEECutLib::kPbPb2011Phiv;
168 rejectionStep = kFALSE;
171 else if (cutDefinition==14) {
172 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
173 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral1;
174 selectedPairCut = LMEECutLib::kPbPb2011Phiv;
175 rejectionStep = kFALSE;
178 else if (cutDefinition==15) {
179 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
180 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral2;
181 selectedPairCut = LMEECutLib::kPbPb2011Phiv;
182 rejectionStep = kFALSE;
185 //////////////////////////////////////////////
189 //Legacy cuts, check consistence w/ 1 & 4, then remove
191 else if (cutDefinition==7) {
192 selectedPID = LMEECutLib::kPbPb2011TPCandTOF;
193 selectedCentrality = LMEECutLib::kPbPb2011Central;
194 rejectionStep = kFALSE;
196 else if (cutDefinition==8) {
197 selectedPID = LMEECutLib::kPbPb2011TPCandTOF;
198 selectedCentrality = LMEECutLib::kPbPb2011Central;
199 rejectionStep = kTRUE;
203 cout << " =============================== " << endl;
204 cout << " ==== INVALID CONFIGURATION ==== " << endl;
205 cout << " =============================== " << endl;
213 die->GetTrackFilter().AddCuts(LMCL->GetPIDCutsPre(selectedPID) );
214 die->GetPairPreFilterLegs().AddCuts(LMCL->GetPIDCutsAna(selectedPID) );
215 die->GetPairPreFilter().AddCuts(LMCL->GetPairCuts(selectedPID) );
217 else { //No Prefilter, no Pairfilter
222 //Apply correct Pre-Filter Scheme, if necessary
223 die->SetPreFilterAllSigns(rejectionStep);
225 die->GetTrackFilter().AddCuts( LMCL->GetPIDCutsAna(selectedPID) );
226 die->GetEventFilter().AddCuts(LMCL->GetCentralityCuts(selectedCentrality));
228 if(HasPairCut==kTRUE){
229 if(rejectionStep==kTRUE){
230 die->GetPairPreFilterLegs().AddCuts(LMCL->GetPIDCutsAna(selectedPID) );
231 die->GetPairPreFilter().AddCuts( LMCL->GetPairPreFilterCuts(selectedPairCut));
232 die->GetPairFilter().AddCuts( LMCL->GetPairCuts(selectedPairCut));
234 die->GetPairFilter().AddCuts( LMCL->GetPairCuts(selectedPairCut));
241 AliDielectronTrackRotator *rot= 0x0;
242 /*AliDielectronTrackRotator *rot= LMCL->GetTrackRotator(selectedPID);
243 die->SetTrackRotator(rot);
245 AliDielectronMixingHandler *mix=LMCL->GetMixingHandler(selectedPID);
246 die->SetMixingHandler(mix);
249 // only if an AliDielectronHistos object is attached to the
250 // dielectron framework histograms will be filled
252 InitHistograms(die,cutDefinition);
254 // the last definition uses no cuts and only the QA histograms should be filled!
257 InitCF(die,cutDefinition);
262 //______________________________________________________________________________________
264 void InitHistograms(AliDielectron *die, Int_t cutDefinition)
267 // Initialise the histograms
270 //Setup histogram Manager
271 AliDielectronHistos *histos=
272 new AliDielectronHistos(die->GetName(),
274 //Initialise histogram classes
275 histos->SetReservedWords("Track;Pair;Pre;RejTrack;RejPair:MyPair:MyPairV0");
278 // if (cutDefinition==nDie-1)
279 histos->AddClass("Event");
282 //to fill also track info from 2nd event loop until 2
283 for (Int_t i=0; i<2; ++i){
284 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
288 // to fill also mixed event histograms loop until 10
289 for (Int_t i=0; i<3; ++i){
290 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
294 if (die->GetMixingHandler()) {
295 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(3)));
296 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(4)));
297 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(6)));
298 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(7)));
300 if (die->GetTrackRotator()) {
301 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(10)));
305 //to fill also track info from 2nd event loop until 2
306 for (Int_t i=0; i<2; ++i){
307 histos->AddClass(Form("Pre_%s",AliDielectron::TrackClassName(i)));
311 //Create Classes for Rejected Tracks/Pairs:
312 for (Int_t i=0; i<2; ++i){
313 histos->AddClass(Form("RejTrack_%s",AliDielectron::TrackClassName(i)));
315 for (Int_t i=0; i<3; ++i){
316 histos->AddClass(Form("RejPair_%s",AliDielectron::PairClassName(i)));
321 // to fill also mixed event histograms loop until 10
323 const char* fgkPairClassNames[7] = {
332 for (Int_t i=0; i<7; ++i){
333 histos->AddClass(Form("MyPair_%s",fgkPairClassNames[i]));
335 for (Int_t i=0; i<7; ++i){
336 histos->AddClass(Form("MyPairV0_%s",fgkPairClassNames[i]));
343 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
344 histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
346 //add histograms to event class
347 histos->UserHistogram("Event","nEvents","Number of processed events after cuts;Number events",
348 1,0.,1.,AliDielectronVarManager::kNevents);
349 //histos->UserHistogram("Event","Centrality","Centrality;Centrality [%]","0,10,20,40,80,100,101",
350 //AliDielectronVarManager::kCentrality);
351 histos->UserHistogram("Event","Centrality","Centrality;Centrality [%]",100, 0, 100,
352 AliDielectronVarManager::kCentrality);
355 //add histograms to Track classes, also fills RejTrack
356 histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
357 histos->UserHistogram("Track","NclsSFracTPC","NclsSFracTPC; NclsSFracTPC;#tracks",200,0,10.,AliDielectronVarManager::kNclsSFracTPC);
358 histos->UserHistogram("Track","TPCclsDiff","TPCclsDiff; TPCclsDiff;#tracks",200,0,10.,AliDielectronVarManager::kTPCclsDiff);
360 histos->UserHistogram("Track","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks",
361 400,0.0,20.,1000,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE);
363 histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
364 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
366 histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
367 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
368 histos->UserHistogram("Track","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",
369 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE);
370 histos->UserHistogram("Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
371 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);
373 histos->UserHistogram("Track","TRDpidPobEle_P","TRD PID probability Electrons;P [GeV];TRD prob Electrons;#tracks",
374 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobEle,kTRUE);
375 histos->UserHistogram("Track","TRDpidPobPio_P","TRD PID probability Pions;P [GeV];TRD prob Pions;#tracks",
376 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobPio,kTRUE);
378 histos->UserHistogram("Track","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks",
379 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,kTRUE);
380 histos->UserHistogram("Track","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks",
381 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,kTRUE);
383 histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
384 200,-1,1,200,0,6.3,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
386 histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
388 histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);
390 histos->UserHistogram("Track","TPCnCls_kNFclsTPCr","nTPC vs nTPCr;nTPC vs nTPCr;#tracks",159,0.,159.,159,0.,159.,AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr);
392 histos->UserHistogram("Track","kNFclsTPCr_pT","nTPCr vs pt;nTPCr vs pt;#tracks",159,0.,159.,200,0.,20.,AliDielectronVarManager::kNFclsTPCr,AliDielectronVarManager::kPt);
394 //add histograms to Pair classes, also fills RejPair
395 histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
396 1000,0.0,5.00,AliDielectronVarManager::kM);
397 histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
398 100,-2.,2.,AliDielectronVarManager::kY);
399 histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
400 100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
402 histos->UserHistogram("Pair","InvMassPairPt","Inv.Mass vs PairPt;Inv. Mass [GeV], pT [GeV];#pairs",
403 1000,0.0,5.0,200,0.,20.,AliDielectronVarManager::kM,AliDielectronVarManager::kPt);
404 histos->UserHistogram("Pair","InvMassPhivPair","PhivPair vs Inv. Mass;Inv. Mass [GeV]; Phiv",
405 1000,0.0,5.0,200,0.,4,AliDielectronVarManager::kM,AliDielectronVarManager::kPhivPair);
406 histos->UserHistogram("Pair","InvMassOpeningAngle","Opening Angle vs Inv.Mass;Inv. Mass [GeV] ; OpeningAngle[rad]",
407 1000,0.0,5.0,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kOpeningAngle);
409 //add histograms to Track classes
410 histos->UserHistogram("Pre","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
412 histos->UserHistogram("Pre","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks",
413 400,0.0,20.,1000,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE);
415 histos->UserHistogram("Pre","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
416 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
418 histos->UserHistogram("Pre","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
419 200,-1,1,200,0,6.3,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
421 histos->UserHistogram("Pre","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
423 histos->UserHistogram("Pre","ZVertex ","ZVertex ;ZVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kZv);
424 histos->UserHistogram("Pre","XVertex ","XVertex ;XVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kXv);
425 histos->UserHistogram("Pre","YVertex ","YVertex ;YVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kYv);
427 histos->UserHistogram("Pre","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
428 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
429 histos->UserHistogram("Pre","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",
430 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE);
431 histos->UserHistogram("Pre","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
432 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);
433 histos->UserHistogram("Pre","TPCnSigmaPro_P","TPC number of sigmas Proton;P [GeV];TPC number of sigmas Pions;#tracks",
434 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPro,kTRUE);
437 // histos->UserHistogram("Pre","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);
440 ////////////////////////////////////////////////////////////////////////////
441 ////////////////////////////////////////////////////////////////////////////
442 ////// my own histograms
443 histos->UserHistogram("MyPair","InvMyMassPairPt","Inv.MyMass vs PairPt;Inv. MyMass [GeV]; pT [GeV]",
444 1000,0.0,5.0,200,0.,20.,AliDielectronVarManager::kM,AliDielectronVarManager::kPt);
446 histos->UserHistogram("MyPair","InvMyMassOpeningAngle","Opening Angle vs Inv.MyMass;Inv. MyMass [GeV] ; OpeningAngle[rad]",
447 1000,0.0,5.0,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kOpeningAngle);
449 histos->UserHistogram("MyPair","InvMyMassPsiPair","PsiPair vs Inv.MyMass;Inv. MyMass [GeV]; Phiv",
450 1000,0.0,5.0,200,0.,4,AliDielectronVarManager::kM,AliDielectronVarManager::kPsiPair);
452 histos->UserHistogram("MyPair","InvMyMassPhivPair","PhivPair vs Inv.MyMass;Inv. MyMass [GeV]; Phiv",
453 1000,0.0,5.0,200,0.,4,AliDielectronVarManager::kM,AliDielectronVarManager::kPhivPair);
455 histos->UserHistogram("MyPair","InvMyMassR","R vs Inv.MyMass;Inv. MyMass [GeV]; R[cm]",
456 1000,0.0,5.0,200,0.,30,AliDielectronVarManager::kM,AliDielectronVarManager::kR);
458 histos->UserHistogram("MyPair","InvMyMassdPhi","dPhi of pairs vs Inv.MyMass;Inv. MyMass [GeV]; dPhi[rad]",
459 1000,0.0,5.0,200,0.,3.1415,AliDielectronVarManager::kM,AliDielectronVarManager::kCosPointingAngle);
461 histos->UserHistogram("MyPair","PhivR","R vs Phiv; R[cm]; Phiv[rad]",
462 200,0.,30, 200,0,4, AliDielectronVarManager::kR,AliDielectronVarManager::kPsiPair);
465 histos->UserHistogram("MyPairV0","InvV0MyMassPairPt","Inv.MyMass vs PairPt;Inv. MyMass [GeV]; pT [GeV]",
466 1000,0.0,5.0,200,0.,20.,AliDielectronVarManager::kM,AliDielectronVarManager::kPt);
468 histos->UserHistogram("MyPairV0","InvV0MyMassOpeningAngle","Opening Angle vs Inv.MyMass;Inv. MyMass [GeV]; OA[rad]",
469 1000,0.0,5.0,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kOpeningAngle);
471 histos->UserHistogram("MyPairV0","InvV0MyMassPsiPair","PsiPair vs Inv.MyMass;Inv. MyMass [GeV]; Psi[rad]",
472 1000,0.0,5.0,200,0.,4,AliDielectronVarManager::kM,AliDielectronVarManager::kPsiPair);
474 histos->UserHistogram("MyPairV0","InvV0MyMassPhivPair","PhivPair vs Inv.MyMass;Inv. MyMass [GeV]; Phiv [rad]",
475 1000,0.0,5.0,200,0.,4,AliDielectronVarManager::kM,AliDielectronVarManager::kPhivPair);
477 histos->UserHistogram("MyPairV0","InvV0MyMassR","R vs Inv.MyMass;Inv. MyMass [GeV]; R[cm]",
478 1000,0.0,5.0,200,0.,30,AliDielectronVarManager::kM,AliDielectronVarManager::kR);
479 histos->UserHistogram("MyPairV0","PsiPairR","R vs PsiPair; R[cm]; PsiPair[rad]",
480 200,0.,30, 200,0,4, AliDielectronVarManager::kR,AliDielectronVarManager::kPsiPair);
481 histos->UserHistogram("MyPairV0","InvV0MyMassdPhi","dPhi of pairs vs Inv.MyMass;Inv. MyMass [GeV]; dPhi[rad]",
482 1000,0.0,5.0,200,0.,3.1415,AliDielectronVarManager::kM,AliDielectronVarManager::kCosPointingAngle);
484 ////////////////////////////////////////////////////////////////////////////
485 ////////////////////////////////////////////////////////////////////////////
492 die->SetHistogramManager(histos);
496 void InitCF(AliDielectron* die, Int_t cutDefinition)
499 // Setupd the CF Manager if needed
502 AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
505 cf->AddVariable(AliDielectronVarManager::kP,200,0,20);
506 cf->AddVariable(AliDielectronVarManager::kPt,200,0,20);
507 cf->AddVariable(AliDielectronVarManager::kM, 1000,0,5.00); //5Mev Steps
508 cf->AddVariable(AliDielectronVarManager::kY,100,-2.,2.);
509 cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);
511 cf->AddVariable(AliDielectronVarManager::kCentrality,100, 0, 100);
512 cf->AddVariable(AliDielectronVarManager::kOpeningAngle,320,0.,3.2);
513 cf->AddVariable(AliDielectronVarManager::kPsiPair,320,0.,3.2);
515 cf->AddVariable(AliDielectronVarManager::kP,200,0.,20.,kTRUE);
516 cf->AddVariable(AliDielectronVarManager::kPt,200,0.,20.,kTRUE);
517 cf->AddVariable(AliDielectronVarManager::kITSsignal,1000,0.0.,1000.,kTRUE);
518 cf->AddVariable(AliDielectronVarManager::kTPCsignal,500,0.0.,500.,kTRUE);
519 cf->AddVariable(AliDielectronVarManager::kTPCnSigmaEle,100,-10.0.,10.,kTRUE);
520 cf->AddVariable(AliDielectronVarManager::kITSnSigmaEle,100,-10.0.,10.,kTRUE);
521 cf->AddVariable(AliDielectronVarManager::kY,100,-2.,2.,kTRUE);
522 //only in this case write MC truth info
524 cf->SetStepForMCtruth();
525 //cf->SetStepsForMCtruthOnly();
526 cf->SetStepForAfterAllCuts();
527 cf->AddVariable(AliDielectronVarManager::kHaveSameMother,5,-2,2);
528 //cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE);
529 //cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE);
532 cf->SetStepsForSignal();
533 die->SetCFManagerPair(cf);
538 AliDielectronSignalMC* lowMassDiele=new
539 AliDielectronSignalMC("lowMassDiele","low mass dielectron pairs");
540 lowMassDiele->SetLegPDGs(11,-11);
541 lowMassDiele->SetCheckBothChargesLegs(kTRUE,kTRUE);
542 lowMassDiele->SetLegSources(AliDielectronSignalMC::kPrimary,
543 AliDielectronSignalMC::kPrimary);
544 lowMassDiele->SetFillPureMCStep(kTRUE);
545 die->AddSignalMC(lowMassDiele);
547 AliDielectronSignalMC* secondary=new
548 AliDielectronSignalMC("secondary","secondary electrons pairs");
549 secondary->SetLegPDGs(11,-11);
550 secondary->SetCheckBothChargesLegs(kTRUE,kTRUE);
551 secondary->SetLegSources(AliDielectronSignalMC::kSecondary,
552 AliDielectronSignalMC::kSecondary);
553 die->AddSignalMC(secondary);
556 AliDielectronSignalMC* finalState=new
557 AliDielectronSignalMC("finalState","finalState electrons pairs");
558 finalState->SetLegPDGs(11,-11);
559 finalState->SetCheckBothChargesLegs(kTRUE,kTRUE);
560 finalState->SetLegSources(AliDielectronSignalMC::kFinalState,
561 AliDielectronSignalMC::kFinalState);
562 die->AddSignalMC(finalState);
567 //--------------------------------------
573 //--------------------------------------
574 void SetSignals(AliDielectron *die)
578 AliDielectronSignalMC* promptJpsi = new AliDielectronSignalMC("promptJpsi","Prompt J/psi"); // prompt J/psi (not from beauty decays)
579 promptJpsi->SetLegPDGs(11,-11);
580 promptJpsi->SetMotherPDGs(443,443);
581 promptJpsi->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons
582 promptJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
583 promptJpsi->SetFillPureMCStep(kTRUE);
584 promptJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
585 promptJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
586 promptJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
587 promptJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
588 die->AddSignalMC(promptJpsi);
590 // physical backgrounds (electrons from other sources)
591 AliDielectronSignalMC* diEleContinuum = new AliDielectronSignalMC("diEleContinuum","di-electron continuum"); // all di-electrons originating in the collision
592 diEleContinuum->SetLegPDGs(11,-11);
593 diEleContinuum->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
594 diEleContinuum->SetCheckBothChargesLegs(kTRUE,kTRUE);
595 die->AddSignalMC(diEleContinuum);
597 AliDielectronSignalMC* diEleCharm = new AliDielectronSignalMC("diEleCharm","di-electrons from charm"); // dielectrons originating from charm hadrons (not neccessary from same mother)
598 diEleCharm->SetLegPDGs(11,-11);
599 diEleCharm->SetMotherPDGs(403,403);
600 diEleCharm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
601 diEleCharm->SetCheckBothChargesLegs(kTRUE,kTRUE);
602 diEleCharm->SetCheckBothChargesMothers(kTRUE,kTRUE);
603 die->AddSignalMC(diEleCharm);
605 AliDielectronSignalMC* diEleOpenCharm = new AliDielectronSignalMC("diEleOpenCharm","di-electrons from open charm"); // dielectrons originating from open charm hadrons
606 diEleOpenCharm->SetLegPDGs(11,-11);
607 diEleOpenCharm->SetMotherPDGs(402,402);
608 diEleOpenCharm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
609 diEleOpenCharm->SetCheckBothChargesLegs(kTRUE,kTRUE);
610 diEleOpenCharm->SetCheckBothChargesMothers(kTRUE,kTRUE);
611 die->AddSignalMC(diEleOpenCharm);
614 // background from secondary electrons
615 AliDielectronSignalMC* secondaryElectrons = new AliDielectronSignalMC("secondaryElectrons","Secondary electrons"); // all di-electrons from secondary electrons (interaction with detector)
616 secondaryElectrons->SetLegPDGs(11,-11);
617 secondaryElectrons->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary);
618 secondaryElectrons->SetCheckBothChargesLegs(kTRUE,kTRUE);
619 die->AddSignalMC(secondaryElectrons);
622 AliDielectronSignalMC* primarySecElePairs = new AliDielectronSignalMC("primarySecElePairs","Primary+Secondary electron pairs"); // primary-secondary pairs
623 primarySecElePairs->SetLegPDGs(11,-11);
624 primarySecElePairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
625 primarySecElePairs->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kSecondary);
626 die->AddSignalMC(primarySecElePairs);
629 AliDielectronSignalMC* conversionElePairs = new AliDielectronSignalMC("conversionElePairs","conversion electron pairs"); // pairs made from conversion (may be also from 2 different conversions)
630 conversionElePairs->SetLegPDGs(11,-11);
631 conversionElePairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
632 conversionElePairs->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary);
633 conversionElePairs->SetMotherPDGs(22,22);
634 die->AddSignalMC(conversionElePairs);
638 AliDielectronSignalMC* allEleMisIdPairs = new AliDielectronSignalMC("allEleMisIdPairs","all electron+misid. pairs"); // one true electron + a mis-id electron (all sources included)
639 allEleMisIdPairs->SetLegPDGs(11,11,kFALSE,kTRUE);
640 allEleMisIdPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
641 die->AddSignalMC(allEleMisIdPairs);
643 AliDielectronSignalMC* allMisIdMisIdPairs = new AliDielectronSignalMC("allMisIdMisIdPairs","all misid.+misid. pairs"); // mis-id + mis-id
644 allMisIdMisIdPairs->SetLegPDGs(11,11,kTRUE,kTRUE);
645 allMisIdMisIdPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
646 die->AddSignalMC(allMisIdMisIdPairs);
648 AliDielectronSignalMC* elePionPairs = new AliDielectronSignalMC("elePionPairs","electron+pion pairs"); // true electron + mis-id pion
649 elePionPairs->SetLegPDGs(11,211);
650 elePionPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
651 die->AddSignalMC(elePionPairs);
653 AliDielectronSignalMC* eleKaonPairs = new AliDielectronSignalMC("eleKaonPairs","electron+kaon pairs"); // true electron + mis-id kaon
654 eleKaonPairs->SetLegPDGs(11,321);
655 eleKaonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
656 die->AddSignalMC(eleKaonPairs);
658 AliDielectronSignalMC* eleProtonPairs = new AliDielectronSignalMC("eleProtonPairs","Electron+proton pairs"); // true electron + mis-id proton
659 eleProtonPairs->SetLegPDGs(11,2212);
660 eleProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
661 die->AddSignalMC(eleProtonPairs);
663 AliDielectronSignalMC* piPiPairs = new AliDielectronSignalMC("piPiPairs","pion+pion pairs"); // mis-id pion + mis-id pion
664 piPiPairs->SetLegPDGs(211,211);
665 piPiPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
666 die->AddSignalMC(piPiPairs);
668 AliDielectronSignalMC* piKaonPairs = new AliDielectronSignalMC("piKaonPairs","pion+kaon pairs"); // mis-id pion + mis-id kaon
669 piKaonPairs->SetLegPDGs(211,321);
670 piKaonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
671 die->AddSignalMC(piKaonPairs);
673 AliDielectronSignalMC* piProtonPairs = new AliDielectronSignalMC("piProtonPairs","pion+proton pairs"); // mis-id pion + mis-id proton
674 piProtonPairs->SetLegPDGs(211,2212);
675 piProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
676 die->AddSignalMC(piProtonPairs);
678 AliDielectronSignalMC* kaonKaonPairs = new AliDielectronSignalMC("kaonKaonPairs","kaon+kaon pairs"); // mis-id kaon + mis-id kaon
679 kaonKaonPairs->SetLegPDGs(321,321);
680 kaonKaonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
681 die->AddSignalMC(kaonKaonPairs);
683 AliDielectronSignalMC* kaonProtonPairs = new AliDielectronSignalMC("kaonProtonPairs","kaon+proton pairs"); // mis-id kaon + mis-id proton
684 kaonProtonPairs->SetLegPDGs(321,2212);
685 kaonProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
686 die->AddSignalMC(kaonProtonPairs);
688 AliDielectronSignalMC* protonProtonPairs = new AliDielectronSignalMC("protonProtonPairs","proton+proton pairs"); // mis-id proton + mis-id proton
689 protonProtonPairs->SetLegPDGs(2212,2212);
690 protonProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
691 die->AddSignalMC(protonProtonPairs);
693 AliDielectronSignalMC* muonAllPairs = new AliDielectronSignalMC("muonAllPairs","muon+everything pairs"); // mis-id muon + something else (electron, pion, kaon, proton)
694 muonAllPairs->SetLegPDGs(13,13,kFALSE,kTRUE);
695 muonAllPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
696 die->AddSignalMC(muonAllPairs);
700 AliDielectronSignalMC* pi0Sig = new AliDielectronSignalMC("pi0", "pi0Signal"); ///pi0 dalitz pairs
701 pi0Sig->SetLegPDGs(11,-11);
702 pi0Sig->SetMotherPDGs(111,111);
703 pi0Sig->SetMothersRelation(AliDielectronSignalMC::kSame);
704 pi0Sig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
705 pi0Sig->SetMotherSources(AliDielectronSignalMC::kPrimary, AliDielectronSignalMC::kPrimary);
706 pi0Sig->SetCheckBothChargesLegs(kTRUE,kTRUE);
707 pi0Sig->SetCheckBothChargesMothers(kTRUE,kTRUE);
708 pi0Sig->SetFillPureMCStep(kTRUE);
709 die->AddSignalMC(pi0Sig);
712 AliDielectronSignalMC* etaSig = new AliDielectronSignalMC("Eta", "etaSignal"); ///eta dalitz pairs
713 etaSig->SetLegPDGs(11,-11);
714 etaSig->SetMotherPDGs(221,221);
715 etaSig->SetMothersRelation(AliDielectronSignalMC::kSame);
716 etaSig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
717 etaSig->SetMotherSources(AliDielectronSignalMC::kPrimary, AliDielectronSignalMC::kPrimary);
718 etaSig->SetCheckBothChargesLegs(kTRUE,kTRUE);
719 etaSig->SetCheckBothChargesMothers(kTRUE,kTRUE);
720 etaSig->SetFillPureMCStep(kTRUE);
721 die->AddSignalMC(etaSig);
724 AliDielectronSignalMC* etaprimeSig = new AliDielectronSignalMC("Etaprime", "etaprimeSignal"); ///etaprime pairs
725 etaprimeSig->SetLegPDGs(11,-11);
726 etaprimeSig->SetMotherPDGs(331,331);
727 etaprimeSig->SetMothersRelation(AliDielectronSignalMC::kSame);
728 etaprimeSig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
729 etaprimeSig->SetMotherSources(AliDielectronSignalMC::kPrimary, AliDielectronSignalMC::kPrimary);
730 etaprimeSig->SetCheckBothChargesLegs(kTRUE,kTRUE);
731 etaprimeSig->SetCheckBothChargesMothers(kTRUE,kTRUE);
732 etaprimeSig->SetFillPureMCStep(kTRUE);
733 die->AddSignalMC(etaprimeSig);
736 AliDielectronSignalMC* rhoSig = new AliDielectronSignalMC("Rho", "rhoSignal"); ///rho pairs
737 rhoSig->SetLegPDGs(11,-11);
738 rhoSig->SetMotherPDGs(113,113);
739 rhoSig->SetMothersRelation(AliDielectronSignalMC::kSame);
740 rhoSig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
741 rhoSig->SetMotherSources(AliDielectronSignalMC::kPrimary, AliDielectronSignalMC::kPrimary);
742 rhoSig->SetCheckBothChargesLegs(kTRUE,kTRUE);
743 rhoSig->SetCheckBothChargesMothers(kTRUE,kTRUE);
744 rhoSig->SetFillPureMCStep(kTRUE);
745 die->AddSignalMC(rhoSig);
747 AliDielectronSignalMC* omegaSig = new AliDielectronSignalMC("Omega", "omegaSignal"); ///omega pairs
748 omegaSig->SetLegPDGs(11,-11);
749 omegaSig->SetMotherPDGs(223,223);
750 omegaSig->SetMothersRelation(AliDielectronSignalMC::kSame);
751 omegaSig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
752 omegaSig->SetMotherSources(AliDielectronSignalMC::kPrimary, AliDielectronSignalMC::kPrimary);
753 omegaSig->SetCheckBothChargesLegs(kTRUE,kTRUE);
754 omegaSig->SetCheckBothChargesMothers(kTRUE,kTRUE);
755 omegaSig->SetFillPureMCStep(kTRUE);
756 die->AddSignalMC(omegaSig);
758 AliDielectronSignalMC* phiSig = new AliDielectronSignalMC("Phi", "phiSignal"); ///phi pairs
759 phiSig->SetLegPDGs(11,-11);
760 phiSig->SetMotherPDGs(333,333);
761 phiSig->SetMothersRelation(AliDielectronSignalMC::kSame);
762 phiSig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
763 phiSig->SetMotherSources(AliDielectronSignalMC::kPrimary, AliDielectronSignalMC::kPrimary);
764 phiSig->SetCheckBothChargesLegs(kTRUE,kTRUE);
765 phiSig->SetCheckBothChargesMothers(kTRUE,kTRUE);
766 phiSig->SetFillPureMCStep(kTRUE);
767 die->AddSignalMC(phiSig);
770 AliDielectronSignalMC* convSig = new AliDielectronSignalMC("conv", "convSignal");
771 convSig->SetLegPDGs(11,-11);
772 convSig->SetMothersRelation(AliDielectronSignalMC::kSame);
773 convSig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); //in this case, ee needs to be true=IsPhysicalPrimary(label)
774 convSig->SetCheckBothChargesLegs(kFALSE,kFALSE);
775 die->AddSignalMC(convSig);