1 /*********************************************************************
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 *
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 *
11 * Author: Adam Kisiel (Adam.Kisiel@cern.ch) *
13 *********************************************************************/
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"
50 //________________________________________________________________________
51 AliFemtoManager* ConfigFemtoAnalysis() {
53 double PionMass = 0.13956995;
54 double KaonMass = 0.493677;
56 AliFemtoEventReaderESDChainKine* Reader=new AliFemtoEventReaderESDChainKine();
57 Reader->SetConstrained(true);
58 Reader->SetUseTPCOnly(false);
60 AliFemtoManager* Manager=new AliFemtoManager();
61 Manager->SetEventReader(Reader);
63 int runPositivePions = 1;
64 int runNegativePions = 1;
65 int runPositiveKaons = 1;
66 int runNegativeKaons = 1;
67 int runPositiveNegativeKaons = 1;
69 if (runPositivePions) {
70 // *** Begin pion-pion (positive) analysis ***
71 AliFemtoVertexMultAnalysis *anpip = new AliFemtoVertexMultAnalysis(3, -15.6, 15.6, 1, 2, 200000);
72 anpip->SetNumEventsToMix(10);
73 anpip->SetMinSizePartCollection(2);
75 AliFemtoBasicEventCut* mecpip = new AliFemtoBasicEventCut();
76 mecpip->SetEventMult(2,100000);
77 mecpip->SetVertZPos(-1000,1000);
79 AliFemtoESDTrackCut* dtcpip = new AliFemtoESDTrackCut();
80 dtcpip->SetPidProbPion(0.2,1.001);
81 dtcpip->SetPidProbMuon(0.0,1.0);
82 dtcpip->SetPidProbKaon(0.0,1.0);
83 dtcpip->SetPidProbProton(0.0,1.0);
84 dtcpip->SetCharge(1.0);
85 dtcpip->SetPt(0.15,0.5);
86 dtcpip->SetRapidity(-0.8,0.8);
87 dtcpip->SetMass(PionMass);
89 dtcpip->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
90 // dtcpip->SetStatus(AliESDtrack::kTPCrefit);
91 dtcpip->SetminTPCncls(50);
92 dtcpip->SetRemoveKinks(kTRUE);
93 dtcpip->SetLabel(kFALSE);
94 dtcpip->SetMaxITSChiNdof(2.5);
95 dtcpip->SetMaxTPCChiNdof(3.0);
96 dtcpip->SetMaxImpactXY(3.0);
97 dtcpip->SetMaxImpactZ(3.0);
100 AliFemtoCutMonitorParticleYPt *cutPassYPtpip = new AliFemtoCutMonitorParticleYPt("cutPasspip", 0.13957);
101 AliFemtoCutMonitorParticleYPt *cutFailYPtpip = new AliFemtoCutMonitorParticleYPt("cutFailpip", 0.13957);
102 dtcpip->AddCutMonitor(cutPassYPtpip, cutFailYPtpip);
104 AliFemtoCutMonitorEventMult *cutPassEvMpip = new AliFemtoCutMonitorEventMult("cutPasspip");
105 AliFemtoCutMonitorEventMult *cutFailEvMpip = new AliFemtoCutMonitorEventMult("cutFailpip");
106 mecpip->AddCutMonitor(cutPassEvMpip, cutFailEvMpip);
108 AliFemtoCutMonitorEventVertex *cutPassEvVpip = new AliFemtoCutMonitorEventVertex("cutPasspip");
109 AliFemtoCutMonitorEventVertex *cutFailEvVpip = new AliFemtoCutMonitorEventVertex("cutFailpip");
110 mecpip->AddCutMonitor(cutPassEvVpip, cutFailEvVpip);
113 AliFemtoShareQualityTPCEntranceSepPairCut *sqpcpip = new AliFemtoShareQualityTPCEntranceSepPairCut();
114 sqpcpip->SetShareQualityMax(0.0);
115 sqpcpip->SetShareFractionMax(0.02);
116 sqpcpip->SetRemoveSameLabel(kFALSE);
117 sqpcpip->SetTPCEntranceSepMinimum(2.0);
119 anpip->SetEventCut(mecpip);
120 anpip->SetFirstParticleCut(dtcpip);
121 anpip->SetSecondParticleCut(dtcpip);
122 anpip->SetPairCut(sqpcpip);
124 // Two-track quality monitoring
125 AliFemtoShareQualityCorrFctn *csqqinvpip= new AliFemtoShareQualityCorrFctn("sqqinvcfpip",40,0.0,0.4);
126 AliFemtoChi2CorrFctn *cchiqinvpip= new AliFemtoChi2CorrFctn("chicfpip",40,0.0,0.4);
127 AliFemtoCorrFctnTPCNcls *cqtpcnclspip = new AliFemtoCorrFctnTPCNcls("cqtpcnclspip",40,0.0,0.4);
129 // Intrdouce kT binning
130 AliFemtoKTPairCut *ktpairkT1pip = new AliFemtoKTPairCut(0.1,0.27);
131 AliFemtoKTPairCut *ktpairkT2pip = new AliFemtoKTPairCut(0.27,0.37);
132 AliFemtoKTPairCut *ktpairkT3pip = new AliFemtoKTPairCut(0.37,0.52);
134 // Purely experimental correlation function
135 AliFemtoCorrFctnDirectYlm *cylmkT1pip = new AliFemtoCorrFctnDirectYlm("cylmkT1pip",3,80,0.0,0.8,1);
136 cylmkT1pip->SetPairSelectionCut(ktpairkT1pip);
137 anpip->AddCorrFctn(cylmkT1pip);
139 AliFemtoCorrFctnDirectYlm *cylmkT2pip = new AliFemtoCorrFctnDirectYlm("cylmkT2pip",3,80,0.0,0.8,1);
140 cylmkT2pip->SetPairSelectionCut(ktpairkT2pip);
141 anpip->AddCorrFctn(cylmkT2pip);
143 AliFemtoCorrFctnDirectYlm *cylmkT3pip = new AliFemtoCorrFctnDirectYlm("cylmkT3pip",3,80,0.0,0.8,1);
144 cylmkT3pip->SetPairSelectionCut(ktpairkT3pip);
145 anpip->AddCorrFctn(cylmkT3pip);
147 AliFemtoQinvCorrFctn *cqinvkt1pip = new AliFemtoQinvCorrFctn("qinvcfkt1pip", 100,0.0,1.0);
148 cqinvkt1pip->SetPairSelectionCut(ktpairkT1pip);
149 anpip->AddCorrFctn(cqinvkt1pip);
151 AliFemtoQinvCorrFctn *cqinvkt2pip = new AliFemtoQinvCorrFctn("qinvcfkt2pip", 100,0.0,1.0);
152 cqinvkt2pip->SetPairSelectionCut(ktpairkT2pip);
153 anpip->AddCorrFctn(cqinvkt2pip);
155 AliFemtoQinvCorrFctn *cqinvkt3pip = new AliFemtoQinvCorrFctn("qinvcfkt3pip", 100,0.0,1.0);
156 cqinvkt3pip->SetPairSelectionCut(ktpairkT3pip);
157 anpip->AddCorrFctn(cqinvkt3pip);
159 // Setting up the model calculation
160 // First create the freeze-out generator
161 AliFemtoModelGausLCMSFreezeOutGenerator *tFreezepip = new AliFemtoModelGausLCMSFreezeOutGenerator();
162 tFreezepip->SetSizeOut(1.8*TMath::Sqrt(2.0));
163 tFreezepip->SetSizeSide(1.3*TMath::Sqrt(2.0));
164 tFreezepip->SetSizeLong(1.6*TMath::Sqrt(2.0));
166 // And the weight generator
167 AliFemtoModelWeightGeneratorBasic *tWeightpip = new AliFemtoModelWeightGeneratorBasic();
168 tWeightpip->SetPairType(AliFemtoModelWeightGenerator::PionPlusPionPlus());
170 // Create a manager that will connect it
171 AliFemtoModelManager *tModelManagerpip = new AliFemtoModelManager();
172 tModelManagerpip->AcceptFreezeOutGenerator(tFreezepip);
173 tModelManagerpip->AcceptWeightGenerator(tWeightpip);
174 tModelManagerpip->CreateCopyHiddenInfo(kFALSE);
176 // Model correlation functions
177 AliFemtoModelCorrFctn *c1dpipip;
178 AliFemtoModelBPLCMSCorrFctn *c3dsmallkt1pip;
179 AliFemtoModelBPLCMSCorrFctn *c3dsmallkt2pip;
180 AliFemtoModelBPLCMSCorrFctn *c3dsmallkt3pip;
182 c1dpipip = new AliFemtoModelCorrFctn("c1dpipip",100,0.0,1.0);
183 c1dpipip->ConnectToManager(tModelManagerpip);
185 c3dsmallkt1pip = new AliFemtoModelBPLCMSCorrFctn("c3dsmallkt1pip",40, -0.4, 0.4);
186 c3dsmallkt1pip->SetSpecificPairCut(ktpairkT1pip);
187 c3dsmallkt1pip->ConnectToManager(tModelManagerpip);
189 c3dsmallkt2pip = new AliFemtoModelBPLCMSCorrFctn("c3dsmallkt2pip",40, -0.4, 0.4);
190 c3dsmallkt2pip->SetSpecificPairCut(ktpairkT2pip);
191 c3dsmallkt2pip->ConnectToManager(tModelManagerpip);
193 c3dsmallkt3pip = new AliFemtoModelBPLCMSCorrFctn("c3dsmallkt3pip",40, -0.4, 0.4);
194 c3dsmallkt3pip->SetSpecificPairCut(ktpairkT3pip);
195 c3dsmallkt3pip->ConnectToManager(tModelManagerpip);
197 AliFemtoModelCorrFctnDirectYlm *cmylmkt1pip = new AliFemtoModelCorrFctnDirectYlm("mcylmkt1pip",3,80,0.0,0.8,1);
198 cmylmkt1pip->SetPairSelectionCut(ktpairkT1pip);
199 cmylmkt1pip->ConnectToManager(tModelManagerpip);
201 AliFemtoModelCorrFctnDirectYlm *cmylmkt2pip = new AliFemtoModelCorrFctnDirectYlm("mcylmkt2pip",3,80,0.0,0.8,1);
202 cmylmkt2pip->SetPairSelectionCut(ktpairkT2pip);
203 cmylmkt2pip->ConnectToManager(tModelManagerpip);
205 AliFemtoModelCorrFctnDirectYlm *cmylmkt3pip = new AliFemtoModelCorrFctnDirectYlm("mcylmkt3pip",3,80,0.0,0.8,1);
206 cmylmkt3pip->SetPairSelectionCut(ktpairkT3pip);
207 cmylmkt3pip->ConnectToManager(tModelManagerpip);
209 // Add correlation functions to the analysis
210 anpip->AddCorrFctn(csqqinvpip);
211 anpip->AddCorrFctn(cchiqinvpip);
212 anpip->AddCorrFctn(cqtpcnclspip);
213 anpip->AddCorrFctn(c3dsmallkt1pip);
214 anpip->AddCorrFctn(c3dsmallkt2pip);
215 anpip->AddCorrFctn(c3dsmallkt3pip);
216 anpip->AddCorrFctn(c1dpipip);
217 anpip->AddCorrFctn(cmylmkt1pip);
218 anpip->AddCorrFctn(cmylmkt2pip);
219 anpip->AddCorrFctn(cmylmkt3pip);
221 Manager->AddAnalysis(anpip);
223 // *** End pion-pion (positive) analysis
226 if (runNegativePions) {
227 // *** Begin pion-pion (negative) analysis ***
228 AliFemtoVertexMultAnalysis *anpim = new AliFemtoVertexMultAnalysis(3, -15.6, 15.6, 1, 2, 200000);
229 anpim->SetNumEventsToMix(10);
230 anpim->SetMinSizePartCollection(2);
232 AliFemtoBasicEventCut* mecpim = new AliFemtoBasicEventCut();
233 mecpim->SetEventMult(2,100000);
234 mecpim->SetVertZPos(-1000,1000);
236 AliFemtoESDTrackCut* dtcpim = new AliFemtoESDTrackCut();
237 dtcpim->SetPidProbPion(0.2,1.001);
238 dtcpim->SetPidProbMuon(0.0,1.0);
239 dtcpim->SetPidProbKaon(0.0,1.0);
240 dtcpim->SetPidProbProton(0.0,1.0);
241 dtcpim->SetCharge(1.0);
242 dtcpim->SetPt(0.15,0.5);
243 dtcpim->SetRapidity(-0.8,0.8);
244 dtcpim->SetMass(PionMass);
245 // Track quality cuts
246 dtcpim->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
247 // dtcpim->SetStatus(AliESDtrack::kTPCrefit);
248 dtcpim->SetminTPCncls(50);
249 dtcpim->SetRemoveKinks(kTRUE);
250 dtcpim->SetLabel(kFALSE);
251 dtcpim->SetMaxITSChiNdof(2.5);
252 dtcpim->SetMaxTPCChiNdof(3.0);
253 dtcpim->SetMaxImpactXY(3.0);
254 dtcpim->SetMaxImpactZ(3.0);
257 AliFemtoCutMonitorParticleYPt *cutPassYPtpim = new AliFemtoCutMonitorParticleYPt("cutPasspim", 0.13957);
258 AliFemtoCutMonitorParticleYPt *cutFailYPtpim = new AliFemtoCutMonitorParticleYPt("cutFailpim", 0.13957);
259 dtcpim->AddCutMonitor(cutPassYPtpim, cutFailYPtpim);
261 AliFemtoCutMonitorEventMult *cutPassEvMpim = new AliFemtoCutMonitorEventMult("cutPasspim");
262 AliFemtoCutMonitorEventMult *cutFailEvMpim = new AliFemtoCutMonitorEventMult("cutFailpim");
263 mecpim->AddCutMonitor(cutPassEvMpim, cutFailEvMpim);
265 AliFemtoCutMonitorEventVertex *cutPassEvVpim = new AliFemtoCutMonitorEventVertex("cutPasspim");
266 AliFemtoCutMonitorEventVertex *cutFailEvVpim = new AliFemtoCutMonitorEventVertex("cutFailpim");
267 mecpim->AddCutMonitor(cutPassEvVpim, cutFailEvVpim);
270 AliFemtoShareQualityTPCEntranceSepPairCut *sqpcpim = new AliFemtoShareQualityTPCEntranceSepPairCut();
271 sqpcpim->SetShareQualityMax(0.0);
272 sqpcpim->SetShareFractionMax(0.02);
273 sqpcpim->SetRemoveSameLabel(kFALSE);
274 sqpcpim->SetTPCEntranceSepMinimum(2.0);
276 anpim->SetEventCut(mecpim);
277 anpim->SetFirstParticleCut(dtcpim);
278 anpim->SetSecondParticleCut(dtcpim);
279 anpim->SetPairCut(sqpcpim);
281 // Two-track quality monitoring
282 AliFemtoShareQualityCorrFctn *csqqinvpim= new AliFemtoShareQualityCorrFctn("sqqinvcfpim",40,0.0,0.4);
283 AliFemtoChi2CorrFctn *cchiqinvpim= new AliFemtoChi2CorrFctn("chicfpim",40,0.0,0.4);
284 AliFemtoCorrFctnTPCNcls *cqtpcnclspim = new AliFemtoCorrFctnTPCNcls("cqtpcnclspim",40,0.0,0.4);
286 // Intrdouce kT binning
287 AliFemtoKTPairCut *ktpairkT1pim = new AliFemtoKTPairCut(0.1,0.27);
288 AliFemtoKTPairCut *ktpairkT2pim = new AliFemtoKTPairCut(0.27,0.37);
289 AliFemtoKTPairCut *ktpairkT3pim = new AliFemtoKTPairCut(0.37,0.52);
291 // Purely experimental correlation function
292 AliFemtoCorrFctnDirectYlm *cylmkT1pim = new AliFemtoCorrFctnDirectYlm("cylmkT1pim",3,80,0.0,0.8,1);
293 cylmkT1pim->SetPairSelectionCut(ktpairkT1pim);
294 anpim->AddCorrFctn(cylmkT1pim);
296 AliFemtoCorrFctnDirectYlm *cylmkT2pim = new AliFemtoCorrFctnDirectYlm("cylmkT2pim",3,80,0.0,0.8,1);
297 cylmkT2pim->SetPairSelectionCut(ktpairkT2pim);
298 anpim->AddCorrFctn(cylmkT2pim);
300 AliFemtoCorrFctnDirectYlm *cylmkT3pim = new AliFemtoCorrFctnDirectYlm("cylmkT3pim",3,80,0.0,0.8,1);
301 cylmkT3pim->SetPairSelectionCut(ktpairkT3pim);
302 anpim->AddCorrFctn(cylmkT3pim);
304 AliFemtoQinvCorrFctn *cqinvkt1pim = new AliFemtoQinvCorrFctn("qinvcfkt1pim", 100,0.0,1.0);
305 cqinvkt1pim->SetPairSelectionCut(ktpairkT1pim);
306 anpim->AddCorrFctn(cqinvkt1pim);
308 AliFemtoQinvCorrFctn *cqinvkt2pim = new AliFemtoQinvCorrFctn("qinvcfkt2pim", 100,0.0,1.0);
309 cqinvkt2pim->SetPairSelectionCut(ktpairkT2pim);
310 anpim->AddCorrFctn(cqinvkt2pim);
312 AliFemtoQinvCorrFctn *cqinvkt3pim = new AliFemtoQinvCorrFctn("qinvcfkt3pim", 100,0.0,1.0);
313 cqinvkt3pim->SetPairSelectionCut(ktpairkT3pim);
314 anpim->AddCorrFctn(cqinvkt3pim);
316 // Setting up the model calculation
317 // First create the freeze-out generator
318 AliFemtoModelGausLCMSFreezeOutGenerator *tFreezepim = new AliFemtoModelGausLCMSFreezeOutGenerator();
319 tFreezepim->SetSizeOut(1.8*TMath::Sqrt(2.0));
320 tFreezepim->SetSizeSide(1.3*TMath::Sqrt(2.0));
321 tFreezepim->SetSizeLong(1.6*TMath::Sqrt(2.0));
323 // And the weight generator
324 AliFemtoModelWeightGeneratorBasic *tWeightpim = new AliFemtoModelWeightGeneratorBasic();
325 tWeightpim->SetPairType(AliFemtoModelWeightGenerator::PionPlusPionPlus());
327 // Create a manager that will connect it
328 AliFemtoModelManager *tModelManagerpim = new AliFemtoModelManager();
329 tModelManagerpim->AcceptFreezeOutGenerator(tFreezepim);
330 tModelManagerpim->AcceptWeightGenerator(tWeightpim);
331 tModelManagerpim->CreateCopyHiddenInfo(kFALSE);
333 // Model correlation functions
334 AliFemtoModelCorrFctn *c1dpipim;
335 AliFemtoModelBPLCMSCorrFctn *c3dsmallkt1pim;
336 AliFemtoModelBPLCMSCorrFctn *c3dsmallkt2pim;
337 AliFemtoModelBPLCMSCorrFctn *c3dsmallkt3pim;
339 c1dpipim = new AliFemtoModelCorrFctn("c1dpipim",100,0.0,1.0);
340 c1dpipim->ConnectToManager(tModelManagerpim);
342 c3dsmallkt1pim = new AliFemtoModelBPLCMSCorrFctn("c3dsmallkt1pim",40, -0.4, 0.4);
343 c3dsmallkt1pim->SetSpecificPairCut(ktpairkT1pim);
344 c3dsmallkt1pim->ConnectToManager(tModelManagerpim);
346 c3dsmallkt2pim = new AliFemtoModelBPLCMSCorrFctn("c3dsmallkt2pim",40, -0.4, 0.4);
347 c3dsmallkt2pim->SetSpecificPairCut(ktpairkT2pim);
348 c3dsmallkt2pim->ConnectToManager(tModelManagerpim);
350 c3dsmallkt3pim = new AliFemtoModelBPLCMSCorrFctn("c3dsmallkt3pim",40, -0.4, 0.4);
351 c3dsmallkt3pim->SetSpecificPairCut(ktpairkT3pim);
352 c3dsmallkt3pim->ConnectToManager(tModelManagerpim);
354 AliFemtoModelCorrFctnDirectYlm *cmylmkt1pim = new AliFemtoModelCorrFctnDirectYlm("mcylmkt1pim",3,80,0.0,0.8,1);
355 cmylmkt1pim->SetPairSelectionCut(ktpairkT1pim);
356 cmylmkt1pim->ConnectToManager(tModelManagerpim);
358 AliFemtoModelCorrFctnDirectYlm *cmylmkt2pim = new AliFemtoModelCorrFctnDirectYlm("mcylmkt2pim",3,80,0.0,0.8,1);
359 cmylmkt2pim->SetPairSelectionCut(ktpairkT2pim);
360 cmylmkt2pim->ConnectToManager(tModelManagerpim);
362 AliFemtoModelCorrFctnDirectYlm *cmylmkt3pim = new AliFemtoModelCorrFctnDirectYlm("mcylmkt3pim",3,80,0.0,0.8,1);
363 cmylmkt3pim->SetPairSelectionCut(ktpairkT3pim);
364 cmylmkt3pim->ConnectToManager(tModelManagerpim);
366 // Add correlation functions to the analysis
367 anpim->AddCorrFctn(csqqinvpim);
368 anpim->AddCorrFctn(cchiqinvpim);
369 anpim->AddCorrFctn(cqtpcnclspim);
370 anpim->AddCorrFctn(c3dsmallkt1pim);
371 anpim->AddCorrFctn(c3dsmallkt2pim);
372 anpim->AddCorrFctn(c3dsmallkt3pim);
373 anpim->AddCorrFctn(c1dpipim);
374 anpim->AddCorrFctn(cmylmkt1pim);
375 anpim->AddCorrFctn(cmylmkt2pim);
376 anpim->AddCorrFctn(cmylmkt3pim);
378 Manager->AddAnalysis(anpim);
380 // *** End pion-pion (negative) analysis
383 if (runPositiveKaons) {
384 // *** Begin Kaon-Kaon (positive) analysis
385 AliFemtoVertexMultAnalysis *ankp = new AliFemtoVertexMultAnalysis(18, -15.6, 15.6, 1, 2, 20000);
386 ankp->SetNumEventsToMix(5);
387 ankp->SetMinSizePartCollection(2);
389 AliFemtoBasicEventCut* meckp = new AliFemtoBasicEventCut();
390 meckp->SetEventMult(1,100000);
391 meckp->SetVertZPos(-1000,1000);
393 AliFemtoESDTrackCut* dtckp = new AliFemtoESDTrackCut();
394 dtckp->SetPidProbKaon(0.7,1.001);
395 dtckp->SetPidProbMuon(0.0,0.5);
396 dtckp->SetPidProbPion(0.0,0.5);
397 dtckp->SetPidProbProton(0.0,0.5);
398 dtckp->SetCharge(1.0);
399 dtckp->SetMostProbableKaon();
400 dtckp->SetMomRangeTOFpidIs(0.6,10000.);
401 dtckp->SetPt(0.15,2.0);
402 dtckp->SetMass(KaonMass);
403 // Track quality cuts
404 dtckp->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
405 dtckp->SetminTPCncls(50);
406 dtckp->SetRemoveKinks(kTRUE);
407 dtckp->SetLabel(kFALSE);
408 dtckp->SetMaxITSChiNdof(2.5);
409 dtckp->SetMaxTPCChiNdof(3.0);
410 dtckp->SetMaxImpactXY(3.0);
411 dtckp->SetMaxImpactZ(3.0);
413 AliFemtoCutMonitorParticleYPt *cutPassYPtkp = new AliFemtoCutMonitorParticleYPt("cutPasskp", 0.493677);
414 AliFemtoCutMonitorParticleYPt *cutFailYPtkp = new AliFemtoCutMonitorParticleYPt("cutFailkp", 0.493677);
415 dtckp->AddCutMonitor(cutPassYPtkp, cutFailYPtkp);
417 AliFemtoCutMonitorParticlePtPDG *cutPassPidkp = new AliFemtoCutMonitorParticlePtPDG("cutPasskp", 0.493677);
418 AliFemtoCutMonitorParticlePtPDG *cutFailPidkp = new AliFemtoCutMonitorParticlePtPDG("cutFailkp", 0.493677);
419 dtckp->AddCutMonitor(cutPassPidkp, cutFailPidkp);
421 AliFemtoCutMonitorParticleMomRes *cutPassMRkp = new AliFemtoCutMonitorParticleMomRes("cutPasskp");
422 AliFemtoCutMonitorParticleMomRes *cutFailMRkp = new AliFemtoCutMonitorParticleMomRes("cutFailkp");
423 dtckp->AddCutMonitor(cutPassMRkp, cutFailMRkp);
425 AliFemtoCutMonitorParticleVertPos *cutPassVPkp = new AliFemtoCutMonitorParticleVertPos("cutPasskp");
426 AliFemtoCutMonitorParticleVertPos *cutFailVPkp = new AliFemtoCutMonitorParticleVertPos("cutFailkp");
427 dtckp->AddCutMonitor(cutPassVPkp, cutFailVPkp);
429 AliFemtoCutMonitorEventMult *cutPassEvMkp = new AliFemtoCutMonitorEventMult("cutPasskp");
430 AliFemtoCutMonitorEventMult *cutFailEvMkp = new AliFemtoCutMonitorEventMult("cutFailkp");
431 meckp->AddCutMonitor(cutPassEvMkp, cutFailEvMkp);
433 AliFemtoCutMonitorEventVertex *cutPassEvVkp = new AliFemtoCutMonitorEventVertex("cutPasskp");
434 AliFemtoCutMonitorEventVertex *cutFailEvVkp = new AliFemtoCutMonitorEventVertex("cutFailkp");
435 meckp->AddCutMonitor(cutPassEvVkp, cutFailEvVkp);
437 AliFemtoShareQualityTPCEntranceSepPairCut *sqpckp = new AliFemtoShareQualityTPCEntranceSepPairCut();
438 sqpckp->SetShareQualityMax(0.0);
439 sqpckp->SetShareFractionMax(0.02);
440 sqpckp->SetRemoveSameLabel(kFALSE);
441 sqpckp->SetTPCEntranceSepMinimum(3.0);
443 ankp->SetEventCut(meckp);
444 ankp->SetFirstParticleCut(dtckp);
445 ankp->SetSecondParticleCut(dtckp);
446 ankp->SetPairCut(sqpckp);
448 AliFemtoQinvCorrFctn *cqinvkp= new AliFemtoQinvCorrFctn("qinvcf",100,0.0,1.0);
450 AliFemtoModelBPLCMSCorrFctn *c3dsmallkp;
451 AliFemtoModelCorrFctn *c1dpikp;
453 // Setting up the model calculation
454 // First create the freeze-out generator
455 AliFemtoModelGausRinvFreezeOutGenerator *tFreezekp = new AliFemtoModelGausRinvFreezeOutGenerator();
456 tFreezekp->SetSizeInv(1.8*TMath::Sqrt(2.0));
457 tFreezekp->SetSelectPrimaryFromHidden(false);
459 // And the weight generator
460 // AliFemtoModelWeightGeneratorBasic *tWeightkp = new AliFemtoModelWeightGeneratorBasic();
461 // tWeightkp->SetPairType(AliFemtoModelWeightGenerator::KaonPlusKaonPlus());
462 AliFemtoModelWeightGeneratorLednicky *tWeightkp = new AliFemtoModelWeightGeneratorLednicky();
463 tWeightkp->SetPairType(AliFemtoModelWeightGenerator::KaonPlusKaonPlus());
464 tWeightkp->SetCoulOn();
465 tWeightkp->SetQuantumOn();
466 tWeightkp->SetStrongOff();
467 tWeightkp->Set3BodyOff();
469 // Create a manager that will connect it
470 AliFemtoModelManager *tModelManagerkp = new AliFemtoModelManager();
471 tModelManagerkp->AcceptFreezeOutGenerator(tFreezekp);
472 tModelManagerkp->AcceptWeightGenerator(tWeightkp);
473 tModelManagerkp->CreateCopyHiddenInfo(kFALSE);
475 c3dsmallkp = new AliFemtoModelBPLCMSCorrFctn("c3dsmallkp",30, 0.0, 0.6);
476 c3dsmallkp->ConnectToManager(tModelManagerkp);
478 c1dpikp = new AliFemtoModelCorrFctn("c1dpikp",100,0.0,1.0);
479 c1dpikp->ConnectToManager(tModelManagerkp);
482 ankp->AddCorrFctn(cqinvkp);
484 ankp->AddCorrFctn(c3dsmallkp);
485 ankp->AddCorrFctn(c1dpikp);
487 Manager->AddAnalysis(ankp);
489 // *** End Kaon-Kaon (positive) analysis
492 if (runNegativeKaons) {
493 // *** Begin Kaon-Kaon (negative) analysis
494 AliFemtoVertexMultAnalysis *ankm = new AliFemtoVertexMultAnalysis(18, -15.6, 15.6, 1, 2, 20000);
495 ankm->SetNumEventsToMix(5);
496 ankm->SetMinSizePartCollection(2);
498 AliFemtoBasicEventCut* meckm = new AliFemtoBasicEventCut();
499 meckm->SetEventMult(1,100000);
500 meckm->SetVertZPos(-1000,1000);
502 AliFemtoESDTrackCut* dtckm = new AliFemtoESDTrackCut();
503 dtckm->SetPidProbKaon(0.7,1.001);
504 dtckm->SetPidProbMuon(0.0,0.5);
505 dtckm->SetPidProbPion(0.0,0.5);
506 dtckm->SetPidProbProton(0.0,0.5);
507 dtckp->SetMomRangeTOFpidIs(0.6,10000.);
508 dtckm->SetCharge(-1.0);
509 dtckm->SetMostProbableKaon();
510 dtckm->SetPt(0.15,2.0);
511 dtckm->SetMass(KaonMass);
512 // Track quality cuts
513 dtckm->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
514 dtckm->SetminTPCncls(50);
515 dtckm->SetRemoveKinks(kTRUE);
516 dtckm->SetLabel(kFALSE);
517 dtckm->SetMaxITSChiNdof(2.5);
518 dtckm->SetMaxTPCChiNdof(3.0);
519 dtckm->SetMaxImpactXY(3.0);
520 dtckm->SetMaxImpactZ(3.0);
522 AliFemtoCutMonitorParticleYPt *cutPassYPtkm = new AliFemtoCutMonitorParticleYPt("cutPasskm", 0.493677);
523 AliFemtoCutMonitorParticleYPt *cutFailYPtkm = new AliFemtoCutMonitorParticleYPt("cutFailkm", 0.493677);
524 dtckm->AddCutMonitor(cutPassYPtkm, cutFailYPtkm);
526 AliFemtoCutMonitorParticlePtPDG *cutPassPidkm = new AliFemtoCutMonitorParticlePtPDG("cutPasskm", 0.493677);
527 AliFemtoCutMonitorParticlePtPDG *cutFailPidkm = new AliFemtoCutMonitorParticlePtPDG("cutFailkm", 0.493677);
528 dtckm->AddCutMonitor(cutPassPidkm, cutFailPidkm);
530 AliFemtoCutMonitorParticleMomRes *cutPassMRkm = new AliFemtoCutMonitorParticleMomRes("cutPasskm");
531 AliFemtoCutMonitorParticleMomRes *cutFailMRkm = new AliFemtoCutMonitorParticleMomRes("cutFailkm");
532 dtckm->AddCutMonitor(cutPassMRkm, cutFailMRkm);
534 AliFemtoCutMonitorParticleVertPos *cutPassVPkm = new AliFemtoCutMonitorParticleVertPos("cutPasskm");
535 AliFemtoCutMonitorParticleVertPos *cutFailVPkm = new AliFemtoCutMonitorParticleVertPos("cutFailkm");
536 dtckm->AddCutMonitor(cutPassVPkm, cutFailVPkm);
538 AliFemtoCutMonitorEventMult *cutPassEvMkm = new AliFemtoCutMonitorEventMult("cutPasskm");
539 AliFemtoCutMonitorEventMult *cutFailEvMkm = new AliFemtoCutMonitorEventMult("cutFailkm");
540 meckm->AddCutMonitor(cutPassEvMkm, cutFailEvMkm);
542 AliFemtoCutMonitorEventVertex *cutPassEvVkm = new AliFemtoCutMonitorEventVertex("cutPasskm");
543 AliFemtoCutMonitorEventVertex *cutFailEvVkm = new AliFemtoCutMonitorEventVertex("cutFailkm");
544 meckm->AddCutMonitor(cutPassEvVkm, cutFailEvVkm);
546 AliFemtoShareQualityTPCEntranceSepPairCut *sqpckm = new AliFemtoShareQualityTPCEntranceSepPairCut();
547 sqpckm->SetShareQualityMax(0.0);
548 sqpckm->SetShareFractionMax(0.02);
549 sqpckm->SetRemoveSameLabel(kFALSE);
550 sqpckm->SetTPCEntranceSepMinimum(3.0);
552 ankm->SetEventCut(meckm);
553 ankm->SetFirstParticleCut(dtckm);
554 ankm->SetSecondParticleCut(dtckm);
555 ankm->SetPairCut(sqpckm);
557 AliFemtoQinvCorrFctn *cqinvkm= new AliFemtoQinvCorrFctn("qinvcf",100,0.0,1.0);
559 AliFemtoModelBPLCMSCorrFctn *c3dsmallkm;
560 AliFemtoModelCorrFctn *c1dpikm;
562 // Setting up the model calculation
563 // First create the freeze-out generator
564 AliFemtoModelGausRinvFreezeOutGenerator *tFreezekm = new AliFemtoModelGausRinvFreezeOutGenerator();
565 tFreezekm->SetSizeInv(1.8*TMath::Sqrt(2.0));
566 tFreezekm->SetSelectPrimaryFromHidden(false);
568 // And the weight generator
569 // AliFemtoModelWeightGeneratorBasic *tWeightkp = new AliFemtoModelWeightGeneratorBasic();
570 // tWeightkp->SetPairType(AliFemtoModelWeightGenerator::KaonPlusKaonPlus());
571 AliFemtoModelWeightGeneratorLednicky *tWeightkm = new AliFemtoModelWeightGeneratorLednicky();
572 tWeightkm->SetPairType(AliFemtoModelWeightGenerator::KaonPlusKaonPlus());
573 tWeightkm->SetCoulOn();
574 tWeightkm->SetQuantumOn();
575 tWeightkm->SetStrongOff();
576 tWeightkm->Set3BodyOff();
578 // Create a manager that will connect it
579 AliFemtoModelManager *tModelManagerkm = new AliFemtoModelManager();
580 tModelManagerkm->AcceptFreezeOutGenerator(tFreezekp);
581 tModelManagerkm->AcceptWeightGenerator(tWeightkp);
582 tModelManagerkm->CreateCopyHiddenInfo(kFALSE);
584 c3dsmallkm = new AliFemtoModelBPLCMSCorrFctn("c3dsmallkm",30, 0.0, 0.6);
585 c3dsmallkm->ConnectToManager(tModelManagerkm);
587 c1dpikm = new AliFemtoModelCorrFctn("c1dpikm",100,0.0,1.0);
588 c1dpikm->ConnectToManager(tModelManagerkm);
591 ankm->AddCorrFctn(cqinvkm);
593 ankm->AddCorrFctn(c3dsmallkm);
594 ankm->AddCorrFctn(c1dpikm);
596 Manager->AddAnalysis(ankm);
598 // *** End Kaon-Kaon (negative) analysis
601 if (runPositiveNegativeKaons) {
602 // *** Begin Kaon+Kaon- analysis
603 AliFemtoVertexMultAnalysis *ankpkm = new AliFemtoVertexMultAnalysis(18, -15.6, 15.6, 1, 2, 20000);
604 ankpkm->SetNumEventsToMix(5);
605 ankpkm->SetMinSizePartCollection(2);
607 AliFemtoBasicEventCut* meckpkm = new AliFemtoBasicEventCut();
608 meckpkm->SetEventMult(1,100000);
609 meckpkm->SetVertZPos(-1000,1000);
611 AliFemtoESDTrackCut* dtckp = new AliFemtoESDTrackCut();
612 dtckp->SetPidProbKaon(0.7,1.001);
613 dtckp->SetPidProbMuon(0.0,0.5);
614 dtckp->SetPidProbPion(0.0,0.5);
615 dtckp->SetPidProbProton(0.0,0.5);
616 dtckp->SetMomRangeTOFpidIs(0.6,10000.);
617 dtckp->SetCharge(1.0);
618 dtckp->SetMostProbableKaon();
619 dtckp->SetPt(0.15,2.0);
620 dtckp->SetMass(KaonMass);
621 // Track quality cuts
622 dtckp->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
623 dtckp->SetminTPCncls(50);
624 dtckp->SetRemoveKinks(kTRUE);
625 dtckp->SetLabel(kFALSE);
626 dtckp->SetMaxITSChiNdof(2.5);
627 dtckp->SetMaxTPCChiNdof(3.0);
628 dtckp->SetMaxImpactXY(3.0);
629 dtckp->SetMaxImpactZ(3.0);
631 AliFemtoESDTrackCut* dtckm = new AliFemtoESDTrackCut();
632 dtckm->SetPidProbKaon(0.7,1.001);
633 dtckm->SetPidProbMuon(0.0,0.5);
634 dtckm->SetPidProbPion(0.0,0.5);
635 dtckm->SetPidProbProton(0.0,0.5);
636 dtckm->SetMomRangeTOFpidIs(0.6,10000.);
637 dtckm->SetCharge(-1.0);
638 dtckm->SetMostProbableKaon();
639 dtckm->SetPt(0.15,2.0);
640 dtckm->SetMass(KaonMass);
641 // Track quality cuts
642 dtckm->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
643 dtckm->SetminTPCncls(50);
644 dtckm->SetRemoveKinks(kTRUE);
645 dtckm->SetLabel(kFALSE);
646 dtckm->SetMaxITSChiNdof(2.5);
647 dtckm->SetMaxTPCChiNdof(3.0);
648 dtckm->SetMaxImpactXY(3.0);
649 dtckm->SetMaxImpactZ(3.0);
652 AliFemtoCutMonitorParticleYPt *cutPassYPtkp = new AliFemtoCutMonitorParticleYPt("cutPasskp", 0.493677);
653 AliFemtoCutMonitorParticleYPt *cutFailYPtkp = new AliFemtoCutMonitorParticleYPt("cutFailkp", 0.493677);
654 dtckp->AddCutMonitor(cutPassYPtkp, cutFailYPtkp);
656 AliFemtoCutMonitorParticleYPt *cutPassYPtkm = new AliFemtoCutMonitorParticleYPt("cutPasskm", 0.493677);
657 AliFemtoCutMonitorParticleYPt *cutFailYPtkm = new AliFemtoCutMonitorParticleYPt("cutFailkm", 0.493677);
658 dtckm->AddCutMonitor(cutPassYPtkm, cutFailYPtkm);
660 AliFemtoCutMonitorParticlePtPDG *cutPassPidkp = new AliFemtoCutMonitorParticlePtPDG("cutPasskp", 0.493677);
661 AliFemtoCutMonitorParticlePtPDG *cutFailPidkp = new AliFemtoCutMonitorParticlePtPDG("cutFailkp", 0.493677);
662 dtckp->AddCutMonitor(cutPassPidkp, cutFailPidkp);
664 AliFemtoCutMonitorParticlePtPDG *cutPassPidkm = new AliFemtoCutMonitorParticlePtPDG("cutPasskm", 0.493677);
665 AliFemtoCutMonitorParticlePtPDG *cutFailPidkm = new AliFemtoCutMonitorParticlePtPDG("cutFailkm", 0.493677);
666 dtckm->AddCutMonitor(cutPassPidkm, cutFailPidkm);
668 AliFemtoCutMonitorParticleMomRes *cutPassMRkp = new AliFemtoCutMonitorParticleMomRes("cutPasskp");
669 AliFemtoCutMonitorParticleMomRes *cutFailMRkp = new AliFemtoCutMonitorParticleMomRes("cutFailkp");
670 dtckp->AddCutMonitor(cutPassMRkp, cutFailMRkp);
672 AliFemtoCutMonitorParticleMomRes *cutPassMRkm = new AliFemtoCutMonitorParticleMomRes("cutPasskm");
673 AliFemtoCutMonitorParticleMomRes *cutFailMRkm = new AliFemtoCutMonitorParticleMomRes("cutFailkm");
674 dtckm->AddCutMonitor(cutPassMRkm, cutFailMRkm);
676 AliFemtoCutMonitorParticleVertPos *cutPassVPkp = new AliFemtoCutMonitorParticleVertPos("cutPasskp");
677 AliFemtoCutMonitorParticleVertPos *cutFailVPkp = new AliFemtoCutMonitorParticleVertPos("cutFailkp");
678 dtckp->AddCutMonitor(cutPassVPkp, cutFailVPkp);
680 AliFemtoCutMonitorParticleVertPos *cutPassVPkm = new AliFemtoCutMonitorParticleVertPos("cutPasskm");
681 AliFemtoCutMonitorParticleVertPos *cutFailVPkm = new AliFemtoCutMonitorParticleVertPos("cutFailkm");
682 dtckm->AddCutMonitor(cutPassVPkm, cutFailVPkm);
684 AliFemtoCutMonitorEventMult *cutPassEvMkpkm = new AliFemtoCutMonitorEventMult("cutPasskpkm");
685 AliFemtoCutMonitorEventMult *cutFailEvMkpkm = new AliFemtoCutMonitorEventMult("cutFailkpkm");
686 meckpkm->AddCutMonitor(cutPassEvMkpkm, cutFailEvMkpkm);
688 AliFemtoCutMonitorEventVertex *cutPassEvVkpkm = new AliFemtoCutMonitorEventVertex("cutPasskpkm");
689 AliFemtoCutMonitorEventVertex *cutFailEvVkpkm = new AliFemtoCutMonitorEventVertex("cutFailkpkm");
690 meckpkm->AddCutMonitor(cutPassEvVkpkm, cutFailEvVkpkm);
692 AliFemtoShareQualityTPCEntranceSepPairCut *sqpckpkm = new AliFemtoShareQualityTPCEntranceSepPairCut();
693 sqpckpkm->SetShareQualityMax(0.0);
694 sqpckpkm->SetShareFractionMax(0.02);
695 sqpckpkm->SetRemoveSameLabel(kFALSE);
696 sqpckpkm->SetTPCEntranceSepMinimum(3.0);
698 ankpkm->SetEventCut(meckpkm);
699 ankpkm->SetFirstParticleCut(dtckp);
700 ankpkm->SetSecondParticleCut(dtckm);
701 ankpkm->SetPairCut(sqpckpkm);
703 AliFemtoQinvCorrFctn *cqinvkpkm= new AliFemtoQinvCorrFctn("qinvcf",100,0.0,1.0);
705 AliFemtoModelBPLCMSCorrFctn *c3dsmallkpkm;
706 AliFemtoModelCorrFctn *c1dpikpkm;
708 // Setting up the model calculation
709 // First create the freeze-out generator
710 AliFemtoModelGausRinvFreezeOutGenerator *tFreezekpkm = new AliFemtoModelGausRinvFreezeOutGenerator();
711 tFreezekpkm->SetSizeInv(1.8*TMath::Sqrt(2.0));
712 tFreezekpkm->SetSelectPrimaryFromHidden(false);
714 // And the weight generator
715 AliFemtoModelWeightGeneratorLednicky *tWeightkpkm = new AliFemtoModelWeightGeneratorLednicky();
716 tWeightkpkm->SetPairType(AliFemtoModelWeightGenerator::KaonPlusKaonMinus());
717 tWeightkpkm->SetCoulOn();
718 tWeightkpkm->SetQuantumOn();
719 tWeightkpkm->SetStrongOff();
720 tWeightkpkm->Set3BodyOff();
722 // Create a manager that will connect it
723 AliFemtoModelManager *tModelManagerkpkm = new AliFemtoModelManager();
724 tModelManagerkpkm->AcceptFreezeOutGenerator(tFreezekpkm);
725 tModelManagerkpkm->AcceptWeightGenerator(tWeightkpkm);
726 tModelManagerkpkm->CreateCopyHiddenInfo(kFALSE);
728 c3dsmallkpkm = new AliFemtoModelBPLCMSCorrFctn("c3dsmallkpkm",30, 0.0, 0.6);
729 c3dsmallkpkm->ConnectToManager(tModelManagerkpkm);
731 c1dpikpkm = new AliFemtoModelCorrFctn("c1dpikpkm",100,0.0,1.0);
732 c1dpikpkm->ConnectToManager(tModelManagerkpkm);
735 ankpkm->AddCorrFctn(cqinvkpkm);
737 ankpkm->AddCorrFctn(c3dsmallkpkm);
738 ankpkm->AddCorrFctn(c1dpikpkm);
740 Manager->AddAnalysis(ankpkm);
742 // *** End Kaon+Kaon- analysis
744 // if (runPositiveKaons) {
745 // // *** Begin Kaon-Kaon (positive) analysis
746 // AliFemtoVertexMultAnalysis *ankp = new AliFemtoVertexMultAnalysis(10, -15.6, 15.6, 1, 2, 20000);
747 // ankp->SetNumEventsToMix(10);
748 // ankp->SetMinSizePartCollection(2);
750 // AliFemtoBasicEventCut* meckp = new AliFemtoBasicEventCut();
751 // meckp->SetEventMult(1,100000);
752 // meckp->SetVertZPos(-1000,1000);
754 // AliFemtoESDTrackCut* dtckp = new AliFemtoESDTrackCut();
755 // dtckp->SetPidProbKaon(0.7,1.001);
756 // dtckp->SetPidProbMuon(0.0,0.5);
757 // dtckp->SetPidProbPion(0.0,0.5);
758 // dtckp->SetPidProbProton(0.0,0.5);
759 // dtckp->SetCharge(1.0);
760 // dtckp->SetMostProbableKaon();
761 // dtckp->SetPt(0.15,2.0);
762 // dtckp->SetMass(KaonMass);
763 // dtckp->SetRapidity(-0.8,0.8);
764 // // Track quality cuts
765 // dtckp->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
766 // //dtckp->SetStatus(AliESDtrack::kTPCrefit);
767 // // dtckp->SetminTPCclsF(95);
768 // dtckp->SetminTPCncls(50);
769 // dtckp->SetRemoveKinks(kTRUE);
770 // dtckp->SetLabel(kFALSE);
771 // dtckp->SetMaxITSChiNdof(2.5);
772 // dtckp->SetMaxTPCChiNdof(3.0);
773 // // dtckp->SetMaxSigmaToVertex(3.0);
774 // dtckp->SetMaxImpactXY(3.0);
775 // dtckp->SetMaxImpactZ(3.0);
777 // AliFemtoCutMonitorParticleYPt *cutPassYPtkp = new AliFemtoCutMonitorParticleYPt("cutPasskp", 0.493677);
778 // AliFemtoCutMonitorParticleYPt *cutFailYPtkp = new AliFemtoCutMonitorParticleYPt("cutFailkp", 0.493677);
779 // dtckp->AddCutMonitor(cutPassYPtkp, cutFailYPtkp);
781 // AliFemtoCutMonitorParticlePtPDG *cutPassPidkp = new AliFemtoCutMonitorParticlePtPDG("cutPasskp", 0.493677);
782 // AliFemtoCutMonitorParticlePtPDG *cutFailPidkp = new AliFemtoCutMonitorParticlePtPDG("cutFailkp", 0.493677);
783 // dtckp->AddCutMonitor(cutPassPidkp, cutFailPidkp);
785 // AliFemtoCutMonitorParticleMomRes *cutPassMRkp = new AliFemtoCutMonitorParticleMomRes("cutPasskp");
786 // AliFemtoCutMonitorParticleMomRes *cutFailMRkp = new AliFemtoCutMonitorParticleMomRes("cutFailkp");
787 // dtckp->AddCutMonitor(cutPassMRkp, cutFailMRkp);
789 // AliFemtoCutMonitorParticleVertPos *cutPassVPkp = new AliFemtoCutMonitorParticleVertPos("cutPasskp");
790 // AliFemtoCutMonitorParticleVertPos *cutFailVPkp = new AliFemtoCutMonitorParticleVertPos("cutFailkp");
791 // dtckp->AddCutMonitor(cutPassVPkp, cutFailVPkp);
793 // AliFemtoCutMonitorEventMult *cutPassEvMkp = new AliFemtoCutMonitorEventMult("cutPasskp");
794 // AliFemtoCutMonitorEventMult *cutFailEvMkp = new AliFemtoCutMonitorEventMult("cutFailkp");
795 // meckp->AddCutMonitor(cutPassEvMkp, cutFailEvMkp);
797 // AliFemtoCutMonitorEventVertex *cutPassEvVkp = new AliFemtoCutMonitorEventVertex("cutPasskp");
798 // AliFemtoCutMonitorEventVertex *cutFailEvVkp = new AliFemtoCutMonitorEventVertex("cutFailkp");
799 // meckp->AddCutMonitor(cutPassEvVkp, cutFailEvVkp);
801 // AliFemtoShareQualityTPCEntranceSepPairCut *sqpckp = new AliFemtoShareQualityTPCEntranceSepPairCut();
802 // sqpckp->SetShareQualityMax(0.0);
803 // sqpckp->SetShareFractionMax(0.02);
804 // sqpckp->SetRemoveSameLabel(kFALSE);
805 // sqpckp->SetTPCEntranceSepMinimum(3.0);
807 // ankp->SetEventCut(meckp);
808 // ankp->SetFirstParticleCut(dtckp);
809 // ankp->SetSecondParticleCut(dtckp);
810 // ankp->SetPairCut(sqpckp);
812 // AliFemtoQinvCorrFctn *cqinvkp= new AliFemtoQinvCorrFctn("qinvcf",100,0.0,1.0);
814 // AliFemtoModelBPLCMSCorrFctn *c3dsmallkp;
815 // AliFemtoModelCorrFctn *c1dpikp;
817 // // Setting up the model calculation
818 // // First create the freeze-out generator
819 // AliFemtoModelGausRinvFreezeOutGenerator *tFreezekp = new AliFemtoModelGausRinvFreezeOutGenerator();
820 // tFreezekp->SetSizeInv(1.8*TMath::Sqrt(2.0));
821 // tFreezekp->SetSelectPrimaryFromHidden(false);
823 // // And the weight generator
824 // // AliFemtoModelWeightGeneratorBasic *tWeightkp = new AliFemtoModelWeightGeneratorBasic();
825 // // tWeightkp->SetPairType(AliFemtoModelWeightGenerator::KaonPlusKaonPlus());
826 // AliFemtoModelWeightGeneratorLednicky *tWeightkp = new AliFemtoModelWeightGeneratorLednicky();
827 // tWeightkp->SetPairType(AliFemtoModelWeightGenerator::KaonPlusKaonPlus());
828 // tWeightkp->SetCoulOn();
829 // tWeightkp->SetQuantumOn();
830 // tWeightkp->SetStrongOff();
831 // tWeightkp->Set3BodyOff();
833 // // Create a manager that will connect it
834 // AliFemtoModelManager *tModelManagerkp = new AliFemtoModelManager();
835 // tModelManagerkp->AcceptFreezeOutGenerator(tFreezekp);
836 // tModelManagerkp->AcceptWeightGenerator(tWeightkp);
837 // tModelManagerkp->CreateCopyHiddenInfo(kFALSE);
839 // c3dsmallkp = new AliFemtoModelBPLCMSCorrFctn("c3dsmallkp",30, 0.0, 0.6);
840 // c3dsmallkp->ConnectToManager(tModelManagerkp);
842 // c1dpikp = new AliFemtoModelCorrFctn("c1dpikp",100,0.0,1.0);
843 // c1dpikp->ConnectToManager(tModelManagerkp);
846 // ankp->AddCorrFctn(cqinvkp);
848 // ankp->AddCorrFctn(c3dsmallkp);
849 // ankp->AddCorrFctn(c1dpikp);
851 // Manager->AddAnalysis(ankp);
853 // // *** End Kaon-Kaon (positive) analysis
856 // if (runNegativeKaons) {
857 // // *** Begin Kaon-Kaon (negative) analysis
858 // AliFemtoVertexMultAnalysis *ankm = new AliFemtoVertexMultAnalysis(10, -15.6, 15.6, 1, 2, 20000);
859 // ankm->SetNumEventsToMix(10);
860 // ankm->SetMinSizePartCollection(2);
862 // AliFemtoBasicEventCut* meckm = new AliFemtoBasicEventCut();
863 // meckm->SetEventMult(1,100000);
864 // meckm->SetVertZPos(-1000,1000);
866 // AliFemtoESDTrackCut* dtckm = new AliFemtoESDTrackCut();
867 // dtckm->SetPidProbKaon(0.7,1.001);
868 // dtckm->SetPidProbMuon(0.0,0.5);
869 // dtckm->SetPidProbPion(0.0,0.5);
870 // dtckm->SetPidProbProton(0.0,0.5);
871 // dtckm->SetCharge(1.0);
872 // dtckm->SetMostProbableKaon();
873 // dtckm->SetPt(0.15,2.0);
874 // dtckm->SetMass(KaonMass);
875 // dtckm->SetRapidity(-0.8,0.8);
876 // // Track quality cuts
877 // dtckm->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
878 // //dtckm->SetStatus(AliESDtrack::kTPCrefit);
879 // // dtckm->SetminTPCclsF(95);
880 // dtckm->SetminTPCncls(50);
881 // dtckm->SetRemoveKinks(kTRUE);
882 // dtckm->SetLabel(kFALSE);
883 // dtckm->SetMaxITSChiNdof(2.5);
884 // dtckm->SetMaxTPCChiNdof(3.0);
885 // // dtckm->SetMaxSigmaToVertex(3.0);
886 // dtckm->SetMaxImpactXY(3.0);
887 // dtckm->SetMaxImpactZ(3.0);
889 // AliFemtoCutMonitorParticleYPt *cutPassYPtkm = new AliFemtoCutMonitorParticleYPt("cutPasskm", 0.493677);
890 // AliFemtoCutMonitorParticleYPt *cutFailYPtkm = new AliFemtoCutMonitorParticleYPt("cutFailkm", 0.493677);
891 // dtckm->AddCutMonitor(cutPassYPtkm, cutFailYPtkm);
893 // AliFemtoCutMonitorParticlePtPDG *cutPassPidkm = new AliFemtoCutMonitorParticlePtPDG("cutPasskm", 0.493677);
894 // AliFemtoCutMonitorParticlePtPDG *cutFailPidkm = new AliFemtoCutMonitorParticlePtPDG("cutFailkm", 0.493677);
895 // dtckm->AddCutMonitor(cutPassPidkm, cutFailPidkm);
897 // AliFemtoCutMonitorParticleMomRes *cutPassMRkm = new AliFemtoCutMonitorParticleMomRes("cutPasskm");
898 // AliFemtoCutMonitorParticleMomRes *cutFailMRkm = new AliFemtoCutMonitorParticleMomRes("cutFailkm");
899 // dtckm->AddCutMonitor(cutPassMRkm, cutFailMRkm);
901 // AliFemtoCutMonitorParticleVertPos *cutPassVPkm = new AliFemtoCutMonitorParticleVertPos("cutPasskm");
902 // AliFemtoCutMonitorParticleVertPos *cutFailVPkm = new AliFemtoCutMonitorParticleVertPos("cutFailkm");
903 // dtckm->AddCutMonitor(cutPassVPkm, cutFailVPkm);
905 // AliFemtoCutMonitorEventMult *cutPassEvMkm = new AliFemtoCutMonitorEventMult("cutPasskm");
906 // AliFemtoCutMonitorEventMult *cutFailEvMkm = new AliFemtoCutMonitorEventMult("cutFailkm");
907 // meckm->AddCutMonitor(cutPassEvMkm, cutFailEvMkm);
909 // AliFemtoCutMonitorEventVertex *cutPassEvVkm = new AliFemtoCutMonitorEventVertex("cutPasskm");
910 // AliFemtoCutMonitorEventVertex *cutFailEvVkm = new AliFemtoCutMonitorEventVertex("cutFailkm");
911 // meckm->AddCutMonitor(cutPassEvVkm, cutFailEvVkm);
913 // AliFemtoShareQualityTPCEntranceSepPairCut *sqpckm = new AliFemtoShareQualityTPCEntranceSepPairCut();
914 // sqpckm->SetShareQualityMax(0.0);
915 // sqpckm->SetShareFractionMax(0.02);
916 // sqpckm->SetRemoveSameLabel(kFALSE);
917 // sqpckm->SetTPCEntranceSepMinimum(3.0);
919 // ankm->SetEventCut(meckm);
920 // ankm->SetFirstParticleCut(dtckm);
921 // ankm->SetSecondParticleCut(dtckm);
922 // ankm->SetPairCut(sqpckm);
924 // AliFemtoQinvCorrFctn *cqinvkm= new AliFemtoQinvCorrFctn("qinvcf",100,0.0,1.0);
926 // AliFemtoModelBPLCMSCorrFctn *c3dsmallkm;
927 // AliFemtoModelCorrFctn *c1dpikm;
929 // // Setting up the model calculation
930 // // First create the freeze-out generator
931 // AliFemtoModelGausRinvFreezeOutGenerator *tFreezekm = new AliFemtoModelGausRinvFreezeOutGenerator();
932 // tFreezekm->SetSizeInv(1.8*TMath::Sqrt(2.0));
933 // tFreezekm->SetSelectPrimaryFromHidden(false);
935 // // And the weight generator
936 // // AliFemtoModelWeightGeneratorBasic *tWeightkm = new AliFemtoModelWeightGeneratorBasic();
937 // // tWeightkm->SetPairType(AliFemtoModelWeightGenerator::KaonPlusKaonPlus());
938 // AliFemtoModelWeightGeneratorLednicky *tWeightkm = new AliFemtoModelWeightGeneratorLednicky();
939 // tWeightkm->SetPairType(AliFemtoModelWeightGenerator::KaonPlusKaonPlus());
940 // tWeightkm->SetCoulOn();
941 // tWeightkm->SetQuantumOn();
942 // tWeightkm->SetStrongOff();
943 // tWeightkm->Set3BodyOff();
945 // // Create a manager that will connect it
946 // AliFemtoModelManager *tModelManagerkm = new AliFemtoModelManager();
947 // tModelManagerkm->AcceptFreezeOutGenerator(tFreezekm);
948 // tModelManagerkm->AcceptWeightGenerator(tWeightkm);
949 // tModelManagerkm->CreateCopyHiddenInfo(kFALSE);
951 // c3dsmallkm = new AliFemtoModelBPLCMSCorrFctn("c3dsmallkm",30, 0.0, 0.6);
952 // c3dsmallkm->ConnectToManager(tModelManagerkm);
954 // c1dpikm = new AliFemtoModelCorrFctn("c1dpikm",100,0.0,1.0);
955 // c1dpikm->ConnectToManager(tModelManagerkm);
958 // ankm->AddCorrFctn(cqinvkm);
960 // ankm->AddCorrFctn(c3dsmallkm);
961 // ankm->AddCorrFctn(c1dpikm);
963 // Manager->AddAnalysis(ankm);
965 // // *** End Kaon-Kaon (positive) analysis