]>
Commit | Line | Data |
---|---|---|
27520cca | 1 | #include "LMEECutLib.C" |
2 | void InitHistograms(AliDielectron *die, Int_t cutDefinition); | |
3 | void InitCF(AliDielectron* die, Int_t cutDefinition); | |
4 | void EnableMC(); | |
5 | ||
aac8ec7d | 6 | TString names=("noPairingNoPID;noPairingTOFonly;noPairingTPCTOFPbPb2011"); |
27520cca | 7 | TObjArray *arrNames=names.Tokenize(";"); |
8 | const Int_t nDie=arrNames->GetEntries(); | |
9 | ||
10 | Bool_t MCenabled=kFALSE; | |
11 | ||
12 | ||
13 | AliDielectron* ConfigLMEEnoPID(Int_t cutDefinition, Bool_t hasMC=kFALSE,Bool_t CFenabled=kFALSE) | |
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 | ||
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 | //Choose Arbitratry cuts, Basic Track Cuts shoudl be the same for all | |
42 | if (cutDefinition==0) { | |
43 | //not yet implemented | |
44 | selectedPID = LMEECutLib::kpp2010TPCandTOF; | |
45 | rejectionStep = kFALSE; | |
46 | } | |
47 | else if (cutDefinition==1) { | |
48 | //TPCTOFCentnoRej => | |
49 | selectedPID = LMEECutLib::kpp2010TPCandTOF; | |
50 | rejectionStep = kFALSE; | |
51 | } | |
52 | else if (cutDefinition==2) { | |
53 | //TPCTOFCentnoRej => | |
54 | selectedPID = LMEECutLib::kPbPb2011TPCandTOF; | |
55 | rejectionStep = kFALSE; | |
56 | } | |
57 | else { | |
58 | cout << " =============================== " << endl; | |
59 | cout << " ==== INVALID CONFIGURATION ==== " << endl; | |
60 | cout << " =============================== " << endl; | |
61 | } | |
62 | ||
63 | ||
64 | //Now configure task | |
65 | ||
66 | //Apply correct Pre-Filter Scheme, if necessary | |
67 | die->SetPreFilterAllSigns(); | |
68 | ||
69 | //SWITCH OFF PAIRING FOR Track-only analysis | |
70 | die->SetNoPairing(); | |
71 | ||
72 | die->GetTrackFilter().AddCuts( LMCL->GetTrackCutsAna(selectedPID) ); | |
73 | ||
74 | if (cutDefinition==1) { | |
75 | AliDielectronPID *pidTOFonly = new AliDielectronPID("TOFonly","TOFonly"); | |
76 | pidTOFonly->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 100., kFALSE ); | |
77 | die->GetTrackFilter().AddCuts(pidTOFonly); | |
78 | } | |
79 | ||
80 | if (cutDefinition==2) { | |
81 | die->GetTrackFilter().AddCuts(LMCL->GetPIDCutsAna(selectedPID)); | |
82 | } | |
83 | ||
84 | ||
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! | |
93 | if (CFenabled) InitCF(die,cutDefinition); | |
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: | |
148 | for (Int_t i=0; i<2; ++i){ | |
149 | histos->AddClass(Form("RejTrack_%s",AliDielectron::TrackClassName(i))); | |
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 | ||
168 | //add histograms to Track classes, also fills RejTrack | |
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", | |
174 | 400,0.0,20.,200,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE); | |
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); | |
178 | /* | |
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); | |
195 | */ | |
196 | histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks", | |
197 | 100,-2,2,100,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi); | |
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 | ||
207 | //add histograms to Pair classes, also fills RejPair | |
208 | /* | |
209 | histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs", | |
210 | 500,0.0,5.00,AliDielectronVarManager::kM); | |
211 | histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs", | |
212 | 100,-2.,2.,AliDielectronVarManager::kY); | |
213 | histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle", | |
214 | 100,0.,3.15,AliDielectronVarManager::kOpeningAngle); | |
215 | //2D Histo Plot | |
216 | histos->UserHistogram("Pair","InvMassPairPt","Inv.Mass vs PairPt;Inv. Mass [GeV], pT [GeV];#pairs", | |
217 | 500,0.0,5.0,100,0.,10.,AliDielectronVarManager::kM,AliDielectronVarManager::kPt); | |
218 | ||
219 | histos->UserHistogram("Pair","InvMassOpeningAngle","Opening Angle vs Inv.Mass;Inv. Mass [GeV];#pairs", | |
220 | 500,0.0,5.0,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kOpeningAngle); | |
221 | ||
222 | //add histograms to PRE-Track classes | |
223 | histos->UserHistogram("Pre","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt); | |
224 | ||
225 | histos->UserHistogram("Pre","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks", | |
226 | 400,0.0,20.,200,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE); | |
227 | ||
228 | histos->UserHistogram("Pre","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks", | |
229 | 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE); | |
230 | */ | |
231 | /* | |
232 | histos->UserHistogram("Pre","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks", | |
233 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE); | |
234 | histos->UserHistogram("Pre","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks", | |
235 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE); | |
236 | histos->UserHistogram("Pre","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks", | |
237 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE); | |
238 | ||
239 | histos->UserHistogram("Pre","TRDpidPobEle_P","TRD PID probability Electrons;P [GeV];TRD prob Electrons;#tracks", | |
240 | 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobEle,kTRUE); | |
241 | histos->UserHistogram("Pre","TRDpidPobPio_P","TRD PID probability Pions;P [GeV];TRD prob Pions;#tracks", | |
242 | 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobPio,kTRUE); | |
243 | ||
244 | histos->UserHistogram("Pre","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks", | |
245 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,kTRUE); | |
246 | histos->UserHistogram("Pre","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks", | |
247 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,kTRUE); | |
248 | */ | |
249 | /* | |
250 | histos->UserHistogram("Pre","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks", | |
251 | 100,-2,2,100,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi); | |
252 | ||
253 | histos->UserHistogram("Pre","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY); | |
254 | ||
255 | histos->UserHistogram("Pre","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC); | |
256 | */ | |
257 | die->SetHistogramManager(histos); | |
258 | } | |
259 | ||
260 | ||
261 | void InitCF(AliDielectron* die, Int_t cutDefinition) | |
262 | { | |
263 | // | |
264 | // Setupd the CF Manager if needed | |
265 | // | |
266 | AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle()); | |
267 | ||
268 | //pair variables | |
269 | /* cf->AddVariable(AliDielectronVarManager::kP,200,0,20); | |
270 | cf->AddVariable(AliDielectronVarManager::kM,201,-0.01,4.01); //20Mev Steps | |
271 | */ | |
272 | cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10); | |
273 | /* | |
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 | */ | |
279 | //only in this case write MC truth info | |
280 | if (MCenabled) { | |
281 | cf->SetStepForMCtruth(); | |
282 | cf->SetStepsForMCtruthOnly(); | |
283 | cf->AddVariable(AliDielectronVarManager::kHaveSameMother,21,-10,10,kTRUE); | |
284 | cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE); | |
285 | cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE); | |
286 | } | |
287 | ||
288 | cf->SetStepsForSignal(); | |
289 | die->SetCFManagerPair(cf); | |
290 | } | |
291 | ||
292 | //-------------------------------------- | |
293 | void EnableMC() { | |
294 | MCenabled=kTRUE; | |
295 | } | |
296 |