2 //__________________________________________________________________________________________
3 AliAnalysisTask *AddTask_ReducedTree(){
4 //get the current analysis manager
5 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
7 Error("AddTask_ReducedTree", "No analysis manager found.");
11 //Do we have an MC handler?
12 Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
14 //create task and add it to the manager
15 AliAnalysisTaskReducedTree *task=new AliAnalysisTaskReducedTree("DSTTreeMaker");
16 task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);
17 //if(trainConfig=="pp") task->SetRejectPileup();
18 if(!hasMC) task->UsePhysicsSelection(kTRUE);
21 // task->SetFillV0Info(kFALSE);
22 //task->SetFillGammaConversions(kFALSE);
23 task->SetFillK0s(kFALSE);
24 task->SetFillLambda(kFALSE);
25 task->SetFillALambda(kFALSE);
26 task->SetFillCaloClusterInfo(kFALSE);
27 //task->SetFillDielectronInfo(kFALSE);
28 task->SetFillFriendInfo(kFALSE);
30 task->SetEventFilter(CreateEventFilter());
31 task->SetTrackFilter(CreateGlobalTrackFilter());
32 task->SetFlowTrackFilter(CreateFlowTrackFilter());
33 task->SetK0sPionCuts(CreateK0sPionCuts());
34 task->SetLambdaProtonCuts(CreateLambdaProtonCuts());
35 task->SetLambdaPionCuts(CreateLambdaPionCuts());
36 task->SetGammaElectronCuts(CreateGammaConvElectronCuts());
37 task->SetK0sCuts(CreateK0sCuts());
38 task->SetK0sMassRange(0.44,0.55);
39 task->SetLambdaMassRange(1.090,1.14);
40 task->SetLambdaCuts(CreateLambdaCuts());
41 task->SetGammaConvCuts(CreateGammaConvCuts(AliESDv0KineCuts::kPurity, AliESDv0KineCuts::kPbPb));
42 task->SetGammaConvMassRange(0.0,0.1);
43 //task->SetV0Histograms(CreateV0Histograms());
45 //task->AddDielectron(ConfigDielectron(0)); // J/psi -> e+e-
46 //task->AddDielectron(ConfigDielectron(1)); // phi -> K+K-
48 //create output container
49 AliAnalysisDataContainer *coutput1 =
50 mgr->CreateContainer("diele_defaultTree",
52 AliAnalysisManager::kExchangeContainer,
55 AliAnalysisDataContainer *cOutputHist1 =
56 mgr->CreateContainer("qaHistos",
58 AliAnalysisManager::kOutputContainer,
61 AliAnalysisDataContainer *cOutputHist2 =
62 mgr->CreateContainer("dstTree",
64 AliAnalysisManager::kOutputContainer,
67 /*AliAnalysisDataContainer *cOutputHist3 =
68 mgr->CreateContainer("friendTree",
70 AliAnalysisManager::kOutputContainer,
71 "dstTree_friend.root");*/
72 /* cout << "output containers: " << endl
73 << cOutputHist1 << endl
74 << cOutputHist2 << endl
75 << cOutputHist3 << endl;*/
77 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
78 mgr->ConnectOutput(task, 0, coutput1 );
79 mgr->ConnectOutput(task, 1, cOutputHist1);
80 mgr->ConnectOutput(task, 2, cOutputHist2);
81 //mgr->ConnectOutput(task, 3, cOutputHist3);
82 //mgr->ConnectOutput(task, 2, cOutputHist3);
83 //mgr->ConnectOutput(task, 1, cOutputHist2);
88 //_______________________________________________________________________________________________
89 AliAnalysisCuts* CreateEventFilter() {
93 AliDielectronEventCuts *eventCuts=new AliDielectronEventCuts("eventCuts","Vertex Track && |vtxZ|<10 && ncontrib>0");
94 eventCuts->SetRequireVertex();
95 eventCuts->SetMinVtxContributors(1);
96 eventCuts->SetVertexZ(-10.,10.);
101 //_______________________________________________________________________________________________
102 AliAnalysisCuts* CreateGlobalTrackFilter() {
104 // Cuts for tracks to be written in the dst
106 AliDielectronCutGroup* cuts = new AliDielectronCutGroup("cuts","cuts",AliDielectronCutGroup::kCompAND);
107 // general ESD cuts ---------------------------------
108 AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts;
109 // basic track quality cuts (basicQ)
110 esdTrackCuts->SetMaxDCAToVertexZ(10.0);
111 esdTrackCuts->SetMaxDCAToVertexXY(3.0);
112 esdTrackCuts->SetEtaRange( -1.0 , 1.0 );
113 //esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
114 esdTrackCuts->SetRequireITSRefit(kTRUE);
115 esdTrackCuts->SetRequireTPCRefit(kTRUE);
116 esdTrackCuts->SetPRange(0.2,1e30);
117 //esdTrackCuts->SetPtRange(0.15,1e30);
118 //esdTrackCuts->SetMinNClustersTPC(60);
119 //esdTrackCuts->SetMaxChi2PerClusterTPC(4);
120 // esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
121 // esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
122 cuts->AddCut(esdTrackCuts);
124 AliDielectronPID *electronPid = new AliDielectronPID("PID","PID cut");
125 electronPid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.0, 4.0, 0.0, 0.0, kFALSE, AliDielectronPID::kRequire); // TPC 3-sigma inclusion for electron
126 electronPid->AddCut(AliDielectronPID::kTOF,AliPID::kProton, -3.0, 3.0, -2.0, 2.0, kTRUE, AliDielectronPID::kRequire,AliDielectronVarManager::kTPCnSigmaPro); // TPC exclusion for proton
127 cuts->AddCut(electronPid);
133 //_______________________________________________________________________________________________
134 AliAnalysisCuts* CreateFlowTrackFilter() {
136 // Cuts for tracks to be used for the event plane q-vector
137 // These cuts are applied aditionally to the global track cuts
139 AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts;
140 esdTrackCuts->SetPtRange(0.2,2.0);
141 esdTrackCuts->SetEtaRange(-0.8, 0.8);
142 esdTrackCuts->SetMinNClustersTPC(70);
147 //_______________________________________________________________________________________________
148 AliAnalysisCuts* CreateK0sPionCuts() {
150 // Cuts on the K0s pions (tracking cuts, pid cuts, ...)
152 AliESDtrackCuts *pionCuts = new AliESDtrackCuts;
153 pionCuts->SetPtRange(0.1,100.0);
154 pionCuts->SetRequireTPCRefit(kTRUE);
155 pionCuts->SetMinNClustersTPC(50);
160 //_______________________________________________________________________________________________
161 AliAnalysisCuts* CreateLambdaPionCuts() {
163 // Cuts on the Lambda pions (tracking cuts, pid cuts, ...)
165 AliESDtrackCuts *pionCuts = new AliESDtrackCuts;
166 pionCuts->SetPtRange(0.1,100.0);
171 //_______________________________________________________________________________________________
172 AliAnalysisCuts* CreateLambdaProtonCuts() {
174 // Cuts on the Lambda protons (tracking cuts, pid cuts, ...)
176 AliESDtrackCuts *protonCuts = new AliESDtrackCuts;
177 protonCuts->SetPtRange(0.1,100.0);
182 //______________________________________________________________________________________
183 AliAnalysisCuts* CreateGammaConvElectronCuts() {
185 // Cuts for the selection of electrons from gamma conversions
187 AliESDtrackCuts* electronCuts = new AliESDtrackCuts;
188 electronCuts->SetRequireTPCRefit(kTRUE);
189 electronCuts->SetMinNClustersTPC(50);
194 //______________________________________________________________________________________
195 AliESDv0Cuts* CreateK0sCuts() {
197 // Cuts on the V0s with K0s hypothesis
200 AliESDv0Cuts *cuts=new AliESDv0Cuts();
201 //cuts->SetMinDcaPosToVertex(-1);
202 //cuts->SetMinDcaNegToVertex(-1);
203 //cuts->SetMaxChi2(10);
204 //cuts->SetMaxDcaV0Daughters(0.3);
205 //cuts->SetMinRadius(3.0);
206 //cuts->SetMaxRadius(90.0);
207 cuts->SetMinCosinePointingAngle(0.8);
208 //cuts->SetRequireOnFlyStatus(kTRUE);
209 //cuts->SetMaxDcaV0ToVertex(0.5);
210 //cuts->SetPRange(0.,1.0e10);
211 //cuts->SetPtRange(0.,1.0e10);
216 //______________________________________________________________________________________
217 AliESDv0Cuts* CreateLambdaCuts() {
219 // Cuts on the V0s with Lambda hypothesis
222 AliESDv0Cuts *cuts=new AliESDv0Cuts();
223 //cuts->SetMinDcaPosToVertex(-1);
224 //cuts->SetMinDcaNegToVertex(-1);
225 //cuts->SetMaxChi2(10);
226 //cuts->SetMaxDcaV0Daughters(0.3);
227 //cuts->SetMinRadius(3.0);
228 //cuts->SetMaxRadius(90.0);
229 //cuts->SetMinCosinePointingAngle(0.9);
230 //cuts->SetRequireOnFlyStatus(kTRUE);
231 //cuts->SetMaxDcaV0ToVertex(0.5);
232 //cuts->SetPRange(0.,1.0e10);
233 //cuts->SetPtRange(0.,1.0e10);
238 //______________________________________________________________________________________
239 AliESDv0KineCuts* CreateGammaConvCuts(Int_t mode, Int_t type) {
241 // cuts for the selection of gamma conversions
243 AliESDv0KineCuts* cuts = new AliESDv0KineCuts();
244 cuts->SetMode(mode, type);
246 //cuts->SetNTPCclusters(60);
247 cuts->SetTPCrefit(kTRUE);
248 //cuts->SetTPCchi2perCls(4.0);
249 //cuts->SetTPCclusterratio(0.6);
250 cuts->SetNoKinks(kTRUE);
252 cuts->SetGammaCutChi2NDF(10.0);
253 Float_t cosPoint[2] = {0.0, 0.2};
254 //cuts->SetGammaCutCosPoint(cosPoint);
255 Float_t cutDCA[2] = {0.0, 1.25};
256 cuts->SetGammaCutDCA(cutDCA);
257 Float_t vtxR[2] = {3.0, 90.0};
258 cuts->SetGammaCutVertexR(vtxR);
259 Float_t psiPairCut[2]={0.0,0.10};
260 cuts->SetGammaCutPsiPair(psiPairCut);
261 cuts->SetGammaCutInvMass(0.1);
267 //______________________________________________________________________________________
268 AliDielectronHistos* CreateV0Histograms()
271 // Initialise the histograms
274 //Setup histogram Manager
275 AliDielectronHistos *histos=new AliDielectronHistos("V0Histograms","");
277 //add histograms to Track classes ---------------------------------------------------------------------------
278 histos->SetReservedWords("V0Track");
281 histos->AddClass("V0Track_Pos"); histos->AddClass("V0Track_Neg");
283 // kinematic acceptance histograms
284 histos->UserHistogram("V0Track","Pt","Pt;Pt (GeV/c);#tracks",400,0,20.,AliDielectronVarManager::kPt);
285 histos->UserHistogram("V0Track","Eta_P","Eta_P;#eta;P (GeV/c)",40, -1.0, +1.0, 200,0,10., AliDielectronVarManager::kEta, AliDielectronVarManager::kP);
286 histos->UserHistogram("V0Track","Eta_TRDPhi","Eta Phi Map; Eta; Phi;#tracks",
287 40,-1,1,200,-3.15,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kTRDphi);
289 // DCA diagnostic histograms
290 histos->UserHistogram("V0Track","dXY","dXY;dXY (cm);#tracks",500,-1.,1.,AliDielectronVarManager::kImpactParXY);
291 histos->UserHistogram("V0Track","dZ","dZ;dZ (cm);#tracks",600,-3.,3.,AliDielectronVarManager::kImpactParZ);
292 histos->UserHistogram("V0Track","dZ_dXY","dZ_dXY;dZ (cm);dXY (cm)",600,-3.,3.,500,-1.,1.,AliDielectronVarManager::kImpactParZ, AliDielectronVarManager::kImpactParXY);
293 histos->UserHistogram("V0Track","P_dXY","P_dXY;P (GeV/c);dXY (cm)",200,0.,10.,500,-1.,1.,AliDielectronVarManager::kP, AliDielectronVarManager::kImpactParXY);
294 histos->UserHistogram("V0Track","P_dZ","P_dZ;P (GeV/c);dZ (cm)",200,0.,10.,600,-3.,3.,AliDielectronVarManager::kP, AliDielectronVarManager::kImpactParZ);
297 histos->UserHistogram("V0Track","ITSsignal","ITS signal;ITS dE/dx",1000,0.0,1000.0, AliDielectronVarManager::kITSsignal);
298 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);
301 histos->UserHistogram("V0Track","TPCchi2","#chi^{2}/cluster;#chi^{2}/cluster;#tracks",200,0.0,5.0, AliDielectronVarManager::kTPCchi2Cl);
302 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,
303 AliDielectronVarManager::kPt,AliDielectronVarManager::kTPCchi2Cl);
304 histos->UserHistogram("V0Track","TPCnCls","Number of Clusters TPC;TPC number clusters;#tracks",160,-0.5,159.5, AliDielectronVarManager::kNclsTPC);
305 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,
306 AliDielectronVarManager::kPhi,AliDielectronVarManager::kNclsTPC);
307 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,
308 AliDielectronVarManager::kPIn, AliDielectronVarManager::kNclsTPC);
309 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.,
310 AliDielectronVarManager::kNclsTPC, AliDielectronVarManager::kTPCsignal);
311 histos->UserHistogram("V0Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
312 400,0.2,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal);
313 histos->UserHistogram("V0Track","dEdx_Eta","dEdx;#eta;TPC signal (arb units);#tracks",
314 110,-1.1,1.1,200,0.,200.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCsignal);
315 histos->UserHistogram("V0Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
316 400,0.2,20.,200,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle);
317 histos->UserHistogram("V0Track","TPCnSigmaEle_Eta","TPC number of sigmas Electrons;#eta;TPC number of sigmas Electrons;#tracks",
318 110,-1.1,1.1,200,-5.,5.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaEle);
319 histos->UserHistogram("V0Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
320 400,0.2,20.,200,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio);
321 histos->UserHistogram("V0Track","TPCnSigmaPio_Eta","TPC number of sigmas Pions;#eta;TPC number of sigmas Pions;#tracks",
322 110,-1.1,1.1,200,-5.,5.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaPio);
323 histos->UserHistogram("V0Track","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",
324 400,0.2,20.,200,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao);
325 histos->UserHistogram("V0Track","TPCnSigmaKao_Eta","TPC number of sigmas Kaons;#eta;TPC number of sigmas Kaons;#tracks",
326 110,-1.1,1.1,200,-5.,5.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaKao);
327 histos->UserHistogram("V0Track","TPCnSigmaPro_P","TPC number of sigmas Protons;P [GeV];TPC number of sigmas Protons;#tracks",
328 400,0.2,20.,200,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPro);
329 histos->UserHistogram("V0Track","TPCnSigmaPro_Eta","TPC number of sigmas Protons;#eta;TPC number of sigmas Protons;#tracks",
330 110,-1.1,1.1,200,-5.,5.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaPro);
331 histos->UserHistogram("V0Track","POut","Track POut;P (GeV/c)",100,0.0,10.0, AliDielectronVarManager::kPOut);
334 histos->UserHistogram("V0Track","Pin_TOFsignal","TOF signal vs TPC inner param P; P [GeV]; TOF signal",
335 120,0.0,6.,1200,0.,120000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFsignal);
336 histos->UserHistogram("V0Track","Pin_TOFbeta","TOF #beta vs TPC inner param P; P [GeV]; TOF #beta",
337 120,0.0,6.,120,0.,1.2,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFbeta);
338 histos->UserHistogram("V0Track","TOFnSigmaPio_Pin","TOF number of sigmas Pions;P [GeV];TOF number of sigmas Pions;#tracks",
339 400,0.2,20.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPio);
340 histos->UserHistogram("V0Track","TOFnSigmaPio_eta","TOF number of sigmas Pions vs #eta;#eta;TOF number of sigmas Pions;#tracks",
341 100,-1.2,1.2,200,-10.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTOFnSigmaPio);
342 histos->UserHistogram("V0Track","TOFnSigmaKao_Pin","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks",
343 400,0.2,20.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao);
344 histos->UserHistogram("V0Track","TOFnSigmaKao_eta","TOF number of sigmas Kaons vs #eta;#eta;TOF number of sigmas Kaons;#tracks",
345 100,-1.2,1.2,200,-10.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTOFnSigmaKao);
346 histos->UserHistogram("V0Track","TOFnSigmaPro_Pin","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks",
347 400,0.2,20.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro);
348 histos->UserHistogram("V0Track","TOFnSigmaPro_eta","TOF number of sigmas Protons vs #eta;#eta;TOF number of sigmas Protons;#tracks",
349 100,-1.2,1.2,200,-10.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTOFnSigmaPro);
354 //____________________________________________________________________________________________
355 AliDielectron* ConfigDielectron(Int_t cutDefinition)
358 // Setup the instance of an AliDielectron
360 const Char_t* dieleNames[2] = {"JpsiToEE", "PhiToKK"};
363 new AliDielectron(dieleNames[cutDefinition],
364 Form("Track cuts: %s", dieleNames));
365 die->SetDontClearArrays(kTRUE);
366 //die->SetEstimatorFilename("$TRAIN_ROOT/util/dielectron/dielectron/estimators.root");
367 if(cutDefinition==0) { // J/psi -> e+e-
368 die->SetLegPdg(11,11);
369 die->SetMotherPdg(443);
371 if(cutDefinition==1) { // phi -> K+K-
372 die->SetLegPdg(321,321);
373 die->SetMotherPdg(333);
377 SetupDielectronTrackCuts(die,cutDefinition);
378 SetupDielectronPairCuts(die,cutDefinition);
381 //SetDielectronMCSignals(die);
385 // only if an AliDielectronHistos object is attached to the
386 // dielectron framework histograms will be filled
388 InitDielectronHistograms(die,cutDefinition);
390 //setup eta correction
391 //SetEtaCorrection();
396 //______________________________________________________________________________________
397 void SetupDielectronTrackCuts(AliDielectron *die, Int_t cutDefinition)
400 // Setup the track cuts
403 AliDielectronCutGroup* cuts = new AliDielectronCutGroup("cuts","cuts",AliDielectronCutGroup::kCompAND);
404 die->GetTrackFilter().AddCuts(cuts);
406 AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts;
407 // basic track quality cuts (basicQ)
408 esdTrackCuts->SetMaxDCAToVertexZ(3.0);
409 esdTrackCuts->SetMaxDCAToVertexXY(1.0);
410 if(cutDefinition==1) {
411 esdTrackCuts->SetMaxDCAToVertexZ(0.3);
412 esdTrackCuts->SetMaxDCAToVertexXY(0.3);
414 if(cutDefinition==1) esdTrackCuts->SetEtaRange(-1.0,1.0);
415 if(cutDefinition==0) esdTrackCuts->SetEtaRange(-0.9,0.9);
416 esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
417 //esdTrackCuts->SetRequireITSRefit(kTRUE);
418 if(cutDefinition==0) esdTrackCuts->SetRequireTPCRefit(kTRUE);
419 if(cutDefinition==0) esdTrackCuts->SetPRange(.8,1e30); // for J/psi
420 if(cutDefinition==1) esdTrackCuts->SetPRange(.1,1e30); // for phi
421 //if(cutDefinition==0) esdTrackCuts->SetMinNClustersTPC(60);
422 //if(cutDefinition==0) esdTrackCuts->SetMaxChi2PerClusterTPC(4);
423 //esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
424 cuts->AddCut(esdTrackCuts);
426 Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
428 AliDielectronPID *pid = new AliDielectronPID("PID","PID cut");
429 if(cutDefinition==0) { // J/psi->ee, phi->ee
430 pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-4.5, 4.5, 0.0, 0.0, kFALSE, AliDielectronPID::kRequire); // TPC 3-sigma inclusion for electron
431 pid->AddCut(AliDielectronPID::kTPC,AliPID::kProton, -100.0, 2.0, 0.0, 10.0, kTRUE, AliDielectronPID::kRequire); // TPC 3.0-sigma exclusion for proton
432 // pid->AddCut(AliDielectronPID::kTPC,AliPID::kKaon, -3.0, 3.0, 0.0, 10.0, kTRUE, AliDielectronPID::kRequire); // TPC 3.0-sigma exclusion for kaon
433 // pid->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -3.0, 3.0, 0.0, 10.0, kTRUE, AliDielectronPID::kRequire); // TPC 3.0-sigma exclusion for pion
435 if(cutDefinition==1) { // phi -> KK
436 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
437 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
438 /* pid->AddCut(AliDielectronPID::kTPC,AliPID::kProton, -2.0, 2.0, 0.0, 0.0, kTRUE, AliDielectronPID::kRequire); // TPC 2.0-sigma exclusion for proton
439 pid->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -2.0, 2.0, 0.0, 0.0, kTRUE, AliDielectronPID::kRequire); // TPC 2.0-sigma exclusion for pion
440 pid->AddCut(AliDielectronPID::kTOF,AliPID::kProton, -2.0, 2.0, 0.6, 3.0, kTRUE, AliDielectronPID::kIfAvailable); // TOF 2.0-sigma exclusion for proton
441 pid->AddCut(AliDielectronPID::kTOF,AliPID::kPion, -2.0, 2.0, 0.6, 3.0, kTRUE, AliDielectronPID::kIfAvailable); // TOF 2.0-sigma exclusion for pion
445 // ++++++++++++++++++++++++++++++++++++++++
446 // shifts for the nSigma electrons
447 TGraph* nSigmaCorrection = new TGraph();
448 // b period (LHC10f7a)
449 nSigmaCorrection->SetPoint(0, 114000., -0.23-(0.0));
450 nSigmaCorrection->SetPoint(1, 117222., -0.23-(0.0));
451 // c period (LHC10f7a)
452 nSigmaCorrection->SetPoint(2, 119000., -0.23-(0.0));
453 nSigmaCorrection->SetPoint(3, 120829., -0.23-(0.0));
454 // d period (LHC10f7a)
455 nSigmaCorrection->SetPoint(4, 121000., -0.353-(-0.111));
456 nSigmaCorrection->SetPoint(5, 127000., -0.353-(-0.111));
457 // e period (LHC10f7a)
458 nSigmaCorrection->SetPoint(6, 127500., -0.351-(-0.116));
459 nSigmaCorrection->SetPoint(7, 130900., -0.351-(-0.116));
460 // LHC11a period (LHC11b10b)
461 nSigmaCorrection->SetPoint(8, 146680., -0.70-(+0.381)); //
462 nSigmaCorrection->SetPoint(9, 146870., -0.70-(+0.381)); //
464 pid->SetCorrGraph(nSigmaCorrection);
469 //______________________________________________________________________________________
470 void SetupDielectronPairCuts(AliDielectron *die, Int_t cutDefinition)
473 // Setup the pair cuts
476 //Invariant mass selection
477 AliDielectronVarCuts *cuts=new AliDielectronVarCuts("|y|<0.9","|Y|<.9");
478 if(cutDefinition==0) cuts->AddCut(AliDielectronVarManager::kY,-0.9,0.9);
479 if(cutDefinition==1) cuts->AddCut(AliDielectronVarManager::kY,-1.0,1.0);
480 if(cutDefinition==1) cuts->AddCut(AliDielectronVarManager::kM, 0.95,1.1);
481 die->GetPairFilter().AddCuts(cuts);
483 // Configure prefilter to remove conversions
484 AliDielectronVarCuts *gammaCut=new AliDielectronVarCuts("gammaCut","gammaCut");
485 gammaCut->AddCut(AliDielectronVarManager::kM,0.,.05);
486 if(cutDefinition==0) {
487 die->GetPairPreFilter().AddCuts(gammaCut);
488 die->SetPreFilterUnlikeOnly();
492 //______________________________________________________________________________________
493 void InitDielectronHistograms(AliDielectron *die, Int_t cutDefinition)
496 // Initialise the histograms
499 //Setup histogram Manager
500 AliDielectronHistos *histos=new AliDielectronHistos(die->GetName(),die->GetTitle());
502 //Initialise histogram classes
503 histos->SetReservedWords("Track;Pair");
506 //to fill also track info from 2nd event loop until 2
507 for (Int_t i=0; i<2; ++i){
508 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
512 // to fill also mixed event histograms loop until 10
513 for (Int_t i=0; i<3; ++i){
514 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
518 for (Int_t i=0; i<3; ++i){
519 histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i)));
522 //add histograms to event class
523 if (cutDefinition==0) {
524 histos->AddClass("Event");
525 histos->UserHistogram("Event","VtxZ","Vertex Z;Z[cm]",500,-25.,25.,AliDielectronVarManager::kZvPrim);
526 histos->UserHistogram("Event","NTrk","NTrk",500,-0.5,499.5,AliDielectronVarManager::kNTrk);
527 histos->UserHistogram("Event","VtxZ_NaccTrcklts","VtxZ_NaccTrcklts;VtxZ;NaccTrcklts",
528 240,-12.,12.,200,-0.5,199.5,AliDielectronVarManager::kZvPrim, AliDielectronVarManager::kNaccTrcklts);
530 histos->UserHistogram("Event","MultV0A","VZERO mult",2000,0.,2000.,AliDielectronVarManager::kMultV0A);
531 histos->UserHistogram("Event","MultV0C","VZERO mult",2000,0.,2000.,AliDielectronVarManager::kMultV0C);
532 histos->UserHistogram("Event","MultV0","VZERO mult",2000,0.,2000.,AliDielectronVarManager::kMultV0);
533 histos->UserHistogram("Event","AdcV0A","VZERO adc",10000,0.,100000.,AliDielectronVarManager::kAdcV0A);
534 histos->UserHistogram("Event","AdcV0C","VZERO adc",10000,0.,100000.,AliDielectronVarManager::kAdcV0C);
535 histos->UserHistogram("Event","AdcV0","VZERO adc",10000,0.,100000.,AliDielectronVarManager::kAdcV0);
536 histos->UserHistogram("Event","MultV0A_MultV0C","MultV0A_MultV0C;MultV0A;MultV0C",
537 2000,0.0,2000.,2000,0.0,2000,AliDielectronVarManager::kMultV0A, AliDielectronVarManager::kMultV0C);
538 histos->UserHistogram("Event","AdcV0A_AdcV0C","AdcV0A_AdcV0C;AdcV0A;AdcV0C",
539 1000,0.0,20000.,1000,0.0,20000,AliDielectronVarManager::kAdcV0A, AliDielectronVarManager::kAdcV0C);
540 histos->UserHistogram("Event","MultV0A_AdcV0A","MultV0A_AdcV0A;MultV0A;AdcV0A",
541 2000,0.0,2000.,2000,0.0,20000,AliDielectronVarManager::kMultV0A, AliDielectronVarManager::kAdcV0A);
542 histos->UserHistogram("Event","MultV0C_AdcV0C","MultV0C_AdcV0C;MultV0C;AdcV0C",
543 2000,0.0,2000.,2000,0.0,20000,AliDielectronVarManager::kMultV0C, AliDielectronVarManager::kAdcV0C);
546 //add histograms to Track classes ---------------------------------------------------------------------------
547 // kinematic acceptance histograms
548 histos->UserHistogram("Track","Pt","Pt;Pt (GeV/c);#tracks",400,0,20.,AliDielectronVarManager::kPt);
549 histos->UserHistogram("Track","Eta_P","Eta_P;#eta;P (GeV/c)",40, -1.0, +1.0, 200,0,10., AliDielectronVarManager::kEta, AliDielectronVarManager::kP);
550 histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
551 40,-1,1,200,0,6.285,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
553 // DCA diagnostic histograms
554 histos->UserHistogram("Track","dXY","dXY;dXY (cm);#tracks",500,-1.,1.,AliDielectronVarManager::kImpactParXY);
555 histos->UserHistogram("Track","dZ","dZ;dZ (cm);#tracks",600,-3.,3.,AliDielectronVarManager::kImpactParZ);
556 histos->UserHistogram("Track","dZ_dXY","dZ_dXY;dZ (cm);dXY (cm)",600,-3.,3.,500,-1.,1.,AliDielectronVarManager::kImpactParZ, AliDielectronVarManager::kImpactParXY);
557 histos->UserHistogram("Track","P_dXY","P_dXY;P (GeV/c);dXY (cm)",200,0.,10.,500,-1.,1.,AliDielectronVarManager::kP, AliDielectronVarManager::kImpactParXY);
558 histos->UserHistogram("Track","P_dZ","P_dZ;P (GeV/c);dZ (cm)",200,0.,10.,600,-3.,3.,AliDielectronVarManager::kP, AliDielectronVarManager::kImpactParZ);
561 histos->UserHistogram("Track","ITSsignal","ITS signal;ITS dE/dx",1000,0.0,1000.0, AliDielectronVarManager::kITSsignal);
562 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);
565 histos->UserHistogram("Track","TPCchi2","#chi^{2}/cluster;#chi^{2}/cluster;#tracks",200,0.0,5.0, AliDielectronVarManager::kTPCchi2Cl);
566 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,
567 AliDielectronVarManager::kPt,AliDielectronVarManager::kTPCchi2Cl);
568 histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusters;#tracks",160,-0.5,159.5, AliDielectronVarManager::kNclsTPC);
569 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,
570 AliDielectronVarManager::kPhi,AliDielectronVarManager::kNclsTPC);
571 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,
572 AliDielectronVarManager::kPIn, AliDielectronVarManager::kNclsTPC);
573 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.,
574 AliDielectronVarManager::kNclsTPC, AliDielectronVarManager::kTPCsignal);
575 histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
576 400,0.2,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal);
577 histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
578 400,0.2,20.,200,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle);
579 histos->UserHistogram("Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
580 400,0.2,20.,200,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio);
581 histos->UserHistogram("Track","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",
582 400,0.2,20.,200,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao);
583 histos->UserHistogram("Track","TPCnSigmaPro_P","TPC number of sigmas Protons;P [GeV];TPC number of sigmas Protons;#tracks",
584 400,0.2,20.,200,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPro);
585 histos->UserHistogram("Track","dEdx_Eta","dEdx;#eta;TPC signal (arb units);#tracks",
586 100,-1.0,1.0,200,0.,200.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCsignal);
587 histos->UserHistogram("Track","TPCnSigmaEle_Eta","TPC number of sigmas Electrons;#eta;TPC number of sigmas Electrons;#tracks",
588 100,-1.0,1.0,200,-5.,5.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaEle);
589 histos->UserHistogram("Track","TPCnSigmaPio_Eta","TPC number of sigmas Pions;#eta;TPC number of sigmas Pions;#tracks",
590 100,-1.0,1.0,200,-5.,5.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaPio);
591 histos->UserHistogram("Track","TPCnSigmaKao_Eta","TPC number of sigmas Kaons;#eta;TPC number of sigmas Kaons;#tracks",
592 100,-1.0,1.0,200,-5.,5.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaKao);
593 histos->UserHistogram("Track","TPCnSigmaPro_Eta","TPC number of sigmas Protons;#eta;TPC number of sigmas Protons;#tracks",
594 100,-1.0,1.0,200,-5.,5.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaPro);
597 histos->UserHistogram("Track","Pin_TOFsignal","TOF signal vs TPC inner param P; P [GeV]; TOF signal",
598 120,0.0,6.,1200,0.,120000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFsignal);
599 histos->UserHistogram("Track","Pin_TOFbeta","TOF #beta vs TPC inner param P; P [GeV]; TOF #beta",
600 120,0.0,6.,120,0.,1.2,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFbeta);
601 histos->UserHistogram("Track","TOFnSigmaPio_Pin","TOF number of sigmas Pions;P [GeV];TOF number of sigmas Pions;#tracks",
602 400,0.2,20.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPio);
603 histos->UserHistogram("Track","TOFnSigmaPio_eta","TOF number of sigmas Pions vs #eta;#eta;TOF number of sigmas Pions;#tracks",
604 100,-1.2,1.2,200,-10.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTOFnSigmaPio);
605 histos->UserHistogram("Track","TOFnSigmaKao_Pin","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks",
606 400,0.2,20.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao);
607 histos->UserHistogram("Track","TOFnSigmaKao_eta","TOF number of sigmas Kaons vs #eta;#eta;TOF number of sigmas Kaons;#tracks",
608 100,-1.2,1.2,200,-10.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTOFnSigmaKao);
609 histos->UserHistogram("Track","TOFnSigmaPro_Pin","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks",
610 400,0.2,20.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro);
611 histos->UserHistogram("Track","TOFnSigmaPro_eta","TOF number of sigmas Protons vs #eta;#eta;TOF number of sigmas Protons;#tracks",
612 100,-1.2,1.2,200,-10.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTOFnSigmaPro);
614 //add histograms to Pair classes
615 Int_t nMassBins = 10000;
616 Double_t massRange[2] = {-0.005, 100.005};
617 if(cutDefinition==1) { // Phi -> K+K-
619 massRange[0] = 0.8; massRange[1] = 1.2;
621 histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
622 nMassBins, massRange[0], massRange[1], AliDielectronVarManager::kM);
623 histos->UserHistogram("Pair","InvMass_Pt","Inv.Mass vs pt;Inv. Mass [GeV]; pt (GeV/c);#pairs",
624 nMassBins/10, massRange[0], massRange[1], 100, 0.0, 50.0, AliDielectronVarManager::kM, AliDielectronVarManager::kPt);
625 histos->UserHistogram("Pair","InvMass_Cent","Inv.Mass vs centrality;Inv. Mass [GeV]; centrality;#pairs",
626 nMassBins/10, massRange[0], massRange[1], 20, 0.0, 100.0, AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality);
627 histos->UserHistogram("Pair","InvMass_Rap","Inv.Mass vs rapidity;Inv. Mass [GeV]; rapidity;#pairs",
628 nMassBins/10, massRange[0], massRange[1], 100, -1.0, 1.0, AliDielectronVarManager::kM, AliDielectronVarManager::kY);
629 histos->UserHistogram("Pair","InvMass_OpAngle","Inv.Mass vs opening angle;Inv. Mass [GeV]; op. angle (rad.);#pairs",
630 nMassBins/10, massRange[0], massRange[1], 100, 0.0, 4.0, AliDielectronVarManager::kM, AliDielectronVarManager::kOpeningAngle);
631 histos->UserHistogram("Pair","InvMass_ThetaHE","Inv.Mass vs cos #theta^{*}_{HE};Inv. Mass [GeV]; cos #theta^{*}_{HE};#pairs",
632 nMassBins/10, massRange[0], massRange[1], 100, -1.0, 1.0, AliDielectronVarManager::kM, AliDielectronVarManager::kThetaHE);
633 histos->UserHistogram("Pair","InvMass_ThetaCS","Inv.Mass vs cos #theta^{*}_{CS};Inv. Mass [GeV]; cos #theta^{*}_{CS};#pairs",
634 nMassBins/10, massRange[0], massRange[1], 100, -1.0, 1.0, AliDielectronVarManager::kM, AliDielectronVarManager::kThetaCS);
635 histos->UserHistogram("Pair","Pt","Transverse momentum; P_{t} [GeV/c];#pairs",
636 1000, 0.0, 50.0, AliDielectronVarManager::kPt);
637 histos->UserHistogram("Pair","Pt_Y","Transverse momentum vs rapidity; rapidity; P_{t} [GeV/c];#pairs",
638 100, -1.0, 1.0, 200, 0.0, 50.0, AliDielectronVarManager::kY, AliDielectronVarManager::kPt);
639 histos->UserHistogram("Pair","Pt_ThetaCS","Transverse momentum vs cos #theta^{*}_{CS}; cos #theta^{*}_{CS}; P_{t} [GeV/c];#pairs",
640 100, -1.0, 1.0, 200, 0.0, 50.0, AliDielectronVarManager::kThetaCS, AliDielectronVarManager::kPt);
641 histos->UserHistogram("Pair","Pt_ThetaHE","Transverse momentum vs cos #theta^{*}_{HE}; cos #theta^{*}_{HE}; P_{t} [GeV/c];#pairs",
642 100, -1.0, 1.0, 200, 0.0, 50.0, AliDielectronVarManager::kThetaHE, AliDielectronVarManager::kPt);
643 histos->UserHistogram("Pair","Pt_Phi","Transverse momentum vs phi; #phi (rad.); P_{t} [GeV/c];#pairs",
644 200, -6.3, 6.3, 200, 0.0, 50.0, AliDielectronVarManager::kPhi, AliDielectronVarManager::kPt);
645 histos->UserHistogram("Pair","Phi","#phi; #phi (rad.);#pairs",
646 1000, -6.3, 6.3, AliDielectronVarManager::kPhi);
647 histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
648 100,-1.,1.,AliDielectronVarManager::kY);
649 histos->UserHistogram("Pair","Rapidity_OpAngle","Rapidity vs opening angle;Rapidity; Op.Angle (rad.);#pairs",
650 100,-1.,1.,200, 0.0, 4.0, AliDielectronVarManager::kY, AliDielectronVarManager::kOpeningAngle);
651 histos->UserHistogram("Pair","Rapidity_ThetaCS","Rapidity vs cos #theta^{*}_{CS};Rapidity; cos #theta^{*}_{CS};#pairs",
652 100,-1.,1.,200, -1.0, 1.0, AliDielectronVarManager::kY, AliDielectronVarManager::kThetaCS);
653 histos->UserHistogram("Pair","Rapidity_ThetaHE","Rapidity vs cos #theta^{*}_{HE};Rapidity; cos #theta^{*}_{HE};#pairs",
654 100,-1.,1.,200, -1.0, 1.0, AliDielectronVarManager::kY, AliDielectronVarManager::kThetaHE);
655 histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
656 100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
657 histos->UserHistogram("Pair","Radius","Radius;R[cm]",
658 1000,0.,300.,AliDielectronVarManager::kR);
659 histos->UserHistogram("Pair","ThetaHE","cos #theta^{*}_{HE}; cos #theta^{*}_{HE}",
660 220,-1.1,1.1,AliDielectronVarManager::kThetaHE);
661 histos->UserHistogram("Pair","PhiHE","#varphi^{*}_{HE};#varphi^{*}_{HE} (rad.)",
662 160,-3.2,3.2,AliDielectronVarManager::kPhiHE);
663 histos->UserHistogram("Pair","ThetaCS","cos #theta^{*}_{CS}; cos #theta^{*}_{CS}",
664 220,-1.1,1.1,AliDielectronVarManager::kThetaCS);
665 histos->UserHistogram("Pair","PhiCS","#varphi^{*}_{CS};#varphi^{*}_{CS} (rad.)",
666 160,-3.2,3.2,AliDielectronVarManager::kPhiCS);
667 histos->UserHistogram("Pair","Lxy","Pseudo-proper time;Lxy (cm.)",
668 1000,0.0,2.0,AliDielectronVarManager::kPseudoProperTime);
669 histos->UserHistogram("Pair","Chi2NDF","Pair #chi^{2}/NDF; #chi^{2}/NDF",
670 1000,0.0,10.0,AliDielectronVarManager::kChi2NDF);
673 die->SetHistogramManager(histos);
677 //_____________________________________________________________________________________________
678 void SetDielectronMCSignals(AliDielectron *die)
680 // J/psi sources (direct + feed down from charm higher states)
682 AliDielectronSignalMC* promptJpsi = new AliDielectronSignalMC("promptJpsi","Prompt J/psi"); // prompt J/psi (not from beauty decays)
683 promptJpsi->SetLegPDGs(11,-11);
684 promptJpsi->SetMotherPDGs(443,443);
685 promptJpsi->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons
686 promptJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
687 promptJpsi->SetFillPureMCStep(kTRUE);
688 promptJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
689 promptJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
690 promptJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
691 promptJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
692 die->AddSignalMC(promptJpsi);
695 AliDielectronSignalMC* beautyJpsi = new AliDielectronSignalMC("beautyJpsi","beauty hadron -> J/psi"); // J/psi->e+e- from beauty hadron decays
696 beautyJpsi->SetLegPDGs(11,-11);
697 beautyJpsi->SetMotherPDGs(443,443);
698 beautyJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
699 beautyJpsi->SetGrandMotherPDGs(503,503);
700 beautyJpsi->SetFillPureMCStep(kTRUE);
701 beautyJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
702 beautyJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
703 beautyJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
704 beautyJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
705 die->AddSignalMC(beautyJpsi);
708 AliDielectronSignalMC* beautyMesonJpsi = new AliDielectronSignalMC("beautyMesonJpsi","beauty meson -> J/psi"); // J/psi->e+e- from beauty meson decays
709 beautyMesonJpsi->SetLegPDGs(11,-11);
710 beautyMesonJpsi->SetMotherPDGs(443,443);
711 beautyMesonJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
712 beautyMesonJpsi->SetGrandMotherPDGs(500,500);
713 beautyMesonJpsi->SetFillPureMCStep(kTRUE);
714 beautyMesonJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
715 beautyMesonJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
716 beautyMesonJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
717 beautyMesonJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
718 die->AddSignalMC(beautyMesonJpsi);
721 AliDielectronSignalMC* openBeautyMesonJpsi = new AliDielectronSignalMC("openBeautyMesonJpsi","open beauty meson -> J/psi"); // J/psi->e+e- from open beauty meson decays
722 openBeautyMesonJpsi->SetLegPDGs(11,-11);
723 openBeautyMesonJpsi->SetMotherPDGs(443,443);
724 openBeautyMesonJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
725 openBeautyMesonJpsi->SetGrandMotherPDGs(501,501);
726 openBeautyMesonJpsi->SetFillPureMCStep(kTRUE);
727 openBeautyMesonJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
728 openBeautyMesonJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
729 openBeautyMesonJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
730 openBeautyMesonJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
731 die->AddSignalMC(openBeautyMesonJpsi);
734 AliDielectronSignalMC* chic0Jpsi = new AliDielectronSignalMC("chic0Jpsi","chic0 -> J/psi + X"); // J/psi->e+e- from chic0 decays
735 chic0Jpsi->SetLegPDGs(11,-11);
736 chic0Jpsi->SetMotherPDGs(443,443);
737 chic0Jpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
738 chic0Jpsi->SetGrandMotherPDGs(10441,10441);
739 chic0Jpsi->SetFillPureMCStep(kTRUE);
740 chic0Jpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
741 chic0Jpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
742 chic0Jpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
743 chic0Jpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
744 die->AddSignalMC(chic0Jpsi);
747 AliDielectronSignalMC* chic1Jpsi = new AliDielectronSignalMC("chic1Jpsi","chic1 -> J/psi + X"); // J/psi->e+e- from chic1 decays
748 chic1Jpsi->SetLegPDGs(11,-11);
749 chic1Jpsi->SetMotherPDGs(443,443);
750 chic1Jpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
751 chic1Jpsi->SetGrandMotherPDGs(20443,20443);
752 chic1Jpsi->SetFillPureMCStep(kTRUE);
753 chic1Jpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
754 chic1Jpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
755 chic1Jpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
756 chic1Jpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
757 die->AddSignalMC(chic1Jpsi);
760 AliDielectronSignalMC* chic2Jpsi = new AliDielectronSignalMC("chic2Jpsi","chic2 -> J/psi + X"); // J/psi->e+e- from chic2 decays
761 chic2Jpsi->SetLegPDGs(11,-11);
762 chic2Jpsi->SetMotherPDGs(443,443);
763 chic2Jpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
764 chic2Jpsi->SetGrandMotherPDGs(445,445);
765 chic2Jpsi->SetFillPureMCStep(kTRUE);
766 chic2Jpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
767 chic2Jpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
768 chic2Jpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
769 chic2Jpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
770 die->AddSignalMC(chic2Jpsi);
773 AliDielectronSignalMC* psiPrimeJpsi = new AliDielectronSignalMC("psiPrimeJpsi","psi(2S) -> J/psi + X"); // J/psi->e+e- from psi(2S) decays
774 psiPrimeJpsi->SetLegPDGs(11,-11);
775 psiPrimeJpsi->SetMotherPDGs(443,443);
776 psiPrimeJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
777 psiPrimeJpsi->SetGrandMotherPDGs(445,445);
778 psiPrimeJpsi->SetFillPureMCStep(kTRUE);
779 psiPrimeJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
780 psiPrimeJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
781 psiPrimeJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
782 psiPrimeJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
783 die->AddSignalMC(psiPrimeJpsi);
785 // physical backgrounds (electrons pairs from other sources and their combinatorics)
787 AliDielectronSignalMC* diEleContinuum = new AliDielectronSignalMC("diEleContinuum","di-electron continuum"); // all di-electrons originating in the collision
788 diEleContinuum->SetLegPDGs(11,-11);
789 diEleContinuum->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
790 diEleContinuum->SetCheckBothChargesLegs(kTRUE,kTRUE);
791 diEleContinuum->SetFillPureMCStep(kTRUE);
792 die->AddSignalMC(diEleContinuum);
795 AliDielectronSignalMC* diEleCharm = new AliDielectronSignalMC("diEleCharm","di-electrons from charm"); // dielectrons originating from charm hadrons (not neccessary from same mother)
796 diEleCharm->SetLegPDGs(11,-11);
797 diEleCharm->SetMotherPDGs(403,403);
798 diEleCharm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
799 diEleCharm->SetCheckBothChargesLegs(kTRUE,kTRUE);
800 diEleCharm->SetCheckBothChargesMothers(kTRUE,kTRUE);
801 diEleCharm->SetFillPureMCStep(kTRUE);
802 die->AddSignalMC(diEleCharm);
805 AliDielectronSignalMC* diEleOpenCharm = new AliDielectronSignalMC("diEleOpenCharm","di-electrons from open charm"); // dielectrons originating from open charm hadrons
806 diEleOpenCharm->SetLegPDGs(11,-11);
807 diEleOpenCharm->SetMotherPDGs(402,402);
808 diEleOpenCharm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
809 diEleOpenCharm->SetCheckBothChargesLegs(kTRUE,kTRUE);
810 diEleOpenCharm->SetCheckBothChargesMothers(kTRUE,kTRUE);
811 diEleOpenCharm->SetFillPureMCStep(kTRUE);
812 die->AddSignalMC(diEleOpenCharm);
815 AliDielectronSignalMC* diEleOpenCharmJpsi = new AliDielectronSignalMC("diEleOpenCharmJpsi","1 leg from open charm + 1 jpsi leg"); // 1 leg from open charm + 1 leg from jpsi
816 diEleOpenCharmJpsi->SetLegPDGs(11,-11);
817 diEleOpenCharmJpsi->SetMotherPDGs(402,443);
818 diEleOpenCharmJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
819 diEleOpenCharmJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
820 diEleOpenCharmJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
821 diEleOpenCharmJpsi->SetFillPureMCStep(kTRUE);
822 die->AddSignalMC(diEleOpenCharmJpsi);
825 AliDielectronSignalMC* diEleBeauty = new AliDielectronSignalMC("diEleBeauty","di-electrons from beauty"); // dielectrons originating from beauty hadrons (not neccessary from same mother)
826 diEleBeauty->SetLegPDGs(11,-11);
827 diEleBeauty->SetMotherPDGs(503,503);
828 diEleBeauty->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
829 diEleBeauty->SetCheckBothChargesLegs(kTRUE,kTRUE);
830 diEleBeauty->SetCheckBothChargesMothers(kTRUE,kTRUE);
831 diEleBeauty->SetFillPureMCStep(kTRUE);
832 die->AddSignalMC(diEleBeauty);
835 AliDielectronSignalMC* diEleOpenBeauty = new AliDielectronSignalMC("diEleOpenBeauty","di-electrons from open beauty"); // dielectrons originating from open beauty hadrons
836 diEleOpenBeauty->SetLegPDGs(11,-11);
837 diEleOpenBeauty->SetMotherPDGs(502,502);
838 diEleOpenBeauty->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
839 diEleOpenBeauty->SetCheckBothChargesLegs(kTRUE,kTRUE);
840 diEleOpenBeauty->SetCheckBothChargesMothers(kTRUE,kTRUE);
841 diEleOpenBeauty->SetFillPureMCStep(kTRUE);
842 die->AddSignalMC(diEleOpenBeauty);
845 AliDielectronSignalMC* diEleBeautyJpsi = new AliDielectronSignalMC("diEleBeautyJpsi","1 leg from beauty + 1 jpsi leg"); // 1 leg from beauty + 1 leg from jpsi
846 diEleBeautyJpsi->SetLegPDGs(11,-11);
847 diEleBeautyJpsi->SetMotherPDGs(503,443);
848 diEleBeautyJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
849 diEleBeautyJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
850 diEleBeautyJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
851 diEleBeautyJpsi->SetFillPureMCStep(kTRUE);
852 die->AddSignalMC(diEleBeautyJpsi);
855 AliDielectronSignalMC* diEleBeautyOpenCharm = new AliDielectronSignalMC("diEleBeautyOpenCharm","1 leg from beauty + 1 leg from open charm"); // 1 leg from open charm + 1 leg from beauty
856 diEleBeautyOpenCharm->SetLegPDGs(11,-11);
857 diEleBeautyOpenCharm->SetMotherPDGs(503,403);
858 diEleBeautyOpenCharm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
859 diEleBeautyOpenCharm->SetCheckBothChargesLegs(kTRUE,kTRUE);
860 diEleBeautyOpenCharm->SetCheckBothChargesMothers(kTRUE,kTRUE);
861 diEleBeautyOpenCharm->SetFillPureMCStep(kTRUE);
862 die->AddSignalMC(diEleBeautyOpenCharm);
865 AliDielectronSignalMC* diEleStrange = new AliDielectronSignalMC("diEleStrange","di-electrons from strange particles"); // dielectrons originating from strange hadrons (not neccessary from same mother)
866 diEleStrange->SetLegPDGs(11,-11);
867 diEleStrange->SetMotherPDGs(300,300);
868 diEleStrange->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
869 diEleStrange->SetCheckBothChargesLegs(kTRUE,kTRUE);
870 diEleStrange->SetCheckBothChargesMothers(kTRUE,kTRUE);
871 diEleStrange->SetFillPureMCStep(kTRUE);
872 die->AddSignalMC(diEleStrange);
875 AliDielectronSignalMC* diEleStrangeCharm = new AliDielectronSignalMC("diEleStrangeCharm","1 leg from strange + 1 leg from charm"); // 1 leg from strange + 1 leg from charm
876 diEleStrangeCharm->SetLegPDGs(11,-11);
877 diEleStrangeCharm->SetMotherPDGs(300,403);
878 diEleStrangeCharm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
879 diEleStrangeCharm->SetCheckBothChargesLegs(kTRUE,kTRUE);
880 diEleStrangeCharm->SetCheckBothChargesMothers(kTRUE,kTRUE);
881 diEleStrangeCharm->SetFillPureMCStep(kTRUE);
882 die->AddSignalMC(diEleStrangeCharm);
885 AliDielectronSignalMC* diEleStrangeBeauty = new AliDielectronSignalMC("diEleStrangeBeauty","1 leg from strange + 1 leg from beauty"); // 1 leg from strange + 1 leg from beauty
886 diEleStrangeBeauty->SetLegPDGs(11,-11);
887 diEleStrangeBeauty->SetMotherPDGs(300,503);
888 diEleStrangeBeauty->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
889 diEleStrangeBeauty->SetCheckBothChargesLegs(kTRUE,kTRUE);
890 diEleStrangeBeauty->SetCheckBothChargesMothers(kTRUE,kTRUE);
891 diEleStrangeBeauty->SetFillPureMCStep(kTRUE);
892 die->AddSignalMC(diEleStrangeBeauty);
895 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
896 diEleLight1->SetLegPDGs(11,-11);
897 diEleLight1->SetMotherPDGs(100,0);
898 diEleLight1->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
899 diEleLight1->SetCheckBothChargesLegs(kTRUE,kTRUE);
900 diEleLight1->SetCheckBothChargesMothers(kTRUE,kTRUE);
901 diEleLight1->SetFillPureMCStep(kTRUE);
902 die->AddSignalMC(diEleLight1);
905 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
906 diEleLight1Charm->SetLegPDGs(11,-11);
907 diEleLight1Charm->SetMotherPDGs(100,403);
908 diEleLight1Charm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
909 diEleLight1Charm->SetCheckBothChargesLegs(kTRUE,kTRUE);
910 diEleLight1Charm->SetCheckBothChargesMothers(kTRUE,kTRUE);
911 diEleLight1Charm->SetFillPureMCStep(kTRUE);
912 die->AddSignalMC(diEleLight1Charm);
915 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
916 diEleLight1Beauty->SetLegPDGs(11,-11);
917 diEleLight1Beauty->SetMotherPDGs(100,503);
918 diEleLight1Beauty->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
919 diEleLight1Beauty->SetCheckBothChargesLegs(kTRUE,kTRUE);
920 diEleLight1Beauty->SetCheckBothChargesMothers(kTRUE,kTRUE);
921 diEleLight1Beauty->SetFillPureMCStep(kTRUE);
922 die->AddSignalMC(diEleLight1Beauty);
925 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
926 diEleLight2->SetLegPDGs(11,-11);
927 diEleLight2->SetMotherPDGs(200,0);
928 diEleLight2->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
929 diEleLight2->SetCheckBothChargesLegs(kTRUE,kTRUE);
930 diEleLight2->SetCheckBothChargesMothers(kTRUE,kTRUE);
931 diEleLight2->SetFillPureMCStep(kTRUE);
932 die->AddSignalMC(diEleLight2);
935 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
936 diEleLight2Charm->SetLegPDGs(11,-11);
937 diEleLight2Charm->SetMotherPDGs(100,403);
938 diEleLight2Charm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
939 diEleLight2Charm->SetCheckBothChargesLegs(kTRUE,kTRUE);
940 diEleLight2Charm->SetCheckBothChargesMothers(kTRUE,kTRUE);
941 diEleLight2Charm->SetFillPureMCStep(kTRUE);
942 die->AddSignalMC(diEleLight2Charm);
945 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
946 diEleLight2Beauty->SetLegPDGs(11,-11);
947 diEleLight2Beauty->SetMotherPDGs(100,503);
948 diEleLight2Beauty->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
949 diEleLight2Beauty->SetCheckBothChargesLegs(kTRUE,kTRUE);
950 diEleLight2Beauty->SetCheckBothChargesMothers(kTRUE,kTRUE);
951 diEleLight2Beauty->SetFillPureMCStep(kTRUE);
952 die->AddSignalMC(diEleLight2Beauty);
954 // background from secondary electrons
956 AliDielectronSignalMC* secondaryElectrons = new AliDielectronSignalMC("secondaryElectrons","Secondary electrons"); // all di-electrons from secondary electrons (interaction with detector)
957 secondaryElectrons->SetLegPDGs(11,-11);
958 secondaryElectrons->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary);
959 secondaryElectrons->SetCheckBothChargesLegs(kTRUE,kTRUE);
960 die->AddSignalMC(secondaryElectrons);
963 AliDielectronSignalMC* primarySecElePairs = new AliDielectronSignalMC("primarySecElePairs","Primary+Secondary electron pairs"); // primary-secondary pairs
964 primarySecElePairs->SetLegPDGs(11,-11);
965 primarySecElePairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
966 primarySecElePairs->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kSecondary);
967 die->AddSignalMC(primarySecElePairs);
970 AliDielectronSignalMC* conversionElePairs = new AliDielectronSignalMC("conversionElePairs","conversion electron pairs"); // pairs made from conversion (may be also from 2 different conversions)
971 conversionElePairs->SetLegPDGs(11,-11);
972 conversionElePairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
973 conversionElePairs->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary);
974 conversionElePairs->SetMotherPDGs(22,22);
975 die->AddSignalMC(conversionElePairs);
979 AliDielectronSignalMC* allEleMisIdPairs = new AliDielectronSignalMC("allEleMisIdPairs","all electron+misid. pairs"); // one true electron + a mis-id electron (all sources included)
980 allEleMisIdPairs->SetLegPDGs(11,11,kFALSE,kTRUE);
981 allEleMisIdPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
982 die->AddSignalMC(allEleMisIdPairs);
985 AliDielectronSignalMC* allMisIdMisIdPairs = new AliDielectronSignalMC("allMisIdMisIdPairs","all misid.+misid. pairs"); // mis-id + mis-id
986 allMisIdMisIdPairs->SetLegPDGs(11,11,kTRUE,kTRUE);
987 allMisIdMisIdPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
988 die->AddSignalMC(allMisIdMisIdPairs);
991 AliDielectronSignalMC* elePionPairs = new AliDielectronSignalMC("elePionPairs","electron+pion pairs"); // true electron + mis-id pion
992 elePionPairs->SetLegPDGs(11,211);
993 elePionPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
994 die->AddSignalMC(elePionPairs);
997 AliDielectronSignalMC* eleProtonPairs = new AliDielectronSignalMC("eleProtonPairs","Electron+proton pairs"); // true electron + mis-id proton
998 eleProtonPairs->SetLegPDGs(11,2212);
999 eleProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
1000 die->AddSignalMC(eleProtonPairs);
1003 AliDielectronSignalMC* eleKaonPairs = new AliDielectronSignalMC("eleKaonPairs","electron+kaon pairs"); // true electron + mis-id kaon
1004 eleKaonPairs->SetLegPDGs(11,321);
1005 eleKaonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
1006 die->AddSignalMC(eleKaonPairs);
1009 AliDielectronSignalMC* eleProtonPairs = new AliDielectronSignalMC("eleProtonPairs","Electron+proton pairs"); // true electron + mis-id proton
1010 eleProtonPairs->SetLegPDGs(11,2212);
1011 eleProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
1012 die->AddSignalMC(eleProtonPairs);
1015 AliDielectronSignalMC* piPiPairs = new AliDielectronSignalMC("piPiPairs","pion+pion pairs"); // mis-id pion + mis-id pion
1016 piPiPairs->SetLegPDGs(211,211);
1017 piPiPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
1018 die->AddSignalMC(piPiPairs);
1021 AliDielectronSignalMC* piKaonPairs = new AliDielectronSignalMC("piKaonPairs","pion+kaon pairs"); // mis-id pion + mis-id kaon
1022 piKaonPairs->SetLegPDGs(211,321);
1023 piKaonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
1024 die->AddSignalMC(piKaonPairs);
1027 AliDielectronSignalMC* piProtonPairs = new AliDielectronSignalMC("piProtonPairs","pion+proton pairs"); // mis-id pion + mis-id proton
1028 piProtonPairs->SetLegPDGs(211,2212);
1029 piProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
1030 die->AddSignalMC(piProtonPairs);
1033 AliDielectronSignalMC* kaonKaonPairs = new AliDielectronSignalMC("kaonKaonPairs","kaon+kaon pairs"); // mis-id kaon + mis-id kaon
1034 kaonKaonPairs->SetLegPDGs(321,321);
1035 kaonKaonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
1036 die->AddSignalMC(kaonKaonPairs);
1039 AliDielectronSignalMC* muonAllPairs = new AliDielectronSignalMC("muonAllPairs","muon+everything pairs"); // mis-id muon + something else (electron, pion, kaon, proton)
1040 muonAllPairs->SetLegPDGs(13,13,kFALSE,kTRUE);
1041 muonAllPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
1042 die->AddSignalMC(muonAllPairs);
1045 //______________________________________________________________________________________
1046 /*void SetEtaCorrection()
1049 // Eta equalization for the TPC response
1051 if (AliDielectronPID::GetEtaCorrFunction()) return;
1053 TString list=gSystem->Getenv("LIST");
1055 TFile f("$TRAIN_ROOT/jpsi_JPSI/EtaCorrMaps.root");
1056 if (!f.IsOpen()) return;
1057 TList *keys=f.GetListOfKeys();
1059 for (Int_t i=0; i<keys->GetEntries(); ++i){
1060 TString kName=keys->At(i)->GetName();
1061 TPRegexp reg(kName);
1062 if (reg.MatchB(list)){
1063 printf("Using Eta Correction Function: %s\n",kName.Data());
1064 AliDielectronPID::SetEtaCorrFunction((TF1*)f.Get(kName.Data()));