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