]>
Commit | Line | Data |
---|---|---|
6be5eb30 | 1 | void InitHistograms(AliDielectron *die, Int_t cutDefinition); |
2 | void InitCF(AliDielectron* die, Int_t cutDefinition); | |
3 | void EnableMC(); | |
4 | ||
8d5670a6 | 5 | TString names=("noPairing;TPCTOFCentnoRej;TPCTOFSemiCentnoRej;TPCTOFPerinoRej;TPCTOFCent;TPCTOFSemiCent;TPCTOFPeri;TPCTOFCentnoRejTight;TPCTOFCentTight"); |
6be5eb30 | 6 | TObjArray *arrNames=names.Tokenize(";"); |
7 | const Int_t nDie=arrNames->GetEntries(); | |
8 | ||
9 | Bool_t MCenabled=kFALSE; | |
10 | ||
11 | ||
12 | AliDielectron* 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 | ||
135 | void 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 | ||
281 | void 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 | //-------------------------------------- | |
341 | void EnableMC() { | |
342 | MCenabled=kTRUE; | |
343 | } | |
344 |