]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/FEMTOSCOPY/macros/Train/DataTrain1/ConfigFemtoAnalysis.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / macros / Train / DataTrain1 / ConfigFemtoAnalysis.C
CommitLineData
76ce4b5b 1/*********************************************************************
2 * *
3 * ConfigFemtoAnalysis.C - configuration macro for the femtoscopic *
4 * analysis, to be run in the analysis train. *
5 * Assumed input data: large (>10M) sample of MC pp events *
6 * Inluded analysis: *
7 * - positive pion HBT, 3 kt bins, 1D+3D functions *
8 * - negative pion HBT, 3 kt bins, 1D+3D functions *
9 * - positive kaon HBT, 1 kt bin, 1D+3D functions *
10 * *
11 * Author: Adam Kisiel (Adam.Kisiel@cern.ch) *
12 * *
13 *********************************************************************/
14
15#if !defined(__CINT__) || defined(__MAKECINT_)
16#include "AliFemtoManager.h"
17#include "AliFemtoEventReaderESDChain.h"
18#include "AliFemtoEventReaderESDChainKine.h"
19#include "AliFemtoSimpleAnalysis.h"
20#include "AliFemtoBasicEventCut.h"
21#include "AliFemtoESDTrackCut.h"
22#include "AliFemtoCorrFctn.h"
23#include "AliFemtoCutMonitorParticleYPt.h"
24#include "AliFemtoCutMonitorParticleVertPos.h"
25#include "AliFemtoCutMonitorParticleMomRes.h"
26#include "AliFemtoCutMonitorEventMult.h"
27#include "AliFemtoCutMonitorEventVertex.h"
28#include "AliFemtoShareQualityTPCEntranceSepPairCut.h"
29#include "AliFemtoQinvCorrFctn.h"
30#include "AliFemtoShareQualityCorrFctn.h"
31#include "AliFemtoTPCInnerCorrFctn.h"
32#include "AliFemtoVertexMultAnalysis.h"
33#include "AliFemtoCorrFctn3DSpherical.h"
34#include "AliFemtoChi2CorrFctn.h"
35#include "AliFemtoCorrFctnTPCNcls.h"
36#include "AliFemtoModelBPLCMSCorrFctn.h"
37#include "AliFemtoModelCorrFctn3DSpherical.h"
38#include "AliFemtoModelGausLCMSFreezeOutGenerator.h"
39#include "AliFemtoModelGausRinvFreezeOutGenerator.h"
40#include "AliFemtoModelManager.h"
41#include "AliFemtoModelWeightGeneratorBasic.h"
42#include "AliFemtoModelWeightGeneratorLednicky.h"
43#include "AliFemtoCorrFctnDirectYlm.h"
44#include "AliFemtoModelCorrFctnDirectYlm.h"
45#include "AliFemtoModelCorrFctnSource.h"
46#include "AliFemtoCutMonitorParticlePtPDG.h"
47#include "AliFemtoKTPairCut.h"
48#endif
49
50//________________________________________________________________________
51AliFemtoManager* ConfigFemtoAnalysis() {
52
53 double PionMass = 0.13956995;
54 double KaonMass = 0.493677;
55
56 AliFemtoEventReaderESDChain* Reader=new AliFemtoEventReaderESDChain();
57 Reader->SetConstrained(true);
58 Reader->SetUseTPCOnly(false);
59
60 AliFemtoManager* Manager=new AliFemtoManager();
61 Manager->SetEventReader(Reader);
62
63 int runPositivePions = 1;
64 int runNegativePions = 1;
65 int runPositiveKaons = 1;
66 int runNegativeKaons = 1;
67 int runPositiveNegativeKaons = 1;
68
69 // Z vertex mixing settings
70 int nZVertexBins = 4;
71 Double_t minZVertex = -10.0;
72 Double_t maxZVertex = 10.0;
73
74 if (runPositivePions) {
75 // *** Begin pion-pion (positive) analysis ***
76 AliFemtoVertexMultAnalysis *anpip = new AliFemtoVertexMultAnalysis(nZVertexBins, minZVertex, maxZVertex, 1, 2, 200000);
77 anpip->SetNumEventsToMix(10);
78 anpip->SetMinSizePartCollection(2);
79
80 AliFemtoBasicEventCut* mecpip = new AliFemtoBasicEventCut();
81 mecpip->SetEventMult(2,100000);
82 mecpip->SetVertZPos(-1000,1000);
83
84 AliFemtoESDTrackCut* dtcpip = new AliFemtoESDTrackCut();
85 dtcpip->SetPidProbPion(0.2,1.001);
86 dtcpip->SetPidProbMuon(0.0,1.0);
87 dtcpip->SetPidProbKaon(0.0,1.0);
88 dtcpip->SetPidProbProton(0.0,1.0);
89 dtcpip->SetCharge(1.0);
90 dtcpip->SetPt(0.05,1.0);
91 dtcpip->SetRapidity(-0.9,0.9);
92 dtcpip->SetMass(PionMass);
93 // Track quality cuts
94 dtcpip->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
95 // dtcpip->SetStatus(AliESDtrack::kTPCrefit);
96 dtcpip->SetminTPCncls(50);
97 dtcpip->SetRemoveKinks(kTRUE);
98 dtcpip->SetLabel(kFALSE);
99 dtcpip->SetMaxITSChiNdof(2.5);
100 dtcpip->SetMaxTPCChiNdof(3.0);
101 dtcpip->SetMaxImpactXY(3.0);
102 dtcpip->SetMaxImpactZ(3.0);
103
104 // Track monitors
105 AliFemtoCutMonitorParticleYPt *cutPassYPtpip = new AliFemtoCutMonitorParticleYPt("cutPasspip", 0.13957);
106 AliFemtoCutMonitorParticleYPt *cutFailYPtpip = new AliFemtoCutMonitorParticleYPt("cutFailpip", 0.13957);
107 dtcpip->AddCutMonitor(cutPassYPtpip, cutFailYPtpip);
108
109 AliFemtoCutMonitorEventMult *cutPassEvMpip = new AliFemtoCutMonitorEventMult("cutPasspip");
110 AliFemtoCutMonitorEventMult *cutFailEvMpip = new AliFemtoCutMonitorEventMult("cutFailpip");
111 mecpip->AddCutMonitor(cutPassEvMpip, cutFailEvMpip);
112
113 AliFemtoCutMonitorEventVertex *cutPassEvVpip = new AliFemtoCutMonitorEventVertex("cutPasspip");
114 AliFemtoCutMonitorEventVertex *cutFailEvVpip = new AliFemtoCutMonitorEventVertex("cutFailpip");
115 mecpip->AddCutMonitor(cutPassEvVpip, cutFailEvVpip);
116
117 // Pair cut
118 AliFemtoShareQualityTPCEntranceSepPairCut *sqpcpip = new AliFemtoShareQualityTPCEntranceSepPairCut();
119 sqpcpip->SetShareQualityMax(0.0);
120 sqpcpip->SetShareFractionMax(0.02);
121 sqpcpip->SetRemoveSameLabel(kFALSE);
122 sqpcpip->SetTPCEntranceSepMinimum(2.0);
123
124 anpip->SetEventCut(mecpip);
125 anpip->SetFirstParticleCut(dtcpip);
126 anpip->SetSecondParticleCut(dtcpip);
127 anpip->SetPairCut(sqpcpip);
128
129 // Two-track quality monitoring
130 AliFemtoShareQualityCorrFctn *csqqinvpip= new AliFemtoShareQualityCorrFctn("sqqinvcfpip",40,0.0,0.4);
131 AliFemtoChi2CorrFctn *cchiqinvpip= new AliFemtoChi2CorrFctn("chicfpip",40,0.0,0.4);
132 AliFemtoCorrFctnTPCNcls *cqtpcnclspip = new AliFemtoCorrFctnTPCNcls("cqtpcnclspip",40,0.0,0.4);
133
134 // Intrdouce kT binning
135 AliFemtoKTPairCut *ktpairkT1pip = new AliFemtoKTPairCut(0.05,0.27);
136 AliFemtoKTPairCut *ktpairkT2pip = new AliFemtoKTPairCut(0.27,0.37);
137 AliFemtoKTPairCut *ktpairkT3pip = new AliFemtoKTPairCut(0.37,1.0);
138
139 // Purely experimental correlation function
140 AliFemtoCorrFctnDirectYlm *cylmkT1pip = new AliFemtoCorrFctnDirectYlm("cylmkT1pip",3,80,0.0,0.8,1);
141 cylmkT1pip->SetPairSelectionCut(ktpairkT1pip);
142 anpip->AddCorrFctn(cylmkT1pip);
143
144 AliFemtoCorrFctnDirectYlm *cylmkT2pip = new AliFemtoCorrFctnDirectYlm("cylmkT2pip",3,80,0.0,0.8,1);
145 cylmkT2pip->SetPairSelectionCut(ktpairkT2pip);
146 anpip->AddCorrFctn(cylmkT2pip);
147
148 AliFemtoCorrFctnDirectYlm *cylmkT3pip = new AliFemtoCorrFctnDirectYlm("cylmkT3pip",3,80,0.0,0.8,1);
149 cylmkT3pip->SetPairSelectionCut(ktpairkT3pip);
150 anpip->AddCorrFctn(cylmkT3pip);
151
152 AliFemtoQinvCorrFctn *cqinvkt1pip = new AliFemtoQinvCorrFctn("qinvcfkt1pip", 100,0.0,1.0);
153 cqinvkt1pip->SetPairSelectionCut(ktpairkT1pip);
154 anpip->AddCorrFctn(cqinvkt1pip);
155
156 AliFemtoQinvCorrFctn *cqinvkt2pip = new AliFemtoQinvCorrFctn("qinvcfkt2pip", 100,0.0,1.0);
157 cqinvkt2pip->SetPairSelectionCut(ktpairkT2pip);
158 anpip->AddCorrFctn(cqinvkt2pip);
159
160 AliFemtoQinvCorrFctn *cqinvkt3pip = new AliFemtoQinvCorrFctn("qinvcfkt3pip", 100,0.0,1.0);
161 cqinvkt3pip->SetPairSelectionCut(ktpairkT3pip);
162 anpip->AddCorrFctn(cqinvkt3pip);
163
164 // Add correlation functions to the analysis
165 anpip->AddCorrFctn(csqqinvpip);
166 anpip->AddCorrFctn(cchiqinvpip);
167 anpip->AddCorrFctn(cqtpcnclspip);
168
169 Manager->AddAnalysis(anpip);
170
171 // *** End pion-pion (positive) analysis
172 }
173
174 if (runNegativePions) {
175 // *** Begin pion-pion (negative) analysis ***
176 AliFemtoVertexMultAnalysis *anpim = new AliFemtoVertexMultAnalysis(nZVertexBins, minZVertex, maxZVertex, 1, 2, 200000);
177 anpim->SetNumEventsToMix(10);
178 anpim->SetMinSizePartCollection(2);
179
180 AliFemtoBasicEventCut* mecpim = new AliFemtoBasicEventCut();
181 mecpim->SetEventMult(2,100000);
182 mecpim->SetVertZPos(-1000,1000);
183
184 AliFemtoESDTrackCut* dtcpim = new AliFemtoESDTrackCut();
185 dtcpim->SetPidProbPion(0.2,1.001);
186 dtcpim->SetPidProbMuon(0.0,1.0);
187 dtcpim->SetPidProbKaon(0.0,1.0);
188 dtcpim->SetPidProbProton(0.0,1.0);
189 dtcpim->SetCharge(1.0);
190 dtcpim->SetPt(0.05,1.0);
191 dtcpim->SetRapidity(-0.9,0.9);
192 dtcpim->SetMass(PionMass);
193 // Track quality cuts
194 dtcpim->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
195 // dtcpim->SetStatus(AliESDtrack::kTPCrefit);
196 dtcpim->SetminTPCncls(50);
197 dtcpim->SetRemoveKinks(kTRUE);
198 dtcpim->SetLabel(kFALSE);
199 dtcpim->SetMaxITSChiNdof(2.5);
200 dtcpim->SetMaxTPCChiNdof(3.0);
201 dtcpim->SetMaxImpactXY(3.0);
202 dtcpim->SetMaxImpactZ(3.0);
203
204 // Track monitors
205 AliFemtoCutMonitorParticleYPt *cutPassYPtpim = new AliFemtoCutMonitorParticleYPt("cutPasspim", 0.13957);
206 AliFemtoCutMonitorParticleYPt *cutFailYPtpim = new AliFemtoCutMonitorParticleYPt("cutFailpim", 0.13957);
207 dtcpim->AddCutMonitor(cutPassYPtpim, cutFailYPtpim);
208
209 AliFemtoCutMonitorEventMult *cutPassEvMpim = new AliFemtoCutMonitorEventMult("cutPasspim");
210 AliFemtoCutMonitorEventMult *cutFailEvMpim = new AliFemtoCutMonitorEventMult("cutFailpim");
211 mecpim->AddCutMonitor(cutPassEvMpim, cutFailEvMpim);
212
213 AliFemtoCutMonitorEventVertex *cutPassEvVpim = new AliFemtoCutMonitorEventVertex("cutPasspim");
214 AliFemtoCutMonitorEventVertex *cutFailEvVpim = new AliFemtoCutMonitorEventVertex("cutFailpim");
215 mecpim->AddCutMonitor(cutPassEvVpim, cutFailEvVpim);
216
217 // Pair cut
218 AliFemtoShareQualityTPCEntranceSepPairCut *sqpcpim = new AliFemtoShareQualityTPCEntranceSepPairCut();
219 sqpcpim->SetShareQualityMax(0.0);
220 sqpcpim->SetShareFractionMax(0.02);
221 sqpcpim->SetRemoveSameLabel(kFALSE);
222 sqpcpim->SetTPCEntranceSepMinimum(2.0);
223
224 anpim->SetEventCut(mecpim);
225 anpim->SetFirstParticleCut(dtcpim);
226 anpim->SetSecondParticleCut(dtcpim);
227 anpim->SetPairCut(sqpcpim);
228
229 // Two-track quality monitoring
230 AliFemtoShareQualityCorrFctn *csqqinvpim= new AliFemtoShareQualityCorrFctn("sqqinvcfpim",40,0.0,0.4);
231 AliFemtoChi2CorrFctn *cchiqinvpim= new AliFemtoChi2CorrFctn("chicfpim",40,0.0,0.4);
232 AliFemtoCorrFctnTPCNcls *cqtpcnclspim = new AliFemtoCorrFctnTPCNcls("cqtpcnclspim",40,0.0,0.4);
233
234 // Intrdouce kT binning
235 AliFemtoKTPairCut *ktpairkT1pim = new AliFemtoKTPairCut(0.05,0.27);
236 AliFemtoKTPairCut *ktpairkT2pim = new AliFemtoKTPairCut(0.27,0.37);
237 AliFemtoKTPairCut *ktpairkT3pim = new AliFemtoKTPairCut(0.37,1.0);
238
239 // Purely experimental correlation function
240 AliFemtoCorrFctnDirectYlm *cylmkT1pim = new AliFemtoCorrFctnDirectYlm("cylmkT1pim",3,80,0.0,0.8,1);
241 cylmkT1pim->SetPairSelectionCut(ktpairkT1pim);
242 anpim->AddCorrFctn(cylmkT1pim);
243
244 AliFemtoCorrFctnDirectYlm *cylmkT2pim = new AliFemtoCorrFctnDirectYlm("cylmkT2pim",3,80,0.0,0.8,1);
245 cylmkT2pim->SetPairSelectionCut(ktpairkT2pim);
246 anpim->AddCorrFctn(cylmkT2pim);
247
248 AliFemtoCorrFctnDirectYlm *cylmkT3pim = new AliFemtoCorrFctnDirectYlm("cylmkT3pim",3,80,0.0,0.8,1);
249 cylmkT3pim->SetPairSelectionCut(ktpairkT3pim);
250 anpim->AddCorrFctn(cylmkT3pim);
251
252 AliFemtoQinvCorrFctn *cqinvkt1pim = new AliFemtoQinvCorrFctn("qinvcfkt1pim", 100,0.0,1.0);
253 cqinvkt1pim->SetPairSelectionCut(ktpairkT1pim);
254 anpim->AddCorrFctn(cqinvkt1pim);
255
256 AliFemtoQinvCorrFctn *cqinvkt2pim = new AliFemtoQinvCorrFctn("qinvcfkt2pim", 100,0.0,1.0);
257 cqinvkt2pim->SetPairSelectionCut(ktpairkT2pim);
258 anpim->AddCorrFctn(cqinvkt2pim);
259
260 AliFemtoQinvCorrFctn *cqinvkt3pim = new AliFemtoQinvCorrFctn("qinvcfkt3pim", 100,0.0,1.0);
261 cqinvkt3pim->SetPairSelectionCut(ktpairkT3pim);
262 anpim->AddCorrFctn(cqinvkt3pim);
263
264 // Add correlation functions to the analysis
265 anpim->AddCorrFctn(csqqinvpim);
266 anpim->AddCorrFctn(cchiqinvpim);
267 anpim->AddCorrFctn(cqtpcnclspim);
268
269 Manager->AddAnalysis(anpim);
270
271 // *** End pion-pion (negative) analysis
272 }
273
274 if (runPositiveKaons) {
275 // *** Begin Kaon-Kaon (positive) analysis
276 AliFemtoVertexMultAnalysis *ankp = new AliFemtoVertexMultAnalysis(nZVertexBins, minZVertex, maxZVertex, 1, 2, 20000);
277 ankp->SetNumEventsToMix(5);
278 ankp->SetMinSizePartCollection(2);
279
280 AliFemtoBasicEventCut* meckp = new AliFemtoBasicEventCut();
281 meckp->SetEventMult(1,100000);
282 meckp->SetVertZPos(-1000,1000);
283
284 AliFemtoESDTrackCut* dtckp = new AliFemtoESDTrackCut();
285 dtckp->SetPidProbKaon(0.7,1.001);
286 dtckp->SetPidProbMuon(0.0,0.5);
287 dtckp->SetPidProbPion(0.0,0.5);
288 dtckp->SetPidProbProton(0.0,0.5);
289 dtckp->SetCharge(1.0);
290 dtckp->SetMostProbableKaon();
291 dtckp->SetMomRangeTOFpidIs(0.6,10000.);
292 dtckp->SetPt(0.15,2.0);
293 dtckp->SetMass(KaonMass);
294 // Track quality cuts
295 dtckp->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
296 dtckp->SetminTPCncls(50);
297 dtckp->SetRemoveKinks(kTRUE);
298 dtckp->SetLabel(kFALSE);
299 dtckp->SetMaxITSChiNdof(2.5);
300 dtckp->SetMaxTPCChiNdof(3.0);
301 dtckp->SetMaxImpactXY(3.0);
302 dtckp->SetMaxImpactZ(3.0);
303
304 AliFemtoCutMonitorParticleYPt *cutPassYPtkp = new AliFemtoCutMonitorParticleYPt("cutPasskp", 0.493677);
305 AliFemtoCutMonitorParticleYPt *cutFailYPtkp = new AliFemtoCutMonitorParticleYPt("cutFailkp", 0.493677);
306 dtckp->AddCutMonitor(cutPassYPtkp, cutFailYPtkp);
307
308 AliFemtoCutMonitorParticlePtPDG *cutPassPidkp = new AliFemtoCutMonitorParticlePtPDG("cutPasskp", 0.493677);
309 AliFemtoCutMonitorParticlePtPDG *cutFailPidkp = new AliFemtoCutMonitorParticlePtPDG("cutFailkp", 0.493677);
310 dtckp->AddCutMonitor(cutPassPidkp, cutFailPidkp);
311
312 AliFemtoCutMonitorParticleMomRes *cutPassMRkp = new AliFemtoCutMonitorParticleMomRes("cutPasskp");
313 AliFemtoCutMonitorParticleMomRes *cutFailMRkp = new AliFemtoCutMonitorParticleMomRes("cutFailkp");
314 dtckp->AddCutMonitor(cutPassMRkp, cutFailMRkp);
315
316 AliFemtoCutMonitorParticleVertPos *cutPassVPkp = new AliFemtoCutMonitorParticleVertPos("cutPasskp");
317 AliFemtoCutMonitorParticleVertPos *cutFailVPkp = new AliFemtoCutMonitorParticleVertPos("cutFailkp");
318 dtckp->AddCutMonitor(cutPassVPkp, cutFailVPkp);
319
320 AliFemtoCutMonitorEventMult *cutPassEvMkp = new AliFemtoCutMonitorEventMult("cutPasskp");
321 AliFemtoCutMonitorEventMult *cutFailEvMkp = new AliFemtoCutMonitorEventMult("cutFailkp");
322 meckp->AddCutMonitor(cutPassEvMkp, cutFailEvMkp);
323
324 AliFemtoCutMonitorEventVertex *cutPassEvVkp = new AliFemtoCutMonitorEventVertex("cutPasskp");
325 AliFemtoCutMonitorEventVertex *cutFailEvVkp = new AliFemtoCutMonitorEventVertex("cutFailkp");
326 meckp->AddCutMonitor(cutPassEvVkp, cutFailEvVkp);
327
328 AliFemtoShareQualityTPCEntranceSepPairCut *sqpckp = new AliFemtoShareQualityTPCEntranceSepPairCut();
329 sqpckp->SetShareQualityMax(0.0);
330 sqpckp->SetShareFractionMax(0.02);
331 sqpckp->SetRemoveSameLabel(kFALSE);
332 sqpckp->SetTPCEntranceSepMinimum(3.0);
333
334 ankp->SetEventCut(meckp);
335 ankp->SetFirstParticleCut(dtckp);
336 ankp->SetSecondParticleCut(dtckp);
337 ankp->SetPairCut(sqpckp);
338
339 AliFemtoQinvCorrFctn *cqinvkp= new AliFemtoQinvCorrFctn("qinvcf",100,0.0,1.0);
340
341 //###
342 ankp->AddCorrFctn(cqinvkp);
343
344 Manager->AddAnalysis(ankp);
345
346 // *** End Kaon-Kaon (positive) analysis
347 }
348
349 if (runNegativeKaons) {
350 // *** Begin Kaon-Kaon (negative) analysis
351 AliFemtoVertexMultAnalysis *ankm = new AliFemtoVertexMultAnalysis(nZVertexBins, minZVertex, maxZVertex, 1, 2, 20000);
352 ankm->SetNumEventsToMix(5);
353 ankm->SetMinSizePartCollection(2);
354
355 AliFemtoBasicEventCut* meckm = new AliFemtoBasicEventCut();
356 meckm->SetEventMult(1,100000);
357 meckm->SetVertZPos(-1000,1000);
358
359 AliFemtoESDTrackCut* dtckm = new AliFemtoESDTrackCut();
360 dtckm->SetPidProbKaon(0.7,1.001);
361 dtckm->SetPidProbMuon(0.0,0.5);
362 dtckm->SetPidProbPion(0.0,0.5);
363 dtckm->SetPidProbProton(0.0,0.5);
364 dtckp->SetMomRangeTOFpidIs(0.6,10000.);
365 dtckm->SetCharge(-1.0);
366 dtckm->SetMostProbableKaon();
367 dtckm->SetPt(0.15,2.0);
368 dtckm->SetMass(KaonMass);
369 // Track quality cuts
370 dtckm->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
371 dtckm->SetminTPCncls(50);
372 dtckm->SetRemoveKinks(kTRUE);
373 dtckm->SetLabel(kFALSE);
374 dtckm->SetMaxITSChiNdof(2.5);
375 dtckm->SetMaxTPCChiNdof(3.0);
376 dtckm->SetMaxImpactXY(3.0);
377 dtckm->SetMaxImpactZ(3.0);
378
379 AliFemtoCutMonitorParticleYPt *cutPassYPtkm = new AliFemtoCutMonitorParticleYPt("cutPasskm", 0.493677);
380 AliFemtoCutMonitorParticleYPt *cutFailYPtkm = new AliFemtoCutMonitorParticleYPt("cutFailkm", 0.493677);
381 dtckm->AddCutMonitor(cutPassYPtkm, cutFailYPtkm);
382
383 AliFemtoCutMonitorParticlePtPDG *cutPassPidkm = new AliFemtoCutMonitorParticlePtPDG("cutPasskm", 0.493677);
384 AliFemtoCutMonitorParticlePtPDG *cutFailPidkm = new AliFemtoCutMonitorParticlePtPDG("cutFailkm", 0.493677);
385 dtckm->AddCutMonitor(cutPassPidkm, cutFailPidkm);
386
387 AliFemtoCutMonitorParticleMomRes *cutPassMRkm = new AliFemtoCutMonitorParticleMomRes("cutPasskm");
388 AliFemtoCutMonitorParticleMomRes *cutFailMRkm = new AliFemtoCutMonitorParticleMomRes("cutFailkm");
389 dtckm->AddCutMonitor(cutPassMRkm, cutFailMRkm);
390
391 AliFemtoCutMonitorParticleVertPos *cutPassVPkm = new AliFemtoCutMonitorParticleVertPos("cutPasskm");
392 AliFemtoCutMonitorParticleVertPos *cutFailVPkm = new AliFemtoCutMonitorParticleVertPos("cutFailkm");
393 dtckm->AddCutMonitor(cutPassVPkm, cutFailVPkm);
394
395 AliFemtoCutMonitorEventMult *cutPassEvMkm = new AliFemtoCutMonitorEventMult("cutPasskm");
396 AliFemtoCutMonitorEventMult *cutFailEvMkm = new AliFemtoCutMonitorEventMult("cutFailkm");
397 meckm->AddCutMonitor(cutPassEvMkm, cutFailEvMkm);
398
399 AliFemtoCutMonitorEventVertex *cutPassEvVkm = new AliFemtoCutMonitorEventVertex("cutPasskm");
400 AliFemtoCutMonitorEventVertex *cutFailEvVkm = new AliFemtoCutMonitorEventVertex("cutFailkm");
401 meckm->AddCutMonitor(cutPassEvVkm, cutFailEvVkm);
402
403 AliFemtoShareQualityTPCEntranceSepPairCut *sqpckm = new AliFemtoShareQualityTPCEntranceSepPairCut();
404 sqpckm->SetShareQualityMax(0.0);
405 sqpckm->SetShareFractionMax(0.02);
406 sqpckm->SetRemoveSameLabel(kFALSE);
407 sqpckm->SetTPCEntranceSepMinimum(3.0);
408
409 ankm->SetEventCut(meckm);
410 ankm->SetFirstParticleCut(dtckm);
411 ankm->SetSecondParticleCut(dtckm);
412 ankm->SetPairCut(sqpckm);
413
414 AliFemtoQinvCorrFctn *cqinvkm= new AliFemtoQinvCorrFctn("qinvcf",100,0.0,1.0);
415
416
417 //###
418 ankm->AddCorrFctn(cqinvkm);
419
420 Manager->AddAnalysis(ankm);
421
422 // *** End Kaon-Kaon (negative) analysis
423 }
424
425 if (runPositiveNegativeKaons) {
426 // *** Begin Kaon+Kaon- analysis
427 AliFemtoVertexMultAnalysis *ankpkm = new AliFemtoVertexMultAnalysis(nZVertexBins, minZVertex, maxZVertex, 1, 2, 20000);
428 ankpkm->SetNumEventsToMix(5);
429 ankpkm->SetMinSizePartCollection(2);
430
431 AliFemtoBasicEventCut* meckpkm = new AliFemtoBasicEventCut();
432 meckpkm->SetEventMult(1,100000);
433 meckpkm->SetVertZPos(-1000,1000);
434
435 AliFemtoESDTrackCut* dtckp = new AliFemtoESDTrackCut();
436 dtckp->SetPidProbKaon(0.7,1.001);
437 dtckp->SetPidProbMuon(0.0,0.5);
438 dtckp->SetPidProbPion(0.0,0.5);
439 dtckp->SetPidProbProton(0.0,0.5);
440 dtckp->SetMomRangeTOFpidIs(0.6,10000.);
441 dtckp->SetCharge(1.0);
442 dtckp->SetMostProbableKaon();
443 dtckp->SetPt(0.15,2.0);
444 dtckp->SetMass(KaonMass);
445 // Track quality cuts
446 dtckp->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
447 dtckp->SetminTPCncls(50);
448 dtckp->SetRemoveKinks(kTRUE);
449 dtckp->SetLabel(kFALSE);
450 dtckp->SetMaxITSChiNdof(2.5);
451 dtckp->SetMaxTPCChiNdof(3.0);
452 dtckp->SetMaxImpactXY(3.0);
453 dtckp->SetMaxImpactZ(3.0);
454
455 AliFemtoESDTrackCut* dtckm = new AliFemtoESDTrackCut();
456 dtckm->SetPidProbKaon(0.7,1.001);
457 dtckm->SetPidProbMuon(0.0,0.5);
458 dtckm->SetPidProbPion(0.0,0.5);
459 dtckm->SetPidProbProton(0.0,0.5);
460 dtckm->SetMomRangeTOFpidIs(0.6,10000.);
461 dtckm->SetCharge(-1.0);
462 dtckm->SetMostProbableKaon();
463 dtckm->SetPt(0.15,2.0);
464 dtckm->SetMass(KaonMass);
465 // Track quality cuts
466 dtckm->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
467 dtckm->SetminTPCncls(50);
468 dtckm->SetRemoveKinks(kTRUE);
469 dtckm->SetLabel(kFALSE);
470 dtckm->SetMaxITSChiNdof(2.5);
471 dtckm->SetMaxTPCChiNdof(3.0);
472 dtckm->SetMaxImpactXY(3.0);
473 dtckm->SetMaxImpactZ(3.0);
474
475
476 AliFemtoCutMonitorParticleYPt *cutPassYPtkp = new AliFemtoCutMonitorParticleYPt("cutPasskp", 0.493677);
477 AliFemtoCutMonitorParticleYPt *cutFailYPtkp = new AliFemtoCutMonitorParticleYPt("cutFailkp", 0.493677);
478 dtckp->AddCutMonitor(cutPassYPtkp, cutFailYPtkp);
479
480 AliFemtoCutMonitorParticleYPt *cutPassYPtkm = new AliFemtoCutMonitorParticleYPt("cutPasskm", 0.493677);
481 AliFemtoCutMonitorParticleYPt *cutFailYPtkm = new AliFemtoCutMonitorParticleYPt("cutFailkm", 0.493677);
482 dtckm->AddCutMonitor(cutPassYPtkm, cutFailYPtkm);
483
484 AliFemtoCutMonitorParticlePtPDG *cutPassPidkp = new AliFemtoCutMonitorParticlePtPDG("cutPasskp", 0.493677);
485 AliFemtoCutMonitorParticlePtPDG *cutFailPidkp = new AliFemtoCutMonitorParticlePtPDG("cutFailkp", 0.493677);
486 dtckp->AddCutMonitor(cutPassPidkp, cutFailPidkp);
487
488 AliFemtoCutMonitorParticlePtPDG *cutPassPidkm = new AliFemtoCutMonitorParticlePtPDG("cutPasskm", 0.493677);
489 AliFemtoCutMonitorParticlePtPDG *cutFailPidkm = new AliFemtoCutMonitorParticlePtPDG("cutFailkm", 0.493677);
490 dtckm->AddCutMonitor(cutPassPidkm, cutFailPidkm);
491
492 AliFemtoCutMonitorParticleMomRes *cutPassMRkp = new AliFemtoCutMonitorParticleMomRes("cutPasskp");
493 AliFemtoCutMonitorParticleMomRes *cutFailMRkp = new AliFemtoCutMonitorParticleMomRes("cutFailkp");
494 dtckp->AddCutMonitor(cutPassMRkp, cutFailMRkp);
495
496 AliFemtoCutMonitorParticleMomRes *cutPassMRkm = new AliFemtoCutMonitorParticleMomRes("cutPasskm");
497 AliFemtoCutMonitorParticleMomRes *cutFailMRkm = new AliFemtoCutMonitorParticleMomRes("cutFailkm");
498 dtckm->AddCutMonitor(cutPassMRkm, cutFailMRkm);
499
500 AliFemtoCutMonitorParticleVertPos *cutPassVPkp = new AliFemtoCutMonitorParticleVertPos("cutPasskp");
501 AliFemtoCutMonitorParticleVertPos *cutFailVPkp = new AliFemtoCutMonitorParticleVertPos("cutFailkp");
502 dtckp->AddCutMonitor(cutPassVPkp, cutFailVPkp);
503
504 AliFemtoCutMonitorParticleVertPos *cutPassVPkm = new AliFemtoCutMonitorParticleVertPos("cutPasskm");
505 AliFemtoCutMonitorParticleVertPos *cutFailVPkm = new AliFemtoCutMonitorParticleVertPos("cutFailkm");
506 dtckm->AddCutMonitor(cutPassVPkm, cutFailVPkm);
507
508 AliFemtoCutMonitorEventMult *cutPassEvMkpkm = new AliFemtoCutMonitorEventMult("cutPasskpkm");
509 AliFemtoCutMonitorEventMult *cutFailEvMkpkm = new AliFemtoCutMonitorEventMult("cutFailkpkm");
510 meckpkm->AddCutMonitor(cutPassEvMkpkm, cutFailEvMkpkm);
511
512 AliFemtoCutMonitorEventVertex *cutPassEvVkpkm = new AliFemtoCutMonitorEventVertex("cutPasskpkm");
513 AliFemtoCutMonitorEventVertex *cutFailEvVkpkm = new AliFemtoCutMonitorEventVertex("cutFailkpkm");
514 meckpkm->AddCutMonitor(cutPassEvVkpkm, cutFailEvVkpkm);
515
516 AliFemtoShareQualityTPCEntranceSepPairCut *sqpckpkm = new AliFemtoShareQualityTPCEntranceSepPairCut();
517 sqpckpkm->SetShareQualityMax(0.0);
518 sqpckpkm->SetShareFractionMax(0.02);
519 sqpckpkm->SetRemoveSameLabel(kFALSE);
520 sqpckpkm->SetTPCEntranceSepMinimum(3.0);
521
522 ankpkm->SetEventCut(meckpkm);
523 ankpkm->SetFirstParticleCut(dtckp);
524 ankpkm->SetSecondParticleCut(dtckm);
525 ankpkm->SetPairCut(sqpckpkm);
526
527 AliFemtoQinvCorrFctn *cqinvkpkm= new AliFemtoQinvCorrFctn("qinvcf",100,0.0,1.0);
528
529 //###
530 ankpkm->AddCorrFctn(cqinvkpkm);
531
532 Manager->AddAnalysis(ankpkm);
533
534 // *** End Kaon+Kaon- analysis
535 }
536
537 return Manager;
538}
539