]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FEMTOSCOPY/macros/Train/ProtonLambdaFemto/SemiCentral/ConfigFemtoAnalysis.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / macros / Train / ProtonLambdaFemto / SemiCentral / ConfigFemtoAnalysis.C
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 "AliFemtoCutMonitorParticlePID.h"
22 #include "AliFemtoCutMonitorEventMult.h"
23 #include "AliFemtoCutMonitorEventVertex.h"
24 #include "AliFemtoShareQualityTPCEntranceSepPairCut.h"
25 #include "AliFemtoPairCutAntiGamma.h"
26 #include "AliFemtoQinvCorrFctn.h"
27 #include "AliFemtoShareQualityCorrFctn.h"
28 #include "AliFemtoTPCInnerCorrFctn.h"
29 #include "AliFemtoVertexMultAnalysis.h"
30 #include "AliFemtoCorrFctn3DSpherical.h"
31 #include "AliFemtoChi2CorrFctn.h"
32 #include "AliFemtoCorrFctnTPCNcls.h"
33 #include "AliFemtoModelBPLCMSCorrFctn.h"
34 #include "AliFemtoModelCorrFctn3DSpherical.h"
35 #include "AliFemtoModelGausLCMSFreezeOutGenerator.h"
36 #include "AliFemtoModelGausRinvFreezeOutGenerator.h"
37 #include "AliFemtoModelManager.h"
38 #include "AliFemtoModelWeightGeneratorBasic.h"
39 #include "AliFemtoModelWeightGeneratorLednicky.h"
40 #include "AliFemtoCorrFctnDirectYlm.h"
41 #include "AliFemtoModelCorrFctnDirectYlm.h"
42 #include "AliFemtoModelCorrFctnSource.h"
43 #include "AliFemtoCutMonitorParticlePtPDG.h"
44 #include "AliFemtoKTPairCut.h"
45 #include "AliFemtoEnumeration.h"
46 #include "AliFemtoV0PairCut.h"
47 #include "AliFemtoV0TrackPairCut.h"
48 #include "AliFemtoV0TrackCut.h"
49 #include "AliFemtoEventReaderAODChain.h"
50 #include "AliFemtoCorrFctnNonIdDR.h"
51 #include "AliFemtoCutMonitorCollections.h"
52 #include "AliFemtoPairCutRadialDistance.h"
53 #include "AliFemtoAvgSepCorrFctn.h"
54 #endif
55
56 //________________________________________________________________________
57 AliFemtoManager* ConfigFemtoAnalysis() {
58
59   double PionMass = 0.13956995;
60   double KaonMass = 0.493677;
61   double ProtonMass = 0.938272013;
62   double LambdaMass = 1.115683;
63
64   double psi = TMath::Pi()/2.;
65   double psid = TMath::Pi()/6.;
66
67   // Switches for QA analyses
68   int runmults[10] = {0, 0, 1, 1, 1, 1, 0, 0, 0, 0};
69   int multbins[11] = {0.00001, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900};
70   int runch[10] = {1, 1, 1, 1, 1, 1, 1, 0, 0, 0};
71   //int runch[10] = {1, 1, 1, 0, 0, 0, 0, 0, 0, 0};
72   const char *chrgs[10] = { "V0LL", "V0ALAL", "V0LAL", "V0PL", "V0APL", "V0PAL", "V0APAL","PP","PAP","APAP" };
73
74   int runktdep = 0;
75   double ktrng[3] = {0.01, 0.7, 100};
76
77   int numOfMultBins = 10;
78   int numOfChTypes = 10;
79   int numOfkTBins = 2;
80
81   int runshlcms = 0;
82
83   int runtype = 2; // Types 0 - global, 1 - ITS only, 2 - TPC Inner
84
85   double shqmax;
86   int nbinssh = 100;
87
88   bool performSharedDaughterCut = true;
89
90   shqmax = 1.0;
91
92   AliFemtoEventReaderAODChain* Reader=new AliFemtoEventReaderAODChain();
93   Reader->SetFilterBit(7);
94   //Reader->SetCentralityPreSelection(0.00001, 310);
95   Reader->SetReadV0(1); //Read V0
96   Reader->SetEPVZERO(kTRUE);
97   Reader->SetCentralityFlattening(kTRUE);
98
99   // Reader->SetMagneticFieldSign(-1.0); //-1->field1, 1->field3
100
101   AliFemtoManager* Manager=new AliFemtoManager();
102   Manager->SetEventReader(Reader);
103
104
105   AliFemtoVertexMultAnalysis    *anetaphitpc[320];
106   AliFemtoBasicEventCut         *mecetaphitpc[320];
107   AliFemtoCutMonitorEventMult   *cutPassEvMetaphitpc[320];
108   AliFemtoCutMonitorEventMult   *cutFailEvMetaphitpc[320];
109   AliFemtoCutMonitorEventVertex *cutPassEvVetaphitpc[320];
110   AliFemtoCutMonitorEventVertex *cutFailEvVetaphitpc[320];
111   AliFemtoCutMonitorCollections   *cutPassColletaphitpc[320];
112   AliFemtoCutMonitorCollections   *cutFailColletaphitpc[320];
113   AliFemtoV0TrackCut           *dtc1etaphitpc[320];
114   AliFemtoV0TrackCut           *dtc2etaphitpc[320];
115   AliFemtoESDTrackCut           *dtc3etaphitpc[320];
116   AliFemtoESDTrackCut           *dtc4etaphitpc[320];
117   AliFemtoCutMonitorParticleYPt *cutPass1YPtetaphitpc[320];
118   AliFemtoCutMonitorParticleYPt *cutFail1YPtetaphitpc[320];
119   AliFemtoCutMonitorParticlePID *cutPass1PIDetaphitpc[320];
120   AliFemtoCutMonitorParticlePID *cutFail1PIDetaphitpc[320];
121   AliFemtoCutMonitorParticleYPt *cutPass2YPtetaphitpc[320];
122   AliFemtoCutMonitorParticleYPt *cutFail2YPtetaphitpc[320];
123   AliFemtoCutMonitorParticlePID *cutPass2PIDetaphitpc[320];
124   AliFemtoCutMonitorParticlePID *cutFail2PIDetaphitpc[320];
125   AliFemtoCutMonitorV0          *cutPass1V0[320];
126   AliFemtoCutMonitorV0          *cutFail1V0[320];
127   AliFemtoCutMonitorV0          *cutPass2V0[320];
128   AliFemtoCutMonitorV0          *cutFail2V0[320];
129   AliFemtoV0PairCut             *sqp1cetaphitpc[320];
130   AliFemtoV0TrackPairCut        *sqp2cetaphitpc[320];
131   AliFemtoV0TrackPairCut        *sqp3cetaphitpc[320];
132   AliFemtoV0TrackPairCut        *sqp4cetaphitpc[320];
133   //AliFemtoPairCutAntiGamma      *sqp3cetaphitpc[320];
134   AliFemtoPairCutRadialDistance *sqp5cetaphitpc[320];
135   AliFemtoCorrFctnDirectYlm     *cylmetaphitpc[320];
136   AliFemtoCorrFctnDEtaDPhi      *cdedpetaphi[320*6];
137   AliFemtoChi2CorrFctn          *cchiqinvetaphitpc[320];
138   AliFemtoKTPairCut             *ktpcuts[320*6];
139   AliFemtoCorrFctnDirectYlm     *cylmkttpc[320*6];
140   AliFemtoQinvCorrFctn          *cqinvkttpc[320*6];
141   AliFemtoAvgSepCorrFctn        *avgsepcorr[320*6];
142   //AliFemtoBPLCMS3DCorrFctn      *cq3dlcmskttpc[320*6];
143   AliFemtoCorrFctnNonIdDR       *cnonidtpc[320*6];
144   AliFemtoCorrFctnTPCNcls       *cqinvnclstpc[320];
145   AliFemtoShareQualityCorrFctn  *cqinvsqtpc[320];
146   AliFemtoTPCInnerCorrFctn      *cqinvtitpc[320];
147   //AliFemtoChi2CorrFctn          *cqinvchi2tpc[320];
148   AliFemtoQinvCorrFctn          *cqinvtpc[100*3];
149
150
151   // *** Third QA task - HBT analysis with all pair cuts off, TPC only ***
152   // *** Begin pion-pion (positive) analysis ***
153   int aniter = 0;
154
155   for (int imult=0; imult<numOfMultBins; imult++) {
156     if (runmults[imult]) {
157       for (int ichg=0; ichg<numOfChTypes; ichg++) {
158         if (runch[ichg]) {
159           aniter = imult * numOfChTypes + ichg;
160
161           if(ichg==3 || ichg==4 || ichg==5 || ichg==6)
162             runshlcms = 0;
163           else
164             runshlcms = 1;
165
166           anetaphitpc[aniter] = new AliFemtoVertexMultAnalysis(10, -10.0, 10.0, 4, multbins[imult], multbins[imult+1]);
167           anetaphitpc[aniter]->SetNumEventsToMix(10);
168           anetaphitpc[aniter]->SetMinSizePartCollection(1);
169           anetaphitpc[aniter]->SetVerboseMode(kFALSE);
170
171           mecetaphitpc[aniter] = new AliFemtoBasicEventCut();
172           mecetaphitpc[aniter]->SetEventMult(0,100000);
173           mecetaphitpc[aniter]->SetVertZPos(-10,10);
174
175           // cutPassEvMetaphitpc[aniter] = new AliFemtoCutMonitorEventMult(Form("cutPass%stpcM%i", chrgs[ichg], imult));
176           // cutFailEvMetaphitpc[aniter] = new AliFemtoCutMonitorEventMult(Form("cutFail%stpcM%i", chrgs[ichg], imult));
177           // mecetaphitpc[aniter]->AddCutMonitor(cutPassEvMetaphitpc[aniter], cutFailEvMetaphitpc[aniter]);
178
179           // cutPassEvVetaphitpc[aniter] = new AliFemtoCutMonitorEventVertex(Form("cutPass%stpcM%i", chrgs[ichg], imult));
180           // cutFailEvVetaphitpc[aniter] = new AliFemtoCutMonitorEventVertex(Form("cutFail%stpcM%i", chrgs[ichg], imult));
181           // mecetaphitpc[aniter]->AddCutMonitor(cutPassEvVetaphitpc[aniter], cutFailEvVetaphitpc[aniter]);
182
183           // cutPassColletaphitpc[aniter] = new AliFemtoCutMonitorCollections(Form("cutPass%stpcM%i", chrgs[ichg], imult));
184           // cutFailColletaphitpc[aniter] = new AliFemtoCutMonitorCollections(Form("cutFail%stpcM%i", chrgs[ichg], imult));
185           // mecetaphitpc[aniter]->AddCutMonitor(cutPassColletaphitpc[aniter], cutFailColletaphitpc[aniter]);
186
187           //V0 first particle cut -> Lambda ichg 0, 2, 6
188           dtc1etaphitpc[aniter] = new AliFemtoV0TrackCut();
189           dtc1etaphitpc[aniter]->SetMass(LambdaMass);
190           dtc1etaphitpc[aniter]->SetEta(0.8); //0.8
191           dtc1etaphitpc[aniter]->SetPt(0.5,5.0); //0.4,100
192           dtc1etaphitpc[aniter]->SetEtaDaughters(0.8); //0.8
193           dtc1etaphitpc[aniter]->SetPtPosDaughter(0.5,4.0); //0.5
194           dtc1etaphitpc[aniter]->SetPtNegDaughter(0.16,4.0); //0.16
195           dtc1etaphitpc[aniter]->SetTPCnclsDaughters(80); //80
196           dtc1etaphitpc[aniter]->SetNdofDaughters(4.0); //4.0
197           dtc1etaphitpc[aniter]->SetStatusDaughters(AliESDtrack::kTPCrefit/* | AliESDtrack::kITSrefit*/);
198           dtc1etaphitpc[aniter]->SetOnFlyStatus(kFALSE);
199           dtc1etaphitpc[aniter]->SetParticleType(0);
200           dtc1etaphitpc[aniter]->SetMaxDcaV0Daughters(0.4);
201           dtc1etaphitpc[aniter]->SetMaxDcaV0(1.0); //5.0
202           dtc1etaphitpc[aniter]->SetMinDaughtersToPrimVertex(0.1, 0.3); //0.01
203               dtc1etaphitpc[aniter]->SetMaxV0DecayLength(60.0);
204           dtc1etaphitpc[aniter]->SetMaxCosPointingAngle(0.9993);
205           dtc1etaphitpc[aniter]->SetInvariantMassLambda(LambdaMass-0.0041,LambdaMass+0.0041);
206
207           //V0 second particle cut -> AntiLambda ichg 1, 3, 4, 5
208           dtc2etaphitpc[aniter] = new AliFemtoV0TrackCut();
209           dtc2etaphitpc[aniter]->SetMass(LambdaMass);
210           dtc2etaphitpc[aniter]->SetEta(0.8);
211           dtc2etaphitpc[aniter]->SetPt(0.5,5.0);
212           dtc2etaphitpc[aniter]->SetEtaDaughters(0.8);
213           dtc2etaphitpc[aniter]->SetPtPosDaughter(0.16,4.0);
214           dtc2etaphitpc[aniter]->SetPtNegDaughter(0.3,4.0);
215           dtc2etaphitpc[aniter]->SetTPCnclsDaughters(80);
216           dtc2etaphitpc[aniter]->SetNdofDaughters(4.0); //4.0
217           dtc2etaphitpc[aniter]->SetStatusDaughters(AliESDtrack::kTPCrefit/* | AliESDtrack::kITSrefit*/);
218           dtc2etaphitpc[aniter]->SetOnFlyStatus(kFALSE); //kTRUE
219           dtc2etaphitpc[aniter]->SetParticleType(1);
220           dtc2etaphitpc[aniter]->SetMaxDcaV0Daughters(0.4); //1.5 Jai, 0.6
221           dtc2etaphitpc[aniter]->SetMaxDcaV0(.5);
222           dtc2etaphitpc[aniter]->SetMinDaughtersToPrimVertex(0.3, 0.1);
223           dtc2etaphitpc[aniter]->SetMaxCosPointingAngle(0.9993); //0.99 - Jai
224           dtc2etaphitpc[aniter]->SetMaxV0DecayLength(60.0);
225           dtc2etaphitpc[aniter]->SetInvariantMassLambda(LambdaMass-0.0030,LambdaMass+0.0036);
226
227
228           //ESD first particle cut -> Proton 3, 5; AntiProton 4, 6, 7, 8
229           dtc3etaphitpc[aniter] = new AliFemtoESDTrackCut();
230           dtc3etaphitpc[aniter]->SetMostProbableProton();
231           dtc3etaphitpc[aniter]->SetMass(ProtonMass);
232           dtc3etaphitpc[aniter]->SetCharge(1.0);
233           dtc3etaphitpc[aniter]->SetPt(0.7,4.0);
234           dtc3etaphitpc[aniter]->SetEta(-0.8,0.8);
235
236           // Track quality cuts
237           dtc3etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCin);
238           dtc3etaphitpc[aniter]->SetminTPCncls(80);
239           dtc3etaphitpc[aniter]->SetRemoveKinks(kTRUE);
240           dtc3etaphitpc[aniter]->SetLabel(kFALSE);
241           dtc3etaphitpc[aniter]->SetMaxTPCChiNdof(4.0);
242           dtc3etaphitpc[aniter]->SetMaxImpactXY(2.4);
243           dtc3etaphitpc[aniter]->SetMaxImpactZ(3.2);
244           dtc3etaphitpc[aniter]->SetNsigma(3.0);
245           dtc3etaphitpc[aniter]->SetNsigmaTPCTOF(kTRUE);
246
247           //ESD first particle cut -> Proton 3, 5; AntiProton 4, 6, 8, 9
248           dtc4etaphitpc[aniter] = new AliFemtoESDTrackCut();
249           dtc4etaphitpc[aniter]->SetMostProbableProton();
250           dtc4etaphitpc[aniter]->SetMass(ProtonMass);
251           dtc4etaphitpc[aniter]->SetCharge(-1.0);
252           dtc4etaphitpc[aniter]->SetPt(0.7,5.0);
253           dtc4etaphitpc[aniter]->SetEta(-0.8,0.8);
254
255           // Track quality cuts
256           dtc4etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCin);
257           dtc4etaphitpc[aniter]->SetminTPCncls(80);
258           dtc4etaphitpc[aniter]->SetRemoveKinks(kTRUE);
259           dtc4etaphitpc[aniter]->SetLabel(kFALSE);
260           dtc4etaphitpc[aniter]->SetMaxTPCChiNdof(4.0);
261           dtc4etaphitpc[aniter]->SetMaxImpactXY(2.0);
262           dtc4etaphitpc[aniter]->SetMaxImpactZ(3.2);
263           dtc4etaphitpc[aniter]->SetNsigma(3.0);
264           dtc4etaphitpc[aniter]->SetNsigmaTPCTOF(kTRUE);
265
266     //      //  //V0 monitor
267           // cutPass1V0[aniter] = new AliFemtoCutMonitorV0(Form("cutPass1%stpcM%i", chrgs[ichg], imult));
268     //       cutFail1V0[aniter] = new AliFemtoCutMonitorV0(Form("cutFail1%stpcM%i", chrgs[ichg], imult));
269     //       dtc1etaphitpc[aniter]->AddCutMonitor(cutPass1V0[aniter], cutFail1V0[aniter]);
270
271     //       cutPass2V0[aniter] = new AliFemtoCutMonitorV0(Form("cutPass2%stpcM%i", chrgs[ichg], imult));
272     //       cutFail2V0[aniter] = new AliFemtoCutMonitorV0(Form("cutFail2%stpcM%i", chrgs[ichg], imult));
273     //       dtc2etaphitpc[aniter]->AddCutMonitor(cutPass2V0[aniter], cutFail2V0[aniter]);
274
275           //cutPass1YPtetaphitpc[aniter] = new AliFemtoCutMonitorParticleYPt(Form("cutPass1%stpcM%i", chrgs[ichg], imult), ProtonMass);
276           //cutFail1YPtetaphitpc[aniter] = new AliFemtoCutMonitorParticleYPt(Form("cutFail1%stpcM%i", chrgs[ichg], imult), ProtonMass);
277           // //if(ichg==7 || ichg==8 || ichg==9)
278           // //dtc3etaphitpc[aniter]->AddCutMonitor(cutPass1YPtetaphitpc[aniter], cutFail1YPtetaphitpc[aniter]);
279
280           // cutPass2YPtetaphitpc[aniter] = new AliFemtoCutMonitorParticleYPt(Form("cutPass2%stpcM%i", chrgs[ichg], imult), ProtonMass);
281           // cutFail2YPtetaphitpc[aniter] = new AliFemtoCutMonitorParticleYPt(Form("cutFail2%stpcM%i", chrgs[ichg], imult), ProtonMass);
282           // //if(ichg==7 || ichg==8 || ichg==9)
283           // //dtc4etaphitpc[aniter]->AddCutMonitor(cutPass2YPtetaphitpc[aniter], cutFail2YPtetaphitpc[aniter]);
284
285           // cutPass1PIDetaphitpc[aniter] = new AliFemtoCutMonitorParticlePID(Form("cutPass1%stpcM%i", chrgs[ichg], imult),2);
286           // cutFail1PIDetaphitpc[aniter] = new AliFemtoCutMonitorParticlePID(Form("cutFail1%stpcM%i", chrgs[ichg], imult),2);
287           // //dtc1etaphitpc[aniter]->AddCutMonitor(cutPass1PIDetaphitpc[aniter], cutFail1PIDetaphitpc[aniter]);
288
289           // cutPass1PIDetaphitpc[aniter] = new AliFemtoCutMonitorParticlePID(Form("cutPass1%stpcM%i", chrgs[ichg], imult),2);
290           // cutFail1PIDetaphitpc[aniter] = new AliFemtoCutMonitorParticlePID(Form("cutFail1%stpcM%i", chrgs[ichg], imult),2);
291           // //if(ichg == 4 || ichg == 5 || ichg == 6 || ichg == 7 || ichg == 8 || ichg == 9)
292           // //dtc3etaphitpc[aniter]->AddCutMonitor(cutPass1PIDetaphitpc[aniter], cutFail1PIDetaphitpc[aniter]);
293
294
295           sqp1cetaphitpc[aniter] = new AliFemtoV0PairCut();
296           sqp1cetaphitpc[aniter]->SetDataType(AliFemtoPairCut::kAOD);
297           sqp1cetaphitpc[aniter]->SetTPCEntranceSepMinimum(0.00001);
298           sqp1cetaphitpc[aniter]->SetTPCExitSepMinimum(-1.);
299           sqp1cetaphitpc[aniter]->SetMinAvgSeparation(0,3);
300           sqp1cetaphitpc[aniter]->SetMinAvgSeparation(1,0);
301           sqp1cetaphitpc[aniter]->SetMinAvgSeparation(2,0);
302           sqp1cetaphitpc[aniter]->SetMinAvgSeparation(3,3);
303
304           sqp2cetaphitpc[aniter] = new AliFemtoV0TrackPairCut(); //lambda-proton
305           sqp2cetaphitpc[aniter]->SetShareQualityMax(1.0); //between V0 daughter and track
306           sqp2cetaphitpc[aniter]->SetShareFractionMax(0.05);
307           sqp2cetaphitpc[aniter]->SetTPCOnly(kTRUE);
308           sqp2cetaphitpc[aniter]->SetDataType(AliFemtoPairCut::kAOD);
309           sqp2cetaphitpc[aniter]->SetTPCEntranceSepMinimum(0.00001);
310           sqp2cetaphitpc[aniter]->SetTPCExitSepMinimum(-1.);
311           sqp2cetaphitpc[aniter]->SetKstarCut(0.04,AliFemtoV0TrackPairCut::kLambda,AliFemtoV0TrackPairCut::kProton); //0 - lambda, 2 - proton
312           sqp2cetaphitpc[aniter]->SetMinAvgSeparation(0,11); //0 - track-pos, 1 - track-neg
313           sqp2cetaphitpc[aniter]->SetMinAvgSeparation(1,0);
314
315           sqp3cetaphitpc[aniter] = new AliFemtoV0TrackPairCut(); //antilambda-antiproton
316           sqp3cetaphitpc[aniter]->SetShareQualityMax(1.0); //between V0 daughter and track
317           sqp3cetaphitpc[aniter]->SetShareFractionMax(0.05);
318           sqp3cetaphitpc[aniter]->SetTPCOnly(kTRUE);
319           sqp3cetaphitpc[aniter]->SetDataType(AliFemtoPairCut::kAOD);
320           sqp3cetaphitpc[aniter]->SetTPCEntranceSepMinimum(0.00001);
321           sqp3cetaphitpc[aniter]->SetTPCExitSepMinimum(-1.);
322           sqp3cetaphitpc[aniter]->SetKstarCut(0.04,AliFemtoV0TrackPairCut::kAntiLambda,AliFemtoV0TrackPairCut::kAntiProton); //1 - antilambda, 3 - antiproton
323           sqp3cetaphitpc[aniter]->SetMinAvgSeparation(0,0); //0 - track-pos, 1 - track-neg
324           sqp3cetaphitpc[aniter]->SetMinAvgSeparation(1,11);
325
326           sqp4cetaphitpc[aniter] = new AliFemtoV0TrackPairCut(); //lambda-antiproton, antilambda-proton
327           sqp4cetaphitpc[aniter]->SetShareQualityMax(1.0); //between V0 daughter and track
328           sqp4cetaphitpc[aniter]->SetShareFractionMax(0.05);
329           sqp4cetaphitpc[aniter]->SetTPCOnly(kTRUE);
330           sqp4cetaphitpc[aniter]->SetDataType(AliFemtoPairCut::kAOD);
331           sqp4cetaphitpc[aniter]->SetTPCEntranceSepMinimum(0.00001);
332           sqp4cetaphitpc[aniter]->SetTPCExitSepMinimum(-1.);
333           //SetMinAvgSeparation w if'ach ponizej
334
335           //sqp3cetaphitpc[aniter] = new AliFemtoPairCutAntiGamma();
336           sqp5cetaphitpc[aniter] = new AliFemtoPairCutRadialDistance();
337           sqp5cetaphitpc[aniter]->SetMagneticFieldSign(-1.0); //-1->field1, 1->field3
338           sqp5cetaphitpc[aniter]->SetPhiStarDifferenceMinimum(0.012);
339           sqp5cetaphitpc[aniter]->SetEtaDifferenceMinimum(0.017);
340           sqp5cetaphitpc[aniter]->SetShareQualityMax(1.0);
341           sqp5cetaphitpc[aniter]->SetShareFractionMax(0.05);
342           sqp5cetaphitpc[aniter]->SetRemoveSameLabel(kFALSE);
343           sqp5cetaphitpc[aniter]->SetMaxEEMinv(0.002);
344           sqp5cetaphitpc[aniter]->SetMaxThetaDiff(0.008);
345           sqp5cetaphitpc[aniter]->SetDataType(AliFemtoPairCut::kAOD);
346           sqp5cetaphitpc[aniter]->SetTPCEntranceSepMinimum(0.0001);
347
348           avgsepcorr[aniter] = new AliFemtoAvgSepCorrFctn(Form("Avgsep%stpcM%i", chrgs[ichg], imult),5000,0,500);
349           anetaphitpc[aniter]->SetV0SharedDaughterCut(performSharedDaughterCut);
350
351           if(ichg == 0) //V0LL
352           {
353             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
354             anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
355             anetaphitpc[aniter]->SetSecondParticleCut(dtc1etaphitpc[aniter]);
356             anetaphitpc[aniter]->SetPairCut(sqp1cetaphitpc[aniter]);
357             avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kV0s);
358           }
359           else if(ichg == 1) //V0ALAL
360           {
361             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
362             anetaphitpc[aniter]->SetFirstParticleCut(dtc2etaphitpc[aniter]);
363             anetaphitpc[aniter]->SetSecondParticleCut(dtc2etaphitpc[aniter]);
364             anetaphitpc[aniter]->SetPairCut(sqp1cetaphitpc[aniter]);
365             avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kV0s);
366           }
367           else if(ichg == 2) //VOLAL
368           {
369             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
370             anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
371             anetaphitpc[aniter]->SetSecondParticleCut(dtc2etaphitpc[aniter]);
372             anetaphitpc[aniter]->SetPairCut(sqp1cetaphitpc[aniter]);
373             avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kV0s);
374           }
375           else if(ichg == 3) //V0PL
376           {
377             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
378             anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
379             anetaphitpc[aniter]->SetSecondParticleCut(dtc3etaphitpc[aniter]);
380             anetaphitpc[aniter]->SetPairCut(sqp2cetaphitpc[aniter]);
381             avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kTrackV0);
382           }
383           else if(ichg == 4) //V0APL
384           {
385             sqp4cetaphitpc[aniter]->SetMinAvgSeparation(0,0); //0 - track-pos, 1 - track-neg
386             sqp4cetaphitpc[aniter]->SetMinAvgSeparation(1,11);
387             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
388             anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
389             anetaphitpc[aniter]->SetSecondParticleCut(dtc4etaphitpc[aniter]);
390             anetaphitpc[aniter]->SetPairCut(sqp4cetaphitpc[aniter]);
391             avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kTrackV0);
392           }
393           else if(ichg == 5) //V0PAL
394           {
395             sqp4cetaphitpc[aniter]->SetMinAvgSeparation(0,11); //0 - track-pos, 1 - track-neg
396             sqp4cetaphitpc[aniter]->SetMinAvgSeparation(1,0);
397             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
398             anetaphitpc[aniter]->SetFirstParticleCut(dtc2etaphitpc[aniter]);
399             anetaphitpc[aniter]->SetSecondParticleCut(dtc3etaphitpc[aniter]);
400             anetaphitpc[aniter]->SetPairCut(sqp4cetaphitpc[aniter]);
401             avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kTrackV0);
402           }
403           else if(ichg == 6) //V0APAL
404           {
405             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
406             anetaphitpc[aniter]->SetFirstParticleCut(dtc2etaphitpc[aniter]);
407             anetaphitpc[aniter]->SetSecondParticleCut(dtc4etaphitpc[aniter]);
408             anetaphitpc[aniter]->SetPairCut(sqp3cetaphitpc[aniter]);
409             avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kTrackV0);
410           }
411           else if(ichg ==7) //PP
412           {
413             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
414             anetaphitpc[aniter]->SetFirstParticleCut(dtc3etaphitpc[aniter]);
415             anetaphitpc[aniter]->SetSecondParticleCut(dtc3etaphitpc[aniter]);
416             anetaphitpc[aniter]->SetPairCut(sqp5cetaphitpc[aniter]);
417             avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kTracks);
418           }
419           else if(ichg ==8) //PAP
420           {
421             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
422             anetaphitpc[aniter]->SetFirstParticleCut(dtc3etaphitpc[aniter]);
423             anetaphitpc[aniter]->SetSecondParticleCut(dtc4etaphitpc[aniter]);
424             anetaphitpc[aniter]->SetPairCut(sqp5cetaphitpc[aniter]);
425             avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kTracks);
426           }
427           else if(ichg ==9) //APAP
428           {
429             anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
430             anetaphitpc[aniter]->SetFirstParticleCut(dtc4etaphitpc[aniter]);
431             anetaphitpc[aniter]->SetSecondParticleCut(dtc4etaphitpc[aniter]);
432             anetaphitpc[aniter]->SetPairCut(sqp5cetaphitpc[aniter]);
433             avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kTracks);
434           }
435
436           anetaphitpc[aniter]->AddCorrFctn(avgsepcorr[aniter]);
437
438           //cylmetaphitpc[aniter] = new AliFemtoCorrFctnDirectYlm(Form("cylm%stpcM%i", chrgs[ichg], imult),3,nbinssh,0.0,shqmax,runshlcms);
439           //anetaphitpc[aniter]->AddCorrFctn(cylmetaphitpc[aniter]);
440
441           //cqinvnclstpc[aniter] = new AliFemtoCorrFctnTPCNcls(Form("cqinvncls%stpcM%i", chrgs[ichg], imult),nbinssh,0.0,shqmax);
442           //anetaphitpc[aniter]->AddCorrFctn(cqinvnclstpc[aniter]);
443
444           //cdedpetaphi[aniter] = new AliFemtoCorrFctnDEtaDPhi(Form("cdedp%stpcM%i", chrgs[ichg], imult),45, 45);
445           //anetaphitpc[aniter]->AddCorrFctn(cdedpetaphi[aniter]);
446
447
448           // cqinvtitpc[aniter] = new AliFemtoTPCInnerCorrFctn(Form("cqinvti%stpcM%i", chrgs[ichg], imult),nbinssh,0.0,shqmax);
449           // anetaphitpc[aniter]->AddCorrFctn(cqinvtitpc[aniter]);
450
451           if(ichg==3 || ichg==4 || ichg==5 || ichg==6 || ichg==8) { //PL, APL, PAL, APAL, PAP
452             cnonidtpc[aniter] = new AliFemtoCorrFctnNonIdDR(Form("cnonid%stpcM%i", chrgs[ichg], imult), nbinssh, 0.0,shqmax);
453             anetaphitpc[aniter]->AddCorrFctn(cnonidtpc[aniter]);
454           }
455           else {
456             cqinvtpc[aniter] = new AliFemtoQinvCorrFctn(Form("cqinv%stpcM%i", chrgs[ichg], imult),nbinssh,0.0,shqmax);
457             anetaphitpc[aniter]->AddCorrFctn(cqinvtpc[aniter]);
458           }
459
460           // cylmkttpc[aniter] = new AliFemtoCorrFctnDirectYlm(Form("cylm%stpcM%i", chrgs[ichg], imult),3, nbinssh, 0.0,shqmax, runshlcms);
461           // anetaphitpc[aniter]->AddCorrFctn(cylmkttpc[aniter]);
462
463           if (runktdep)
464           {
465             int ktm;
466             for (int ikt=0; ikt<numOfkTBins; ikt++) {
467               ktm = aniter*numOfkTBins + ikt;
468               ktpcuts[ktm] = new AliFemtoKTPairCut(ktrng[ikt], ktrng[ikt+1]);
469
470               cylmkttpc[ktm] = new AliFemtoCorrFctnDirectYlm(Form("cylm%stpcM%ikT%i", chrgs[ichg], imult, ikt),3,nbinssh, 0.0,shqmax,runshlcms);
471               cylmkttpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
472               anetaphitpc[aniter]->AddCorrFctn(cylmkttpc[ktm]);
473
474               //cdedpetaphi[ktm] = new AliFemtoCorrFctnDEtaDPhi(Form("cdedp%stpcM%ikT%i", chrgs[ichg], imult,ikt),45, 45);
475               // cdedpetaphi[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
476               //anetaphitpc[aniter]->AddCorrFctn(cdedpetaphi[ktm]);
477
478               //if(ichg==3 || ichg==4 || ichg==5 || ichg==6 || ichg==8) { //PL, APL, PAL, APAL, PAP
479               //cnonidtpc[ktm] = new AliFemtoCorrFctnNonIdDR(Form("cnonid%stpcM%ikT%i", chrgs[ichg], imult,ikt),nbinssh, 0.0,shqmax);
480               //cnonidtpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
481               //anetaphitpc[aniter]->AddCorrFctn(cnonidtpc[ktm]);
482               //}
483
484               //else{
485               //cqinvkttpc[ktm] = new AliFemtoQinvCorrFctn(Form("cqinv%stpcM%ikT%i", chrgs[ichg], imult, ikt),nbinssh,0.0,shqmax);
486               //cqinvkttpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
487               //anetaphitpc[aniter]->AddCorrFctn(cqinvkttpc[ktm]);
488
489               //}
490
491             }
492           }
493
494           Manager->AddAnalysis(anetaphitpc[aniter]);
495         }
496       }
497     }
498   }
499   // *** End of analysis
500
501   return Manager;
502 }