1 //#include "AliDielectron.h"
2 //#include "PWGDQ/dielectron/macrosLMEE/LMEECutLib.C"
4 void InitHistograms(AliDielectron *die, Int_t cutDefinition);
5 void InitCF(AliDielectron* die, Int_t cutDefinition);
7 TString names=("ITSTPCTOFif_trkSPDfirst_1_kSemi;ITSTPCTOFif_trkSPDfirst5cls_4_kSemi;ITS2gevTPCTOFif_trkSPDfirst_5_tight_kSemi");
8 TObjArray *arrNames=names.Tokenize(";");
9 const Int_t nDie=arrNames->GetEntries();
10 Bool_t MCenabled=kFALSE;//needed for LMEEcutlib
12 AliDielectron* Config_reichelt_LMEEPbPb2011(Int_t cutDefinition, Bool_t hasMC=kFALSE, Bool_t isESD=kFALSE)
15 // Setup the instance of AliDielectron
19 Int_t selectedCentrality=-1;
20 Bool_t rejectionStep=kFALSE;
21 //Bool_t doPairing=kTRUE;
22 LMEECutLib* LMcutlib = new LMEECutLib();
25 TString name=Form("%02d",cutDefinition);
26 if (cutDefinition<arrNames->GetEntriesFast()) name=arrNames->At(cutDefinition)->GetName();
29 AliDielectron *die = new AliDielectron(Form("%s",name.Data()), Form("AliDielectron with cuts: %s",name.Data()));
30 //die->SetHasMC(hasMC);
33 cout << "cutDefinition = " << cutDefinition << endl;
34 // Setup Analysis Selection
35 if (cutDefinition==0) { // Config for Technical Preliminaries for QM2014 (no prefilter used!)
36 selectedPID = LMEECutLib::kPbPb2011_pidITSTPCTOFif_trkSPDfirst_1;
37 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral;
39 else if (cutDefinition==1) { // Config for systematic checks 1
40 selectedPID = LMEECutLib::kPbPb2011_pidITSTPCTOFif_trkSPDfirst5cls_4;
41 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral;
43 else if (cutDefinition==2) { // Config for systematic checks 2
44 selectedPID = LMEECutLib::kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst_5_tight;
45 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral;
48 cout << " =============================== " << endl;
49 cout << " ==== INVALID CONFIGURATION ==== " << endl;
50 cout << " cutDefinition = " << cutDefinition << endl;
51 cout << " =============================== " << endl;
53 // __________________________________________________
54 // POSSIBLE FURTHER SETTINGS
55 // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
56 // deactivate pairing to check track cuts or run with loose pid cuts:
57 //die->SetNoPairing();
58 // apply correct Pre-Filter Scheme, if necessary
59 //die->SetPreFilterAllSigns();
60 //die->SetPreFilterUnlikeOnly();
61 // --------------------------------------------------
66 // add centrality selection to event cuts
67 die->GetEventFilter().AddCuts( LMcutlib->GetCentralityCuts(selectedCentrality) );
68 // switch off KF Particle
69 die->SetUseKF(kFALSE);
71 // --------------------------------------------------
72 // with Rejection Step (Prefilter)
73 // --------------------------------------------------
77 die->GetTrackFilter().AddCuts( LMcutlib->GetESDTrackCutsAna(selectedPID) );
78 die->GetPairPreFilterLegs().AddCuts( LMcutlib->GetESDTrackCutsAna(selectedPID) ); // this is redundant!?
80 // set initial track filter.
81 // the function 'GetPIDCutsPre()' must also call 'GetTrackCutsPre()'!
82 die->GetTrackFilter().AddCuts( LMcutlib->GetPIDCutsPre(selectedPID) );
83 // set Prefilter. "remove all tracks from the Single track arrays that pass the cuts in this filter" (comment in AliDielectron.cxx)
84 // cuts = REJECTION!!!
85 die->GetPairPreFilter().AddCuts( LMcutlib->GetPairCutsPre(selectedPID) );
86 // "apply leg cuts after the pre filter" (comment in AliDielectron.cxx)
89 // the function 'GetPIDCutsAna()' must also call 'GetTrackCutsAna()'!
90 die->GetPairPreFilterLegs().AddCuts( LMcutlib->GetPIDCutsAna(selectedPID) );
94 // cuts = SELECTION!!!
95 die->GetPairFilter().AddCuts( LMcutlib->GetPairCutsAna(selectedPID,kFALSE) );
98 // --------------------------------------------------
99 // without Rejection Step
100 // --------------------------------------------------
104 die->GetTrackFilter().AddCuts( LMcutlib->GetESDTrackCutsAna(selectedPID) );
106 // the function 'GetPIDCutsAna()' must also call 'GetTrackCutsAna()'!
107 die->GetTrackFilter().AddCuts( LMcutlib->GetPIDCutsAna(selectedPID) );
108 die->GetPairFilter().AddCuts( LMcutlib->GetPairCutsAna(selectedPID,kFALSE) );
110 // --------------------------------------------------
113 AliDielectronTrackRotator *rot= 0x0;
114 //To save time and as it is not 100% test, rotation switched off
115 /*AliDielectronTrackRotator *rot= LMcutlib->GetTrackRotator(selectedPID);
116 die->SetTrackRotator(rot);
118 AliDielectronMixingHandler *mix=LMcutlib->GetMixingHandler(selectedPID);
119 die->SetMixingHandler(mix);
122 // only if an AliDielectronHistos object is attached to the
123 // dielectron framework histograms will be filled
125 InitHistograms(die,cutDefinition);
127 // the last definition uses no cuts and only the QA histograms should be filled!
128 // InitCF(die,cutDefinition);
133 //______________________________________________________________________________________
135 void InitHistograms(AliDielectron *die, Int_t cutDefinition)
138 // Initialise the histograms
141 //Setup histogram Manager
142 AliDielectronHistos *histos=new AliDielectronHistos(die->GetName(),die->GetTitle());
144 //Initialise histogram classes
145 histos->SetReservedWords("Track;Pair;Track_Legs;Pre;RejPair;RejTrack");
148 histos->AddClass("Event"); // all classes will be stored in 'THashList fHistoList'
151 //to fill also track info from 2nd event loop until 3
152 // in AliDielectron.cxx: fgkTrackClassNames[4] = {"ev1+","ev1-","ev2+","ev2-"};
153 for (Int_t i=0; i<2; ++i){
154 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
158 // to fill also mixed event histograms loop until 10
159 // fgkPairClassNames[11] = {
160 // "ev1+_ev1+", "ev1+_ev1-", "ev1-_ev1-", // 0-2 (same event)
161 // "ev1+_ev2+", "ev1-_ev2+", "ev2+_ev2+", // 3-4 (+5)
162 // "ev1+_ev2-", "ev1-_ev2-", // 6-7
163 // "ev2+_ev2-", "ev2-_ev2-", "ev1+_ev1-_TR"
165 for (Int_t i=0; i<3; ++i){
166 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
167 // Legs of final Pairs. Both charges together. No duplicate entries.
168 histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i))); // not TrackClassName, see 'AliDielectron::FillHistograms(...)'
172 if (die->GetMixingHandler()) {
173 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(3)));
174 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(4)));
175 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(6)));
176 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(7)));
178 if (die->GetTrackRotator()) {
179 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(10)));
183 //to fill also track info from 2nd event loop until 2
184 for (Int_t i=0; i<2; ++i){
185 histos->AddClass(Form("Pre_%s",AliDielectron::TrackClassName(i)));
188 //Create Classes for Rejected Tracks/Pairs:
189 for (Int_t i=0; i<3; ++i){
190 histos->AddClass(Form("RejPair_%s",AliDielectron::PairClassName(i)));
191 // Legs of rejected Pairs. Both charges together. One track can and will make multiple entries.
192 histos->AddClass(Form("RejTrack_%s",AliDielectron::PairClassName(i))); // not TrackClassName, see 'AliDielectron::FillHistogramsPair(...)'
198 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
199 histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
201 //add histograms to event class
202 histos->UserHistogram("Event","nEvents","Number of processed events after cuts;#events",1,0.,1.,AliDielectronVarManager::kNevents);
203 histos->UserHistogram("Event","Centrality","Centrality;Centrality [%]","-1,0,10,20,30,40,50,60,70,80,90,100,101;#events",AliDielectronVarManager::kCentrality);
204 histos->UserHistogram("Event","centrality","N events vs centrality;centrality [%];#events",100,0,100,AliDielectronVarManager::kCentrality);
205 histos->UserHistogram("Event","nESDTracks","ESD tracks;ESD tracks;#events",1000,0,10000,AliDielectronVarManager::kNTrk);
206 histos->UserHistogram("Event","Nacc","Number of accepted tracks;Nacc;#events",1200,0,1200,AliDielectronVarManager::kNacc);
207 histos->UserHistogram("Event","epTPC","TPC event plane angle (uncorr);EP angle TPC (uc);#events",320,-3.2,3.2,AliDielectronVarManager::kTPCrpH2uc);
208 histos->UserHistogram("Event","epV0AC","V0AC event plane angle;EP angle V0AC;#events",320,-3.2,3.2,AliDielectronVarManager::kv0ACrpH2);
209 histos->UserHistogram("Event","epV0AC_epTPC","event plane angle V0AC vs TPC;EP angle TPC (uc);EP angle V0AC",
210 160,-1.6,1.6,160,-1.6,1.6,AliDielectronVarManager::kTPCrpH2uc,AliDielectronVarManager::kv0ACrpH2);
213 //add histograms to Track classes
214 histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",200,0,10.,AliDielectronVarManager::kPt);
215 histos->UserHistogram("Track","Px","Px;Px [GeV];#tracks",200,0,10.,AliDielectronVarManager::kPx);
216 histos->UserHistogram("Track","Py","Py;Py [GeV];#tracks",200,0,10.,AliDielectronVarManager::kPy);
217 histos->UserHistogram("Track","Pz","Pz;Pz [GeV];#tracks",200,0,10.,AliDielectronVarManager::kPz);
218 histos->UserHistogram("Track","P_PIn","TPC inner P vs P; P [GeV]; TPC inner P [GeV]",
219 160,0.,8.,160,0.,8.,AliDielectronVarManager::kP,AliDielectronVarManager::kPIn);
222 Bool_t makeLogx = kFALSE;
223 histos->UserHistogram("Track","ITS_dEdx_P","ITS dEdx;P [GeV];ITS signal (arb units)",
224 160,0.,8.,700,0.,700.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSsignal,makeLogx);
225 histos->UserHistogram("Track","ITSnSigmaEle_P","ITS number of sigmas Electrons;P [GeV];ITS number of sigmas Electrons",
226 160,0.,8.,100,-5.,5.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSnSigmaEle,makeLogx);
227 histos->UserHistogram("Track","ITSnSigmaPio_P","ITS number of sigmas Pions;P [GeV];ITS number of sigmas Pions",
228 160,0.,8.,200,-10.,10.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSnSigmaPio,makeLogx);
229 histos->UserHistogram("Track","ITSnSigmaKao_P","ITS number of sigmas Kaons;P [GeV];ITS number of sigmas Kaons",
230 160,0.,8.,200,-10.,10.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSnSigmaKao,makeLogx);
231 //histos->UserHistogram("Track","ITSnSigmaPro_P","ITS number of sigmas Protons;P [GeV];ITS number of sigmas Protons",
232 // 160,0.,8.,200,-10.,10.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSnSigmaPro,makeLogx);
234 histos->UserHistogram("Track","TPC_dEdx_P","TPC dEdx;P [GeV];TPC signal (arb units)",
235 160,0.,8.,120,0.,120.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,makeLogx);
236 histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons",
237 160,0.,8.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,makeLogx);
238 histos->UserHistogram("Track","TPCnSigmaEle_P_dEdx","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;TPC signal (arb units)",
239 80,0.,4.,80,-4.,4.,50,50.,100.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,AliDielectronVarManager::kTPCsignal,makeLogx);
240 histos->UserHistogram("Track","TPC_dEdx_P_run","TPC dEdx;P [GeV];TPC signal (arb units);run number",
241 AliDielectronHelper::MakeLinBinning(80,0.,4.),
242 AliDielectronHelper::MakeLinBinning(50,50.,100.),
243 AliDielectronHelper::MakeArbitraryBinning("167900, 167987, 167988, 168310, 168311, 168322, 168325, 168341, 168342, 168361, 168362, 168458, 168460, 168464, 168467, 168511, 168512, 168514, 168777, 168826, 168988, 168992, 169035, 169040, 169044, 169045, 169091, 169094, 169099, 169138, 169144, 169145, 169148, 169156, 169160, 169167, 169238, 169411, 169415, 169417, 169418, 169419, 169420, 169475, 169498, 169504, 169506, 169512, 169515, 169550, 169553, 169554, 169555, 169557, 169586, 169587, 169588, 169590, 169591, 169835, 169837, 169838, 169846, 169855, 169858, 169859, 170027, 170040, 170081, 170083, 170084, 170085, 170088, 170089, 170091, 170155, 170159, 170163, 170193, 170203, 170204, 170207, 170228, 170230, 170268, 170269, 170270, 170306, 170308, 170309, 170311, 170312, 170313, 170315, 170387, 170388, 170572, 170593, 170600"),
244 AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,AliDielectronVarManager::kRunNumber);
245 // AliDielectronHelper::MakeArbitraryBinning("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, 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, 167988, 167987, 167800"),
247 histos->UserHistogram("Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions",
248 160,0.,8.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,makeLogx);
249 histos->UserHistogram("Track","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons",
250 160,0.,8.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,makeLogx);
251 histos->UserHistogram("Track","TPCnSigmaPro_P","TPC number of sigmas Protons;P [GeV];TPC number of sigmas Protons",
252 160,0.,8.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPro,makeLogx);
254 // TRD variables need lot of computing time. since a performance update by Julian, they will not be computed if not needed! (status 7.3.14)
255 // histos->UserHistogram("Track","TRDpidPobEle_P","TRD PID probability Electrons;P [GeV];TRD prob Electrons",
256 // 160,0.,8.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobEle,makeLogx);
257 // histos->UserHistogram("Track","TRDpidPobPio_P","TRD PID probability Pions;P [GeV];TRD prob Pions",
258 // 160,0.,8.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobPio,makeLogx);
260 histos->UserHistogram("Track","TOFnSigmaEle_P","TOF number of sigmas Electrons;P [GeV];TOF number of sigmas Electrons",
261 160,0.,8.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaEle,makeLogx);
262 histos->UserHistogram("Track","TOFnSigmaPio_P","TOF number of sigmas Pions;P [GeV];TOF number of sigmas Pions",
263 160,0.,8.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPio,makeLogx);
264 histos->UserHistogram("Track","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons",
265 160,0.,8.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,makeLogx);
266 histos->UserHistogram("Track","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons",
267 160,0.,8.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,makeLogx);
268 histos->UserHistogram("Track","TOFbeta","TOF beta;P [GeV];TOF beta",
269 160,0.,8.,120,0.,1.2,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFbeta,makeLogx);
271 histos->UserHistogram("Track","PIn_TPCnSigmaEle_ITSnSigmaEle","2D PID - TPC vs ITS;P [GeV];TPC number of sigmas Electrons;ITS number of sigmas Electrons",
272 50,0.,2.5, 160,-12.,20., 150,-10.,20.,
273 AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,AliDielectronVarManager::kITSnSigmaEle,makeLogx);
274 histos->UserHistogram("Track","PIn_TPCnSigmaEle_TOFnSigmaEle","2D PID - TPC vs TOF;P [GeV];TPC number of sigmas Electrons;TOF number of sigmas Electrons",
275 50,0.,2.5, 160,-12.,20., 50,-5.,5.,
276 AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,AliDielectronVarManager::kTOFnSigmaEle,makeLogx);
279 histos->UserHistogram("Track","Eta","Eta;Eta;#tracks",
280 200,-2,2,AliDielectronVarManager::kEta);
281 histos->UserHistogram("Track","Phi","Phi;Phi;#tracks",
282 320,0.,6.4,AliDielectronVarManager::kPhi);
283 histos->UserHistogram("Track","Eta_Phi","Eta Phi Map;Eta;Phi",
284 100,-1,1,320,0,6.4,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
286 histos->UserHistogram("Track","TPC_dEdx_Eta","TPC dEdx;Eta;TPC signal (arb units)",
287 100,-1,1,120,0.,120.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCsignal);
288 histos->UserHistogram("Track","TPC_dEdx_Eta_P","TPC dEdx;Eta;TPC signal (arb units); TPC inner P [GeV]",
289 100,-1,1,60,0.,120.,80,0.,4.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCsignal,AliDielectronVarManager::kPIn);
290 histos->UserHistogram("Track","TPCnSigmaEle_Eta","TPC number of sigmas Electrons; Eta; TPC number of sigmas Electrons",
291 100,-1,1,100,-5.,5.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaEle);
292 histos->UserHistogram("Track","TPCnSigmaEle_Eta_P","TPC number of sigmas Electrons; Eta; TPC number of sigmas Electrons; TPC inner P [GeV]",
293 100,-1,1,80,-4.,4.,80,0.,4.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaEle,AliDielectronVarManager::kPIn);
294 histos->UserHistogram("Track","TPCnSigmaKao_Eta","TPC number of sigmas Kaons; Eta; TPC number of sigmas Kaons",
295 100,-1,1,200,-10.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaKao);
296 histos->UserHistogram("Track","TPCnSigmaKao_Eta_P","TPC number of sigmas Kaons; Eta; TPC number of sigmas Kaons; TPC inner P [GeV]",
297 50,-1,1,100,-10.,10.,80,0.,4.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaKao,AliDielectronVarManager::kPIn);
300 histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",
301 200,-2.,2.,AliDielectronVarManager::kImpactParXY);
302 histos->UserHistogram("Track","dZ","dZ;dZ [cm];#tracks",
303 400,-4.,4.,AliDielectronVarManager::kImpactParZ);
304 histos->UserHistogram("Track","dXY_dZ","dXY dZ Map;dXY;dZ",
305 100,-1.,1.,300,-3.,3.,AliDielectronVarManager::kImpactParXY,AliDielectronVarManager::kImpactParZ);
308 histos->UserHistogram("Track","TPCcrossedRowsOverFindable","Number of Crossed Rows TPC over Findable;TPC crossed rows over findable;#tracks",120,0.,1.2,AliDielectronVarManager::kNFclsTPCfCross);
309 histos->UserHistogram("Track","TPCcrossedRows","Number of Crossed Rows TPC;TPC crossed rows;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNFclsTPCr);
310 histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusters;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNclsTPC);
311 histos->UserHistogram("Track","ITSnCls","Number of Clusters ITS;ITS number clusters;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNclsITS);
312 histos->UserHistogram("Track","TPCchi2","TPC Chi2 value;TPC chi2/Cl;#tracks",100,0.,10.,AliDielectronVarManager::kTPCchi2Cl);
313 histos->UserHistogram("Track","ITSchi2","ITS Chi2 value;ITS chi2/Cl;#tracks",100,0.,10.,AliDielectronVarManager::kITSchi2Cl);
314 histos->UserHistogram("Track","NclsSFracTPC","Fraction of shared clusters assigned in the TPC;TPC fraction of shared clusters;#tracks",200,0,10.,AliDielectronVarManager::kNclsSFracTPC);
315 histos->UserHistogram("Track","TPCclsDiff","TPC cluster difference;TPC cluster difference;#tracks",200,0,20.,AliDielectronVarManager::kTPCclsDiff);
316 histos->UserHistogram("Track","TPCsignalN","Number of PID Clusters TPC;TPC number PID clusters;#tracks",160,-0.5,159.5,AliDielectronVarManager::kTPCsignalN);
318 histos->UserHistogram("Track","TPCcrossedRows_TPCnCls","TPC crossed rows vs TPC number clusters;TPC number clusters;TPC crossed rows",
319 160,-0.5,159.5,160,-0.5,159.5,AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr);
320 histos->UserHistogram("Track","TPCcrossedRows_Pt","TPC crossed rows vs Pt;Pt [GeV];TPC crossed rows",
321 160,0.,8.,160,-0.5,159.5,AliDielectronVarManager::kPt,AliDielectronVarManager::kNFclsTPCr);
322 histos->UserHistogram("Track","TPCcrossedRowsOverFindable_Pt","Number of Crossed Rows TPC over Findable vs Pt;Pt [GeV];TPC crossed rows over findable",
323 160,0.,8.,120,0.,1.2,AliDielectronVarManager::kPt,AliDielectronVarManager::kNFclsTPCfCross);
324 histos->UserHistogram("Track","TPCcrossedRowsOverFindable_Eta","Number of Crossed Rows TPC over Findable vs Eta;Eta;TPC crossed rows over findable",
325 100,-1,1,120,0.,1.2,AliDielectronVarManager::kEta,AliDielectronVarManager::kNFclsTPCfCross);
326 histos->UserHistogram("Track","TPCcrossedRowsOverFindable_Phi","Number of Crossed Rows TPC over Findable vs Phi;Phi;TPC crossed rows over findable",
327 320,0.,6.4,120,0.,1.2,AliDielectronVarManager::kPhi,AliDielectronVarManager::kNFclsTPCfCross);
329 //add histograms to Pair classes
330 histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
331 500,0.,5.,AliDielectronVarManager::kM);
332 histos->UserHistogram("Pair","PairPt","PairPt;Pair Pt [GeV];#pairs",
333 160,0.,8.,AliDielectronVarManager::kPt);
334 histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
335 200,-2.,2.,AliDielectronVarManager::kY);
336 histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle;#pairs",
337 320,0.,3.2,AliDielectronVarManager::kOpeningAngle);
339 //2D and 3D histograms
340 histos->UserHistogram("Pair","InvMass_PairPt","PairPt vs InvMass;Inv. Mass [GeV];Pair Pt [GeV];#pairs",
341 500,0.,5., 160,0.,8.,
342 AliDielectronVarManager::kM, AliDielectronVarManager::kPt);
343 histos->UserHistogram("Pair","Eta_Phi_Pair","Phi vs Eta (pair);Eta;Phi;#pairs",
344 100,-1.,1., 320,0.,6.4,
345 AliDielectronVarManager::kEta, AliDielectronVarManager::kPhi);
346 histos->UserHistogram("Pair","InvMass_PairPt_PhivPair","InvMass:PairPt:PhivPair;Inv. Mass [GeV];Pair Pt [GeV];PhiV",
347 150,0.,1.5, 40,0.,4., 64,0.,3.2,
348 AliDielectronVarManager::kM, AliDielectronVarManager::kPt, AliDielectronVarManager::kPhivPair);
349 histos->UserHistogram("Pair","InvMass_PairPt_OpeningAngle","InvMass:PairPt:OpeningAngle;Inv. Mass [GeV];Pair Pt [GeV];Opening Angle",
350 150,0.,1.5, 40,0.,4., 64,0.,3.2,
351 AliDielectronVarManager::kM, AliDielectronVarManager::kPt, AliDielectronVarManager::kOpeningAngle);
352 histos->UserHistogram("Pair","InvMass_PhivPair_OpeningAngle","InvMass:PhivPair:OpeningAngle;Inv. Mass [GeV];PhiV;Opening Angle",
353 50,0.,0.5, 160,0.,3.2, 40,0.,0.8,
354 AliDielectronVarManager::kM, AliDielectronVarManager::kPhivPair, AliDielectronVarManager::kOpeningAngle);
356 //opening angle and PhiV
357 histos->UserHistogram("Pair","InvMass_OpeningAngle","Opening Angle vs InvMass;Inv. Mass [GeV];Opening Angle;#pairs",
358 500,0.,5., 160,0.,3.2,
359 AliDielectronVarManager::kM, AliDielectronVarManager::kOpeningAngle);
360 histos->UserHistogram("Pair","InvMass_PhivPair","PhiV vs InvMass;Inv. Mass [GeV];PhiV;#pairs",
361 500,0.,5., 160,0.,3.2,
362 AliDielectronVarManager::kM, AliDielectronVarManager::kPhivPair);
363 histos->UserHistogram("Pair","PairPt_OpeningAngle","Opening Angle vs PairPt;Pair Pt [GeV];Opening Angle;#pairs",
364 160,0.,8., 160,0.,3.2,
365 AliDielectronVarManager::kPt, AliDielectronVarManager::kOpeningAngle);
366 histos->UserHistogram("Pair","PairPt_PhivPair","PhiV vs PairPt;Pair Pt [GeV];PhiV;#pairs",
367 160,0.,8., 160,0.,3.2,
368 AliDielectronVarManager::kPt, AliDielectronVarManager::kPhivPair);
369 histos->UserHistogram("Pair","OpeningAngle_PhivPair","PhiV vs OpeningAngle;Opening Angle;PhiV;#pairs",
370 160,0.,3.2, 160,0.,3.2,
371 AliDielectronVarManager::kOpeningAngle, AliDielectronVarManager::kPhivPair);
374 histos->UserHistogram("Pair","InvMass_Centrality","Centrality vs InvMass;Inv. Mass [GeV];Centrality;#pairs",
375 500,0.,5., 102,-1,101,
376 AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality);
377 histos->UserHistogram("Pair","PairPt_Centrality","Centrality vs PairPt;Pair Pt [GeV];Centrality;#pairs",
378 160,0.,8., 102,-1,101,
379 AliDielectronVarManager::kPt, AliDielectronVarManager::kCentrality);
383 //add histograms to Track classes
384 histos->UserHistogram("Pre","Pt","Pt;Pt [GeV];#tracks",200,0,10.,AliDielectronVarManager::kPt);
385 histos->UserHistogram("Pre","Px","Px;Px [GeV];#tracks",200,0,10.,AliDielectronVarManager::kPx);
386 histos->UserHistogram("Pre","Py","Py;Py [GeV];#tracks",200,0,10.,AliDielectronVarManager::kPy);
387 histos->UserHistogram("Pre","Pz","Pz;Pz [GeV];#tracks",200,0,10.,AliDielectronVarManager::kPz);
389 histos->UserHistogram("Pre","ITS_dEdx_P","ITS dEdx;P [GeV];ITS signal (arb units)",
390 160,0.,8.,700,0.,700.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSsignal,makeLogx);
391 histos->UserHistogram("Pre","TPC_dEdx_P","TPC dEdx;P [GeV];TPC signal (arb units)",
392 160,0.,8.,120,0.,120.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,makeLogx);
394 histos->UserHistogram("Pre","ITSnSigmaEle_P","ITS number of sigmas Electrons;P [GeV];ITS number of sigmas Electrons",
395 160,0.,8.,100,-5.,5.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSnSigmaEle,makeLogx);
396 //histos->UserHistogram("Pre","ITSnSigmaPio_P","ITS number of sigmas Pions;P [GeV];ITS number of sigmas Pions",
397 // 160,0.,8.,200,-10.,10.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSnSigmaPio,makeLogx);
398 //histos->UserHistogram("Pre","ITSnSigmaKao_P","ITS number of sigmas Kaons;P [GeV];ITS number of sigmas Kaons",
399 // 160,0.,8.,200,-10.,10.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSnSigmaKao,makeLogx);
400 //histos->UserHistogram("Pre","ITSnSigmaPro_P","ITS number of sigmas Protons;P [GeV];ITS number of sigmas Protons",
401 // 160,0.,8.,200,-10.,10.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSnSigmaPro,makeLogx);
403 histos->UserHistogram("Pre","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons",
404 160,0.,8.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,makeLogx);
405 histos->UserHistogram("Pre","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions",
406 160,0.,8.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,makeLogx);
407 histos->UserHistogram("Pre","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons",
408 160,0.,8.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,makeLogx);
409 histos->UserHistogram("Pre","TPCnSigmaPro_P","TPC number of sigmas Protons;P [GeV];TPC number of sigmas Protons",
410 160,0.,8.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPro,makeLogx);
413 die->SetHistogramManager(histos);
417 void InitCF(AliDielectron* die, Int_t cutDefinition)
420 // Setupd the CF Manager if needed
422 AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
425 cf->AddVariable(AliDielectronVarManager::kP,100,0.,5.);
426 cf->AddVariable(AliDielectronVarManager::kM,200,-0.01,3.99); //20Mev Steps
427 cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);
429 cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,5.,10.,20.,30.,50.,80.,100.");
432 cf->AddVariable(AliDielectronVarManager::kP,160,0.,8.,kTRUE);
433 cf->AddVariable(AliDielectronVarManager::kITSsignal,350,0.,700.,kTRUE);
434 cf->AddVariable(AliDielectronVarManager::kTPCsignal,60,0.,120.,kTRUE);
435 cf->AddVariable(AliDielectronVarManager::kHaveSameMother,21,-10,10,kTRUE);
437 //only in this case write MC truth info
438 if (MCenabled) { // more elegant: die->GetHasMC()
439 cf->SetStepForMCtruth();
440 cf->SetStepsForMCtruthOnly();
441 cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE);
442 cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE);
445 cf->SetStepsForSignal();
446 die->SetCFManagerPair(cf);