]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGDQ/dielectron/macrosLMEE/ConfigLMEEPbPb2011.C
activate wider tpc cut
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosLMEE / ConfigLMEEPbPb2011.C
CommitLineData
6be5eb30 1void InitHistograms(AliDielectron *die, Int_t cutDefinition);
2void InitCF(AliDielectron* die, Int_t cutDefinition);
3void EnableMC();
4
8d5670a6 5TString names=("noPairing;TPCTOFCentnoRej;TPCTOFSemiCentnoRej;TPCTOFPerinoRej;TPCTOFCent;TPCTOFSemiCent;TPCTOFPeri;TPCTOFCentnoRejTight;TPCTOFCentTight");
6be5eb30 6TObjArray *arrNames=names.Tokenize(";");
7const Int_t nDie=arrNames->GetEntries();
8
9Bool_t MCenabled=kFALSE;
10
11
12AliDielectron* ConfigLMEEPbPb2011(Int_t cutDefinition, Bool_t hasMC=kFALSE)
13{
14
15 Int_t selectedPID=-1;
16 Int_t selectedCentrality=-1;
17 Bool_t rejectionStep=kFALSE;
18 LMEECutLib* LMCL = new LMEECutLib();
19
20 //
21 // Setup the instance of AliDielectron
22 //
23
24 MCenabled=hasMC;
25
26 // create the actual framework object
27
28 TString name=Form("%02d",cutDefinition);
29 if ((cutDefinition)<arrNames->GetEntriesFast()){
30 name=arrNames->At((cutDefinition))->GetName();
31 }
32
33 //thisCut only relevant for MC:
34 AliDielectron *die =
35 new AliDielectron(Form
36 ("%s",name.Data()),
37 Form("Track cuts: %s",name.Data()));
38
39
40 //Setup AnalysisSelection:
41 if (cutDefinition==0) {
42 //not yet implemented
43 }
44 else if (cutDefinition==1) {
8d5670a6 45 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
6be5eb30 46 selectedCentrality = LMEECutLib::kPbPb2011Central;
47 rejectionStep = kFALSE;
48 }
49 else if (cutDefinition==2) {
8d5670a6 50 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
6be5eb30 51 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral;
52 rejectionStep = kFALSE;
53 }
54 else if (cutDefinition==3) {
8d5670a6 55 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
6be5eb30 56 selectedCentrality = LMEECutLib::kPbPb2011Peripheral;
57 rejectionStep = kFALSE;
58 }
59 else if (cutDefinition==4) {
8d5670a6 60 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
6be5eb30 61 selectedCentrality = LMEECutLib::kPbPb2011Central;
62 rejectionStep = kTRUE;
63 }
64 else if (cutDefinition==5) {
8d5670a6 65 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
6be5eb30 66 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral;
67 rejectionStep = kTRUE;
68 }
69 else if (cutDefinition==6) {
8d5670a6 70 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
6be5eb30 71 selectedCentrality = LMEECutLib::kPbPb2011Peripheral;
72 rejectionStep = kTRUE;
73 }
8d5670a6 74
75//Legacy cuts, check consistence w/ 1 & 4, then remove
76 else if (cutDefinition==7) {
77 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
78 selectedCentrality = LMEECutLib::kPbPb2011Central;
79 rejectionStep = kFALSE;
80 }
81 else if (cutDefinition==8) {
82 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
83 selectedCentrality = LMEECutLib::kPbPb2011Central;
84 rejectionStep = kTRUE;
85 }
86
6be5eb30 87 else Semi{
88 cout << " =============================== " << endl;
89 cout << " ==== INVALID CONFIGURATION ==== " << endl;
90 cout << " =============================== " << endl;
91 }
92
93
94 //Now configure task
95
96 //Apply correct Pre-Filter Scheme, if necessary
97 die->SetPreFilterAllSigns();
98
99 if (rejectionStep) {
100 die->GetTrackFilter().AddCuts(LMCL->GetPIDCutsPre(selectedPID) );
101 die->GetPairPreFilterLegs().AddCuts(LMCL->GetPIDCutsAna(selectedPID) );
102 die->GetPairPreFilter().AddCuts(LMCL->GetPairCuts(selectedPID) );
103 }
104 else { //No Prefilter, no Pairfilter
105 die->GetTrackFilter().AddCuts( LMCL->GetPIDCutsAna(selectedPID) );
106 }
107 //Introduce NULL-check for pp?
108 die->GetEventFilter().AddCuts(LMCL->GetCentralityCuts(selectedCentrality));
109
110
111
112
113 AliDielectronTrackRotator *rot= 0x0;
114 /*AliDielectronTrackRotator *rot= LMCL->GetTrackRotator(selectedPID);
115 die->SetTrackRotator(rot);
116 */
117 AliDielectronMixingHandler *mix=LMCL->GetMixingHandler(selectedPID);
118 die->SetMixingHandler(mix);
119
120 // histogram setup
121 // only if an AliDielectronHistos object is attached to the
122 // dielectron framework histograms will be filled
123 //
124 InitHistograms(die,cutDefinition);
125
126 // the last definition uses no cuts and only the QA histograms should be filled!
10f27616 127 if (hasMC) {
128 InitCF(die,cutDefinition);
129 }
6be5eb30 130 return die;
131}
132
133//______________________________________________________________________________________
134
135void InitHistograms(AliDielectron *die, Int_t cutDefinition)
136{
137 //
138 // Initialise the histograms
139 //
140
141 //Setup histogram Manager
142 AliDielectronHistos *histos=
143 new AliDielectronHistos(die->GetName(),
144 die->GetTitle());
145 //Initialise histogram classes
146 histos->SetReservedWords("Track;Pair;Pre;RejTrack;RejPair");
147
148 //Event class
149// if (cutDefinition==nDie-1)
7f5f1ec3 150 histos->AddClass("Event");
6be5eb30 151
152 //Track classes
153 //to fill also track info from 2nd event loop until 2
154 for (Int_t i=0; i<2; ++i){
155 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
156 }
157
158 //Pair classes
159 // to fill also mixed event histograms loop until 10
160 for (Int_t i=0; i<3; ++i){
161 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
162 }
163
164 //ME and track rot
165 if (die->GetMixingHandler()) {
166 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(3)));
167 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(4)));
168 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(6)));
169 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(7)));
170 }
171 if (die->GetTrackRotator()) {
172 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(10)));
173 }
174
175 //PreFilter Classes
176 //to fill also track info from 2nd event loop until 2
177 for (Int_t i=0; i<2; ++i){
178 histos->AddClass(Form("Pre_%s",AliDielectron::TrackClassName(i)));
179 }
180
181
182 //Create Classes for Rejected Tracks/Pairs:
7f5f1ec3 183 for (Int_t i=0; i<2; ++i){
184 histos->AddClass(Form("RejTrack_%s",AliDielectron::TrackClassName(i)));
6be5eb30 185 }
186 for (Int_t i=0; i<3; ++i){
187 histos->AddClass(Form("RejPair_%s",AliDielectron::PairClassName(i)));
188 }
189
190 /*
191 //track rotation
192
193 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
194 histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
195 */
196 //add histograms to event class
197 histos->UserHistogram("Event","nEvents","Number of processed events after cuts;Number events",
198 1,0.,1.,AliDielectronVarManager::kNevents);
199 histos->UserHistogram("Event","Centrality","Centrality;Centrality [%]","0,10,20,40,80,100,101",
200 AliDielectronVarManager::kCentrality);
201
202
7f5f1ec3 203 //add histograms to Track classes, also fills RejTrack
6be5eb30 204 histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
205 histos->UserHistogram("Track","NclsSFracTPC","NclsSFracTPC; NclsSFracTPC;#tracks",200,0,10.,AliDielectronVarManager::kNclsSFracTPC);
206 histos->UserHistogram("Track","TPCclsDiff","TPCclsDiff; TPCclsDiff;#tracks",200,0,10.,AliDielectronVarManager::kTPCclsDiff);
207
208 histos->UserHistogram("Track","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks",
209 400,0.0,20.,1000,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE);
210
211 histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
212 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
213
214 histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
215 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
216 histos->UserHistogram("Track","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",
217 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE);
218 histos->UserHistogram("Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
219 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);
220
221 histos->UserHistogram("Track","TRDpidPobEle_P","TRD PID probability Electrons;P [GeV];TRD prob Electrons;#tracks",
222 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobEle,kTRUE);
223 histos->UserHistogram("Track","TRDpidPobPio_P","TRD PID probability Pions;P [GeV];TRD prob Pions;#tracks",
224 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobPio,kTRUE);
225
226 histos->UserHistogram("Track","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks",
227 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,kTRUE);
228 histos->UserHistogram("Track","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks",
229 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,kTRUE);
230
231 histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
232 200,-2,2,200,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
233
234 histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
235
236 histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);
237
238 histos->UserHistogram("Track","TPCnCls_kNFclsTPCr","nTPC vs nTPCr;nTPC vs nTPCr;#tracks",159,0.,159.,159,0.,159.,AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr);
239
240 histos->UserHistogram("Track","kNFclsTPCr_pT","nTPCr vs pt;nTPCr vs pt;#tracks",159,0.,159.,200,0.,20.,AliDielectronVarManager::kNFclsTPCr,AliDielectronVarManager::kPt);
241
7f5f1ec3 242 //add histograms to Pair classes, also fills RejPair
6be5eb30 243 histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
244 500,0.0,5.00,AliDielectronVarManager::kM);
245 histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
246 100,-2.,2.,AliDielectronVarManager::kY);
247 histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
248 100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
249 //2D Histo Plot
250 histos->UserHistogram("Pair","InvMassPairPt","Inv.Mass vs PairPt;Inv. Mass [GeV], pT [GeV];#pairs",
251 500,0.0,5.0,500,0.,50.,AliDielectronVarManager::kM,AliDielectronVarManager::kPt);
252
253 histos->UserHistogram("Pair","InvMassOpeningAngle","Opening Angle vs Inv.Mass;Inv. Mass [GeV];#pairs",
254 500,0.0,5.0,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kOpeningAngle);
255
256 //add histograms to Track classes
257 histos->UserHistogram("Pre","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
258
259 histos->UserHistogram("Pre","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks",
260 400,0.0,20.,1000,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE);
261
262 histos->UserHistogram("Pre","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
263 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
264
6be5eb30 265 histos->UserHistogram("Pre","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
266 200,-2,2,200,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
267
268 histos->UserHistogram("Pre","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
269
270 histos->UserHistogram("Pre","ZVertex ","ZVertex ;ZVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kZv);
271 histos->UserHistogram("Pre","XVertex ","XVertex ;XVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kXv);
272 histos->UserHistogram("Pre","YVertex ","YVertex ;YVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kYv);
273
7f5f1ec3 274// histos->UserHistogram("Pre","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);
6be5eb30 275
6be5eb30 276
277 die->SetHistogramManager(histos);
278}
279
280
281void InitCF(AliDielectron* die, Int_t cutDefinition)
282{
283 //
284 // Setupd the CF Manager if needed
285 //
286 AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
287
288 //pair variables
289 cf->AddVariable(AliDielectronVarManager::kP,200,0,20);
290 cf->AddVariable(AliDielectronVarManager::kM,201,-0.01,4.01); //20Mev Steps
291 cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);
292
293 cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,10.0,30.0,40.0,60.,80.,100.");
6be5eb30 294 //leg variables
295 cf->AddVariable(AliDielectronVarManager::kP,200,0.,20.,kTRUE);
296 cf->AddVariable(AliDielectronVarManager::kITSsignal,1000,0.0.,1000.,kTRUE);
297 cf->AddVariable(AliDielectronVarManager::kTPCsignal,500,0.0.,500.,kTRUE);
6be5eb30 298 //only in this case write MC truth info
299 if (MCenabled) {
300 cf->SetStepForMCtruth();
301 cf->SetStepsForMCtruthOnly();
10f27616 302 cf->AddVariable(AliDielectronVarManager::kHaveSameMother,21,-10,10,kTRUE);
6be5eb30 303 cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE);
304 cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE);
305 }
306
307 cf->SetStepsForSignal();
308 die->SetCFManagerPair(cf);
10f27616 309
310
311 AliDielectronSignalMC* lowMassDiele=new
312 AliDielectronSignalMC("lowMassDiele","low mass dielectron pairs");
313 lowMassDiele->SetLegPDGs(11,-11);
314 lowMassDiele->SetCheckBothChargesLegs(kTRUE,kTRUE);
315 lowMassDiele->SetLegSources(AliDielectronSignalMC::kPrimary,
316 AliDielectronSignalMC::kPrimary);
317 lowMassDiele->SetFillPureMCStep(kTRUE);
318 die->AddSignalMC(lowMassDiele);
319
320 AliDielectronSignalMC* secondary=new
321 AliDielectronSignalMC("secondary","secondary electrons pairs");
322 secondary->SetLegPDGs(11,-11);
323 secondary->SetCheckBothChargesLegs(kTRUE,kTRUE);
324 secondary->SetLegSources(AliDielectronSignalMC::kSecondary,
325 AliDielectronSignalMC::kSecondary);
326 die->AddSignalMC(secondary);
327
328
329 AliDielectronSignalMC* finalState=new
330 AliDielectronSignalMC("finalState","finalState electrons pairs");
331 finalState->SetLegPDGs(11,-11);
332 finalState->SetCheckBothChargesLegs(kTRUE,kTRUE);
333 finalState->SetLegSources(AliDielectronSignalMC::kFinalState,
334 AliDielectronSignalMC::kFinalState);
335 die->AddSignalMC(finalState);
336
337
6be5eb30 338}
339
340//--------------------------------------
341void EnableMC() {
342 MCenabled=kTRUE;
343}
344