]>
Commit | Line | Data |
---|---|---|
8349c102 | 1 | void InitHistograms(AliDielectron *die, Int_t cutDefinition); |
2 | void InitCF(AliDielectron* die, Int_t cutDefinition); | |
3 | void EnableMC(); | |
4 | void SetSignals(AliDielectron *die); | |
5 | ||
6 | TString names=("noPairing;TPCTOFCentnoRej;TPCTOFSemiCentnoRej;TPCTOFPerinoRej;TPCTOFCent;TPCTOFSemiCent;TPCTOFPeri;TPCTOFCentnoRejTight;TPCTOFCentTight"); | |
7 | TObjArray *arrNames=names.Tokenize(";"); | |
8 | const Int_t nDie=arrNames->GetEntries(); | |
9 | ||
10 | Bool_t MCenabled=kFALSE; | |
11 | ||
12 | ||
13 | AliDielectron* ConfigLMEEPbPb2011MC(Int_t cutDefinition, Bool_t withMC=kTRUE, Bool_t CFenable=kTRUE) | |
14 | { | |
15 | ||
16 | Int_t selectedPID=-1; | |
17 | Int_t selectedCentrality=-1; | |
18 | Bool_t rejectionStep=kFALSE; | |
19 | LMEECutLib* LMCL = new LMEECutLib(); | |
20 | ||
21 | // | |
22 | // Setup the instance of AliDielectron | |
23 | // | |
24 | ||
25 | MCenabled=withMC; | |
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 | if (MCenabled) | |
41 | die->SetHasMC(kTRUE); | |
42 | ||
43 | ||
44 | //Setup AnalysisSelection: | |
45 | if (cutDefinition==0) { | |
46 | //not yet implemented | |
47 | } | |
48 | else if (cutDefinition==1) { | |
49 | selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide; | |
50 | selectedCentrality = LMEECutLib::kPbPb2011Central; | |
51 | rejectionStep = kFALSE; | |
52 | } | |
53 | else if (cutDefinition==2) { | |
54 | selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide; | |
55 | selectedCentrality = LMEECutLib::kPbPb2011SemiCentral; | |
56 | rejectionStep = kFALSE; | |
57 | } | |
58 | else if (cutDefinition==3) { | |
59 | selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide; | |
60 | selectedCentrality = LMEECutLib::kPbPb2011Peripheral; | |
61 | rejectionStep = kFALSE; | |
62 | } | |
63 | else if (cutDefinition==4) { | |
64 | selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide; | |
65 | selectedCentrality = LMEECutLib::kPbPb2011Central; | |
66 | rejectionStep = kTRUE; | |
67 | } | |
68 | else if (cutDefinition==5) { | |
69 | selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide; | |
70 | selectedCentrality = LMEECutLib::kPbPb2011SemiCentral; | |
71 | rejectionStep = kTRUE; | |
72 | } | |
73 | else if (cutDefinition==6) { | |
74 | selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide; | |
75 | selectedCentrality = LMEECutLib::kPbPb2011Peripheral; | |
76 | rejectionStep = kTRUE; | |
77 | } | |
78 | ||
79 | //Legacy cuts, check consistence w/ 1 & 4, then remove | |
80 | else if (cutDefinition==7) { | |
81 | selectedPID = LMEECutLib::kPbPb2011TPCandTOF; | |
82 | selectedCentrality = LMEECutLib::kPbPb2011Central; | |
83 | rejectionStep = kFALSE; | |
84 | } | |
85 | else if (cutDefinition==8) { | |
86 | selectedPID = LMEECutLib::kPbPb2011TPCandTOF; | |
87 | selectedCentrality = LMEECutLib::kPbPb2011Central; | |
88 | rejectionStep = kTRUE; | |
89 | } | |
90 | ||
91 | else Semi{ | |
92 | cout << " =============================== " << endl; | |
93 | cout << " ==== INVALID CONFIGURATION ==== " << endl; | |
94 | cout << " =============================== " << endl; | |
95 | } | |
96 | ||
97 | ||
98 | //Now configure task | |
99 | ||
100 | //Apply correct Pre-Filter Scheme, if necessary | |
101 | die->SetPreFilterAllSigns(); | |
102 | ||
103 | if (rejectionStep) { | |
104 | die->GetTrackFilter().AddCuts(LMCL->GetPIDCutsPre(selectedPID) ); | |
105 | die->GetPairPreFilterLegs().AddCuts(LMCL->GetPIDCutsAna(selectedPID) ); | |
106 | die->GetPairPreFilter().AddCuts(LMCL->GetPairCuts(selectedPID) ); | |
107 | } | |
108 | else { //No Prefilter, no Pairfilter | |
109 | die->GetTrackFilter().AddCuts( LMCL->GetPIDCutsAna(selectedPID) ); | |
110 | } | |
111 | //Introduce NULL-check for pp? | |
112 | die->GetEventFilter().AddCuts(LMCL->GetCentralityCuts(selectedCentrality)); | |
113 | ||
114 | ||
115 | ||
116 | ||
117 | AliDielectronTrackRotator *rot= 0x0; | |
118 | /*AliDielectronTrackRotator *rot= LMCL->GetTrackRotator(selectedPID); | |
119 | die->SetTrackRotator(rot); | |
120 | */ | |
121 | AliDielectronMixingHandler *mix=LMCL->GetMixingHandler(selectedPID); | |
122 | die->SetMixingHandler(mix); | |
123 | ||
124 | // histogram setup | |
125 | // only if an AliDielectronHistos object is attached to the | |
126 | // dielectron framework histograms will be filled | |
127 | // | |
128 | InitHistograms(die,cutDefinition); | |
129 | ||
130 | // the last definition uses no cuts and only the QA histograms should be filled! | |
131 | if (CFenable) { | |
132 | SetSignals(die); | |
133 | InitCF(die,cutDefinition); | |
134 | } | |
135 | return die; | |
136 | } | |
137 | ||
138 | //______________________________________________________________________________________ | |
139 | ||
140 | void InitHistograms(AliDielectron *die, Int_t cutDefinition) | |
141 | { | |
142 | // | |
143 | // Initialise the histograms | |
144 | // | |
145 | ||
146 | //Setup histogram Manager | |
147 | AliDielectronHistos *histos= | |
148 | new AliDielectronHistos(die->GetName(), | |
149 | die->GetTitle()); | |
150 | //Initialise histogram classes | |
151 | histos->SetReservedWords("Track;Pair;Pre;RejTrack;RejPair"); | |
152 | ||
153 | //Event class | |
154 | // if (cutDefinition==nDie-1) | |
155 | histos->AddClass("Event"); | |
156 | ||
157 | //Track classes | |
158 | //to fill also track info from 2nd event loop until 2 | |
159 | for (Int_t i=0; i<2; ++i){ | |
160 | histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i))); | |
161 | } | |
162 | ||
163 | //Pair classes | |
164 | // to fill also mixed event histograms loop until 10 | |
165 | for (Int_t i=0; i<3; ++i){ | |
166 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i))); | |
167 | } | |
168 | ||
169 | //ME and track rot | |
170 | if (die->GetMixingHandler()) { | |
171 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(3))); | |
172 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(4))); | |
173 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(6))); | |
174 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(7))); | |
175 | } | |
176 | if (die->GetTrackRotator()) { | |
177 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(10))); | |
178 | } | |
179 | ||
180 | //PreFilter Classes | |
181 | //to fill also track info from 2nd event loop until 2 | |
182 | for (Int_t i=0; i<2; ++i){ | |
183 | histos->AddClass(Form("Pre_%s",AliDielectron::TrackClassName(i))); | |
184 | } | |
185 | ||
186 | ||
187 | //Create Classes for Rejected Tracks/Pairs: | |
188 | for (Int_t i=0; i<2; ++i){ | |
189 | histos->AddClass(Form("RejTrack_%s",AliDielectron::TrackClassName(i))); | |
190 | } | |
191 | for (Int_t i=0; i<3; ++i){ | |
192 | histos->AddClass(Form("RejPair_%s",AliDielectron::PairClassName(i))); | |
193 | } | |
194 | ||
195 | /* | |
196 | //track rotation | |
197 | ||
198 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot))); | |
199 | histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot))); | |
200 | */ | |
201 | //add histograms to event class | |
202 | histos->UserHistogram("Event","nEvents","Number of processed events after cuts;Number events", | |
203 | 1,0.,1.,AliDielectronVarManager::kNevents); | |
204 | histos->UserHistogram("Event","Centrality","Centrality;Centrality [%]","0,10,20,40,80,100,101", | |
205 | AliDielectronVarManager::kCentrality); | |
206 | ||
207 | ||
208 | //add histograms to Track classes, also fills RejTrack | |
209 | histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt); | |
210 | histos->UserHistogram("Track","NclsSFracTPC","NclsSFracTPC; NclsSFracTPC;#tracks",200,0,10.,AliDielectronVarManager::kNclsSFracTPC); | |
211 | histos->UserHistogram("Track","TPCclsDiff","TPCclsDiff; TPCclsDiff;#tracks",200,0,10.,AliDielectronVarManager::kTPCclsDiff); | |
212 | ||
213 | histos->UserHistogram("Track","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks", | |
214 | 400,0.0,20.,1000,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE); | |
215 | ||
216 | histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks", | |
217 | 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE); | |
218 | ||
219 | histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks", | |
220 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE); | |
221 | histos->UserHistogram("Track","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks", | |
222 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE); | |
223 | histos->UserHistogram("Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks", | |
224 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE); | |
225 | ||
226 | histos->UserHistogram("Track","TRDpidPobEle_P","TRD PID probability Electrons;P [GeV];TRD prob Electrons;#tracks", | |
227 | 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobEle,kTRUE); | |
228 | histos->UserHistogram("Track","TRDpidPobPio_P","TRD PID probability Pions;P [GeV];TRD prob Pions;#tracks", | |
229 | 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobPio,kTRUE); | |
230 | ||
231 | histos->UserHistogram("Track","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks", | |
232 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,kTRUE); | |
233 | histos->UserHistogram("Track","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks", | |
234 | 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,kTRUE); | |
235 | ||
236 | histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks", | |
237 | 200,-2,2,200,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi); | |
238 | ||
239 | histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY); | |
240 | ||
241 | histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC); | |
242 | ||
243 | histos->UserHistogram("Track","TPCnCls_kNFclsTPCr","nTPC vs nTPCr;nTPC vs nTPCr;#tracks",159,0.,159.,159,0.,159.,AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr); | |
244 | ||
245 | histos->UserHistogram("Track","kNFclsTPCr_pT","nTPCr vs pt;nTPCr vs pt;#tracks",159,0.,159.,200,0.,20.,AliDielectronVarManager::kNFclsTPCr,AliDielectronVarManager::kPt); | |
246 | ||
247 | //add histograms to Pair classes, also fills RejPair | |
248 | histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs", | |
249 | 500,0.0,5.00,AliDielectronVarManager::kM); | |
250 | histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs", | |
251 | 100,-2.,2.,AliDielectronVarManager::kY); | |
252 | histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle", | |
253 | 100,0.,3.15,AliDielectronVarManager::kOpeningAngle); | |
254 | //2D Histo Plot | |
255 | histos->UserHistogram("Pair","InvMassPairPt","Inv.Mass vs PairPt;Inv. Mass [GeV], pT [GeV];#pairs", | |
256 | 500,0.0,5.0,500,0.,50.,AliDielectronVarManager::kM,AliDielectronVarManager::kPt); | |
257 | ||
258 | histos->UserHistogram("Pair","InvMassOpeningAngle","Opening Angle vs Inv.Mass;Inv. Mass [GeV];#pairs", | |
259 | 500,0.0,5.0,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kOpeningAngle); | |
260 | ||
261 | //add histograms to Track classes | |
262 | histos->UserHistogram("Pre","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt); | |
263 | ||
264 | histos->UserHistogram("Pre","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks", | |
265 | 400,0.0,20.,1000,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE); | |
266 | ||
267 | histos->UserHistogram("Pre","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks", | |
268 | 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE); | |
269 | ||
270 | histos->UserHistogram("Pre","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks", | |
271 | 200,-2,2,200,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi); | |
272 | ||
273 | histos->UserHistogram("Pre","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY); | |
274 | ||
275 | histos->UserHistogram("Pre","ZVertex ","ZVertex ;ZVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kZv); | |
276 | histos->UserHistogram("Pre","XVertex ","XVertex ;XVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kXv); | |
277 | histos->UserHistogram("Pre","YVertex ","YVertex ;YVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kYv); | |
278 | ||
279 | // histos->UserHistogram("Pre","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC); | |
280 | ||
281 | ||
282 | die->SetHistogramManager(histos); | |
283 | } | |
284 | ||
285 | ||
286 | void InitCF(AliDielectron* die, Int_t cutDefinition) | |
287 | { | |
288 | // | |
289 | // Setupd the CF Manager if needed | |
290 | // | |
291 | AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle()); | |
292 | ||
293 | //pair variables | |
294 | cf->AddVariable(AliDielectronVarManager::kP,200,0,20); | |
295 | cf->AddVariable(AliDielectronVarManager::kPt,200,0,20); | |
296 | cf->AddVariable(AliDielectronVarManager::kM,2001,-0.01,4.01); //2Mev Steps | |
297 | cf->AddVariable(AliDielectronVarManager::kY,100,-2.,2.); | |
298 | cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10); | |
299 | ||
300 | cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,10.0,30.0,40.0,60.,80.,100."); | |
301 | cf->AddVariable(AliDielectronVarManager::kOpeningAngle,320,0.,3.2); | |
302 | cf->AddVariable(AliDielectronVarManager::kPsiPair,320,0.,3.2); | |
303 | //leg variables | |
304 | cf->AddVariable(AliDielectronVarManager::kP,200,0.,20.,kTRUE); | |
305 | cf->AddVariable(AliDielectronVarManager::kPt,200,0.,20.,kTRUE); | |
306 | cf->AddVariable(AliDielectronVarManager::kITSsignal,1000,0.0.,1000.,kTRUE); | |
307 | cf->AddVariable(AliDielectronVarManager::kTPCsignal,500,0.0.,500.,kTRUE); | |
308 | cf->AddVariable(AliDielectronVarManager::kTPCnSigmaEle,100,-10.0.,10.,kTRUE); | |
309 | cf->AddVariable(AliDielectronVarManager::kITSnSigmaEle,100,-10.0.,10.,kTRUE); | |
310 | cf->AddVariable(AliDielectronVarManager::kY,100,-2.,2.,kTRUE); | |
311 | //only in this case write MC truth info | |
312 | if (MCenabled) { | |
313 | cf->SetStepForMCtruth(); | |
314 | //cf->SetStepsForMCtruthOnly(); | |
315 | cf->SetStepForAfterAllCuts(); | |
316 | cf->AddVariable(AliDielectronVarManager::kHaveSameMother,5,-2,2); | |
317 | //cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE); | |
318 | //cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE); | |
319 | } | |
320 | ||
321 | cf->SetStepsForSignal(); | |
322 | die->SetCFManagerPair(cf); | |
323 | ||
324 | ||
325 | /* | |
326 | AliDielectronSignalMC* lowMassDiele=new | |
327 | AliDielectronSignalMC("lowMassDiele","low mass dielectron pairs"); | |
328 | lowMassDiele->SetLegPDGs(11,-11); | |
329 | lowMassDiele->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
330 | lowMassDiele->SetLegSources(AliDielectronSignalMC::kPrimary, | |
331 | AliDielectronSignalMC::kPrimary); | |
332 | lowMassDiele->SetFillPureMCStep(kTRUE); | |
333 | die->AddSignalMC(lowMassDiele); | |
334 | ||
335 | AliDielectronSignalMC* secondary=new | |
336 | AliDielectronSignalMC("secondary","secondary electrons pairs"); | |
337 | secondary->SetLegPDGs(11,-11); | |
338 | secondary->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
339 | secondary->SetLegSources(AliDielectronSignalMC::kSecondary, | |
340 | AliDielectronSignalMC::kSecondary); | |
341 | die->AddSignalMC(secondary); | |
342 | ||
343 | ||
344 | AliDielectronSignalMC* finalState=new | |
345 | AliDielectronSignalMC("finalState","finalState electrons pairs"); | |
346 | finalState->SetLegPDGs(11,-11); | |
347 | finalState->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
348 | finalState->SetLegSources(AliDielectronSignalMC::kFinalState, | |
349 | AliDielectronSignalMC::kFinalState); | |
350 | die->AddSignalMC(finalState); | |
351 | */ | |
352 | ||
353 | } | |
354 | ||
355 | //-------------------------------------- | |
356 | void EnableMC() { | |
357 | MCenabled=kTRUE; | |
358 | } | |
359 | ||
360 | //-------------------------------------- | |
361 | void SetSignals(AliDielectron *die) | |
362 | { | |
363 | ||
364 | ||
365 | AliDielectronSignalMC* promptJpsi = new AliDielectronSignalMC("promptJpsi","Prompt J/psi"); // prompt J/psi (not from beauty decays) | |
366 | promptJpsi->SetLegPDGs(11,-11); | |
367 | promptJpsi->SetMotherPDGs(443,443); | |
368 | promptJpsi->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons | |
369 | promptJpsi->SetMothersRelation(AliDielectronSignalMC::kSame); | |
370 | promptJpsi->SetFillPureMCStep(kTRUE); | |
371 | promptJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
372 | promptJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
373 | promptJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
374 | promptJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE); | |
375 | die->AddSignalMC(promptJpsi); | |
376 | ||
377 | // physical backgrounds (electrons from other sources) | |
378 | AliDielectronSignalMC* diEleContinuum = new AliDielectronSignalMC("diEleContinuum","di-electron continuum"); // all di-electrons originating in the collision | |
379 | diEleContinuum->SetLegPDGs(11,-11); | |
380 | diEleContinuum->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
381 | diEleContinuum->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
382 | die->AddSignalMC(diEleContinuum); | |
383 | ||
384 | AliDielectronSignalMC* diEleCharm = new AliDielectronSignalMC("diEleCharm","di-electrons from charm"); // dielectrons originating from charm hadrons (not neccessary from same mother) | |
385 | diEleCharm->SetLegPDGs(11,-11); | |
386 | diEleCharm->SetMotherPDGs(403,403); | |
387 | diEleCharm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
388 | diEleCharm->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
389 | diEleCharm->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
390 | die->AddSignalMC(diEleCharm); | |
391 | ||
392 | AliDielectronSignalMC* diEleOpenCharm = new AliDielectronSignalMC("diEleOpenCharm","di-electrons from open charm"); // dielectrons originating from open charm hadrons | |
393 | diEleOpenCharm->SetLegPDGs(11,-11); | |
394 | diEleOpenCharm->SetMotherPDGs(402,402); | |
395 | diEleOpenCharm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
396 | diEleOpenCharm->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
397 | diEleOpenCharm->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
398 | die->AddSignalMC(diEleOpenCharm); | |
399 | ||
400 | ||
401 | // background from secondary electrons | |
402 | AliDielectronSignalMC* secondaryElectrons = new AliDielectronSignalMC("secondaryElectrons","Secondary electrons"); // all di-electrons from secondary electrons (interaction with detector) | |
403 | secondaryElectrons->SetLegPDGs(11,-11); | |
404 | secondaryElectrons->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary); | |
405 | secondaryElectrons->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
406 | die->AddSignalMC(secondaryElectrons); | |
407 | ||
408 | /* | |
409 | AliDielectronSignalMC* primarySecElePairs = new AliDielectronSignalMC("primarySecElePairs","Primary+Secondary electron pairs"); // primary-secondary pairs | |
410 | primarySecElePairs->SetLegPDGs(11,-11); | |
411 | primarySecElePairs->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
412 | primarySecElePairs->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kSecondary); | |
413 | die->AddSignalMC(primarySecElePairs); | |
414 | */ | |
415 | ||
416 | AliDielectronSignalMC* conversionElePairs = new AliDielectronSignalMC("conversionElePairs","conversion electron pairs"); // pairs made from conversion (may be also from 2 different conversions) | |
417 | conversionElePairs->SetLegPDGs(11,-11); | |
418 | conversionElePairs->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
419 | conversionElePairs->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary); | |
420 | conversionElePairs->SetMotherPDGs(22,22); | |
421 | die->AddSignalMC(conversionElePairs); | |
422 | ||
423 | // misidentification | |
424 | /* | |
425 | AliDielectronSignalMC* allEleMisIdPairs = new AliDielectronSignalMC("allEleMisIdPairs","all electron+misid. pairs"); // one true electron + a mis-id electron (all sources included) | |
426 | allEleMisIdPairs->SetLegPDGs(11,11,kFALSE,kTRUE); | |
427 | allEleMisIdPairs->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
428 | die->AddSignalMC(allEleMisIdPairs); | |
429 | ||
430 | AliDielectronSignalMC* allMisIdMisIdPairs = new AliDielectronSignalMC("allMisIdMisIdPairs","all misid.+misid. pairs"); // mis-id + mis-id | |
431 | allMisIdMisIdPairs->SetLegPDGs(11,11,kTRUE,kTRUE); | |
432 | allMisIdMisIdPairs->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
433 | die->AddSignalMC(allMisIdMisIdPairs); | |
434 | ||
435 | AliDielectronSignalMC* elePionPairs = new AliDielectronSignalMC("elePionPairs","electron+pion pairs"); // true electron + mis-id pion | |
436 | elePionPairs->SetLegPDGs(11,211); | |
437 | elePionPairs->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
438 | die->AddSignalMC(elePionPairs); | |
439 | ||
440 | AliDielectronSignalMC* eleKaonPairs = new AliDielectronSignalMC("eleKaonPairs","electron+kaon pairs"); // true electron + mis-id kaon | |
441 | eleKaonPairs->SetLegPDGs(11,321); | |
442 | eleKaonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
443 | die->AddSignalMC(eleKaonPairs); | |
444 | ||
445 | AliDielectronSignalMC* eleProtonPairs = new AliDielectronSignalMC("eleProtonPairs","Electron+proton pairs"); // true electron + mis-id proton | |
446 | eleProtonPairs->SetLegPDGs(11,2212); | |
447 | eleProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
448 | die->AddSignalMC(eleProtonPairs); | |
449 | ||
450 | AliDielectronSignalMC* piPiPairs = new AliDielectronSignalMC("piPiPairs","pion+pion pairs"); // mis-id pion + mis-id pion | |
451 | piPiPairs->SetLegPDGs(211,211); | |
452 | piPiPairs->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
453 | die->AddSignalMC(piPiPairs); | |
454 | ||
455 | AliDielectronSignalMC* piKaonPairs = new AliDielectronSignalMC("piKaonPairs","pion+kaon pairs"); // mis-id pion + mis-id kaon | |
456 | piKaonPairs->SetLegPDGs(211,321); | |
457 | piKaonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
458 | die->AddSignalMC(piKaonPairs); | |
459 | ||
460 | AliDielectronSignalMC* piProtonPairs = new AliDielectronSignalMC("piProtonPairs","pion+proton pairs"); // mis-id pion + mis-id proton | |
461 | piProtonPairs->SetLegPDGs(211,2212); | |
462 | piProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
463 | die->AddSignalMC(piProtonPairs); | |
464 | ||
465 | AliDielectronSignalMC* kaonKaonPairs = new AliDielectronSignalMC("kaonKaonPairs","kaon+kaon pairs"); // mis-id kaon + mis-id kaon | |
466 | kaonKaonPairs->SetLegPDGs(321,321); | |
467 | kaonKaonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
468 | die->AddSignalMC(kaonKaonPairs); | |
469 | ||
470 | AliDielectronSignalMC* kaonProtonPairs = new AliDielectronSignalMC("kaonProtonPairs","kaon+proton pairs"); // mis-id kaon + mis-id proton | |
471 | kaonProtonPairs->SetLegPDGs(321,2212); | |
472 | kaonProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
473 | die->AddSignalMC(kaonProtonPairs); | |
474 | ||
475 | AliDielectronSignalMC* protonProtonPairs = new AliDielectronSignalMC("protonProtonPairs","proton+proton pairs"); // mis-id proton + mis-id proton | |
476 | protonProtonPairs->SetLegPDGs(2212,2212); | |
477 | protonProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
478 | die->AddSignalMC(protonProtonPairs); | |
479 | ||
480 | AliDielectronSignalMC* muonAllPairs = new AliDielectronSignalMC("muonAllPairs","muon+everything pairs"); // mis-id muon + something else (electron, pion, kaon, proton) | |
481 | muonAllPairs->SetLegPDGs(13,13,kFALSE,kTRUE); | |
482 | muonAllPairs->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
483 | die->AddSignalMC(muonAllPairs); | |
484 | */ | |
485 | ||
486 | ||
487 | AliDielectronSignalMC* pi0Sig = new AliDielectronSignalMC("pi0", "pi0Signal"); ///pi0 dalitz pairs | |
488 | pi0Sig->SetLegPDGs(11,-11); | |
489 | pi0Sig->SetMotherPDGs(111,111); | |
490 | pi0Sig->SetMothersRelation(AliDielectronSignalMC::kSame); | |
491 | pi0Sig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
492 | pi0Sig->SetMotherSources(AliDielectronSignalMC::kPrimary, AliDielectronSignalMC::kPrimary); | |
493 | pi0Sig->SetCheckBothChargesLegs(kFALSE,kFALSE); | |
494 | pi0Sig->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
495 | pi0Sig->SetFillPureMCStep(kTRUE); | |
496 | die->AddSignalMC(pi0Sig); | |
497 | ||
498 | ||
499 | AliDielectronSignalMC* etaSig = new AliDielectronSignalMC("Eta", "etaSignal"); ///eta dalitz pairs | |
500 | etaSig->SetLegPDGs(11,-11); | |
501 | etaSig->SetMotherPDGs(221,221); | |
502 | etaSig->SetMothersRelation(AliDielectronSignalMC::kSame); | |
503 | etaSig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
504 | etaSig->SetMotherSources(AliDielectronSignalMC::kPrimary, AliDielectronSignalMC::kPrimary); | |
505 | etaSig->SetCheckBothChargesLegs(kFALSE,kFALSE); | |
506 | etaSig->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
507 | etaSig->SetFillPureMCStep(kTRUE); | |
508 | die->AddSignalMC(etaSig); | |
509 | ||
510 | ||
511 | AliDielectronSignalMC* etaprimeSig = new AliDielectronSignalMC("Etaprime", "etaprimeSignal"); ///etaprime pairs | |
512 | etaprimeSig->SetLegPDGs(11,-11); | |
513 | etaprimeSig->SetMotherPDGs(331,331); | |
514 | etaprimeSig->SetMothersRelation(AliDielectronSignalMC::kSame); | |
515 | etaprimeSig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
516 | etaprimeSig->SetMotherSources(AliDielectronSignalMC::kPrimary, AliDielectronSignalMC::kPrimary); | |
517 | etaprimeSig->SetCheckBothChargesLegs(kFALSE,kFALSE); | |
518 | etaprimeSig->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
519 | etaprimeSig->SetFillPureMCStep(kTRUE); | |
520 | die->AddSignalMC(etaprimeSig); | |
521 | ||
522 | ||
523 | AliDielectronSignalMC* rhoSig = new AliDielectronSignalMC("Rho", "rhoSignal"); ///rho pairs | |
524 | rhoSig->SetLegPDGs(11,-11); | |
525 | rhoSig->SetMotherPDGs(113,113); | |
526 | rhoSig->SetMothersRelation(AliDielectronSignalMC::kSame); | |
527 | rhoSig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
528 | rhoSig->SetMotherSources(AliDielectronSignalMC::kPrimary, AliDielectronSignalMC::kPrimary); | |
529 | rhoSig->SetCheckBothChargesLegs(kFALSE,kFALSE); | |
530 | rhoSig->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
531 | rhoSig->SetFillPureMCStep(kTRUE); | |
532 | die->AddSignalMC(rhoSig); | |
533 | ||
534 | AliDielectronSignalMC* omegaSig = new AliDielectronSignalMC("Omega", "omegaSignal"); ///omega pairs | |
535 | omegaSig->SetLegPDGs(11,-11); | |
536 | omegaSig->SetMotherPDGs(223,223); | |
537 | omegaSig->SetMothersRelation(AliDielectronSignalMC::kSame); | |
538 | omegaSig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
539 | omegaSig->SetMotherSources(AliDielectronSignalMC::kPrimary, AliDielectronSignalMC::kPrimary); | |
540 | omegaSig->SetCheckBothChargesLegs(kFALSE,kFALSE); | |
541 | omegaSig->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
542 | omegaSig->SetFillPureMCStep(kTRUE); | |
543 | die->AddSignalMC(omegaSig); | |
544 | ||
545 | AliDielectronSignalMC* phiSig = new AliDielectronSignalMC("Phi", "phiSignal"); ///phi pairs | |
546 | phiSig->SetLegPDGs(11,-11); | |
547 | phiSig->SetMotherPDGs(333,333); | |
548 | phiSig->SetMothersRelation(AliDielectronSignalMC::kSame); | |
549 | phiSig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
550 | phiSig->SetMotherSources(AliDielectronSignalMC::kPrimary, AliDielectronSignalMC::kPrimary); | |
551 | phiSig->SetCheckBothChargesLegs(kFALSE,kFALSE); | |
552 | phiSig->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
553 | phiSig->SetFillPureMCStep(kTRUE); | |
554 | die->AddSignalMC(phiSig); | |
555 | ||
556 | /* | |
557 | AliDielectronSignalMC* convSig = new AliDielectronSignalMC("conv", "convSignal"); | |
558 | convSig->SetLegPDGs(11,-11); | |
559 | convSig->SetMothersRelation(AliDielectronSignalMC::kSame); | |
560 | convSig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); //in this case, ee needs to be true=IsPhysicalPrimary(label) | |
561 | convSig->SetCheckBothChargesLegs(kFALSE,kFALSE); | |
562 | die->AddSignalMC(convSig); | |
563 | */ | |
564 | } |