]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/FEMTOSCOPY/macros/Train/PWG2TrainLHC10a6/ConfigFemtoAnalysis.C
Merge branch 'master' into TPCdev
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / macros / Train / PWG2TrainLHC10a6 / ConfigFemtoAnalysis.C
CommitLineData
76ce4b5b 1/*********************************************************************
2 * *
3 * ConfigFemtoAnalysis.C - configuration macro for the femtoscopic *
4 * analysis, meant as a QA process for two-particle effects *
5 * *
6 * Author: Adam Kisiel (Adam.Kisiel@cern.ch) *
7 * *
8 *********************************************************************/
9
10#if !defined(__CINT__) || defined(__MAKECINT_)
11#include "AliFemtoManager.h"
12#include "AliFemtoEventReaderESDChain.h"
13#include "AliFemtoEventReaderESDChainKine.h"
14#include "AliFemtoSimpleAnalysis.h"
15#include "AliFemtoBasicEventCut.h"
16#include "AliFemtoESDTrackCut.h"
17#include "AliFemtoCorrFctn.h"
18#include "AliFemtoCutMonitorParticleYPt.h"
19#include "AliFemtoCutMonitorParticleVertPos.h"
20#include "AliFemtoCutMonitorParticleMomRes.h"
21#include "AliFemtoCutMonitorEventMult.h"
22#include "AliFemtoCutMonitorEventVertex.h"
23#include "AliFemtoShareQualityTPCEntranceSepPairCut.h"
24#include "AliFemtoQinvCorrFctn.h"
25#include "AliFemtoShareQualityCorrFctn.h"
26#include "AliFemtoTPCInnerCorrFctn.h"
27#include "AliFemtoVertexMultAnalysis.h"
28#include "AliFemtoCorrFctn3DSpherical.h"
29#include "AliFemtoChi2CorrFctn.h"
30#include "AliFemtoCorrFctnTPCNcls.h"
31#include "AliFemtoModelBPLCMSCorrFctn.h"
32#include "AliFemtoModelCorrFctn3DSpherical.h"
33#include "AliFemtoModelGausLCMSFreezeOutGenerator.h"
34#include "AliFemtoModelGausRinvFreezeOutGenerator.h"
35#include "AliFemtoModelManager.h"
36#include "AliFemtoModelWeightGeneratorBasic.h"
37#include "AliFemtoModelWeightGeneratorLednicky.h"
38#include "AliFemtoCorrFctnDirectYlm.h"
39#include "AliFemtoModelCorrFctnDirectYlm.h"
40#include "AliFemtoModelCorrFctnSource.h"
41#include "AliFemtoCutMonitorParticlePtPDG.h"
42#include "AliFemtoKTPairCut.h"
43#include "AliFemtoCorrFctnDEtaDPhi.h"
44#include "AliFemtoBPLCMS3DCorrFctn.h"
45#endif
46
47//________________________________________________________________________
48AliFemtoManager* ConfigFemtoAnalysis() {
49
50 double PionMass = 0.13956995;
51 double KaonMass = 0.493677;
52
53 // Switches for QA analyses
54 int runPositiveTPCQA = 1;
55 int runNegativeTPCQA = 1;
56
57 int runktdep = 1;
58 int run3d = 0;
59
60 int runtype = 0; // Types 0 - global, 1 - ITS only
61 int isrealdata = 0;
62
63 AliFemtoEventReaderESDChain* Reader=new AliFemtoEventReaderESDChain();
64 Reader->SetConstrained(true);
65 Reader->SetUseTPCOnly(false);
66 if (runtype == 0)
67 Reader->SetReadTrackType(AliFemtoEventReaderESDChain::kGlobal);
68 else if (runtype == 1)
69 Reader->SetReadTrackType(AliFemtoEventReaderESDChain::kITSOnly);
70 if (isrealdata)
71 Reader->SetUsePhysicsSelection(kTRUE);
72 else
73 Reader->SetUsePhysicsSelection(kFALSE);
74
75 AliFemtoManager* Manager=new AliFemtoManager();
76 Manager->SetEventReader(Reader);
77
78 // *** Third QA task - HBT analysis with all pair cuts off, TPC only ***
79 // *** Begin pion-pion (positive) analysis ***
80 if (runPositiveTPCQA) {
81 AliFemtoVertexMultAnalysis *anpiptpc = new AliFemtoVertexMultAnalysis(6, -10.0, 10.0, 1, 0, 10000);
82 anpiptpc->SetNumEventsToMix(10);
83 anpiptpc->SetMinSizePartCollection(2);
84
85 AliFemtoBasicEventCut* mecpiptpc = new AliFemtoBasicEventCut();
86 mecpiptpc->SetEventMult(0,100000);
87 mecpiptpc->SetVertZPos(-1000,1000);
88
89 AliFemtoCutMonitorEventMult *cutPassEvMpiptpc = new AliFemtoCutMonitorEventMult("cutPasspiptpc");
90 AliFemtoCutMonitorEventMult *cutFailEvMpiptpc = new AliFemtoCutMonitorEventMult("cutFailpiptpc");
91 mecpiptpc->AddCutMonitor(cutPassEvMpiptpc, cutFailEvMpiptpc);
92
93 AliFemtoCutMonitorEventVertex *cutPassEvVpiptpc = new AliFemtoCutMonitorEventVertex("cutPasspiptpc");
94 AliFemtoCutMonitorEventVertex *cutFailEvVpiptpc = new AliFemtoCutMonitorEventVertex("cutFailpiptpc");
95 mecpiptpc->AddCutMonitor(cutPassEvVpiptpc, cutFailEvVpiptpc);
96
97 AliFemtoESDTrackCut* dtcpiptpc = new AliFemtoESDTrackCut();
98 // dtcpiptpc->SetPidProbPion(0.0,1.001);
99 // dtcpiptpc->SetPidProbMuon(0.0,1.0);
100 // dtcpiptpc->SetPidProbKaon(0.0,1.0);
101 // dtcpiptpc->SetPidProbProton(0.0,1.0);
102 dtcpiptpc->SetCharge(1.0);
103 dtcpiptpc->SetPt(0.05,10.0);
104 dtcpiptpc->SetMass(PionMass);
105 // Track quality cuts
106 if (runtype == 0) {
107 dtcpiptpc->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
108 // dtcpiptpc->SetStatus(AliESDtrack::kTPCrefit);
109 // dtcpiptpc->SetStatus(AliESDtrack::kITSrefit);
110 dtcpiptpc->SetminTPCncls(50);
111 dtcpiptpc->SetRemoveKinks(kTRUE);
112 dtcpiptpc->SetLabel(kFALSE);
113 // dtcpiptpc->SetMaxITSChiNdof(6.0);
114 dtcpiptpc->SetMaxTPCChiNdof(6.0);
115 dtcpiptpc->SetMaxImpactXY(0.2);
116 dtcpiptpc->SetMaxImpactZ(0.25);
117 dtcpiptpc->SetMaxSigmaToVertex(6.0);
118 }
119 else if (runtype == 1) {
120 // dtcpiptpc->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
121 // dtcpiptpc->SetStatus(AliESDtrack::kTPCrefit);
122 dtcpiptpc->SetStatus(AliESDtrack::kITSrefit);
123 // dtcpiptpc->SetminTPCncls(50);
124 dtcpiptpc->SetRemoveKinks(kTRUE);
125 dtcpiptpc->SetLabel(kFALSE);
126 // dtcpiptpc->SetMaxITSChiNdof(6.0);
127 // dtcpiptpc->SetMaxTPCChiNdof(6.0);
128 dtcpiptpc->SetMaxImpactXY(0.2);
129 dtcpiptpc->SetMaxImpactZ(0.25);
130 // dtcpiptpc->SetMaxSigmaToVertex(6.0);
131 }
132
133 AliFemtoCutMonitorParticleYPt *cutPassYPtpiptpc = new AliFemtoCutMonitorParticleYPt("cutPasspiptpc", 0.13957);
134 AliFemtoCutMonitorParticleYPt *cutFailYPtpiptpc = new AliFemtoCutMonitorParticleYPt("cutFailpiptpc", 0.13957);
135 dtcpiptpc->AddCutMonitor(cutPassYPtpiptpc, cutFailYPtpiptpc);
136
137 AliFemtoShareQualityTPCEntranceSepPairCut *sqpcpiptpc = new AliFemtoShareQualityTPCEntranceSepPairCut();
138 if (runtype == 0) {
139 sqpcpiptpc->SetShareQualityMax(0.0);
140 sqpcpiptpc->SetShareFractionMax(0.05);
141 sqpcpiptpc->SetRemoveSameLabel(kFALSE);
142 sqpcpiptpc->SetTPCEntranceSepMinimum(0.0);
143 }
144 else if (runtype == 1) {
145 sqpcpiptpc->SetShareQualityMax(1.0);
146 sqpcpiptpc->SetShareFractionMax(1.05);
147 sqpcpiptpc->SetRemoveSameLabel(kFALSE);
148 sqpcpiptpc->SetTPCEntranceSepMinimum(0.0);
149 }
150
151 anpiptpc->SetEventCut(mecpiptpc);
152 anpiptpc->SetFirstParticleCut(dtcpiptpc);
153 anpiptpc->SetSecondParticleCut(dtcpiptpc);
154 anpiptpc->SetPairCut(sqpcpiptpc);
155
156 // AliFemtoShareQualityCorrFctn *csqqinvpiptpc= new AliFemtoShareQualityCorrFctn("sqqinvcfpiptpc",40,0.0,0.4);
157 // anpiptpc->AddCorrFctn(csqqinvpiptpc);
158
159 AliFemtoCorrFctnDirectYlm *cylmpiptpc = new AliFemtoCorrFctnDirectYlm("cylmpiptpc",3,100,0.0,1.5,1);
160 anpiptpc->AddCorrFctn(cylmpiptpc);
161
162 AliFemtoQinvCorrFctn *cqinvpiptpc = new AliFemtoQinvCorrFctn("qinvcfpiptpc", 100,0.0,1.5);
163 anpiptpc->AddCorrFctn(cqinvpiptpc);
164
165 AliFemtoChi2CorrFctn *cchiqinvpiptpc= new AliFemtoChi2CorrFctn("chicfpiptpc",40,0.0,0.4);
166 anpiptpc->AddCorrFctn(cchiqinvpiptpc);
167
168 if (run3d) {
169 AliFemtoBPLCMS3DCorrFctn *cq3dallpiptpc = new AliFemtoBPLCMS3DCorrFctn("cq3dallpiptpc",100,-1.5,1.5);
170 anpiptpc->AddCorrFctn(cq3dallpiptpc);
171 }
172
173 if (runktdep) {
174 // Intrdouce kT binning
175 AliFemtoKTPairCut *ktpairkT1piptpc = new AliFemtoKTPairCut(0.05,0.2);
176 AliFemtoKTPairCut *ktpairkT2piptpc = new AliFemtoKTPairCut(0.3,0.4);
177 AliFemtoKTPairCut *ktpairkT3piptpc = new AliFemtoKTPairCut(0.4,0.55);
178 AliFemtoKTPairCut *ktpairkT4piptpc = new AliFemtoKTPairCut(0.55,2.0);
179
180 AliFemtoCorrFctnDirectYlm *cylmkT1piptpc = new AliFemtoCorrFctnDirectYlm("cylmkT1piptpc",3,100,0.0,1.5,1);
181 cylmkT1piptpc->SetPairSelectionCut(ktpairkT1piptpc);
182 anpiptpc->AddCorrFctn(cylmkT1piptpc);
183
184 AliFemtoQinvCorrFctn *cqinvkT1piptpc = new AliFemtoQinvCorrFctn("qinvcfkT1piptpc", 100,0.0,1.5);
185 cqinvkT1piptpc->SetPairSelectionCut(ktpairkT1piptpc);
186 anpiptpc->AddCorrFctn(cqinvkT1piptpc);
187
188 AliFemtoCorrFctnDirectYlm *cylmkT2piptpc = new AliFemtoCorrFctnDirectYlm("cylmkT2piptpc",3,100,0.0,1.5,1);
189 cylmkT2piptpc->SetPairSelectionCut(ktpairkT2piptpc);
190 anpiptpc->AddCorrFctn(cylmkT2piptpc);
191
192 AliFemtoQinvCorrFctn *cqinvkT2piptpc = new AliFemtoQinvCorrFctn("qinvcfkT2piptpc", 100,0.0,1.5);
193 cqinvkT2piptpc->SetPairSelectionCut(ktpairkT2piptpc);
194 anpiptpc->AddCorrFctn(cqinvkT2piptpc);
195
196 AliFemtoCorrFctnDirectYlm *cylmkT3piptpc = new AliFemtoCorrFctnDirectYlm("cylmkT3piptpc",3,100,0.0,1.5,1);
197 cylmkT3piptpc->SetPairSelectionCut(ktpairkT3piptpc);
198 anpiptpc->AddCorrFctn(cylmkT3piptpc);
199
200 AliFemtoQinvCorrFctn *cqinvkT3piptpc = new AliFemtoQinvCorrFctn("qinvcfkT3piptpc", 100,0.0,1.5);
201 cqinvkT3piptpc->SetPairSelectionCut(ktpairkT3piptpc);
202 anpiptpc->AddCorrFctn(cqinvkT3piptpc);
203
204 AliFemtoCorrFctnDirectYlm *cylmkT4piptpc = new AliFemtoCorrFctnDirectYlm("cylmkT4piptpc",3,100,0.0,1.5,1);
205 cylmkT4piptpc->SetPairSelectionCut(ktpairkT4piptpc);
206 anpiptpc->AddCorrFctn(cylmkT4piptpc);
207
208 AliFemtoQinvCorrFctn *cqinvkT4piptpc = new AliFemtoQinvCorrFctn("qinvcfkT4piptpc", 100,0.0,1.5);
209 cqinvkT4piptpc->SetPairSelectionCut(ktpairkT4piptpc);
210 anpiptpc->AddCorrFctn(cqinvkT4piptpc);
211 }
212 // AliFemtoCorrFctnTPCNcls *cqtpcnclspiptpc = new AliFemtoCorrFctnTPCNcls("cqtpcnclspiptpc",40,0.0,0.4);
213 // anpiptpc->AddCorrFctn(cqtpcnclspiptpc);
214
215 // AliFemtoCorrFctnDEtaDPhi *cdetadphipiptpc = new AliFemtoCorrFctnDEtaDPhi("cdetadphipiptpc", 18, 20);
216 // anpiptpc->AddCorrFctn(cdetadphipiptpc);
217
218 Manager->AddAnalysis(anpiptpc);
219 }
220 // *** End pion-pion (positive) analysis
221
222 // *** Begin pion-pion (negative) analysis ***
223 if (runNegativeTPCQA) {
224 AliFemtoVertexMultAnalysis *anpimtpc = new AliFemtoVertexMultAnalysis(6, -10.0, 10.0, 1, 0, 10000);
225 anpimtpc->SetNumEventsToMix(10);
226 anpimtpc->SetMinSizePartCollection(2);
227
228 AliFemtoBasicEventCut* mecpimtpc = new AliFemtoBasicEventCut();
229 mecpimtpc->SetEventMult(0,100000);
230 mecpimtpc->SetVertZPos(-1000,1000);
231
232 AliFemtoESDTrackCut* dtcpimtpc = new AliFemtoESDTrackCut();
233 // dtcpimtpc->SetPidProbPion(0.0,1.001);
234 // dtcpimtpc->SetPidProbMuon(0.0,1.0);
235 // dtcpimtpc->SetPidProbKaon(0.0,1.0);
236 // dtcpimtpc->SetPidProbProton(0.0,1.0);
237 dtcpimtpc->SetCharge(-1.0);
238 dtcpimtpc->SetPt(0.05,10.0);
239 dtcpimtpc->SetMass(PionMass);
240 // Track quality cuts
241 if (runtype == 0) {
242 dtcpimtpc->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
243 // dtcpimtpc->SetStatus(AliESDtrack::kTPCrefit);
244 //dtcpimtpc->SetStatus(AliESDtrack::kITSrefit);
245 dtcpimtpc->SetminTPCncls(50);
246 dtcpimtpc->SetRemoveKinks(kTRUE);
247 dtcpimtpc->SetLabel(kFALSE);
248 // dtcpimtpc->SetMaxITSChiNdof(6.0);
249 dtcpimtpc->SetMaxTPCChiNdof(6.0);
250 dtcpimtpc->SetMaxImpactXY(0.2);
251 dtcpimtpc->SetMaxImpactZ(0.25);
252 dtcpimtpc->SetMaxSigmaToVertex(6.0);
253 }
254 else if (runtype == 1) {
255 // dtcpimtpc->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
256 // dtcpimtpc->SetStatus(AliESDtrack::kTPCrefit);
257 dtcpimtpc->SetStatus(AliESDtrack::kITSrefit);
258 // dtcpimtpc->SetminTPCncls(50);
259 dtcpimtpc->SetRemoveKinks(kTRUE);
260 dtcpimtpc->SetLabel(kFALSE);
261 // dtcpimtpc->SetMaxITSChiNdof(6.0);
262 // dtcpimtpc->SetMaxTPCChiNdof(6.0);
263 dtcpimtpc->SetMaxImpactXY(0.2);
264 dtcpimtpc->SetMaxImpactZ(0.25);
265 // dtcpimtpc->SetMaxSigmaToVertex(6.0);
266 }
267
268 AliFemtoCutMonitorParticleYPt *cutPassYPtpimtpc = new AliFemtoCutMonitorParticleYPt("cutPasspimtpc", 0.13957);
269 AliFemtoCutMonitorParticleYPt *cutFailYPtpimtpc = new AliFemtoCutMonitorParticleYPt("cutFailpimtpc", 0.13957);
270 dtcpimtpc->AddCutMonitor(cutPassYPtpimtpc, cutFailYPtpimtpc);
271
272 AliFemtoShareQualityTPCEntranceSepPairCut *sqpcpimtpc = new AliFemtoShareQualityTPCEntranceSepPairCut();
273 if (runtype == 0) {
274 sqpcpimtpc->SetShareQualityMax(0.0);
275 sqpcpimtpc->SetShareFractionMax(0.05);
276 sqpcpimtpc->SetRemoveSameLabel(kFALSE);
277 sqpcpimtpc->SetTPCEntranceSepMinimum(0.0);
278 }
279 else if (runtype == 1) {
280 sqpcpimtpc->SetShareQualityMax(1.0);
281 sqpcpimtpc->SetShareFractionMax(1.05);
282 sqpcpimtpc->SetRemoveSameLabel(kFALSE);
283 sqpcpimtpc->SetTPCEntranceSepMinimum(0.0);
284 }
285
286 anpimtpc->SetEventCut(mecpimtpc);
287 anpimtpc->SetFirstParticleCut(dtcpimtpc);
288 anpimtpc->SetSecondParticleCut(dtcpimtpc);
289 anpimtpc->SetPairCut(sqpcpimtpc);
290
291 // AliFemtoShareQualityCorrFctn *csqqinvpimtpc= new AliFemtoShareQualityCorrFctn("sqqinvcfpimtpc",40,0.0,0.4);
292 // anpimtpc->AddCorrFctn(csqqinvpimtpc);
293
294 AliFemtoCorrFctnDirectYlm *cylmpimtpc = new AliFemtoCorrFctnDirectYlm("cylmpimtpc",3,100,0.0,1.5,1);
295 anpimtpc->AddCorrFctn(cylmpimtpc);
296
297 AliFemtoQinvCorrFctn *cqinvpimtpc = new AliFemtoQinvCorrFctn("qinvcfpimtpc", 100,0.0,1.5);
298 anpimtpc->AddCorrFctn(cqinvpimtpc);
299
300 AliFemtoChi2CorrFctn *cchiqinvpimtpc= new AliFemtoChi2CorrFctn("chicfpimtpc",40,0.0,0.4);
301 anpimtpc->AddCorrFctn(cchiqinvpimtpc);
302
303 if (run3d) {
304 AliFemtoBPLCMS3DCorrFctn *cq3dallpimtpc = new AliFemtoBPLCMS3DCorrFctn("cq3dallpimtpc",100,-1.5,1.5);
305 anpimtpc->AddCorrFctn(cq3dallpimtpc);
306 }
307
308 // Intrdouce kT binning
309 if (runktdep) {
310 // Intrdouce kT binning
311 AliFemtoKTPairCut *ktpairkT1pimtpc = new AliFemtoKTPairCut(0.05,0.3);
312 AliFemtoKTPairCut *ktpairkT2pimtpc = new AliFemtoKTPairCut(0.3,0.4);
313 AliFemtoKTPairCut *ktpairkT3pimtpc = new AliFemtoKTPairCut(0.4,0.55);
314 AliFemtoKTPairCut *ktpairkT4pimtpc = new AliFemtoKTPairCut(0.55,2.0);
315
316 AliFemtoCorrFctnDirectYlm *cylmkT1pimtpc = new AliFemtoCorrFctnDirectYlm("cylmkT1pimtpc",3,100,0.0,1.5,1);
317 cylmkT1pimtpc->SetPairSelectionCut(ktpairkT1pimtpc);
318 anpimtpc->AddCorrFctn(cylmkT1pimtpc);
319
320 AliFemtoQinvCorrFctn *cqinvkT1pimtpc = new AliFemtoQinvCorrFctn("qinvcfkT1pimtpc", 100,0.0,1.5);
321 cqinvkT1pimtpc->SetPairSelectionCut(ktpairkT1pimtpc);
322 anpimtpc->AddCorrFctn(cqinvkT1pimtpc);
323
324 AliFemtoCorrFctnDirectYlm *cylmkT2pimtpc = new AliFemtoCorrFctnDirectYlm("cylmkT2pimtpc",3,100,0.0,1.5,1);
325 cylmkT2pimtpc->SetPairSelectionCut(ktpairkT2pimtpc);
326 anpimtpc->AddCorrFctn(cylmkT2pimtpc);
327
328 AliFemtoQinvCorrFctn *cqinvkT2pimtpc = new AliFemtoQinvCorrFctn("qinvcfkT2pimtpc", 100,0.0,1.5);
329 cqinvkT2pimtpc->SetPairSelectionCut(ktpairkT2pimtpc);
330 anpimtpc->AddCorrFctn(cqinvkT2pimtpc);
331
332 AliFemtoCorrFctnDirectYlm *cylmkT3pimtpc = new AliFemtoCorrFctnDirectYlm("cylmkT3pimtpc",3,100,0.0,1.5,1);
333 cylmkT3pimtpc->SetPairSelectionCut(ktpairkT3pimtpc);
334 anpimtpc->AddCorrFctn(cylmkT3pimtpc);
335
336 AliFemtoQinvCorrFctn *cqinvkT3pimtpc = new AliFemtoQinvCorrFctn("qinvcfkT3pimtpc", 100,0.0,1.5);
337 cqinvkT3pimtpc->SetPairSelectionCut(ktpairkT3pimtpc);
338 anpimtpc->AddCorrFctn(cqinvkT3pimtpc);
339
340 AliFemtoCorrFctnDirectYlm *cylmkT4pimtpc = new AliFemtoCorrFctnDirectYlm("cylmkT4pimtpc",3,100,0.0,1.5,1);
341 cylmkT4pimtpc->SetPairSelectionCut(ktpairkT4pimtpc);
342 anpimtpc->AddCorrFctn(cylmkT4pimtpc);
343
344 AliFemtoQinvCorrFctn *cqinvkT4pimtpc = new AliFemtoQinvCorrFctn("qinvcfkT4pimtpc", 100,0.0,1.5);
345 cqinvkT4pimtpc->SetPairSelectionCut(ktpairkT4pimtpc);
346 anpimtpc->AddCorrFctn(cqinvkT4pimtpc);
347 }
348 // AliFemtoCorrFctnTPCNcls *cqtpcnclspimtpc = new AliFemtoCorrFctnTPCNcls("cqtpcnclspimtpc",40,0.0,0.4);
349 // anpimtpc->AddCorrFctn(cqtpcnclspimtpc);
350
351 // AliFemtoCorrFctnDEtaDPhi *cdetadphipimtpc = new AliFemtoCorrFctnDEtaDPhi("cdetadphipimtpc", 18, 20);
352 // anpimtpc->AddCorrFctn(cdetadphipimtpc);
353
354 Manager->AddAnalysis(anpimtpc);
355 }
356 // *** End pion-pion (negative) analysis
357
358 return Manager;
359}
360