]>
Commit | Line | Data |
---|---|---|
eac83c86 | 1 | //__________________________________________________________________________________________ |
2 | AliAnalysisTask *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 | //_______________________________________________________________________________________________ | |
83 | AliAnalysisCuts* 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 | //_______________________________________________________________________________________________ | |
96 | AliAnalysisCuts* 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 | //_______________________________________________________________________________________________ | |
122 | AliAnalysisCuts* 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 | //_______________________________________________________________________________________________ | |
136 | AliAnalysisCuts* 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 | //_______________________________________________________________________________________________ | |
147 | AliAnalysisCuts* 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 | //_______________________________________________________________________________________________ | |
158 | AliAnalysisCuts* 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 | //______________________________________________________________________________________ | |
169 | AliESDv0Cuts* 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 | //______________________________________________________________________________________ | |
191 | AliESDv0Cuts* 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 | //______________________________________________________________________________________ | |
213 | AliDielectronHistos* 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 | //____________________________________________________________________________________________ | |
300 | AliDielectron* 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 | //______________________________________________________________________________________ | |
341 | void 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 | //______________________________________________________________________________________ | |
414 | void 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 | //______________________________________________________________________________________ | |
437 | void 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 | //_____________________________________________________________________________________________ | |
622 | void 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 | //______________________________________________________________________________________ | |
990 | void 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 | } |