]>
Commit | Line | Data |
---|---|---|
7f5f1ec3 | 1 | #include "LMEECutLib.C" |
911affe5 | 2 | void InitHistograms(AliDielectron *die, Int_t cutDefinition); |
3 | void InitCF(AliDielectron* die, Int_t cutDefinition); | |
4 | void EnableMC(); | |
5 | ||
cb0b0223 | 6 | TString names=("noPairing;TPCandTOFnoRej;TPCorTOF"); |
911affe5 | 7 | TObjArray *arrNames=names.Tokenize(";"); |
8 | const Int_t nDie=arrNames->GetEntries(); | |
9 | ||
10 | Bool_t MCenabled=kFALSE; | |
11 | ||
12 | ||
09f4a504 | 13 | AliDielectron* ConfigLMEEpp2010(Int_t cutDefinition, Bool_t hasMC=kFALSE, Bool_t enableCF=kTRUE); |
911affe5 | 14 | { |
15 | ||
16 | Int_t selectedPID=-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 | ||
09f4a504 | 26 | if (MCenabled) |
27 | die->SetHasMC(kTRUE); | |
911affe5 | 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 | //TPCTOFCentnoRej => | |
48 | selectedPID = LMEECutLib::kpp2010TPCandTOF; | |
49 | rejectionStep = kFALSE; | |
50 | } | |
51 | else if (cutDefinition==2) { | |
52 | //TPCTOFCentnoRej => | |
53 | selectedPID = LMEECutLib::kpp2010TPCorTOF; | |
54 | rejectionStep = kTRUE; | |
55 | } | |
56 | else { | |
57 | cout << " =============================== " << endl; | |
58 | cout << " ==== INVALID CONFIGURATION ==== " << endl; | |
59 | cout << " =============================== " << endl; | |
60 | } | |
61 | ||
62 | ||
63 | //Now configure task | |
64 | ||
65 | //Apply correct Pre-Filter Scheme, if necessary | |
66 | die->SetPreFilterAllSigns(); | |
67 | ||
68 | if (rejectionStep) { | |
69 | die->GetTrackFilter().AddCuts(LMCL->GetPIDCutsPre(selectedPID) ); | |
70 | die->GetPairPreFilterLegs().AddCuts(LMCL->GetPIDCutsAna(selectedPID) ); | |
71 | die->GetPairPreFilter().AddCuts(LMCL->GetPairCuts(selectedPID) ); | |
72 | } | |
73 | else { //No Prefilter, no Pairfilter | |
74 | die->GetTrackFilter().AddCuts( LMCL->GetPIDCutsAna(selectedPID) ); | |
75 | } | |
76 | ||
77 | ||
78 | ||
79 | ||
80 | AliDielectronTrackRotator *rot= LMCL->GetTrackRotator(selectedPID); | |
81 | die->SetTrackRotator(rot); | |
82 | ||
83 | AliDielectronMixingHandler *mix=LMCL->GetMixingHandler(selectedPID); | |
84 | die->SetMixingHandler(mix); | |
85 | ||
86 | // histogram setup | |
87 | // only if an AliDielectronHistos object is attached to the | |
88 | // dielectron framework histograms will be filled | |
89 | // | |
90 | InitHistograms(die,cutDefinition); | |
91 | ||
92 | // the last definition uses no cuts and only the QA histograms should be filled! | |
09f4a504 | 93 | if (enableCF) InitCF(die,cutDefinition); |
911affe5 | 94 | |
95 | return die; | |
96 | } | |
97 | ||
98 | //______________________________________________________________________________________ | |
99 | ||
100 | void InitHistograms(AliDielectron *die, Int_t cutDefinition) | |
101 | { | |
102 | // | |
103 | // Initialise the histograms | |
104 | // | |
105 | ||
106 | //Setup histogram Manager | |
107 | AliDielectronHistos *histos= | |
108 | new AliDielectronHistos(die->GetName(), | |
109 | die->GetTitle()); | |
110 | //Initialise histogram classes | |
111 | histos->SetReservedWords("Track;Pair;Pre;RejTrack;RejPair"); | |
112 | ||
113 | //Event class | |
114 | // if (cutDefinition==nDie-1) | |
115 | histos->AddClass("Event"); | |
116 | ||
117 | //Track classes | |
118 | //to fill also track info from 2nd event loop until 2 | |
119 | for (Int_t i=0; i<2; ++i){ | |
120 | histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i))); | |
121 | } | |
122 | ||
123 | //Pair classes | |
124 | // to fill also mixed event histograms loop until 10 | |
125 | for (Int_t i=0; i<3; ++i){ | |
126 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i))); | |
127 | } | |
128 | ||
129 | //ME and track rot | |
130 | if (die->GetMixingHandler()) { | |
131 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(3))); | |
132 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(4))); | |
133 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(6))); | |
134 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(7))); | |
135 | } | |
136 | if (die->GetTrackRotator()) { | |
137 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(10))); | |
138 | } | |
139 | ||
140 | //PreFilter Classes | |
141 | //to fill also track info from 2nd event loop until 2 | |
142 | for (Int_t i=0; i<2; ++i){ | |
143 | histos->AddClass(Form("Pre_%s",AliDielectron::TrackClassName(i))); | |
144 | } | |
145 | ||
146 | ||
147 | //Create Classes for Rejected Tracks/Pairs: | |
7f5f1ec3 | 148 | for (Int_t i=0; i<2; ++i){ |
149 | histos->AddClass(Form("RejTrack_%s",AliDielectron::TrackClassName(i))); | |
911affe5 | 150 | } |
151 | for (Int_t i=0; i<3; ++i){ | |
152 | histos->AddClass(Form("RejPair_%s",AliDielectron::PairClassName(i))); | |
153 | } | |
154 | ||
155 | /* | |
156 | //track rotation | |
157 | ||
158 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot))); | |
159 | histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot))); | |
160 | */ | |
161 | //add histograms to event class | |
162 | histos->UserHistogram("Event","nEvents","Number of processed events after cuts;Number events", | |
163 | 1,0.,1.,AliDielectronVarManager::kNevents); | |
164 | histos->UserHistogram("Event","Centrality","Centrality;Centrality [%]","0,10,20,40,80,100,101", | |
165 | AliDielectronVarManager::kCentrality); | |
166 | ||
167 | ||
7f5f1ec3 | 168 | //add histograms to Track classes, also fills RejTrack |
911affe5 | 169 | histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt); |
170 | histos->UserHistogram("Track","NclsSFracTPC","NclsSFracTPC; NclsSFracTPC;#tracks",200,0,10.,AliDielectronVarManager::kNclsSFracTPC); | |
171 | histos->UserHistogram("Track","TPCclsDiff","TPCclsDiff; TPCclsDiff;#tracks",200,0,10.,AliDielectronVarManager::kTPCclsDiff); | |
172 | ||
173 | histos->UserHistogram("Track","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks", | |
7f5f1ec3 | 174 | 400,0.0,20.,200,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE); |
911affe5 | 175 | |
176 | histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks", | |
177 | 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE); | |
7f5f1ec3 | 178 | /* |
911affe5 | 179 | histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks", |
180 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE); | |
181 | histos->UserHistogram("Track","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks", | |
182 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE); | |
183 | histos->UserHistogram("Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks", | |
184 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE); | |
185 | ||
186 | histos->UserHistogram("Track","TRDpidPobEle_P","TRD PID probability Electrons;P [GeV];TRD prob Electrons;#tracks", | |
187 | 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobEle,kTRUE); | |
188 | histos->UserHistogram("Track","TRDpidPobPio_P","TRD PID probability Pions;P [GeV];TRD prob Pions;#tracks", | |
189 | 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobPio,kTRUE); | |
190 | ||
191 | histos->UserHistogram("Track","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks", | |
192 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,kTRUE); | |
193 | histos->UserHistogram("Track","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks", | |
194 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,kTRUE); | |
7f5f1ec3 | 195 | */ |
911affe5 | 196 | histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks", |
7f5f1ec3 | 197 | 100,-2,2,100,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi); |
911affe5 | 198 | |
199 | histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY); | |
200 | ||
201 | histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC); | |
202 | ||
203 | histos->UserHistogram("Track","TPCnCls_kNFclsTPCr","nTPC vs nTPCr;nTPC vs nTPCr;#tracks",159,0.,159.,159,0.,159.,AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr); | |
204 | ||
205 | histos->UserHistogram("Track","kNFclsTPCr_pT","nTPCr vs pt;nTPCr vs pt;#tracks",159,0.,159.,200,0.,20.,AliDielectronVarManager::kNFclsTPCr,AliDielectronVarManager::kPt); | |
206 | ||
7f5f1ec3 | 207 | //add histograms to Pair classes, also fills RejPair |
911affe5 | 208 | histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs", |
209 | 500,0.0,5.00,AliDielectronVarManager::kM); | |
210 | histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs", | |
211 | 100,-2.,2.,AliDielectronVarManager::kY); | |
212 | histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle", | |
213 | 100,0.,3.15,AliDielectronVarManager::kOpeningAngle); | |
214 | //2D Histo Plot | |
215 | histos->UserHistogram("Pair","InvMassPairPt","Inv.Mass vs PairPt;Inv. Mass [GeV], pT [GeV];#pairs", | |
7f5f1ec3 | 216 | 500,0.0,5.0,100,0.,10.,AliDielectronVarManager::kM,AliDielectronVarManager::kPt); |
911affe5 | 217 | |
218 | histos->UserHistogram("Pair","InvMassOpeningAngle","Opening Angle vs Inv.Mass;Inv. Mass [GeV];#pairs", | |
219 | 500,0.0,5.0,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kOpeningAngle); | |
220 | ||
7f5f1ec3 | 221 | //add histograms to PRE-Track classes |
911affe5 | 222 | histos->UserHistogram("Pre","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt); |
223 | ||
224 | histos->UserHistogram("Pre","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks", | |
7f5f1ec3 | 225 | 400,0.0,20.,200,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE); |
911affe5 | 226 | |
227 | histos->UserHistogram("Pre","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks", | |
228 | 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE); | |
229 | ||
7f5f1ec3 | 230 | /* |
911affe5 | 231 | histos->UserHistogram("Pre","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks", |
232 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE); | |
233 | histos->UserHistogram("Pre","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks", | |
234 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE); | |
235 | histos->UserHistogram("Pre","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks", | |
236 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE); | |
237 | ||
238 | histos->UserHistogram("Pre","TRDpidPobEle_P","TRD PID probability Electrons;P [GeV];TRD prob Electrons;#tracks", | |
239 | 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobEle,kTRUE); | |
240 | histos->UserHistogram("Pre","TRDpidPobPio_P","TRD PID probability Pions;P [GeV];TRD prob Pions;#tracks", | |
241 | 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobPio,kTRUE); | |
242 | ||
243 | histos->UserHistogram("Pre","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks", | |
244 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,kTRUE); | |
245 | histos->UserHistogram("Pre","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks", | |
246 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,kTRUE); | |
7f5f1ec3 | 247 | */ |
911affe5 | 248 | histos->UserHistogram("Pre","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks", |
7f5f1ec3 | 249 | 100,-2,2,100,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi); |
911affe5 | 250 | |
251 | histos->UserHistogram("Pre","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY); | |
252 | ||
911affe5 | 253 | histos->UserHistogram("Pre","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC); |
254 | ||
911affe5 | 255 | die->SetHistogramManager(histos); |
256 | } | |
257 | ||
258 | ||
259 | void InitCF(AliDielectron* die, Int_t cutDefinition) | |
260 | { | |
261 | // | |
262 | // Setupd the CF Manager if needed | |
263 | // | |
09f4a504 | 264 | AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle()); |
265 | ||
266 | //pair variables | |
267 | cf->AddVariable(AliDielectronVarManager::kP,200,0,20); | |
268 | cf->AddVariable(AliDielectronVarManager::kM,201,-0.01,4.01); //20Mev Steps | |
269 | cf->AddVariable(AliDielectronVarManager::kY,100,-2.,2.); | |
270 | cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10); | |
271 | ||
272 | cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,10.0,30.0,40.0,60.,80.,100."); | |
273 | cf->AddVariable(AliDielectronVarManager::kOpeningAngle,320,0.,3.2); | |
274 | //leg variables | |
275 | cf->AddVariable(AliDielectronVarManager::kP,200,0.,20.,kTRUE); | |
276 | cf->AddVariable(AliDielectronVarManager::kITSsignal,1000,0.0.,1000.,kTRUE); | |
277 | cf->AddVariable(AliDielectronVarManager::kTPCsignal,500,0.0.,500.,kTRUE); | |
278 | cf->AddVariable(AliDielectronVarManager::kY,100,-2.,2.,kTRUE); | |
279 | //only in this case write MC truth info | |
280 | if (MCenabled) { | |
281 | cf->SetStepForMCtruth(); | |
282 | cf->SetStepsForMCtruthOnly(); | |
283 | cf->AddVariable(AliDielectronVarManager::kHaveSameMother,5,-2,2); | |
284 | cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE); | |
285 | cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE); | |
286 | } | |
911affe5 | 287 | |
09f4a504 | 288 | cf->SetStepsForSignal(); |
289 | die->SetCFManagerPair(cf); | |
290 | ||
291 | ||
292 | //only in this case write MC truth info | |
911affe5 | 293 | if (MCenabled) { |
294 | cf->SetStepForMCtruth(); | |
295 | cf->SetStepsForMCtruthOnly(); | |
7f5f1ec3 | 296 | cf->AddVariable(AliDielectronVarManager::kHaveSameMother,21,-10,10,kTRUE); |
911affe5 | 297 | cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE); |
298 | cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE); | |
299 | } | |
300 | ||
301 | cf->SetStepsForSignal(); | |
302 | die->SetCFManagerPair(cf); | |
303 | } | |
304 | ||
305 | //-------------------------------------- | |
306 | void EnableMC() { | |
307 | MCenabled=kTRUE; | |
308 | } | |
309 |