]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGDQ/dielectron/macrosLMEE/ConfigLMEEPbPb2011AOD.C
update tasks for PbPb analysis
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosLMEE / ConfigLMEEPbPb2011AOD.C
1 //#include "PWGDQ/dielectron/macrosLMEE/LMEECutLib.C"
2
3 void InitHistograms(AliDielectron *die, Int_t cutDefinition);
4 void InitCF(AliDielectron* die, Int_t cutDefinition);
5 void EnableMC();
6
7 TString names=("noPairing;TPCTOFCentHPT;TPCTOFSemiCentHPT;TPCTOFPerinoRej;TPCTOFCent;TPCTOFSemiCent;TPCTOFCentnoTOF;NoPIDNoPairing");
8 TObjArray *arrNames=names.Tokenize(";");
9 const Int_t nDie=arrNames->GetEntries();
10
11 Bool_t MCenabled=kFALSE;
12
13
14 AliDielectron* ConfigLMEEPbPb2011AOD(Int_t cutDefinition, Bool_t hasMC=kFALSE, Bool_t ESDanalysis=kFALSE)
15 {
16
17   Int_t selectedPID=-1;
18   Int_t selectedCentrality=-1;
19   Bool_t rejectionStep=kFALSE;
20   LMEECutLib*  LMCL = new LMEECutLib();
21
22   //
23   // Setup the instance of AliDielectron
24   //
25
26   MCenabled=hasMC;
27
28   // create the actual framework object
29
30   TString name=Form("%02d",cutDefinition);
31   if ((cutDefinition)<arrNames->GetEntriesFast()){
32         name=arrNames->At((cutDefinition))->GetName();
33   }
34
35   //thisCut only relevant for MC:
36   AliDielectron *die =
37         new AliDielectron(Form
38                 ("%s",name.Data()),
39                 Form("Track cuts: %s",name.Data()));
40
41
42   //Setup AnalysisSelection:
43   if (cutDefinition==0) {
44         //not yet implemented
45   }
46   else if (cutDefinition==1) {
47         selectedPID = LMEECutLib::kPbPb2011TPCandTOFHPT;
48         selectedCentrality = LMEECutLib::kPbPb2011Central;
49         rejectionStep = kFALSE;
50   }
51   else if (cutDefinition==2) {
52         selectedPID = LMEECutLib::kPbPb2011TPCandTOFHPT;
53         selectedCentrality = LMEECutLib::kPbPb2011SemiCentral;
54         rejectionStep = kFALSE;
55   }
56   else if (cutDefinition==3) {
57         selectedPID = LMEECutLib::kPbPb2011TPCandTOF;
58         selectedCentrality = LMEECutLib::kPbPb2011Peripheral;
59         rejectionStep = kFALSE;
60   }
61   else if (cutDefinition==4) {
62         selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
63         selectedCentrality = LMEECutLib::kPbPb2011Central;
64         rejectionStep = kFALSE;
65   }
66   else if (cutDefinition==5) {
67         selectedPID = LMEECutLib::kPbPb2011TPCandTOF;
68         selectedCentrality = LMEECutLib::kPbPb2011SemiCentral;
69         rejectionStep = kTRUE;
70   }
71   else if (cutDefinition==6) {
72         //selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
73         selectedPID = LMEECutLib::kPbPb2011TPC;
74         selectedCentrality = LMEECutLib::kPbPb2011Central;
75         rejectionStep = kFALSE;
76   }
77   else if (cutDefinition==7) {
78         selectedPID = LMEECutLib::kPbPb2011NoPID;
79         selectedCentrality = LMEECutLib::kPbPb2011Central;
80         rejectionStep = kFALSE;
81   }
82   else Semi{
83         cout << " =============================== " << endl;
84         cout << " ==== INVALID CONFIGURATION ==== " << endl;
85         cout << " =============================== " << endl;
86   }
87
88
89   //Now configure task
90
91   //Apply correct Pre-Filter Scheme, if necessary
92   die->SetPreFilterAllSigns();
93
94   //switch off KF PArticle:
95   die->SetUseKF(kFALSE);
96
97   if (selectedPID == LMEECutLib::kPbPb2011NoPID) {
98           die->SetNoPairing();
99    }
100
101         if (rejectionStep) {
102                 die->GetTrackFilter().AddCuts(LMCL->GetPIDCutsPre(selectedPID) );
103                 die->GetPairPreFilterLegs().AddCuts(LMCL->GetPIDCutsAna(selectedPID) );
104                 die->GetPairPreFilter().AddCuts(LMCL->GetPairCuts(selectedPID) );
105         }
106         else { //No Prefilter, no Pairfilter
107           
108           if (ESDanalysis) {
109                 die->GetTrackFilter().AddCuts( LMCL->GetESDTrackCutsAna(selectedPID) );
110           }
111           
112           die->GetTrackFilter().AddCuts( LMCL->GetTrackCutsAna(selectedPID) );
113           die->GetTrackFilter().AddCuts( LMCL->GetPIDCutsAna(selectedPID) );
114           
115           die->GetPairFilter().AddCuts(LMCL->GetPairCuts2(selectedPID,kFALSE));
116
117
118         }
119         //Introduce NULL-check for pp?
120         die->GetEventFilter().AddCuts(LMCL->GetCentralityCuts(selectedCentrality));
121
122
123
124
125   AliDielectronTrackRotator *rot= 0x0;
126   /*AliDielectronTrackRotator *rot= LMCL->GetTrackRotator(selectedPID);
127   die->SetTrackRotator(rot);
128    */
129   AliDielectronMixingHandler *mix=LMCL->GetMixingHandler(selectedPID);
130   die->SetMixingHandler(mix);
131
132   // histogram setup
133   // only if an AliDielectronHistos object is attached to the
134   // dielectron framework histograms will be filled
135   //
136   InitHistograms(die,cutDefinition);
137
138   // the last definition uses no cuts and only the QA histograms should be filled!
139 //  InitCF(die,cutDefinition);
140
141   return die;
142 }
143
144 //______________________________________________________________________________________
145
146 void InitHistograms(AliDielectron *die, Int_t cutDefinition)
147 {
148   //
149   // Initialise the histograms
150   //
151
152   //Setup histogram Manager
153   AliDielectronHistos *histos=
154         new AliDielectronHistos(die->GetName(),
155                 die->GetTitle());
156   //Initialise histogram classes
157   histos->SetReservedWords("Track;Pair;Pre;RejTrack;RejPair");
158
159   //Event class
160 //  if (cutDefinition==nDie-1) 
161                 histos->AddClass("Event");
162
163   //Track classes
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)));
167   }
168
169   //Pair classes
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)));
173   }
174
175   //ME and track rot
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)));
181   }
182   if (die->GetTrackRotator()) {
183         histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(10)));
184   }
185
186   //PreFilter Classes
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)));
190   }
191
192
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)));
196   }
197   for (Int_t i=0; i<3; ++i){
198         histos->AddClass(Form("RejPair_%s",AliDielectron::PairClassName(i)));
199   }
200
201   /*
202   //track rotation
203
204   histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
205   histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
206   */
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);
212
213
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);
219
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);
222
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);
225
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);
228
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);
235
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);
240
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);
245
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);
248
249
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);
254
255   histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
256           200,-2,2,200,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
257
258   histos->UserHistogram("Track","dXY_dZ","dXY dZ Map; dXY; dZ;#tracks",
259           200,-2,2,200,-2,2.,AliDielectronVarManager::kImpactParXY,AliDielectronVarManager::kImpactParZ);
260
261
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);
264
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);
269
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);
272
273           histos->UserHistogram("Track","TPCnCls_kNFclsTPCr","nTPC vs nTPCr;nTPC vs nTPCr;#tracks",159,0.,159.,159,0.,159.,AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr);
274
275           histos->UserHistogram("Track","kNFclsTPCr_pT","nTPCr vs pt;nTPCr vs pt;#tracks",159,0.,159.,200,0.,20.,AliDielectronVarManager::kNFclsTPCr,AliDielectronVarManager::kPt);
276
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);
284           //2D Histo Plot
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);
287
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);
290
291           //add histograms to Track classes
292           histos->UserHistogram("Pre","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
293
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);
296
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);
299
300
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);
307
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);
312
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);
317
318           histos->UserHistogram("Pre","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
319                   200,-2,2,200,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
320
321           histos->UserHistogram("Pre","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
322
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);
326
327   histos->UserHistogram("Pre","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);
328
329   //add histograms to Pair classes For Rejected Pairs:
330   die->SetHistogramManager(histos);
331 }
332
333
334 void InitCF(AliDielectron* die, Int_t cutDefinition)
335 {
336   //
337   // Setupd the CF Manager if needed
338   //
339   AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
340
341   //pair variables
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);
345
346   cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,10.0,30.0,40.0,60.,80.,100.");
347
348   //leg variables
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);
353
354   //only in this case write MC truth info
355   if (MCenabled) {
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);
360   }
361
362   cf->SetStepsForSignal();
363   die->SetCFManagerPair(cf);
364 }
365
366 //--------------------------------------
367 void EnableMC() {
368   MCenabled=kTRUE;
369 }
370