]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGDQ/dielectron/macrosLMEE/ESDonlyTasks/ConfigLMEEPbPb2011MC.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosLMEE / ESDonlyTasks / ConfigLMEEPbPb2011MC.C
CommitLineData
8349c102 1void InitHistograms(AliDielectron *die, Int_t cutDefinition);
2void InitCF(AliDielectron* die, Int_t cutDefinition);
3void EnableMC();
4void SetSignals(AliDielectron *die);
5
6TString names=("noPairing;TPCTOFCentnoRej;TPCTOFSemiCentnoRej;TPCTOFPerinoRej;TPCTOFCent;TPCTOFSemiCent;TPCTOFPeri;TPCTOFCentnoRejTight;TPCTOFCentTight");
7TObjArray *arrNames=names.Tokenize(";");
8const Int_t nDie=arrNames->GetEntries();
9
10Bool_t MCenabled=kFALSE;
11
12
13AliDielectron* 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
140void 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
286void 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//--------------------------------------
356void EnableMC() {
357 MCenabled=kTRUE;
358}
359
360//--------------------------------------
361void 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}