2 /*********************************************************************
4 * ConfigFemtoAnalysis.C - configuration macro for the femtoscopic *
5 * analysis, meant as a QA process for two-particle effects *
7 * Author: Adam Kisiel (Adam.Kisiel@cern.ch) *
8 *********************************************************************
9 * K+K- in PbPb@2.76TeV *
10 * Update: Konstantin Mikhaylov(kmikhail@itpe.ru) *
12 *********************************************************************/
14 #if !defined(__CINT__) || defined(__MAKECINT_)
15 #include "AliFemtoManager.h"
16 #include "AliFemtoEventReaderESDChain.h"
17 #include "AliFemtoEventReaderESDChainKine.h"
18 #include "AliFemtoEventReaderAODChain.h"
19 #include "AliFemtoSimpleAnalysis.h"
20 #include "AliFemtoBasicEventCut.h"
21 #include "AliFemtoESDTrackCut.h"
22 #include "AliFemtoKKTrackCut.h"
23 #include "AliFemtoCorrFctn.h"
24 #include "AliFemtoCutMonitorParticleYPt.h"
25 #include "AliFemtoCutMonitorParticleVertPos.h"
26 #include "AliFemtoCutMonitorParticleMomRes.h"
27 #include "AliFemtoCutMonitorParticlePID.h"
28 #include "AliFemtoCutMonitorEventMult.h"
29 #include "AliFemtoCutMonitorEventVertex.h"
30 #include "AliFemtoShareQualityTPCEntranceSepPairCut.h"
31 #include "AliFemtoPairCutAntiGamma.h"
32 #include "AliFemtoPairCutRadialDistance.h"
33 #include "AliFemtoPairCutRadialDistanceKK.h"
34 #include "AliFemtoQinvCorrFctn.h"
35 #include "AliFemtoShareQualityCorrFctn.h"
36 #include "AliFemtoTPCInnerCorrFctn.h"
37 #include "AliFemtoVertexMultAnalysis.h"
38 #include "AliFemtoCorrFctn3DSpherical.h"
39 #include "AliFemtoChi2CorrFctn.h"
40 #include "AliFemtoCorrFctnTPCNcls.h"
41 #include "AliFemtoBPLCMS3DCorrFctn.h"
42 #include "AliFemtoCorrFctn3DLCMSSym.h"
43 #include "AliFemtoModelBPLCMSCorrFctn.h"
44 #include "AliFemtoModelCorrFctn3DSpherical.h"
45 #include "AliFemtoModelGausLCMSFreezeOutGenerator.h"
46 #include "AliFemtoModelGausRinvFreezeOutGenerator.h"
47 #include "AliFemtoModelManager.h"
48 #include "AliFemtoModelWeightGeneratorBasic.h"
49 #include "AliFemtoModelWeightGeneratorLednicky.h"
50 #include "AliFemtoCorrFctnDirectYlm.h"
51 #include "AliFemtoModelCorrFctnDirectYlm.h"
52 #include "AliFemtoModelCorrFctnSource.h"
53 #include "AliFemtoKTPairCut.h"
56 //________________________________________________________________________
57 AliFemtoManager* ConfigFemtoAnalysis() {
59 double PionMass = 0.13956995;
60 double KaonMass = 0.493677;
64 //-------Single track cuts------------------------------------------------->
65 double DCAxy=2.4;//cm // our standard is 0.20 cm; super narrow was 0.015cm
66 double DCAz =3.0;//cm // our standard is 0.15 cm;
67 //-------Single track cuts-------------------------------------------------<
68 //=======Double track cuts=================================================>
69 //Dhevan's : PhiStarDifferenceMinimum=0.06; EtaDifferenceMinimum=0.02;
70 double PhiStarDifferenceMinimum=0.017; //[radian]
71 double EtaDifferenceMinimum=0.015; //[radian]
72 //=======Double track cuts=================================================<
74 // Switches for QA analyses
75 int runmults[cMu] = {1, 0, 0, 0};
76 int multbins[cMu+1] = {0, 100, 300, 500, 900};
78 int runch[2] = {1, 0};//K+-
79 const char *chrgs[2] = { "Kp", "Km"};
82 double ktrng[cKt+1] = {0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 1.0, 1.3};
87 int runtype = 2; // Types 0 - global, 1 - ITS only, 2 - TPC Inner
90 // AliFemtoEventReaderESDChainKine* Reader=new AliFemtoEventReaderESDChainKine();
91 // Reader->SetConstrained(true);
92 // Reader->SetUseTPCOnly(false);
98 if (runshlcms) shqmaxSH = 0.25;
102 // AliFemtoEventReaderESDChain* Reader=new AliFemtoEventReaderESDChain();
103 // Reader->SetConstrained(true);
104 // Reader->SetUseTPCOnly(false);
105 // Reader->SetReadTPCInner(false);
106 // Reader->SetUseMultiplicity(AliFemtoEventReaderESDChain::kV0Centrality);
109 // Reader->SetReadTrackType(AliFemtoEventReaderESDChain::kGlobal);
110 // else if (runtype == 1)
111 // Reader->SetReadTrackType(AliFemtoEventReaderESDChain::kITSOnly);
112 // else if (runtype == 2)
113 // Reader->SetReadTrackType(AliFemtoEventReaderESDChain::kTPCOnly);
115 // Reader->SetUsePhysicsSelection(kTRUE);
117 // Reader->SetUsePhysicsSelection(kFALSE);
119 // Reader->SetUseMultiplicity(AliFemtoEventReaderESDChain::kV0Centrality);
121 AliFemtoEventReaderAODChain *Reader = new AliFemtoEventReaderAODChain();
122 Reader->SetFilterBit(7);
123 Reader->SetCentralityPreSelection(0, 100);
124 /*On 02/26/2014 06:09 PM, Maciej SzymaĆski wrote:
127 > as I remember correctly, you were using the DCA cut on the global tracks
128 > corrsponding to chosen TPC-only tracks (SetDCAglobalTrack(kTRUE), right?
129 > The update I made regards cutting on the DCA on the TPC-only track, so
130 > you need to change in your config to: SetDCAglobalTrack(kFALSE).*/
131 //Reader->SetDCAglobalTrack(kTRUE);//option the DCA information from global tracks (ITS+TPC)
132 //Reader->SetDCAglobalTrack(kFALSE);
133 Reader->SetDCAglobalTrack(kTRUE);//proverit'!!!
135 AliFemtoManager* Manager=new AliFemtoManager();
136 Manager->SetEventReader(Reader);
138 AliFemtoVertexMultAnalysis *anetaphitpc[20];
139 AliFemtoBasicEventCut *mecetaphitpc[20];
140 AliFemtoCutMonitorEventMult *cutPassEvMetaphitpc[20];
141 AliFemtoCutMonitorEventMult *cutFailEvMetaphitpc[20];
142 AliFemtoCutMonitorEventVertex *cutPassEvVetaphitpc[20];
143 AliFemtoCutMonitorEventVertex *cutFailEvVetaphitpc[20];
144 AliFemtoKKTrackCut *dtc1etaphitpc[20];
145 AliFemtoKKTrackCut *dtc2etaphitpc[20];
146 // AliFemtoESDTrackCut *dtc1etaphitpc[20];
147 // AliFemtoESDTrackCut *dtc2etaphitpc[20];
148 AliFemtoCutMonitorParticleYPt *cutPass1YPtetaphitpc[20];
149 AliFemtoCutMonitorParticleYPt *cutFail1YPtetaphitpc[20];
150 AliFemtoCutMonitorParticlePID *cutPass1PIDetaphitpc[20];
151 AliFemtoCutMonitorParticlePID *cutFail1PIDetaphitpc[20];
152 AliFemtoCutMonitorParticleYPt *cutPass2YPtetaphitpc[20];
153 AliFemtoCutMonitorParticleYPt *cutFail2YPtetaphitpc[20];
154 AliFemtoCutMonitorParticlePID *cutPass2PIDetaphitpc[20];
155 AliFemtoCutMonitorParticlePID *cutFail2PIDetaphitpc[20];
156 AliFemtoPairCutAntiGamma *sqpcetaphitpc[20];//K+-
157 // AliFemtoShareQualityTPCEntranceSepPairCut *sqpcetaphitpc[20];
158 //AliFemtoPairCutRadialDistance *sqpcetaphitpc[20];//AliFemto dphi* cut
159 //AliFemtoPairCutRadialDistanceKK *sqpcetaphitpc[20];//Dhevan's dphi* cut
160 AliFemtoCorrFctnDirectYlm *cylmetaphitpc[20];
161 AliFemtoCorrFctnDEtaDPhi *cdedpetaphi[20*10];//20->20*10 due to kT
162 AliFemtoChi2CorrFctn *cchiqinvetaphitpc[20];
163 AliFemtoKTPairCut *ktpcuts[20*8];
164 AliFemtoCorrFctnDirectYlm *cylmkttpc[20*8];
165 AliFemtoQinvCorrFctn *cqinvkttpc[20*8];
166 AliFemtoCorrFctn3DLCMSSym *cq3dlcmskttpc[20*8];
167 AliFemtoCorrFctnTPCNcls *cqinvnclstpc[20];
168 AliFemtoShareQualityCorrFctn *cqinvsqtpc[20*10];
169 AliFemtoChi2CorrFctn *cqinvchi2tpc[20];
170 AliFemtoTPCInnerCorrFctn *cqinvinnertpc[20*10];
171 AliFemtoCorrFctnGammaMonitor *cgamma[20*10];
173 // *** Third QA task - HBT analysis with all pair cuts off, TPC only ***
174 // *** Begin K+K- analysis ***
177 for (int imult=0; imult<cMu/*4*/; imult++) {
178 if (runmults[imult]) {
179 for (int ichg=0; ichg<1/*K+-*/; ichg++) {//one loop
181 aniter = ichg*5+imult;
183 anetaphitpc[aniter] = new AliFemtoVertexMultAnalysis(4, -8.0, 8.0, 5, multbins[imult], multbins[imult+1]);
184 anetaphitpc[aniter]->SetNumEventsToMix(3);
185 anetaphitpc[aniter]->SetMinSizePartCollection(1);
187 mecetaphitpc[aniter] = new AliFemtoBasicEventCut();
188 mecetaphitpc[aniter]->SetEventMult(0,100000);
189 mecetaphitpc[aniter]->SetVertZPos(-8.0,8.0);
190 // mecetaphitpc->SetAcceptBadVertex(kTRUE);
193 cutPassEvMetaphitpc[aniter] = new AliFemtoCutMonitorEventMult(Form("cutPass%stpcM%i", chrgs[ichg], imult));
194 cutFailEvMetaphitpc[aniter] = new AliFemtoCutMonitorEventMult(Form("cutFail%stpcM%i", chrgs[ichg], imult));
195 mecetaphitpc[aniter]->AddCutMonitor(cutPassEvMetaphitpc[aniter], cutFailEvMetaphitpc[aniter]);
199 cutPassEvVetaphitpc[aniter] = new AliFemtoCutMonitorEventVertex(Form("cutPass%stpcM%i", chrgs[ichg], imult));
200 cutFailEvVetaphitpc[aniter] = new AliFemtoCutMonitorEventVertex(Form("cutFail%stpcM%i", chrgs[ichg], imult));
201 mecetaphitpc[aniter]->AddCutMonitor(cutPassEvVetaphitpc[aniter], cutFailEvVetaphitpc[aniter]);
204 dtc1etaphitpc[aniter] = new AliFemtoKKTrackCut();
205 dtc2etaphitpc[aniter] = new AliFemtoKKTrackCut();//K+-
207 dtc1etaphitpc[aniter]->SetCharge(1.0);
208 dtc2etaphitpc[aniter]->SetCharge(-1.0);
211 dtc1etaphitpc[aniter]->SetPt(0.14,1.5); //--- K+-
212 dtc1etaphitpc[aniter]->SetEta(-0.8,0.8);//--- K+-
213 dtc2etaphitpc[aniter]->SetPt(0.14,1.5); //--- K+-
214 dtc2etaphitpc[aniter]->SetEta(-0.8,0.8); //--- K+-
216 //--- Choose Kaon as Most Probable (switch on all cuts: TPC, TOF)---
217 dtc1etaphitpc[aniter]->SetMass(KaonMass);
218 dtc1etaphitpc[aniter]->SetMostProbableKaon();
219 dtc2etaphitpc[aniter]->SetMass(KaonMass);
220 dtc2etaphitpc[aniter]->SetMostProbableKaon();
221 //------------------- November 2013 -----------------------------------<
222 // new cuts to remove electron (do not take into analysis if 400<p<500)
223 dtc1etaphitpc[aniter]->SetNsigmaTPCle250(2.0);
224 dtc1etaphitpc[aniter]->SetNsigmaTPC250_400(2.0);
225 dtc1etaphitpc[aniter]->SetNsigmaTPC400_450(1.);//cut on e+e- orig(2.0);
226 dtc1etaphitpc[aniter]->SetNsigmaTPC450_500(0.);//cut on e+e- orig(2.0);
227 dtc1etaphitpc[aniter]->SetNsigmaTPCge500(3.0);
228 // new cuts are stronger, better separation of pion in TOF
229 // when momentum is greater then 800 MeV/c
230 dtc1etaphitpc[aniter]->SetNsigmaTOF500_800(2.0);
231 dtc1etaphitpc[aniter]->SetNsigmaTOF800_1000(1.5);
232 dtc1etaphitpc[aniter]->SetNsigmaTOFge1000(1.0);
233 //K+ contour (default p0=9999, p1=0, p2=0):
234 //dtc1etaphitpc[aniter]->SetKaonTCPdEdxContourP0( 196.25);//december 2014
235 //dtc1etaphitpc[aniter]->SetKaonTCPdEdxContourP1(-420.00);//december 2014
236 //dtc1etaphitpc[aniter]->SetKaonTCPdEdxContourP2( 300.00);//december 2014
238 dtc2etaphitpc[aniter]->SetNsigmaTPCle250(2.0);
239 dtc2etaphitpc[aniter]->SetNsigmaTPC250_400(2.0);
240 dtc2etaphitpc[aniter]->SetNsigmaTPC400_450(1.);//cut on e+e- orig(2.0);
241 dtc2etaphitpc[aniter]->SetNsigmaTPC450_500(0.);//cut on e+e- orig(2.0);
242 dtc2etaphitpc[aniter]->SetNsigmaTPCge500(3.0);
243 // new cuts are stronger, better separation of pion in TOF
244 // when momentum is greater then 800 MeV/c
245 dtc2etaphitpc[aniter]->SetNsigmaTOF500_800(2.0);
246 dtc2etaphitpc[aniter]->SetNsigmaTOF800_1000(1.5);
247 dtc2etaphitpc[aniter]->SetNsigmaTOFge1000(1.0);
248 //K+ contour (default p0=9999, p1=0, p2=0):
249 //dtc2etaphitpc[aniter]->SetKaonTCPdEdxContourP0( 196.25);//december 2014
250 //dtc2etaphitpc[aniter]->SetKaonTCPdEdxContourP1(-420.00);//december 2014
251 //dtc2etaphitpc[aniter]->SetKaonTCPdEdxContourP2( 300.00);//december 2014
252 //------------------- November 2013 ----------------------------------->
254 // *** Track quality cuts ***
256 dtc1etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCin);
257 dtc1etaphitpc[aniter]->SetminTPCncls(80);
258 dtc1etaphitpc[aniter]->SetRemoveKinks(kTRUE);
259 dtc1etaphitpc[aniter]->SetLabel(kFALSE);
260 dtc1etaphitpc[aniter]->SetMaxTPCChiNdof(4.0);
261 dtc1etaphitpc[aniter]->SetMaxImpactXY(DCAxy);
262 dtc1etaphitpc[aniter]->SetMaxImpactZ(DCAz);
264 dtc2etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCin);
265 dtc2etaphitpc[aniter]->SetminTPCncls(80);
266 dtc2etaphitpc[aniter]->SetRemoveKinks(kTRUE);
267 dtc2etaphitpc[aniter]->SetLabel(kFALSE);
268 dtc2etaphitpc[aniter]->SetMaxTPCChiNdof(4.0);
269 dtc2etaphitpc[aniter]->SetMaxImpactXY(DCAxy);
270 dtc2etaphitpc[aniter]->SetMaxImpactZ(DCAz);
273 cutPass1YPtetaphitpc[aniter] = new AliFemtoCutMonitorParticleYPt(Form("cutPass1%stpcM%i", chrgs[ichg], imult), 0.493677);
274 cutFail1YPtetaphitpc[aniter] = new AliFemtoCutMonitorParticleYPt(Form("cutFail1%stpcM%i", chrgs[ichg], imult), 0.493677);
275 dtc1etaphitpc[aniter]->AddCutMonitor(cutPass1YPtetaphitpc[aniter], cutFail1YPtetaphitpc[aniter]);
277 cutPass2YPtetaphitpc[aniter] = new AliFemtoCutMonitorParticleYPt(Form("cutPass2%stpcM%i", chrgs[ichg], imult), 0.493677);
278 cutFail2YPtetaphitpc[aniter] = new AliFemtoCutMonitorParticleYPt(Form("cutFail2%stpcM%i", chrgs[ichg], imult), 0.493677);
279 dtc2etaphitpc[aniter]->AddCutMonitor(cutPass1YPtetaphitpc[aniter], cutFail1YPtetaphitpc[aniter]);
282 cutPass1PIDetaphitpc[aniter] = new AliFemtoCutMonitorParticlePID(Form("cutPass1%stpcM%i", chrgs[ichg], imult),1);
283 cutFail1PIDetaphitpc[aniter] = new AliFemtoCutMonitorParticlePID(Form("cutFail1%stpcM%i", chrgs[ichg], imult),1);
284 dtc1etaphitpc[aniter]->AddCutMonitor(cutPass1PIDetaphitpc[aniter], cutFail1PIDetaphitpc[aniter]);
287 // sqpcetaphitpc[aniter] = new AliFemtoPairCutAntiGamma();
288 // sqpcetaphitpc[aniter] = new AliFemtoShareQualityTPCEntranceSepPairCut();
291 //sqpcetaphitpc[aniter] = new AliFemtoPairCutRadialDistance();//AliFemto dphi* cut
292 //sqpcetaphitpc[aniter] = new AliFemtoPairCutRadialDistanceKK(); //Dhevan's dphi* cut
293 sqpcetaphitpc[aniter] = new AliFemtoPairCutAntiGamma();
295 sqpcetaphitpc[aniter]->SetRemoveSameLabel(kFALSE);
296 //e+e-e+e-e+e-e+e-e+e-e+e-e+e-e+e- Set cut on gumma conversion e+e-
297 //sqpcetaphitpc[aniter]->SetMaxEEMinv(0.001);
298 //sqpcetaphitpc[aniter]->SetMaxThetaDiff(0.09);
299 //sqpcetaphitpc[aniter]->SetTPCEntranceSepMinimum(0.00001);
300 sqpcetaphitpc[aniter]->SetMaxEEMinv(0.0);
301 sqpcetaphitpc[aniter]->SetMaxThetaDiff(0.0);
302 sqpcetaphitpc[aniter]->SetTPCEntranceSepMinimum(0.0);
307 anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
308 anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);//K+
309 anetaphitpc[aniter]->SetSecondParticleCut(dtc2etaphitpc[aniter]);//K-
310 anetaphitpc[aniter]->SetPairCut(sqpcetaphitpc[aniter]);
312 //Qinv (without kT bins)-->
313 cqinvkttpc[aniter] = new AliFemtoQinvCorrFctn(Form("cqinv%stpcM%i", chrgs[ichg], imult),nbinssh,0.0,shqmax);
314 anetaphitpc[aniter]->AddCorrFctn(cqinvkttpc[aniter]);
315 //Qinv (without kT bins)--<
317 // cylmetaphitpc[aniter] = new AliFemtoCorrFctnDirectYlm(Form("cylm%stpcM%i", chrgs[ichg], imult),3,nbinssh,0.0,shqmaxSH,runshlcms);
318 /// anetaphitpc[aniter]->AddCorrFctn(cylmetaphitpc[aniter]);
320 // cqinvnclstpc[aniter] = new AliFemtoCorrFctnTPCNcls(Form("cqinvncls%stpcM%i", chrgs[ichg], imult),nbinssh,0.0,shqmax);
321 // anetaphitpc[aniter]->AddCorrFctn(cqinvnclstpc[aniter]);
323 // cqinvchi2tpc[aniter] = new AliFemtoChi2CorrFctn(Form("cqinvchi2%stpcM%i", chrgs[ichg], imult),nbinssh,0.0,shqmax);
324 // anetaphitpc[aniter]->AddCorrFctn(cqinvchi2tpc[aniter]);
328 for (int ikt=0; ikt<cKt/*8*/; ikt++) {
329 ktm = aniter*cKt/*8*/ + ikt;
330 ktpcuts[ktm] = new AliFemtoKTPairCut(ktrng[ikt], ktrng[ikt+1]);
333 cqinvkttpc[ktm] = new AliFemtoQinvCorrFctn(Form("cqinv%stpcM%ikT%i", chrgs[ichg], imult, ikt),nbinssh,0.0,(imult>6)?shqmax*2.5:shqmax);
334 //cqinvkttpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]);//??
335 anetaphitpc[aniter]->AddCorrFctn(cqinvkttpc[ktm]);
339 cq3dlcmskttpc[ktm] = new AliFemtoCorrFctn3DLCMSSym(Form("cq3d%stpcM%ikT%i", chrgs[ichg], imult, ikt),60,(imult>3)?((imult>6)?((imult>7)?0.6:0.4):0.25):0.15);
340 // cq3dlcmskttpc[ktm] = new AliFemtoCorrFctn3DLCMSSym(Form("cq3d%stpcM%ikT%i", chrgs[ichg], imult, ikt),50,0.5);
341 cq3dlcmskttpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
342 anetaphitpc[aniter]->AddCorrFctn(cq3dlcmskttpc[ktm]);
347 // cdedpetaphi[aniter] = new AliFemtoCorrFctnDEtaDPhi(Form("cdedp%stpcM%i", chrgs[ichg], imult),24, 24);
348 // anetaphitpc[aniter]->AddCorrFctn(cdedpetaphi[aniter]);
350 Manager->AddAnalysis(anetaphitpc[aniter]);
355 // *** End Kaon-Kaon (positive) analysis