1 /*********************************************************************
3 * Configfemtoanalysis.C - configuration macro for the femtoscopic *
4 * analysis, meant as a QA process for two-particle effects *
6 * Author: Adam Kisiel (Adam.Kisiel@cern.ch) *
8 *********************************************************************/
10 #if !defined(__CINT__) || defined(__MAKECINT_)
11 #include "AliFemtoManager.h"
12 #include "AliFemtoEventReaderESDChain.h"
13 #include "AliFemtoEventReaderESDChainKine.h"
14 #include "AliFemtoEventReaderAODChain.h"
15 #include "AliFemtoSimpleAnalysis.h"
16 #include "AliFemtoBasicEventCut.h"
17 #include "AliFemtoESDTrackCut.h"
18 #include "AliFemtoCorrFctn.h"
19 #include "AliFemtoCutMonitorParticleYPt.h"
20 //#include "AliFemtoCutMonitorParticleVertPos.h"
21 //#include "AliFemtoCutMonitorParticleMomRes.h"
22 #include "AliFemtoCutMonitorParticlePID.h"
23 //#include "AliFemtoCutMonitorEventMult.h"
24 //#include "AliFemtoCutMonitorEventVertex.h"
25 #include "AliFemtoShareQualityTPCEntranceSepPairCut.h"
26 #include "AliFemtoPairCutAntiGamma.h"
27 #include "AliFemtoPairCutRadialDistance.h"
28 #include "AliFemtoQinvCorrFctn.h"
29 //#include "AliFemtoTPCInnerCorrFctn.h"
30 #include "AliFemtoVertexMultAnalysis.h"
31 //#include "AliFemtoCutMonitorParticlePtPDG.h"
32 #include "AliFemtoPairCutPt.h"
33 //#include "AliFemtoCorrFctnMassInvMonitor.h"
36 //________________________________________________________________________
37 AliFemtoManager* ConfigFemtoAnalysis() {
39 double PionMass = 0.13956995;
40 double KaonMass = 0.493677;
41 double ProtonMass = 0.938272013;
43 const int numOfMultBins = 5;
44 const int numOfChTypes = 12;
45 const int numOfkTbins = 2;
47 int runmults[numOfMultBins] = {1, 1, 1, 0, 1};
48 int multbins[numOfMultBins+1] = {0, 20, 50, 150, 2, 150};
50 int runch[numOfChTypes] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
51 const char *chrgs[numOfChTypes] = { "PIpKp", "PImKm", "PIpKm", "PImKp", "PIpPp","PImPm","PIpPm","PImPp", "KpPp","KmPm","KpPm","KmPp"};
54 double ktrng[numOfkTbins+1] = {0.0, 0.7, 100.0};
56 int runtype = 0; // Types 0 - global, 1 - ITS only, 2 - TPC Inner //global tracks ->mfit ITS+TPC
58 int gammacut = 0; // cut na ee z gamma
61 //AliFemtoEventReaderESDChainKine* Reader=new AliFemtoEventReaderESDChainKine();
62 //Reader->SetUseMultiplicity(AliFemtoEventReaderESDChainKine::kReferenceITSTPC);
63 //Reader->SetMagneticFieldSign(1.0);
64 //AliFemtoEventReaderESDChain *Reader = new AliFemtoEventReaderESDChain();
65 //Reader->SetUseMultiplicity(AliFemtoEventReaderESDChain::kReferenceITSTPC);
67 AliFemtoEventReaderAODChain *Reader = new AliFemtoEventReaderAODChain();
68 Reader->SetFilterBit(0);
69 Reader->SetUseMultiplicity(AliFemtoEventReaderAOD::kReference);
71 // //Reader->SetCentralityPreSelection(0.001, 910);
73 AliFemtoManager* Manager = new AliFemtoManager();
74 Manager->SetEventReader(Reader);
76 AliFemtoVertexMultAnalysis *anetaphitpc[numOfMultBins*numOfChTypes];
77 AliFemtoBasicEventCut *mecetaphitpc[numOfMultBins*numOfChTypes];
78 /* AliFemtoCutMonitorEventMult *cutPassEvMetaphitpc[numOfMultBins*numOfChTypes];
79 AliFemtoCutMonitorEventMult *cutFailEvMetaphitpc[numOfMultBins*numOfChTypes];
80 AliFemtoCutMonitorEventVertex *cutPassEvVetaphitpc[numOfMultBins*numOfChTypes];
81 AliFemtoCutMonitorEventVertex *cutFailEvVetaphitpc[numOfMultBins*numOfChTypes];
82 */ AliFemtoESDTrackCut *dtc1etaphitpc[numOfMultBins*numOfChTypes];
83 AliFemtoESDTrackCut *dtc2etaphitpc[numOfMultBins*numOfChTypes];
85 // AliFemtoPairCutAntiGamma *sqpcetaphitpcdiff[numOfMultBins*numOfChTypes];
86 // AliFemtoShareQualityTPCEntranceSepPairCut *sqpcetaphitpcsame[numOfMultBins*numOfChTypes];
87 AliFemtoPairCutAntiGamma *sqpcetaphitpc[numOfMultBins*numOfChTypes];
88 // AliFemtoPairCutRadialDistance *sqpcetaphitpc[numOfMultBins*numOfChTypes];
89 // AliFemtoChi2CorrFctn *cchiqinvetaphitpc[numOfMultBins*numOfChTypes];
90 AliFemtoPairCutPt *ktpcuts[numOfMultBins*numOfChTypes];
91 AliFemtoQinvCorrFctn *cqinvkttpc[numOfMultBins*numOfChTypes];
92 AliFemtoQinvCorrFctn *cqinvtpc[numOfMultBins*numOfChTypes];
93 AliFemtoCorrFctnDEtaDPhi *cdedpetaphi[numOfMultBins*numOfChTypes];
94 //AliFemtoCorrFctnMassInvMonitor *cMinvMonitor[numOfMultBins*numOfChTypes];
97 // *** Third QA task - HBT analysis with all pair cuts off, TPC only ***
98 // *** Begin pion-pion (positive) analysis ***
101 for (int imult = 0; imult < numOfMultBins; imult++)
105 for (int ichg = 0; ichg < numOfChTypes; ichg++)
110 aniter = ichg * numOfMultBins + imult;
111 anetaphitpc[aniter] = new AliFemtoVertexMultAnalysis(8, -8.0, 8.0, 6, multbins[imult], multbins[imult+1]);
112 anetaphitpc[aniter]->SetNumEventsToMix(10);
113 anetaphitpc[aniter]->SetMinSizePartCollection(1);
115 mecetaphitpc[aniter] = new AliFemtoBasicEventCut();
116 mecetaphitpc[aniter]->SetEventMult(0.001,100000);
117 mecetaphitpc[aniter]->SetVertZPos(-8,8);//cm
119 /* cutPassEvMetaphitpc[aniter] = new AliFemtoCutMonitorEventMult(Form("cutPass%stpcM%i", chrgs[ichg], imult));
120 cutFailEvMetaphitpc[aniter] = new AliFemtoCutMonitorEventMult(Form("cutFail%stpcM%i", chrgs[ichg], imult));
121 mecetaphitpc[aniter]->AddCutMonitor(cutPassEvMetaphitpc[aniter], cutFailEvMetaphitpc[aniter]);
123 cutPassEvVetaphitpc[aniter] = new AliFemtoCutMonitorEventVertex(Form("cutPass%stpcM%i", chrgs[ichg], imult));
124 cutFailEvVetaphitpc[aniter] = new AliFemtoCutMonitorEventVertex(Form("cutFail%stpcM%i", chrgs[ichg], imult));
125 mecetaphitpc[aniter]->AddCutMonitor(cutPassEvVetaphitpc[aniter], cutFailEvVetaphitpc[aniter]);
127 dtc1etaphitpc[aniter] = new AliFemtoESDTrackCut();
128 dtc2etaphitpc[aniter] = new AliFemtoESDTrackCut();
130 dtc1etaphitpc[aniter]->SetEta(-1.0,1.0);
131 dtc2etaphitpc[aniter]->SetEta(-1.0,1.0);
133 if (ichg == 0) // PIpKp
135 dtc1etaphitpc[aniter]->SetCharge(1.0);
136 dtc1etaphitpc[aniter]->SetPt(0.2,20);
137 dtc1etaphitpc[aniter]->SetMass(PionMass);
138 dtc1etaphitpc[aniter]->SetMostProbablePion();
139 dtc2etaphitpc[aniter]->SetCharge(1.0);
140 dtc2etaphitpc[aniter]->SetPt(0.3,20);
141 dtc2etaphitpc[aniter]->SetMass(KaonMass);
142 dtc2etaphitpc[aniter]->SetMostProbableKaon();
144 if (ichg == 1) // PImKm
146 dtc1etaphitpc[aniter]->SetCharge(-1.0);
147 dtc1etaphitpc[aniter]->SetPt(0.2,20);
148 dtc1etaphitpc[aniter]->SetMass(PionMass);
149 dtc1etaphitpc[aniter]->SetMostProbablePion();
150 dtc2etaphitpc[aniter]->SetCharge(-1.0);
151 dtc2etaphitpc[aniter]->SetPt(0.3,20);
152 dtc2etaphitpc[aniter]->SetMass(KaonMass);
153 dtc2etaphitpc[aniter]->SetMostProbableKaon();
155 if (ichg == 2) //PIpKm
157 dtc1etaphitpc[aniter]->SetCharge(1.0);
158 dtc1etaphitpc[aniter]->SetPt(0.2,20);
159 dtc1etaphitpc[aniter]->SetMass(PionMass);
160 dtc1etaphitpc[aniter]->SetMostProbablePion();
161 dtc2etaphitpc[aniter]->SetCharge(-1.0);
162 dtc2etaphitpc[aniter]->SetPt(0.3,20);
163 dtc2etaphitpc[aniter]->SetMass(KaonMass);
164 dtc2etaphitpc[aniter]->SetMostProbableKaon();
166 if (ichg == 3) // PImKp
168 dtc1etaphitpc[aniter]->SetCharge(-1.0);
169 dtc1etaphitpc[aniter]->SetPt(0.2,20);
170 dtc1etaphitpc[aniter]->SetMass(PionMass);
171 dtc1etaphitpc[aniter]->SetMostProbablePion();
172 dtc2etaphitpc[aniter]->SetCharge(1.0);
173 dtc2etaphitpc[aniter]->SetPt(0.3,20);
174 dtc2etaphitpc[aniter]->SetMass(KaonMass);
175 dtc2etaphitpc[aniter]->SetMostProbableKaon();
177 if (ichg == 4) // PIpPp
179 dtc1etaphitpc[aniter]->SetCharge(1.0);
180 dtc1etaphitpc[aniter]->SetPt(0.2,20);
181 dtc1etaphitpc[aniter]->SetMass(PionMass);
182 dtc1etaphitpc[aniter]->SetMostProbablePion();
183 dtc2etaphitpc[aniter]->SetCharge(1.0);
184 dtc2etaphitpc[aniter]->SetPt(0.5,20);
185 dtc2etaphitpc[aniter]->SetMass(ProtonMass);
186 dtc2etaphitpc[aniter]->SetMostProbableProton();
188 if (ichg == 5) // PImPm
190 dtc1etaphitpc[aniter]->SetCharge(-1.0);
191 dtc1etaphitpc[aniter]->SetPt(0.2,20);
192 dtc1etaphitpc[aniter]->SetMass(PionMass);
193 dtc1etaphitpc[aniter]->SetMostProbablePion();
194 dtc2etaphitpc[aniter]->SetCharge(-1.0);
195 dtc2etaphitpc[aniter]->SetPt(0.5,20);
196 dtc2etaphitpc[aniter]->SetMass(ProtonMass);
197 dtc2etaphitpc[aniter]->SetMostProbableProton();
199 if (ichg == 6) // PIpPm
201 dtc1etaphitpc[aniter]->SetCharge(1.0);
202 dtc1etaphitpc[aniter]->SetPt(0.2,20);
203 dtc1etaphitpc[aniter]->SetMass(PionMass);
204 dtc1etaphitpc[aniter]->SetMostProbablePion();
205 dtc2etaphitpc[aniter]->SetCharge(-1.0);
206 dtc2etaphitpc[aniter]->SetPt(0.5,20);
207 dtc2etaphitpc[aniter]->SetMass(ProtonMass);
208 dtc2etaphitpc[aniter]->SetMostProbableProton();
210 if (ichg == 7) // PImPp
212 dtc1etaphitpc[aniter]->SetCharge(-1.0);
213 dtc1etaphitpc[aniter]->SetPt(0.2,20);
214 dtc1etaphitpc[aniter]->SetMass(PionMass);
215 dtc1etaphitpc[aniter]->SetMostProbablePion();
216 dtc2etaphitpc[aniter]->SetCharge(1.0);
217 dtc2etaphitpc[aniter]->SetPt(0.5,20);
218 dtc2etaphitpc[aniter]->SetMass(ProtonMass);
219 dtc2etaphitpc[aniter]->SetMostProbableProton();
221 if (ichg == 8) // KpPp
223 dtc1etaphitpc[aniter]->SetCharge(1.0);
224 dtc1etaphitpc[aniter]->SetPt(0.3,20);
225 dtc1etaphitpc[aniter]->SetMass(KaonMass);
226 dtc1etaphitpc[aniter]->SetMostProbableKaon();
227 dtc2etaphitpc[aniter]->SetCharge(1.0);
228 dtc2etaphitpc[aniter]->SetPt(0.5,20);
229 dtc2etaphitpc[aniter]->SetMass(ProtonMass);
230 dtc2etaphitpc[aniter]->SetMostProbableProton();
232 if (ichg == 9) // KmPm
234 dtc1etaphitpc[aniter]->SetCharge(-1.0);
235 dtc1etaphitpc[aniter]->SetPt(0.3,20);
236 dtc1etaphitpc[aniter]->SetMass(KaonMass);
237 dtc1etaphitpc[aniter]->SetMostProbableKaon();
238 dtc2etaphitpc[aniter]->SetCharge(-1.0);
239 dtc2etaphitpc[aniter]->SetPt(0.5,20);
240 dtc2etaphitpc[aniter]->SetMass(ProtonMass);
241 dtc2etaphitpc[aniter]->SetMostProbableProton();
243 if (ichg == 10) // KpPm
245 dtc1etaphitpc[aniter]->SetCharge(1.0);
246 dtc1etaphitpc[aniter]->SetPt(0.3,20);
247 dtc1etaphitpc[aniter]->SetMass(KaonMass);
248 dtc1etaphitpc[aniter]->SetMostProbableKaon();
249 dtc2etaphitpc[aniter]->SetCharge(-1.0);
250 dtc2etaphitpc[aniter]->SetPt(0.5,20);
251 dtc2etaphitpc[aniter]->SetMass(ProtonMass);
252 dtc2etaphitpc[aniter]->SetMostProbableProton();
254 if (ichg ==11) // KmPp
256 dtc1etaphitpc[aniter]->SetCharge(-1.0);
257 dtc1etaphitpc[aniter]->SetPt(0.3,20);
258 dtc1etaphitpc[aniter]->SetMass(KaonMass);
259 dtc1etaphitpc[aniter]->SetMostProbableKaon();
260 dtc2etaphitpc[aniter]->SetCharge(1.0);
261 dtc2etaphitpc[aniter]->SetPt(0.5,20);
262 dtc2etaphitpc[aniter]->SetMass(ProtonMass);
263 dtc2etaphitpc[aniter]->SetMostProbableProton();
266 // Track quality cuts
270 dtc1etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
271 dtc1etaphitpc[aniter]->SetminTPCncls(70);
272 dtc1etaphitpc[aniter]->SetRemoveKinks(kTRUE);
273 dtc1etaphitpc[aniter]->SetLabel(kFALSE);
274 // dtc1etaphitpc[aniter]->SetMaxITSChiNdof(6.0);
275 dtc1etaphitpc[aniter]->SetMaxTPCChiNdof(4.0);
276 dtc1etaphitpc[aniter]->SetMaxImpactXYPtDep(0.018, 0.035, -1.01); // DCA xy
277 dtc1etaphitpc[aniter]->SetMaxImpactZ(2); //DCA Z
278 // dtc1etaphitpc[aniter]->SetMaxSigmaToVertex(6.0);
279 dtc2etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
280 dtc2etaphitpc[aniter]->SetminTPCncls(70);
281 dtc2etaphitpc[aniter]->SetRemoveKinks(kTRUE);
282 dtc2etaphitpc[aniter]->SetLabel(kFALSE);
283 // dtc2etaphitpc[aniter]->SetMaxITSChiNdof(6.0);
284 dtc2etaphitpc[aniter]->SetMaxTPCChiNdof(4.0);
285 dtc2etaphitpc[aniter]->SetMaxImpactXYPtDep(0.018, 0.035, -1.01) ;
286 dtc2etaphitpc[aniter]->SetMaxImpactZ(2);
287 // dtc2etaphitpc[aniter]->SetMaxSigmaToVertex(6.0);
289 else if (runtype == 1)
293 else if (runtype == 2)
298 sqpcetaphitpc[aniter] = new AliFemtoPairCutAntiGamma();
302 sqpcetaphitpc[aniter]->SetShareQualityMax(1.0); // two track cuts on splitting and merging
303 sqpcetaphitpc[aniter]->SetShareFractionMax(0.05); // ile moga miec wspolnych klastrow
304 sqpcetaphitpc[aniter]->SetRemoveSameLabel(kFALSE);
305 // sqpcetaphitpc[aniter]->SetMaxEEMinv(0.0);
306 // sqpcetaphitpc[aniter]->SetMaxThetaDiff(0.0);
307 // sqpcetaphitpc[aniter]->SetTPCEntranceSepMinimum(1.5);
308 // sqpcetaphitpc[aniter]->SetRadialDistanceMinimum(0.12, 0.03);
309 // sqpcetaphitpc[aniter]->SetEtaDifferenceMinimum(0.02);
311 else if (runtype == 1)
315 else if (runtype == 2)
320 anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
322 anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
323 anetaphitpc[aniter]->SetSecondParticleCut(dtc2etaphitpc[aniter]);
324 //cMinvMonitor[aniter] = new AliFemtoCorrFctnMassInvMonitor(Form("%sM%i",chrgs[ichg], imult),500,ProtonMass);
325 //anetaphitpc[aniter]->AddCorrFctn(cMinvMonitor[aniter]);
327 anetaphitpc[aniter]->SetPairCut(sqpcetaphitpc[aniter]);
328 cdedpetaphi[aniter] = new AliFemtoCorrFctnDEtaDPhi(Form("cdedp%stpcM%i", chrgs[ichg], imult),35, 35);
329 anetaphitpc[aniter]->AddCorrFctn(cdedpetaphi[aniter]);
334 for (int ikt=0; ikt<numOfkTbins; ikt++)
336 ktm = aniter * numOfkTbins + ikt;
337 ktpcuts[ktm] = new AliFemtoPairCutPt(ktrng[ikt], ktrng[ikt+1]);
339 //cqinvkttpc[ktm] = new AliFemtoQinvCorrFctn(Form("cqinv%stpcM%ikT%i", chrgs[ichg], imult, ikt),nbinssh,0.0,(imult>6)?shqmax*2.5:shqmax);
340 //cqinvkttpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
341 //anetaphitpc[aniter]->AddCorrFctn(cqinvkttpc[ktm]);
343 cdedpetaphi[ktm] = new AliFemtoCorrFctnDEtaDPhi(Form("cdedp%stpcM%ipT%i", chrgs[ichg], imult,ikt),35, 35);
344 cdedpetaphi[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
345 anetaphitpc[aniter]->AddCorrFctn(cdedpetaphi[ktm]);
348 Manager->AddAnalysis(anetaphitpc[aniter]);