1 //#include "PWGDQ/dielectron/macrosLMEE/LMEECutLib.C"
3 void InitHistograms(AliDielectron *die, Int_t cutDefinition);
4 void InitCF(AliDielectron* die, Int_t cutDefinition);
7 TString names=("noPairing;TPCTOFCentHPT;TPCTOFSemiCentHPT;TPCTOFPerinoRej;TPCTOFCent;TPCTOFSemiCent;TPCTOFCentnoTOF;NoPIDNoPairing");
8 TObjArray *arrNames=names.Tokenize(";");
9 const Int_t nDie=arrNames->GetEntries();
11 Bool_t MCenabled=kFALSE;
14 AliDielectron* ConfigLMEEPbPb2011AOD(Int_t cutDefinition, Bool_t hasMC=kFALSE, Bool_t ESDanalysis=kFALSE)
18 Int_t selectedCentrality=-1;
19 Bool_t rejectionStep=kFALSE;
20 LMEECutLib* LMCL = new LMEECutLib();
23 // Setup the instance of AliDielectron
28 // create the actual framework object
30 TString name=Form("%02d",cutDefinition);
31 if ((cutDefinition)<arrNames->GetEntriesFast()){
32 name=arrNames->At((cutDefinition))->GetName();
35 //thisCut only relevant for MC:
37 new AliDielectron(Form
39 Form("Track cuts: %s",name.Data()));
42 //Setup AnalysisSelection:
43 if (cutDefinition==0) {
46 else if (cutDefinition==1) {
47 selectedPID = LMEECutLib::kPbPb2011TPCandTOFHPT;
48 selectedCentrality = LMEECutLib::kPbPb2011Central;
49 rejectionStep = kFALSE;
51 else if (cutDefinition==2) {
52 selectedPID = LMEECutLib::kPbPb2011TPCandTOFHPT;
53 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral;
54 rejectionStep = kFALSE;
56 else if (cutDefinition==3) {
57 selectedPID = LMEECutLib::kPbPb2011TPCandTOF;
58 selectedCentrality = LMEECutLib::kPbPb2011Peripheral;
59 rejectionStep = kFALSE;
61 else if (cutDefinition==4) {
62 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
63 selectedCentrality = LMEECutLib::kPbPb2011Central;
64 rejectionStep = kFALSE;
66 else if (cutDefinition==5) {
67 selectedPID = LMEECutLib::kPbPb2011TPCandTOF;
68 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral;
69 rejectionStep = kTRUE;
71 else if (cutDefinition==6) {
72 //selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
73 selectedPID = LMEECutLib::kPbPb2011TPC;
74 selectedCentrality = LMEECutLib::kPbPb2011Central;
75 rejectionStep = kFALSE;
77 else if (cutDefinition==7) {
78 selectedPID = LMEECutLib::kPbPb2011NoPID;
79 selectedCentrality = LMEECutLib::kPbPb2011Central;
80 rejectionStep = kFALSE;
83 cout << " =============================== " << endl;
84 cout << " ==== INVALID CONFIGURATION ==== " << endl;
85 cout << " =============================== " << endl;
91 //Apply correct Pre-Filter Scheme, if necessary
92 die->SetPreFilterAllSigns();
94 //switch off KF PArticle:
95 die->SetUseKF(kFALSE);
97 if (selectedPID == LMEECutLib::kPbPb2011NoPID) {
102 die->GetTrackFilter().AddCuts(LMCL->GetPIDCutsPre(selectedPID) );
103 die->GetPairPreFilterLegs().AddCuts(LMCL->GetPIDCutsAna(selectedPID) );
104 die->GetPairPreFilter().AddCuts(LMCL->GetPairCuts(selectedPID) );
106 else { //No Prefilter, no Pairfilter
109 die->GetTrackFilter().AddCuts( LMCL->GetESDTrackCutsAna(selectedPID) );
112 die->GetTrackFilter().AddCuts( LMCL->GetTrackCutsAna(selectedPID) );
113 die->GetTrackFilter().AddCuts( LMCL->GetPIDCutsAna(selectedPID) );
115 die->GetPairFilter().AddCuts(LMCL->GetPairCuts2(selectedPID,kFALSE));
119 //Introduce NULL-check for pp?
120 die->GetEventFilter().AddCuts(LMCL->GetCentralityCuts(selectedCentrality));
125 AliDielectronTrackRotator *rot= 0x0;
126 /*AliDielectronTrackRotator *rot= LMCL->GetTrackRotator(selectedPID);
127 die->SetTrackRotator(rot);
129 AliDielectronMixingHandler *mix=LMCL->GetMixingHandler(selectedPID);
130 die->SetMixingHandler(mix);
133 // only if an AliDielectronHistos object is attached to the
134 // dielectron framework histograms will be filled
136 InitHistograms(die,cutDefinition);
138 // the last definition uses no cuts and only the QA histograms should be filled!
139 // InitCF(die,cutDefinition);
144 //______________________________________________________________________________________
146 void InitHistograms(AliDielectron *die, Int_t cutDefinition)
149 // Initialise the histograms
152 //Setup histogram Manager
153 AliDielectronHistos *histos=
154 new AliDielectronHistos(die->GetName(),
156 //Initialise histogram classes
157 histos->SetReservedWords("Track;Pair;Pre;RejTrack;RejPair");
160 // if (cutDefinition==nDie-1)
161 histos->AddClass("Event");
164 //to fill also track info from 2nd event loop until 2
165 for (Int_t i=0; i<2; ++i){
166 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
170 // to fill also mixed event histograms loop until 10
171 for (Int_t i=0; i<3; ++i){
172 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
176 if (die->GetMixingHandler()) {
177 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(3)));
178 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(4)));
179 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(6)));
180 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(7)));
182 if (die->GetTrackRotator()) {
183 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(10)));
187 //to fill also track info from 2nd event loop until 2
188 for (Int_t i=0; i<2; ++i){
189 histos->AddClass(Form("Pre_%s",AliDielectron::TrackClassName(i)));
193 //Create Classes for Rejected Tracks/Pairs:
194 for (Int_t i=0; i<2; ++i){
195 histos->AddClass(Form("RejTrack_%s",AliDielectron::TrackClassName(i)));
197 for (Int_t i=0; i<3; ++i){
198 histos->AddClass(Form("RejPair_%s",AliDielectron::PairClassName(i)));
204 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
205 histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
207 //add histograms to event class
208 histos->UserHistogram("Event","nEvents","Number of processed events after cuts;Number events",
209 1,0.,1.,AliDielectronVarManager::kNevents);
210 histos->UserHistogram("Event","Centrality","Centrality;Centrality [%]","0,10,20,40,80,100,101",
211 AliDielectronVarManager::kCentrality);
214 //add histograms to Track classes
215 histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
216 histos->UserHistogram("Track","Px","Px;Px [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPx);
217 histos->UserHistogram("Track","Py","Py;Py [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPy);
218 histos->UserHistogram("Track","Pz","Pz;Pz [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPz);
220 histos->UserHistogram("Track","NclsSFracTPC","NclsSFracTPC; NclsSFracTPC;#tracks",200,0,10.,AliDielectronVarManager::kNclsSFracTPC);
221 histos->UserHistogram("Track","TPCclsDiff","TPCclsDiff; TPCclsDiff;#tracks",200,0,10.,AliDielectronVarManager::kTPCclsDiff);
223 histos->UserHistogram("Track","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks",
224 400,0.0,20.,1000,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE);
226 histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
227 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
229 histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
230 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
231 histos->UserHistogram("Track","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",
232 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE);
233 histos->UserHistogram("Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
234 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);
236 histos->UserHistogram("Track","TRDpidPobEle_P","TRD PID probability Electrons;P [GeV];TRD prob Electrons;#tracks",
237 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobEle,kTRUE);
238 histos->UserHistogram("Track","TRDpidPobPio_P","TRD PID probability Pions;P [GeV];TRD prob Pions;#tracks",
239 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobPio,kTRUE);
241 histos->UserHistogram("Track","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks",
242 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,kTRUE);
243 histos->UserHistogram("Track","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks",
244 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,kTRUE);
246 histos->UserHistogram("Track","TOFbeta","TOF beta;P [GeV];TOF beta;#tracks",
247 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFbeta,kTRUE);
250 histos->UserHistogram("Track","Eta","Eta; Eta;#tracks",
251 200,-2,2,AliDielectronVarManager::kEta);
252 histos->UserHistogram("Track","Phi","Phi; Phi;#tracks",
253 200,0.,3.15,AliDielectronVarManager::kPhi);
255 histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
256 200,-2,2,200,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
258 histos->UserHistogram("Track","dXY_dZ","dXY dZ Map; dXY; dZ;#tracks",
259 200,-2,2,200,-2,2.,AliDielectronVarManager::kImpactParXY,AliDielectronVarManager::kImpactParZ);
262 histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
263 histos->UserHistogram("Track","dZ","dZ;dZ [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParZ);
265 histos->UserHistogram("Track","TPCcrossedRowsOverFindable","Number of Crossed Rows TPC over Findable;TPC crossed rows over findable;#tracks",100,0.,1.,AliDielectronVarManager::kNFclsTPCfCross);
266 histos->UserHistogram("Track","TPCcrossedRows","Number of Crossed Rows TPC;TPC crossed rows;#tracks",159,0.,159.,AliDielectronVarManager::kNFclsTPCr);
267 histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);
268 histos->UserHistogram("Track","ITSnCls","Number of Clusters ITS;ITS number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsITS);
270 histos->UserHistogram("Track","TPCchi2","TPC Chi2 value;TPC chi2;#tracks",100,0.,10.,AliDielectronVarManager::kTPCchi2Cl);
271 histos->UserHistogram("Track","ITSchi2","ITS Chi2 value;ITS chi2;#tracks",100,0.,10.,AliDielectronVarManager::kITSchi2Cl);
273 histos->UserHistogram("Track","TPCnCls_kNFclsTPCr","nTPC vs nTPCr;nTPC vs nTPCr;#tracks",159,0.,159.,159,0.,159.,AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr);
275 histos->UserHistogram("Track","kNFclsTPCr_pT","nTPCr vs pt;nTPCr vs pt;#tracks",159,0.,159.,200,0.,20.,AliDielectronVarManager::kNFclsTPCr,AliDielectronVarManager::kPt);
277 //add histograms to Pair classes
278 histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
279 500,0.0,5.00,AliDielectronVarManager::kM);
280 histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
281 100,-2.,2.,AliDielectronVarManager::kY);
282 histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
283 100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
285 histos->UserHistogram("Pair","InvMassPairPt","Inv.Mass vs PairPt;Inv. Mass [GeV], pT [GeV];#pairs",
286 500,0.0,5.0,500,0.,50.,AliDielectronVarManager::kM,AliDielectronVarManager::kPt);
288 histos->UserHistogram("Pair","InvMassOpeningAngle","Opening Angle vs Inv.Mass;Inv. Mass [GeV];#pairs",
289 500,0.0,5.0,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kOpeningAngle);
291 //add histograms to Track classes
292 histos->UserHistogram("Pre","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
294 histos->UserHistogram("Pre","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks",
295 400,0.0,20.,1000,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE);
297 histos->UserHistogram("Pre","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
298 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
301 histos->UserHistogram("Pre","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
302 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
303 histos->UserHistogram("Pre","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",
304 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE);
305 histos->UserHistogram("Pre","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
306 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);
308 histos->UserHistogram("Pre","TRDpidPobEle_P","TRD PID probability Electrons;P [GeV];TRD prob Electrons;#tracks",
309 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobEle,kTRUE);
310 histos->UserHistogram("Pre","TRDpidPobPio_P","TRD PID probability Pions;P [GeV];TRD prob Pions;#tracks",
311 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobPio,kTRUE);
313 histos->UserHistogram("Pre","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks",
314 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,kTRUE);
315 histos->UserHistogram("Pre","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks",
316 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,kTRUE);
318 histos->UserHistogram("Pre","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
319 200,-2,2,200,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
321 histos->UserHistogram("Pre","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
323 histos->UserHistogram("Pre","ZVertex ","ZVertex ;ZVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kZv);
324 histos->UserHistogram("Pre","XVertex ","XVertex ;XVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kXv);
325 histos->UserHistogram("Pre","YVertex ","YVertex ;YVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kYv);
327 histos->UserHistogram("Pre","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);
329 //add histograms to Pair classes For Rejected Pairs:
330 die->SetHistogramManager(histos);
334 void InitCF(AliDielectron* die, Int_t cutDefinition)
337 // Setupd the CF Manager if needed
339 AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
342 cf->AddVariable(AliDielectronVarManager::kP,200,0,20);
343 cf->AddVariable(AliDielectronVarManager::kM,201,-0.01,4.01); //20Mev Steps
344 cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);
346 cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,10.0,30.0,40.0,60.,80.,100.");
349 cf->AddVariable(AliDielectronVarManager::kP,200,0.,20.,kTRUE);
350 cf->AddVariable(AliDielectronVarManager::kITSsignal,1000,0.0.,1000.,kTRUE);
351 cf->AddVariable(AliDielectronVarManager::kTPCsignal,500,0.0.,500.,kTRUE);
352 cf->AddVariable(AliDielectronVarManager::kHaveSameMother,21,-10,10,kTRUE);
354 //only in this case write MC truth info
356 cf->SetStepForMCtruth();
357 cf->SetStepsForMCtruthOnly();
358 cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE);
359 cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE);
362 cf->SetStepsForSignal();
363 die->SetCFManagerPair(cf);
366 //--------------------------------------