]>
Commit | Line | Data |
---|---|---|
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 | //________________________________________________________________________ | |
51 | AliFemtoManager* 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 |