]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGDQ/dielectron/macrosJPSI/RaaPbPb2010/AddTask_iarsene_dst.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosJPSI / RaaPbPb2010 / AddTask_iarsene_dst.C
CommitLineData
eac83c86 1//__________________________________________________________________________________________
2AliAnalysisTask *AddTask_iarsene_dst(){
3 //get the current analysis manager
4 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
5 if (!mgr) {
6 Error("AddTask_iarsene_dst", "No analysis manager found.");
7 return 0;
8 }
9
10 //Do we have an MC handler?
11 Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
12
13 //Get the current train configuration
14 //TString trainConfig=gSystem->Getenv("CONFIG_FILE");
15
16 gROOT->LoadMacro("AliCorrelationReducedEvent.cxx+g");
17 gROOT->LoadMacro("AliAnalysisTaskCorrelationTree.cxx+g");
18
19 //create task and add it to the manager
20 AliAnalysisTaskCorrelationTree *task=new AliAnalysisTaskCorrelationTree("DSTTreeMaker");
21 //if(trainConfig.Contains("PbPb")) task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);
22 //if(trainConfig=="pp") task->SetRejectPileup();
23 if(!hasMC) task->UsePhysicsSelection(kFALSE);
24 mgr->AddTask(task);
25
26
27 task->SetEventFilter(CreateEventFilter());
28 task->SetTrackFilter(CreateGlobalTrackFilter());
29 task->SetFlowTrackFilter(CreateFlowTrackFilter());
30 task->SetK0sPionCuts(CreateK0sPionCuts());
31 task->SetLambdaProtonCuts(CreateLambdaProtonCuts());
32 task->SetLambdaPionCuts(CreateLambdaPionCuts());
33 task->SetK0sCuts(CreateK0sCuts());
34 task->SetK0sMassRange(0.44,0.55);
35 task->SetLambdaMassRange(1.090,1.14);
36 task->SetLambdaCuts(CreateLambdaCuts());
37 task->SetV0Histograms(CreateV0Histograms());
38
39 task->AddDielectron(ConfigDielectron(0)); // J/psi -> e+e-
40 task->AddDielectron(ConfigDielectron(1)); // phi -> K+K-
41
42 //create output container
43 AliAnalysisDataContainer *coutput1 =
44 mgr->CreateContainer("diele_defaultTree",
45 TChain::Class(),
46 AliAnalysisManager::kExchangeContainer,
47 "diele_default");
48
49 AliAnalysisDataContainer *cOutputHist1 =
50 mgr->CreateContainer("qaHistos",
51 TList::Class(),
52 AliAnalysisManager::kOutputContainer,
53 "dst_qaHistos.root");
54
55 AliAnalysisDataContainer *cOutputHist2 =
56 mgr->CreateContainer("dstTree",
57 TTree::Class(),
58 AliAnalysisManager::kOutputContainer,
59 "dstTree.root");
60
61 AliAnalysisDataContainer *cOutputHist3 =
62 mgr->CreateContainer("friendTree",
63 TTree::Class(),
64 AliAnalysisManager::kOutputContainer,
65 "dstTree_friend.root");
66 cout << "output containers: " << endl
67 << cOutputHist1 << endl
68 << cOutputHist2 << endl
69 << cOutputHist3 << endl;
70
71 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
72 mgr->ConnectOutput(task, 0, coutput1 );
73 mgr->ConnectOutput(task, 1, cOutputHist1);
74 //mgr->ConnectOutput(task, 2, cOutputHist2);
75 //mgr->ConnectOutput(task, 3, cOutputHist3);
76 mgr->ConnectOutput(task, 2, cOutputHist3);
77
78 return task;
79}
80
81
82//_______________________________________________________________________________________________
83AliAnalysisCuts* CreateEventFilter() {
84 //
85 // Event wise cuts
86 //
87 AliDielectronEventCuts *eventCuts=new AliDielectronEventCuts("eventCuts","Vertex Track && |vtxZ|<10 && ncontrib>0");
88 //eventCuts->SetRequireVertex();
89 //eventCuts->SetMinVtxContributors(1);
90 //eventCuts->SetVertexZ(-10.,10.);
91 return eventCuts;
92}
93
94
95//_______________________________________________________________________________________________
96AliAnalysisCuts* CreateGlobalTrackFilter() {
97 //
98 // Cuts for tracks to be written in the dst
99 //
100 AliDielectronCutGroup* cuts = new AliDielectronCutGroup("cuts","cuts",AliDielectronCutGroup::kCompAND);
101 // general ESD cuts ---------------------------------
102 AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts;
103 // basic track quality cuts (basicQ)
104 //esdTrackCuts->SetMaxDCAToVertexZ(10.0);
105 //esdTrackCuts->SetMaxDCAToVertexXY(3.0);
106 //esdTrackCuts->SetEtaRange( -0.9 , 0.9 );
107 //esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
108 // esdTrackCuts->SetRequireITSRefit(kTRUE);
109 //esdTrackCuts->SetRequireTPCRefit(kTRUE);
110 esdTrackCuts->SetPRange(.1,1e30);
111 //esdTrackCuts->SetMinNClustersTPC(60);
112 //esdTrackCuts->SetMaxChi2PerClusterTPC(4);
113 // esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
114 // esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
115 cuts->AddCut(esdTrackCuts);
116
117 return cuts;
118}
119
120
121//_______________________________________________________________________________________________
122AliAnalysisCuts* CreateFlowTrackFilter() {
123 //
124 // Cuts for tracks to be used for the event plane q-vector
125 // These cuts are applied aditionally to the global track cuts
126 //
127 AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts;
128 esdTrackCuts->SetPtRange(0.2,2.0);
129 esdTrackCuts->SetEtaRange(-0.8, 0.8);
130 esdTrackCuts->SetMinNClustersTPC(70);
131 return esdTrackCuts;
132}
133
134
135//_______________________________________________________________________________________________
136AliAnalysisCuts* CreateK0sPionCuts() {
137 //
138 // Cuts on the K0s pions (tracking cuts, pid cuts, ...)
139 //
140 AliESDtrackCuts *pionCuts = new AliESDtrackCuts;
141 pionCuts->SetPtRange(0.15,100.0);
142 return pionCuts;
143}
144
145
146//_______________________________________________________________________________________________
147AliAnalysisCuts* CreateLambdaPionCuts() {
148 //
149 // Cuts on the Lambda pions (tracking cuts, pid cuts, ...)
150 //
151 AliESDtrackCuts *pionCuts = new AliESDtrackCuts;
152 pionCuts->SetPtRange(0.15,100.0);
153 return pionCuts;
154}
155
156
157//_______________________________________________________________________________________________
158AliAnalysisCuts* CreateLambdaProtonCuts() {
159 //
160 // Cuts on the Lambda protons (tracking cuts, pid cuts, ...)
161 //
162 AliESDtrackCuts *protonCuts = new AliESDtrackCuts;
163 protonCuts->SetPtRange(0.15,100.0);
164 return protonCuts;
165}
166
167
168//______________________________________________________________________________________
169AliESDv0Cuts* CreateK0sCuts() {
170 //
171 // Cuts on the V0s with K0s hypothesis
172 //
173
174 AliESDv0Cuts *cuts=new AliESDv0Cuts();
175 //cuts->SetMinDcaPosToVertex(-1);
176 //cuts->SetMinDcaNegToVertex(-1);
177 //cuts->SetMaxChi2(10);
178 //cuts->SetMaxDcaV0Daughters(0.3);
179 //cuts->SetMinRadius(3.0);
180 //cuts->SetMaxRadius(90.0);
181 //cuts->SetMinCosinePointingAngle(0.9);
182 //cuts->SetRequireOnFlyStatus(kTRUE);
183 //cuts->SetMaxDcaV0ToVertex(0.5);
184 //cuts->SetPRange(0.,1.0e10);
185 //cuts->SetPtRange(0.,1.0e10);
186 return cuts;
187}
188
189
190//______________________________________________________________________________________
191AliESDv0Cuts* CreateLambdaCuts() {
192 //
193 // Cuts on the V0s with Lambda hypothesis
194 //
195
196 AliESDv0Cuts *cuts=new AliESDv0Cuts();
197 //cuts->SetMinDcaPosToVertex(-1);
198 //cuts->SetMinDcaNegToVertex(-1);
199 //cuts->SetMaxChi2(10);
200 //cuts->SetMaxDcaV0Daughters(0.3);
201 //cuts->SetMinRadius(3.0);
202 //cuts->SetMaxRadius(90.0);
203 //cuts->SetMinCosinePointingAngle(0.9);
204 //cuts->SetRequireOnFlyStatus(kTRUE);
205 //cuts->SetMaxDcaV0ToVertex(0.5);
206 //cuts->SetPRange(0.,1.0e10);
207 //cuts->SetPtRange(0.,1.0e10);
208 return cuts;
209}
210
211
212//______________________________________________________________________________________
213AliDielectronHistos* CreateV0Histograms()
214{
215 //
216 // Initialise the histograms
217 //
218
219 //Setup histogram Manager
220 AliDielectronHistos *histos=new AliDielectronHistos("V0Histograms","");
221
222 //add histograms to Track classes ---------------------------------------------------------------------------
223 histos->SetReservedWords("V0Track");
224
225 //Track classes
226 histos->AddClass("V0Track_Pos"); histos->AddClass("V0Track_Neg");
227
228 // kinematic acceptance histograms
229 histos->UserHistogram("V0Track","Pt","Pt;Pt (GeV/c);#tracks",400,0,20.,AliDielectronVarManager::kPt);
230 histos->UserHistogram("V0Track","Eta_P","Eta_P;#eta;P (GeV/c)",40, -1.0, +1.0, 200,0,10., AliDielectronVarManager::kEta, AliDielectronVarManager::kP);
231 histos->UserHistogram("V0Track","Eta_TRDPhi","Eta Phi Map; Eta; Phi;#tracks",
232 40,-1,1,200,-3.15,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kTRDphi);
233
234 // DCA diagnostic histograms
235 histos->UserHistogram("V0Track","dXY","dXY;dXY (cm);#tracks",500,-1.,1.,AliDielectronVarManager::kImpactParXY);
236 histos->UserHistogram("V0Track","dZ","dZ;dZ (cm);#tracks",600,-3.,3.,AliDielectronVarManager::kImpactParZ);
237 histos->UserHistogram("V0Track","dZ_dXY","dZ_dXY;dZ (cm);dXY (cm)",600,-3.,3.,500,-1.,1.,AliDielectronVarManager::kImpactParZ, AliDielectronVarManager::kImpactParXY);
238 histos->UserHistogram("V0Track","P_dXY","P_dXY;P (GeV/c);dXY (cm)",200,0.,10.,500,-1.,1.,AliDielectronVarManager::kP, AliDielectronVarManager::kImpactParXY);
239 histos->UserHistogram("V0Track","P_dZ","P_dZ;P (GeV/c);dZ (cm)",200,0.,10.,600,-3.,3.,AliDielectronVarManager::kP, AliDielectronVarManager::kImpactParZ);
240
241 // ITS
242 histos->UserHistogram("V0Track","ITSsignal","ITS signal;ITS dE/dx",1000,0.0,1000.0, AliDielectronVarManager::kITSsignal);
243 histos->UserHistogram("V0Track","ITSsignal_P","ITS signal vs P;P (GeV/c); ITS dE/dx",300, 0.0, 3.0, 200,0.0,1000.0, AliDielectronVarManager::kP, AliDielectronVarManager::kITSsignal);
244
245 // TPC
246 histos->UserHistogram("V0Track","TPCchi2","#chi^{2}/cluster;#chi^{2}/cluster;#tracks",200,0.0,5.0, AliDielectronVarManager::kTPCchi2Cl);
247 histos->UserHistogram("V0Track","Pt_TPCchi2","#chi^{2}/cluster vs pt;p_{T} (GeV/c);#chi^{2}/cluster",400,0.,20., 200,0.0,5.0,
248 AliDielectronVarManager::kPt,AliDielectronVarManager::kTPCchi2Cl);
249 histos->UserHistogram("V0Track","TPCnCls","Number of Clusters TPC;TPC number clusters;#tracks",160,-0.5,159.5, AliDielectronVarManager::kNclsTPC);
250 histos->UserHistogram("V0Track","Phi_TPCnCls","Number of Clusters TPC vs #phi;#phi (rad.);TPC number clusters",200,0,6.285, 160,-0.5,159.5,
251 AliDielectronVarManager::kPhi,AliDielectronVarManager::kNclsTPC);
252 histos->UserHistogram("V0Track","Pin_TPCnCls","Number of Clusters TPC vs TPC inner param P;p (GeV/c);TPC number clusters",400,0,20., 160,-0.5,159.5,
253 AliDielectronVarManager::kPIn, AliDielectronVarManager::kNclsTPC);
254 histos->UserHistogram("V0Track","TPCnCls_dEdx","Number of Clusters TPC vs dE/dx; TPC number clusters; dE/dx (arb.units)", 160,-0.5,159.5, 200,0,200.,
255 AliDielectronVarManager::kNclsTPC, AliDielectronVarManager::kTPCsignal);
256 histos->UserHistogram("V0Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
257 400,0.2,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal);
258 histos->UserHistogram("V0Track","dEdx_Eta","dEdx;#eta;TPC signal (arb units);#tracks",
259 110,-1.1,1.1,200,0.,200.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCsignal);
260 histos->UserHistogram("V0Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
261 400,0.2,20.,200,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle);
262 histos->UserHistogram("V0Track","TPCnSigmaEle_Eta","TPC number of sigmas Electrons;#eta;TPC number of sigmas Electrons;#tracks",
263 110,-1.1,1.1,200,-5.,5.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaEle);
264 histos->UserHistogram("V0Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
265 400,0.2,20.,200,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio);
266 histos->UserHistogram("V0Track","TPCnSigmaPio_Eta","TPC number of sigmas Pions;#eta;TPC number of sigmas Pions;#tracks",
267 110,-1.1,1.1,200,-5.,5.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaPio);
268 histos->UserHistogram("V0Track","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",
269 400,0.2,20.,200,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao);
270 histos->UserHistogram("V0Track","TPCnSigmaKao_Eta","TPC number of sigmas Kaons;#eta;TPC number of sigmas Kaons;#tracks",
271 110,-1.1,1.1,200,-5.,5.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaKao);
272 histos->UserHistogram("V0Track","TPCnSigmaPro_P","TPC number of sigmas Protons;P [GeV];TPC number of sigmas Protons;#tracks",
273 400,0.2,20.,200,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPro);
274 histos->UserHistogram("V0Track","TPCnSigmaPro_Eta","TPC number of sigmas Protons;#eta;TPC number of sigmas Protons;#tracks",
275 110,-1.1,1.1,200,-5.,5.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaPro);
276 histos->UserHistogram("V0Track","POut","Track POut;P (GeV/c)",100,0.0,10.0, AliDielectronVarManager::kPOut);
277
278 // TOF
279 histos->UserHistogram("V0Track","Pin_TOFsignal","TOF signal vs TPC inner param P; P [GeV]; TOF signal",
280 120,0.0,6.,1200,0.,120000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFsignal);
281 histos->UserHistogram("V0Track","Pin_TOFbeta","TOF #beta vs TPC inner param P; P [GeV]; TOF #beta",
282 120,0.0,6.,120,0.,1.2,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFbeta);
283 histos->UserHistogram("V0Track","TOFnSigmaPio_Pin","TOF number of sigmas Pions;P [GeV];TOF number of sigmas Pions;#tracks",
284 400,0.2,20.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPio);
285 histos->UserHistogram("V0Track","TOFnSigmaPio_eta","TOF number of sigmas Pions vs #eta;#eta;TOF number of sigmas Pions;#tracks",
286 100,-1.2,1.2,200,-10.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTOFnSigmaPio);
287 histos->UserHistogram("V0Track","TOFnSigmaKao_Pin","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks",
288 400,0.2,20.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao);
289 histos->UserHistogram("V0Track","TOFnSigmaKao_eta","TOF number of sigmas Kaons vs #eta;#eta;TOF number of sigmas Kaons;#tracks",
290 100,-1.2,1.2,200,-10.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTOFnSigmaKao);
291 histos->UserHistogram("V0Track","TOFnSigmaPro_Pin","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks",
292 400,0.2,20.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro);
293 histos->UserHistogram("V0Track","TOFnSigmaPro_eta","TOF number of sigmas Protons vs #eta;#eta;TOF number of sigmas Protons;#tracks",
294 100,-1.2,1.2,200,-10.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTOFnSigmaPro);
295 return histos;
296}
297
298
299//____________________________________________________________________________________________
300AliDielectron* ConfigDielectron(Int_t cutDefinition)
301{
302 //
303 // Setup the instance of an AliDielectron
304 //
305 const Char_t* dieleNames[2] = {"JpsiToEE", "PhiToKK"};
306
307 AliDielectron *die =
308 new AliDielectron(dieleNames[cutDefinition],
309 Form("Track cuts: %s", dieleNames));
310 //die->SetEstimatorFilename("$TRAIN_ROOT/util/dielectron/dielectron/estimators.root");
311 if(cutDefinition==0) { // J/psi -> e+e-
312 die->SetLegPdg(11,11);
313 die->SetMotherPdg(443);
314 }
315 if(cutDefinition==1) { // phi -> K+K-
316 die->SetLegPdg(321,321);
317 die->SetMotherPdg(333);
318 }
319
320 // cut setup
321 SetupDielectronTrackCuts(die,cutDefinition);
322 SetupDielectronPairCuts(die,cutDefinition);
323
324 // Set MC signals
325 SetDielectronMCSignals(die);
326
327 //
328 // histogram setup
329 // only if an AliDielectronHistos object is attached to the
330 // dielectron framework histograms will be filled
331 //
332 InitDielectronHistograms(die,cutDefinition);
333
334 //setup eta correction
335 SetEtaCorrection();
336
337 return die;
338}
339
340//______________________________________________________________________________________
341void SetupDielectronTrackCuts(AliDielectron *die, Int_t cutDefinition)
342{
343 //
344 // Setup the track cuts
345 //
346
347 AliDielectronCutGroup* cuts = new AliDielectronCutGroup("cuts","cuts",AliDielectronCutGroup::kCompAND);
348 die->GetTrackFilter().AddCuts(cuts);
349 //ESD quality cuts
350 AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts;
351 // basic track quality cuts (basicQ)
352 esdTrackCuts->SetMaxDCAToVertexZ(3.0);
353 esdTrackCuts->SetMaxDCAToVertexXY(1.0);
354 if(cutDefinition==1) {
355 esdTrackCuts->SetMaxDCAToVertexZ(0.3);
356 esdTrackCuts->SetMaxDCAToVertexXY(0.3);
357 }
358 if(cutDefinition==1) esdTrackCuts->SetEtaRange(-1.0,1.0);
359 if(cutDefinition==0) esdTrackCuts->SetEtaRange(-0.9,0.9);
360 esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
361 //esdTrackCuts->SetRequireITSRefit(kTRUE);
362 if(cutDefinition==0) esdTrackCuts->SetRequireTPCRefit(kTRUE);
363 if(cutDefinition==0) esdTrackCuts->SetPRange(.9,1e30); // for J/psi
364 if(cutDefinition==1) esdTrackCuts->SetPRange(.1,1e30); // for phi
365 if(cutDefinition==0) esdTrackCuts->SetMinNClustersTPC(60);
366 if(cutDefinition==0) esdTrackCuts->SetMaxChi2PerClusterTPC(4);
367 //esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
368 cuts->AddCut(esdTrackCuts);
369
370 Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
371
372 AliDielectronPID *pid = new AliDielectronPID("PID","PID cut");
373 if(cutDefinition==0) { // J/psi->ee, phi->ee
374 pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.0, 4.5, 0.0, 0.0, kFALSE, AliDielectronPID::kRequire); // TPC 3-sigma inclusion for electron
375 pid->AddCut(AliDielectronPID::kTPC,AliPID::kProton, -100.0, 2.0, 0.0, 10.0, kTRUE, AliDielectronPID::kRequire); // TPC 3.0-sigma exclusion for proton
376// pid->AddCut(AliDielectronPID::kTPC,AliPID::kKaon, -3.0, 3.0, 0.0, 10.0, kTRUE, AliDielectronPID::kRequire); // TPC 3.0-sigma exclusion for kaon
377// pid->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -3.0, 3.0, 0.0, 10.0, kTRUE, AliDielectronPID::kRequire); // TPC 3.0-sigma exclusion for pion
378 }
379 if(cutDefinition==1) { // phi -> KK
380 pid->AddCut(AliDielectronPID::kTOF,AliPID::kKaon, -3.5, 3.5, 0.6, 100.0, kFALSE, AliDielectronPID::kRequire, AliDielectronVarManager::kPIn); // TOF 3-sigma inclusion for kaon
381 pid->AddCut(AliDielectronPID::kTPC,AliPID::kKaon, -3.0, 3.5, 0.3, 100.0, kFALSE, AliDielectronPID::kRequire, AliDielectronVarManager::kPIn); // TPC 3-sigma inclusion for kaon
382 /* pid->AddCut(AliDielectronPID::kTPC,AliPID::kProton, -2.0, 2.0, 0.0, 0.0, kTRUE, AliDielectronPID::kRequire); // TPC 2.0-sigma exclusion for proton
383 pid->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -2.0, 2.0, 0.0, 0.0, kTRUE, AliDielectronPID::kRequire); // TPC 2.0-sigma exclusion for pion
384 pid->AddCut(AliDielectronPID::kTOF,AliPID::kProton, -2.0, 2.0, 0.6, 3.0, kTRUE, AliDielectronPID::kIfAvailable); // TOF 2.0-sigma exclusion for proton
385 pid->AddCut(AliDielectronPID::kTOF,AliPID::kPion, -2.0, 2.0, 0.6, 3.0, kTRUE, AliDielectronPID::kIfAvailable); // TOF 2.0-sigma exclusion for pion
386*/
387 }
388
389 // ++++++++++++++++++++++++++++++++++++++++
390 // shifts for the nSigma electrons
391 TGraph* nSigmaCorrection = new TGraph();
392 // b period (LHC10f7a)
393 nSigmaCorrection->SetPoint(0, 114000., -0.23-(0.0));
394 nSigmaCorrection->SetPoint(1, 117222., -0.23-(0.0));
395 // c period (LHC10f7a)
396 nSigmaCorrection->SetPoint(2, 119000., -0.23-(0.0));
397 nSigmaCorrection->SetPoint(3, 120829., -0.23-(0.0));
398 // d period (LHC10f7a)
399 nSigmaCorrection->SetPoint(4, 121000., -0.353-(-0.111));
400 nSigmaCorrection->SetPoint(5, 127000., -0.353-(-0.111));
401 // e period (LHC10f7a)
402 nSigmaCorrection->SetPoint(6, 127500., -0.351-(-0.116));
403 nSigmaCorrection->SetPoint(7, 130900., -0.351-(-0.116));
404 // LHC11a period (LHC11b10b)
405 nSigmaCorrection->SetPoint(8, 146680., -0.70-(+0.381)); //
406 nSigmaCorrection->SetPoint(9, 146870., -0.70-(+0.381)); //
407 if(hasMC)
408 pid->SetCorrGraph(nSigmaCorrection);
409
410 cuts->AddCut(pid);
411}
412
413//______________________________________________________________________________________
414void SetupDielectronPairCuts(AliDielectron *die, Int_t cutDefinition)
415{
416 //
417 // Setup the pair cuts
418 //
419
420 //Invariant mass selection
421 AliDielectronVarCuts *cuts=new AliDielectronVarCuts("|y|<0.9","|Y|<.9");
422 if(cutDefinition==0) cuts->AddCut(AliDielectronVarManager::kY,-0.9,0.9);
423 if(cutDefinition==1) cuts->AddCut(AliDielectronVarManager::kY,-1.0,1.0);
424 if(cutDefinition==1) cuts->AddCut(AliDielectronVarManager::kM, 0.95,1.1);
425 die->GetPairFilter().AddCuts(cuts);
426
427 // Configure prefilter to remove conversions
428 AliDielectronVarCuts *gammaCut=new AliDielectronVarCuts("gammaCut","gammaCut");
429 gammaCut->AddCut(AliDielectronVarManager::kM,0.,.05);
430 if(cutDefinition==0) {
431 die->GetPairPreFilter().AddCuts(gammaCut);
432 die->SetPreFilterUnlikeOnly();
433 }
434}
435
436//______________________________________________________________________________________
437void InitDielectronHistograms(AliDielectron *die, Int_t cutDefinition)
438{
439 //
440 // Initialise the histograms
441 //
442
443 //Setup histogram Manager
444 AliDielectronHistos *histos=new AliDielectronHistos(die->GetName(),die->GetTitle());
445
446 //Initialise histogram classes
447 histos->SetReservedWords("Track;Pair");
448
449 //Track classes
450 //to fill also track info from 2nd event loop until 2
451 for (Int_t i=0; i<2; ++i){
452 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
453 }
454
455 //Pair classes
456 // to fill also mixed event histograms loop until 10
457 for (Int_t i=0; i<3; ++i){
458 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
459 }
460
461 //legs from pair
462 for (Int_t i=0; i<3; ++i){
463 histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i)));
464 }
465
466 //add histograms to event class
467 if (cutDefinition==0) {
468 histos->AddClass("Event");
469 histos->UserHistogram("Event","VtxZ","Vertex Z;Z[cm]",500,-25.,25.,AliDielectronVarManager::kZvPrim);
470 histos->UserHistogram("Event","NTrk","NTrk",500,-0.5,499.5,AliDielectronVarManager::kNTrk);
471 histos->UserHistogram("Event","VtxZ_NaccTrcklts","VtxZ_NaccTrcklts;VtxZ;NaccTrcklts",
472 240,-12.,12.,200,-0.5,199.5,AliDielectronVarManager::kZvPrim, AliDielectronVarManager::kNaccTrcklts);
473
474 histos->UserHistogram("Event","MultV0A","VZERO mult",2000,0.,2000.,AliDielectronVarManager::kMultV0A);
475 histos->UserHistogram("Event","MultV0C","VZERO mult",2000,0.,2000.,AliDielectronVarManager::kMultV0C);
476 histos->UserHistogram("Event","MultV0","VZERO mult",2000,0.,2000.,AliDielectronVarManager::kMultV0);
477 histos->UserHistogram("Event","AdcV0A","VZERO adc",10000,0.,100000.,AliDielectronVarManager::kAdcV0A);
478 histos->UserHistogram("Event","AdcV0C","VZERO adc",10000,0.,100000.,AliDielectronVarManager::kAdcV0C);
479 histos->UserHistogram("Event","AdcV0","VZERO adc",10000,0.,100000.,AliDielectronVarManager::kAdcV0);
480 histos->UserHistogram("Event","MultV0A_MultV0C","MultV0A_MultV0C;MultV0A;MultV0C",
481 2000,0.0,2000.,2000,0.0,2000,AliDielectronVarManager::kMultV0A, AliDielectronVarManager::kMultV0C);
482 histos->UserHistogram("Event","AdcV0A_AdcV0C","AdcV0A_AdcV0C;AdcV0A;AdcV0C",
483 1000,0.0,20000.,1000,0.0,20000,AliDielectronVarManager::kAdcV0A, AliDielectronVarManager::kAdcV0C);
484 histos->UserHistogram("Event","MultV0A_AdcV0A","MultV0A_AdcV0A;MultV0A;AdcV0A",
485 2000,0.0,2000.,2000,0.0,20000,AliDielectronVarManager::kMultV0A, AliDielectronVarManager::kAdcV0A);
486 histos->UserHistogram("Event","MultV0C_AdcV0C","MultV0C_AdcV0C;MultV0C;AdcV0C",
487 2000,0.0,2000.,2000,0.0,20000,AliDielectronVarManager::kMultV0C, AliDielectronVarManager::kAdcV0C);
488 }
489
490 //add histograms to Track classes ---------------------------------------------------------------------------
491 // kinematic acceptance histograms
492 histos->UserHistogram("Track","Pt","Pt;Pt (GeV/c);#tracks",400,0,20.,AliDielectronVarManager::kPt);
493 histos->UserHistogram("Track","Eta_P","Eta_P;#eta;P (GeV/c)",40, -1.0, +1.0, 200,0,10., AliDielectronVarManager::kEta, AliDielectronVarManager::kP);
494 histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
495 40,-1,1,200,0,6.285,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
496
497 // DCA diagnostic histograms
498 histos->UserHistogram("Track","dXY","dXY;dXY (cm);#tracks",500,-1.,1.,AliDielectronVarManager::kImpactParXY);
499 histos->UserHistogram("Track","dZ","dZ;dZ (cm);#tracks",600,-3.,3.,AliDielectronVarManager::kImpactParZ);
500 histos->UserHistogram("Track","dZ_dXY","dZ_dXY;dZ (cm);dXY (cm)",600,-3.,3.,500,-1.,1.,AliDielectronVarManager::kImpactParZ, AliDielectronVarManager::kImpactParXY);
501 histos->UserHistogram("Track","P_dXY","P_dXY;P (GeV/c);dXY (cm)",200,0.,10.,500,-1.,1.,AliDielectronVarManager::kP, AliDielectronVarManager::kImpactParXY);
502 histos->UserHistogram("Track","P_dZ","P_dZ;P (GeV/c);dZ (cm)",200,0.,10.,600,-3.,3.,AliDielectronVarManager::kP, AliDielectronVarManager::kImpactParZ);
503
504 // ITS
505 histos->UserHistogram("Track","ITSsignal","ITS signal;ITS dE/dx",1000,0.0,1000.0, AliDielectronVarManager::kITSsignal);
506 histos->UserHistogram("Track","ITSsignal_P","ITS signal vs P;P (GeV/c); ITS dE/dx",300, 0.0, 3.0, 400,0.0,1000.0, AliDielectronVarManager::kP, AliDielectronVarManager::kITSsignal);
507
508 // TPC
509 histos->UserHistogram("Track","TPCchi2","#chi^{2}/cluster;#chi^{2}/cluster;#tracks",200,0.0,5.0, AliDielectronVarManager::kTPCchi2Cl);
510 histos->UserHistogram("Track","Pt_TPCchi2","#chi^{2}/cluster vs pt;p_{T} (GeV/c);#chi^{2}/cluster",400,0.,20., 200,0.0,5.0,
511 AliDielectronVarManager::kPt,AliDielectronVarManager::kTPCchi2Cl);
512 histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusters;#tracks",160,-0.5,159.5, AliDielectronVarManager::kNclsTPC);
513 histos->UserHistogram("Track","Phi_TPCnCls","Number of Clusters TPC vs #phi;#phi (rad.);TPC number clusters",200,0,6.285, 160,-0.5,159.5,
514 AliDielectronVarManager::kPhi,AliDielectronVarManager::kNclsTPC);
515 histos->UserHistogram("Track","Pin_TPCnCls","Number of Clusters TPC vs TPC inner param P;p (GeV/c);TPC number clusters",400,0,20., 160,-0.5,159.5,
516 AliDielectronVarManager::kPIn, AliDielectronVarManager::kNclsTPC);
517 histos->UserHistogram("Track","TPCnCls_dEdx","Number of Clusters TPC vs dE/dx; TPC number clusters; dE/dx (arb.units)", 160,-0.5,159.5, 200,0,200.,
518 AliDielectronVarManager::kNclsTPC, AliDielectronVarManager::kTPCsignal);
519 histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
520 400,0.2,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal);
521 histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
522 400,0.2,20.,200,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle);
523 histos->UserHistogram("Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
524 400,0.2,20.,200,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio);
525 histos->UserHistogram("Track","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",
526 400,0.2,20.,200,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao);
527 histos->UserHistogram("Track","TPCnSigmaPro_P","TPC number of sigmas Protons;P [GeV];TPC number of sigmas Protons;#tracks",
528 400,0.2,20.,200,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPro);
529 histos->UserHistogram("Track","dEdx_Eta","dEdx;#eta;TPC signal (arb units);#tracks",
530 100,-1.0,1.0,200,0.,200.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCsignal);
531 histos->UserHistogram("Track","TPCnSigmaEle_Eta","TPC number of sigmas Electrons;#eta;TPC number of sigmas Electrons;#tracks",
532 100,-1.0,1.0,200,-5.,5.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaEle);
533 histos->UserHistogram("Track","TPCnSigmaPio_Eta","TPC number of sigmas Pions;#eta;TPC number of sigmas Pions;#tracks",
534 100,-1.0,1.0,200,-5.,5.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaPio);
535 histos->UserHistogram("Track","TPCnSigmaKao_Eta","TPC number of sigmas Kaons;#eta;TPC number of sigmas Kaons;#tracks",
536 100,-1.0,1.0,200,-5.,5.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaKao);
537 histos->UserHistogram("Track","TPCnSigmaPro_Eta","TPC number of sigmas Protons;#eta;TPC number of sigmas Protons;#tracks",
538 100,-1.0,1.0,200,-5.,5.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaPro);
539
540 // TOF
541 histos->UserHistogram("Track","Pin_TOFsignal","TOF signal vs TPC inner param P; P [GeV]; TOF signal",
542 120,0.0,6.,1200,0.,120000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFsignal);
543 histos->UserHistogram("Track","Pin_TOFbeta","TOF #beta vs TPC inner param P; P [GeV]; TOF #beta",
544 120,0.0,6.,120,0.,1.2,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFbeta);
545 histos->UserHistogram("Track","TOFnSigmaPio_Pin","TOF number of sigmas Pions;P [GeV];TOF number of sigmas Pions;#tracks",
546 400,0.2,20.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPio);
547 histos->UserHistogram("Track","TOFnSigmaPio_eta","TOF number of sigmas Pions vs #eta;#eta;TOF number of sigmas Pions;#tracks",
548 100,-1.2,1.2,200,-10.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTOFnSigmaPio);
549 histos->UserHistogram("Track","TOFnSigmaKao_Pin","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks",
550 400,0.2,20.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao);
551 histos->UserHistogram("Track","TOFnSigmaKao_eta","TOF number of sigmas Kaons vs #eta;#eta;TOF number of sigmas Kaons;#tracks",
552 100,-1.2,1.2,200,-10.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTOFnSigmaKao);
553 histos->UserHistogram("Track","TOFnSigmaPro_Pin","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks",
554 400,0.2,20.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro);
555 histos->UserHistogram("Track","TOFnSigmaPro_eta","TOF number of sigmas Protons vs #eta;#eta;TOF number of sigmas Protons;#tracks",
556 100,-1.2,1.2,200,-10.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTOFnSigmaPro);
557
558 //add histograms to Pair classes
559 Int_t nMassBins = 10000;
560 Double_t massRange[2] = {-0.005, 100.005};
561 if(cutDefinition==1) { // Phi -> K+K-
562 nMassBins = 4000;
563 massRange[0] = 0.8; massRange[1] = 1.2;
564 }
565 histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
566 nMassBins, massRange[0], massRange[1], AliDielectronVarManager::kM);
567 histos->UserHistogram("Pair","InvMass_Pt","Inv.Mass vs pt;Inv. Mass [GeV]; pt (GeV/c);#pairs",
568 nMassBins/10, massRange[0], massRange[1], 100, 0.0, 50.0, AliDielectronVarManager::kM, AliDielectronVarManager::kPt);
569 histos->UserHistogram("Pair","InvMass_Cent","Inv.Mass vs centrality;Inv. Mass [GeV]; centrality;#pairs",
570 nMassBins/10, massRange[0], massRange[1], 20, 0.0, 100.0, AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality);
571 histos->UserHistogram("Pair","InvMass_Rap","Inv.Mass vs rapidity;Inv. Mass [GeV]; rapidity;#pairs",
572 nMassBins/10, massRange[0], massRange[1], 100, -1.0, 1.0, AliDielectronVarManager::kM, AliDielectronVarManager::kY);
573 histos->UserHistogram("Pair","InvMass_OpAngle","Inv.Mass vs opening angle;Inv. Mass [GeV]; op. angle (rad.);#pairs",
574 nMassBins/10, massRange[0], massRange[1], 100, 0.0, 4.0, AliDielectronVarManager::kM, AliDielectronVarManager::kOpeningAngle);
575 histos->UserHistogram("Pair","InvMass_ThetaHE","Inv.Mass vs cos #theta^{*}_{HE};Inv. Mass [GeV]; cos #theta^{*}_{HE};#pairs",
576 nMassBins/10, massRange[0], massRange[1], 100, -1.0, 1.0, AliDielectronVarManager::kM, AliDielectronVarManager::kThetaHE);
577 histos->UserHistogram("Pair","InvMass_ThetaCS","Inv.Mass vs cos #theta^{*}_{CS};Inv. Mass [GeV]; cos #theta^{*}_{CS};#pairs",
578 nMassBins/10, massRange[0], massRange[1], 100, -1.0, 1.0, AliDielectronVarManager::kM, AliDielectronVarManager::kThetaCS);
579 histos->UserHistogram("Pair","Pt","Transverse momentum; P_{t} [GeV/c];#pairs",
580 1000, 0.0, 50.0, AliDielectronVarManager::kPt);
581 histos->UserHistogram("Pair","Pt_Y","Transverse momentum vs rapidity; rapidity; P_{t} [GeV/c];#pairs",
582 100, -1.0, 1.0, 200, 0.0, 50.0, AliDielectronVarManager::kY, AliDielectronVarManager::kPt);
583 histos->UserHistogram("Pair","Pt_ThetaCS","Transverse momentum vs cos #theta^{*}_{CS}; cos #theta^{*}_{CS}; P_{t} [GeV/c];#pairs",
584 100, -1.0, 1.0, 200, 0.0, 50.0, AliDielectronVarManager::kThetaCS, AliDielectronVarManager::kPt);
585 histos->UserHistogram("Pair","Pt_ThetaHE","Transverse momentum vs cos #theta^{*}_{HE}; cos #theta^{*}_{HE}; P_{t} [GeV/c];#pairs",
586 100, -1.0, 1.0, 200, 0.0, 50.0, AliDielectronVarManager::kThetaHE, AliDielectronVarManager::kPt);
587 histos->UserHistogram("Pair","Pt_Phi","Transverse momentum vs phi; #phi (rad.); P_{t} [GeV/c];#pairs",
588 200, -6.3, 6.3, 200, 0.0, 50.0, AliDielectronVarManager::kPhi, AliDielectronVarManager::kPt);
589 histos->UserHistogram("Pair","Phi","#phi; #phi (rad.);#pairs",
590 1000, -6.3, 6.3, AliDielectronVarManager::kPhi);
591 histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
592 100,-1.,1.,AliDielectronVarManager::kY);
593 histos->UserHistogram("Pair","Rapidity_OpAngle","Rapidity vs opening angle;Rapidity; Op.Angle (rad.);#pairs",
594 100,-1.,1.,200, 0.0, 4.0, AliDielectronVarManager::kY, AliDielectronVarManager::kOpeningAngle);
595 histos->UserHistogram("Pair","Rapidity_ThetaCS","Rapidity vs cos #theta^{*}_{CS};Rapidity; cos #theta^{*}_{CS};#pairs",
596 100,-1.,1.,200, -1.0, 1.0, AliDielectronVarManager::kY, AliDielectronVarManager::kThetaCS);
597 histos->UserHistogram("Pair","Rapidity_ThetaHE","Rapidity vs cos #theta^{*}_{HE};Rapidity; cos #theta^{*}_{HE};#pairs",
598 100,-1.,1.,200, -1.0, 1.0, AliDielectronVarManager::kY, AliDielectronVarManager::kThetaHE);
599 histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
600 100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
601 histos->UserHistogram("Pair","Radius","Radius;R[cm]",
602 1000,0.,300.,AliDielectronVarManager::kR);
603 histos->UserHistogram("Pair","ThetaHE","cos #theta^{*}_{HE}; cos #theta^{*}_{HE}",
604 220,-1.1,1.1,AliDielectronVarManager::kThetaHE);
605 histos->UserHistogram("Pair","PhiHE","#varphi^{*}_{HE};#varphi^{*}_{HE} (rad.)",
606 160,-3.2,3.2,AliDielectronVarManager::kPhiHE);
607 histos->UserHistogram("Pair","ThetaCS","cos #theta^{*}_{CS}; cos #theta^{*}_{CS}",
608 220,-1.1,1.1,AliDielectronVarManager::kThetaCS);
609 histos->UserHistogram("Pair","PhiCS","#varphi^{*}_{CS};#varphi^{*}_{CS} (rad.)",
610 160,-3.2,3.2,AliDielectronVarManager::kPhiCS);
611 histos->UserHistogram("Pair","Lxy","Pseudo-proper time;Lxy (cm.)",
612 1000,0.0,2.0,AliDielectronVarManager::kPseudoProperTime);
613 histos->UserHistogram("Pair","Chi2NDF","Pair #chi^{2}/NDF; #chi^{2}/NDF",
614 1000,0.0,10.0,AliDielectronVarManager::kChi2NDF);
615
616
617 die->SetHistogramManager(histos);
618}
619
620
621//_____________________________________________________________________________________________
622void SetDielectronMCSignals(AliDielectron *die)
623{
624 // J/psi sources (direct + feed down from charm higher states)
625 // 0
626 AliDielectronSignalMC* promptJpsi = new AliDielectronSignalMC("promptJpsi","Prompt J/psi"); // prompt J/psi (not from beauty decays)
627 promptJpsi->SetLegPDGs(11,-11);
628 promptJpsi->SetMotherPDGs(443,443);
629 promptJpsi->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons
630 promptJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
631 promptJpsi->SetFillPureMCStep(kTRUE);
632 promptJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
633 promptJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
634 promptJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
635 promptJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
636 die->AddSignalMC(promptJpsi);
637
638 // 1
639 AliDielectronSignalMC* beautyJpsi = new AliDielectronSignalMC("beautyJpsi","beauty hadron -> J/psi"); // J/psi->e+e- from beauty hadron decays
640 beautyJpsi->SetLegPDGs(11,-11);
641 beautyJpsi->SetMotherPDGs(443,443);
642 beautyJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
643 beautyJpsi->SetGrandMotherPDGs(503,503);
644 beautyJpsi->SetFillPureMCStep(kTRUE);
645 beautyJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
646 beautyJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
647 beautyJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
648 beautyJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
649 die->AddSignalMC(beautyJpsi);
650
651 // 2
652 AliDielectronSignalMC* beautyMesonJpsi = new AliDielectronSignalMC("beautyMesonJpsi","beauty meson -> J/psi"); // J/psi->e+e- from beauty meson decays
653 beautyMesonJpsi->SetLegPDGs(11,-11);
654 beautyMesonJpsi->SetMotherPDGs(443,443);
655 beautyMesonJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
656 beautyMesonJpsi->SetGrandMotherPDGs(500,500);
657 beautyMesonJpsi->SetFillPureMCStep(kTRUE);
658 beautyMesonJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
659 beautyMesonJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
660 beautyMesonJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
661 beautyMesonJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
662 die->AddSignalMC(beautyMesonJpsi);
663
664 // 3
665 AliDielectronSignalMC* openBeautyMesonJpsi = new AliDielectronSignalMC("openBeautyMesonJpsi","open beauty meson -> J/psi"); // J/psi->e+e- from open beauty meson decays
666 openBeautyMesonJpsi->SetLegPDGs(11,-11);
667 openBeautyMesonJpsi->SetMotherPDGs(443,443);
668 openBeautyMesonJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
669 openBeautyMesonJpsi->SetGrandMotherPDGs(501,501);
670 openBeautyMesonJpsi->SetFillPureMCStep(kTRUE);
671 openBeautyMesonJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
672 openBeautyMesonJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
673 openBeautyMesonJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
674 openBeautyMesonJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
675 die->AddSignalMC(openBeautyMesonJpsi);
676
677 // 4
678 AliDielectronSignalMC* chic0Jpsi = new AliDielectronSignalMC("chic0Jpsi","chic0 -> J/psi + X"); // J/psi->e+e- from chic0 decays
679 chic0Jpsi->SetLegPDGs(11,-11);
680 chic0Jpsi->SetMotherPDGs(443,443);
681 chic0Jpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
682 chic0Jpsi->SetGrandMotherPDGs(10441,10441);
683 chic0Jpsi->SetFillPureMCStep(kTRUE);
684 chic0Jpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
685 chic0Jpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
686 chic0Jpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
687 chic0Jpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
688 die->AddSignalMC(chic0Jpsi);
689
690 // 5
691 AliDielectronSignalMC* chic1Jpsi = new AliDielectronSignalMC("chic1Jpsi","chic1 -> J/psi + X"); // J/psi->e+e- from chic1 decays
692 chic1Jpsi->SetLegPDGs(11,-11);
693 chic1Jpsi->SetMotherPDGs(443,443);
694 chic1Jpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
695 chic1Jpsi->SetGrandMotherPDGs(20443,20443);
696 chic1Jpsi->SetFillPureMCStep(kTRUE);
697 chic1Jpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
698 chic1Jpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
699 chic1Jpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
700 chic1Jpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
701 die->AddSignalMC(chic1Jpsi);
702
703 // 6
704 AliDielectronSignalMC* chic2Jpsi = new AliDielectronSignalMC("chic2Jpsi","chic2 -> J/psi + X"); // J/psi->e+e- from chic2 decays
705 chic2Jpsi->SetLegPDGs(11,-11);
706 chic2Jpsi->SetMotherPDGs(443,443);
707 chic2Jpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
708 chic2Jpsi->SetGrandMotherPDGs(445,445);
709 chic2Jpsi->SetFillPureMCStep(kTRUE);
710 chic2Jpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
711 chic2Jpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
712 chic2Jpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
713 chic2Jpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
714 die->AddSignalMC(chic2Jpsi);
715
716 // 7
717 AliDielectronSignalMC* psiPrimeJpsi = new AliDielectronSignalMC("psiPrimeJpsi","psi(2S) -> J/psi + X"); // J/psi->e+e- from psi(2S) decays
718 psiPrimeJpsi->SetLegPDGs(11,-11);
719 psiPrimeJpsi->SetMotherPDGs(443,443);
720 psiPrimeJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
721 psiPrimeJpsi->SetGrandMotherPDGs(445,445);
722 psiPrimeJpsi->SetFillPureMCStep(kTRUE);
723 psiPrimeJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
724 psiPrimeJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
725 psiPrimeJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
726 psiPrimeJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
727 die->AddSignalMC(psiPrimeJpsi);
728
729 // physical backgrounds (electrons pairs from other sources and their combinatorics)
730 // 8
731 AliDielectronSignalMC* diEleContinuum = new AliDielectronSignalMC("diEleContinuum","di-electron continuum"); // all di-electrons originating in the collision
732 diEleContinuum->SetLegPDGs(11,-11);
733 diEleContinuum->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
734 diEleContinuum->SetCheckBothChargesLegs(kTRUE,kTRUE);
735 diEleContinuum->SetFillPureMCStep(kTRUE);
736 die->AddSignalMC(diEleContinuum);
737
738 // 9
739 AliDielectronSignalMC* diEleCharm = new AliDielectronSignalMC("diEleCharm","di-electrons from charm"); // dielectrons originating from charm hadrons (not neccessary from same mother)
740 diEleCharm->SetLegPDGs(11,-11);
741 diEleCharm->SetMotherPDGs(403,403);
742 diEleCharm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
743 diEleCharm->SetCheckBothChargesLegs(kTRUE,kTRUE);
744 diEleCharm->SetCheckBothChargesMothers(kTRUE,kTRUE);
745 diEleCharm->SetFillPureMCStep(kTRUE);
746 die->AddSignalMC(diEleCharm);
747
748 // 10
749 AliDielectronSignalMC* diEleOpenCharm = new AliDielectronSignalMC("diEleOpenCharm","di-electrons from open charm"); // dielectrons originating from open charm hadrons
750 diEleOpenCharm->SetLegPDGs(11,-11);
751 diEleOpenCharm->SetMotherPDGs(402,402);
752 diEleOpenCharm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
753 diEleOpenCharm->SetCheckBothChargesLegs(kTRUE,kTRUE);
754 diEleOpenCharm->SetCheckBothChargesMothers(kTRUE,kTRUE);
755 diEleOpenCharm->SetFillPureMCStep(kTRUE);
756 die->AddSignalMC(diEleOpenCharm);
757
758 // 11
759 AliDielectronSignalMC* diEleOpenCharmJpsi = new AliDielectronSignalMC("diEleOpenCharmJpsi","1 leg from open charm + 1 jpsi leg"); // 1 leg from open charm + 1 leg from jpsi
760 diEleOpenCharmJpsi->SetLegPDGs(11,-11);
761 diEleOpenCharmJpsi->SetMotherPDGs(402,443);
762 diEleOpenCharmJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
763 diEleOpenCharmJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
764 diEleOpenCharmJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
765 diEleOpenCharmJpsi->SetFillPureMCStep(kTRUE);
766 die->AddSignalMC(diEleOpenCharmJpsi);
767
768 // 12
769 AliDielectronSignalMC* diEleBeauty = new AliDielectronSignalMC("diEleBeauty","di-electrons from beauty"); // dielectrons originating from beauty hadrons (not neccessary from same mother)
770 diEleBeauty->SetLegPDGs(11,-11);
771 diEleBeauty->SetMotherPDGs(503,503);
772 diEleBeauty->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
773 diEleBeauty->SetCheckBothChargesLegs(kTRUE,kTRUE);
774 diEleBeauty->SetCheckBothChargesMothers(kTRUE,kTRUE);
775 diEleBeauty->SetFillPureMCStep(kTRUE);
776 die->AddSignalMC(diEleBeauty);
777
778 // 13
779 AliDielectronSignalMC* diEleOpenBeauty = new AliDielectronSignalMC("diEleOpenBeauty","di-electrons from open beauty"); // dielectrons originating from open beauty hadrons
780 diEleOpenBeauty->SetLegPDGs(11,-11);
781 diEleOpenBeauty->SetMotherPDGs(502,502);
782 diEleOpenBeauty->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
783 diEleOpenBeauty->SetCheckBothChargesLegs(kTRUE,kTRUE);
784 diEleOpenBeauty->SetCheckBothChargesMothers(kTRUE,kTRUE);
785 diEleOpenBeauty->SetFillPureMCStep(kTRUE);
786 die->AddSignalMC(diEleOpenBeauty);
787
788 // 14
789 AliDielectronSignalMC* diEleBeautyJpsi = new AliDielectronSignalMC("diEleBeautyJpsi","1 leg from beauty + 1 jpsi leg"); // 1 leg from beauty + 1 leg from jpsi
790 diEleBeautyJpsi->SetLegPDGs(11,-11);
791 diEleBeautyJpsi->SetMotherPDGs(503,443);
792 diEleBeautyJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
793 diEleBeautyJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
794 diEleBeautyJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
795 diEleBeautyJpsi->SetFillPureMCStep(kTRUE);
796 die->AddSignalMC(diEleBeautyJpsi);
797
798 // 15
799 AliDielectronSignalMC* diEleBeautyOpenCharm = new AliDielectronSignalMC("diEleBeautyOpenCharm","1 leg from beauty + 1 leg from open charm"); // 1 leg from open charm + 1 leg from beauty
800 diEleBeautyOpenCharm->SetLegPDGs(11,-11);
801 diEleBeautyOpenCharm->SetMotherPDGs(503,403);
802 diEleBeautyOpenCharm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
803 diEleBeautyOpenCharm->SetCheckBothChargesLegs(kTRUE,kTRUE);
804 diEleBeautyOpenCharm->SetCheckBothChargesMothers(kTRUE,kTRUE);
805 diEleBeautyOpenCharm->SetFillPureMCStep(kTRUE);
806 die->AddSignalMC(diEleBeautyOpenCharm);
807
808 // 16
809 AliDielectronSignalMC* diEleStrange = new AliDielectronSignalMC("diEleStrange","di-electrons from strange particles"); // dielectrons originating from strange hadrons (not neccessary from same mother)
810 diEleStrange->SetLegPDGs(11,-11);
811 diEleStrange->SetMotherPDGs(300,300);
812 diEleStrange->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
813 diEleStrange->SetCheckBothChargesLegs(kTRUE,kTRUE);
814 diEleStrange->SetCheckBothChargesMothers(kTRUE,kTRUE);
815 diEleStrange->SetFillPureMCStep(kTRUE);
816 die->AddSignalMC(diEleStrange);
817
818 // 17
819 AliDielectronSignalMC* diEleStrangeCharm = new AliDielectronSignalMC("diEleStrangeCharm","1 leg from strange + 1 leg from charm"); // 1 leg from strange + 1 leg from charm
820 diEleStrangeCharm->SetLegPDGs(11,-11);
821 diEleStrangeCharm->SetMotherPDGs(300,403);
822 diEleStrangeCharm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
823 diEleStrangeCharm->SetCheckBothChargesLegs(kTRUE,kTRUE);
824 diEleStrangeCharm->SetCheckBothChargesMothers(kTRUE,kTRUE);
825 diEleStrangeCharm->SetFillPureMCStep(kTRUE);
826 die->AddSignalMC(diEleStrangeCharm);
827
828 // 18
829 AliDielectronSignalMC* diEleStrangeBeauty = new AliDielectronSignalMC("diEleStrangeBeauty","1 leg from strange + 1 leg from beauty"); // 1 leg from strange + 1 leg from beauty
830 diEleStrangeBeauty->SetLegPDGs(11,-11);
831 diEleStrangeBeauty->SetMotherPDGs(300,503);
832 diEleStrangeBeauty->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
833 diEleStrangeBeauty->SetCheckBothChargesLegs(kTRUE,kTRUE);
834 diEleStrangeBeauty->SetCheckBothChargesMothers(kTRUE,kTRUE);
835 diEleStrangeBeauty->SetFillPureMCStep(kTRUE);
836 die->AddSignalMC(diEleStrangeBeauty);
837
838 // 19
839 AliDielectronSignalMC* diEleLight1 = new AliDielectronSignalMC("diEleLight1","1 leg from light particles + 1 leg from everything"); // 1 leg from light hadrons (100+ PYTHIA codes) + 1 leg from everything
840 diEleLight1->SetLegPDGs(11,-11);
841 diEleLight1->SetMotherPDGs(100,0);
842 diEleLight1->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
843 diEleLight1->SetCheckBothChargesLegs(kTRUE,kTRUE);
844 diEleLight1->SetCheckBothChargesMothers(kTRUE,kTRUE);
845 diEleLight1->SetFillPureMCStep(kTRUE);
846 die->AddSignalMC(diEleLight1);
847
848 // 20
849 AliDielectronSignalMC* diEleLight1Charm = new AliDielectronSignalMC("diEleLight1Charm","1 leg from light particles + 1 leg from charm"); // 1 leg from light hadrons (100+ PYTHIA codes) + 1 leg from charm
850 diEleLight1Charm->SetLegPDGs(11,-11);
851 diEleLight1Charm->SetMotherPDGs(100,403);
852 diEleLight1Charm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
853 diEleLight1Charm->SetCheckBothChargesLegs(kTRUE,kTRUE);
854 diEleLight1Charm->SetCheckBothChargesMothers(kTRUE,kTRUE);
855 diEleLight1Charm->SetFillPureMCStep(kTRUE);
856 die->AddSignalMC(diEleLight1Charm);
857
858 // 21
859 AliDielectronSignalMC* diEleLight1Beauty = new AliDielectronSignalMC("diEleLight1Beauty","1 leg from light particles + 1 leg from beauty"); // 1 leg from light hadrons (100+ PYTHIA codes) + 1 leg from beauty
860 diEleLight1Beauty->SetLegPDGs(11,-11);
861 diEleLight1Beauty->SetMotherPDGs(100,503);
862 diEleLight1Beauty->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
863 diEleLight1Beauty->SetCheckBothChargesLegs(kTRUE,kTRUE);
864 diEleLight1Beauty->SetCheckBothChargesMothers(kTRUE,kTRUE);
865 diEleLight1Beauty->SetFillPureMCStep(kTRUE);
866 die->AddSignalMC(diEleLight1Beauty);
867
868 // 22
869 AliDielectronSignalMC* diEleLight2 = new AliDielectronSignalMC("diEleLight2","1 leg from light particles + 1 leg from everything"); // 1 leg from light hadrons (200+ PYTHIA codes) + 1 leg from everything
870 diEleLight2->SetLegPDGs(11,-11);
871 diEleLight2->SetMotherPDGs(200,0);
872 diEleLight2->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
873 diEleLight2->SetCheckBothChargesLegs(kTRUE,kTRUE);
874 diEleLight2->SetCheckBothChargesMothers(kTRUE,kTRUE);
875 diEleLight2->SetFillPureMCStep(kTRUE);
876 die->AddSignalMC(diEleLight2);
877
878 // 23
879 AliDielectronSignalMC* diEleLight2Charm = new AliDielectronSignalMC("diEleLight2Charm","1 leg from light particles + 1 leg from charm"); // 1 leg from light hadrons (200+ PYTHIA codes) + 1 leg from charm
880 diEleLight2Charm->SetLegPDGs(11,-11);
881 diEleLight2Charm->SetMotherPDGs(100,403);
882 diEleLight2Charm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
883 diEleLight2Charm->SetCheckBothChargesLegs(kTRUE,kTRUE);
884 diEleLight2Charm->SetCheckBothChargesMothers(kTRUE,kTRUE);
885 diEleLight2Charm->SetFillPureMCStep(kTRUE);
886 die->AddSignalMC(diEleLight2Charm);
887
888 // 24
889 AliDielectronSignalMC* diEleLight2Beauty = new AliDielectronSignalMC("diEleLight2Beauty","1 leg from light particles + 1 leg from beauty"); // 1 leg from light hadrons (100+ PYTHIA codes) + 1 leg from beauty
890 diEleLight2Beauty->SetLegPDGs(11,-11);
891 diEleLight2Beauty->SetMotherPDGs(100,503);
892 diEleLight2Beauty->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
893 diEleLight2Beauty->SetCheckBothChargesLegs(kTRUE,kTRUE);
894 diEleLight2Beauty->SetCheckBothChargesMothers(kTRUE,kTRUE);
895 diEleLight2Beauty->SetFillPureMCStep(kTRUE);
896 die->AddSignalMC(diEleLight2Beauty);
897
898 // background from secondary electrons
899 // 25
900 AliDielectronSignalMC* secondaryElectrons = new AliDielectronSignalMC("secondaryElectrons","Secondary electrons"); // all di-electrons from secondary electrons (interaction with detector)
901 secondaryElectrons->SetLegPDGs(11,-11);
902 secondaryElectrons->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary);
903 secondaryElectrons->SetCheckBothChargesLegs(kTRUE,kTRUE);
904 die->AddSignalMC(secondaryElectrons);
905
906 // 26
907 AliDielectronSignalMC* primarySecElePairs = new AliDielectronSignalMC("primarySecElePairs","Primary+Secondary electron pairs"); // primary-secondary pairs
908 primarySecElePairs->SetLegPDGs(11,-11);
909 primarySecElePairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
910 primarySecElePairs->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kSecondary);
911 die->AddSignalMC(primarySecElePairs);
912
913 // 27
914 AliDielectronSignalMC* conversionElePairs = new AliDielectronSignalMC("conversionElePairs","conversion electron pairs"); // pairs made from conversion (may be also from 2 different conversions)
915 conversionElePairs->SetLegPDGs(11,-11);
916 conversionElePairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
917 conversionElePairs->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary);
918 conversionElePairs->SetMotherPDGs(22,22);
919 die->AddSignalMC(conversionElePairs);
920
921 // misidentification
922 // 28
923 AliDielectronSignalMC* allEleMisIdPairs = new AliDielectronSignalMC("allEleMisIdPairs","all electron+misid. pairs"); // one true electron + a mis-id electron (all sources included)
924 allEleMisIdPairs->SetLegPDGs(11,11,kFALSE,kTRUE);
925 allEleMisIdPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
926 die->AddSignalMC(allEleMisIdPairs);
927
928 // 29
929 AliDielectronSignalMC* allMisIdMisIdPairs = new AliDielectronSignalMC("allMisIdMisIdPairs","all misid.+misid. pairs"); // mis-id + mis-id
930 allMisIdMisIdPairs->SetLegPDGs(11,11,kTRUE,kTRUE);
931 allMisIdMisIdPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
932 die->AddSignalMC(allMisIdMisIdPairs);
933
934 // 30
935 AliDielectronSignalMC* elePionPairs = new AliDielectronSignalMC("elePionPairs","electron+pion pairs"); // true electron + mis-id pion
936 elePionPairs->SetLegPDGs(11,211);
937 elePionPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
938 die->AddSignalMC(elePionPairs);
939
940 // 31
941 AliDielectronSignalMC* eleProtonPairs = new AliDielectronSignalMC("eleProtonPairs","Electron+proton pairs"); // true electron + mis-id proton
942 eleProtonPairs->SetLegPDGs(11,2212);
943 eleProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
944 die->AddSignalMC(eleProtonPairs);
945
946 // 32
947 AliDielectronSignalMC* eleKaonPairs = new AliDielectronSignalMC("eleKaonPairs","electron+kaon pairs"); // true electron + mis-id kaon
948 eleKaonPairs->SetLegPDGs(11,321);
949 eleKaonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
950 die->AddSignalMC(eleKaonPairs);
951
952 // 33
953 AliDielectronSignalMC* eleProtonPairs = new AliDielectronSignalMC("eleProtonPairs","Electron+proton pairs"); // true electron + mis-id proton
954 eleProtonPairs->SetLegPDGs(11,2212);
955 eleProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
956 die->AddSignalMC(eleProtonPairs);
957
958 // 34
959 AliDielectronSignalMC* piPiPairs = new AliDielectronSignalMC("piPiPairs","pion+pion pairs"); // mis-id pion + mis-id pion
960 piPiPairs->SetLegPDGs(211,211);
961 piPiPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
962 die->AddSignalMC(piPiPairs);
963
964 // 35
965 AliDielectronSignalMC* piKaonPairs = new AliDielectronSignalMC("piKaonPairs","pion+kaon pairs"); // mis-id pion + mis-id kaon
966 piKaonPairs->SetLegPDGs(211,321);
967 piKaonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
968 die->AddSignalMC(piKaonPairs);
969
970 // 36
971 AliDielectronSignalMC* piProtonPairs = new AliDielectronSignalMC("piProtonPairs","pion+proton pairs"); // mis-id pion + mis-id proton
972 piProtonPairs->SetLegPDGs(211,2212);
973 piProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
974 die->AddSignalMC(piProtonPairs);
975
976 // 37
977 AliDielectronSignalMC* kaonKaonPairs = new AliDielectronSignalMC("kaonKaonPairs","kaon+kaon pairs"); // mis-id kaon + mis-id kaon
978 kaonKaonPairs->SetLegPDGs(321,321);
979 kaonKaonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
980 die->AddSignalMC(kaonKaonPairs);
981
982 // 38
983 AliDielectronSignalMC* muonAllPairs = new AliDielectronSignalMC("muonAllPairs","muon+everything pairs"); // mis-id muon + something else (electron, pion, kaon, proton)
984 muonAllPairs->SetLegPDGs(13,13,kFALSE,kTRUE);
985 muonAllPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
986 die->AddSignalMC(muonAllPairs);
987}
988
989//______________________________________________________________________________________
990void SetEtaCorrection()
991{
992//
993// Eta equalization for the TPC response
994//
995 if (AliDielectronPID::GetEtaCorrFunction()) return;
996
997 TString list=gSystem->Getenv("LIST");
998
999 TFile f("$TRAIN_ROOT/jpsi_JPSI/EtaCorrMaps.root");
1000 if (!f.IsOpen()) return;
1001 TList *keys=f.GetListOfKeys();
1002
1003 for (Int_t i=0; i<keys->GetEntries(); ++i){
1004 TString kName=keys->At(i)->GetName();
1005 TPRegexp reg(kName);
1006 if (reg.MatchB(list)){
1007 printf("Using Eta Correction Function: %s\n",kName.Data());
1008 AliDielectronPID::SetEtaCorrFunction((TF1*)f.Get(kName.Data()));
1009 }
1010 }
1011}