]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FEMTOSCOPY/macros/Train/ProtonLambdaFemto/noTTC/Peripheral/fieldPlus/ConfigFemtoAnalysis.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / macros / Train / ProtonLambdaFemto / noTTC / Peripheral / 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] = {0, 0, 1, 1, 1, 1, 0, 0, 0, 0};
69   int multbins[11] = {0.00001, 100, 200, 300, 400, 500, 600, 700, 800, 900, 900};
70   int runch[10] = {0, 0, 0, 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(190, 610);
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               anetaphitpc[aniter]->SetVerboseMode(kFALSE);
168
169               mecetaphitpc[aniter] = new AliFemtoBasicEventCut();
170               mecetaphitpc[aniter]->SetEventMult(0,100000);
171               mecetaphitpc[aniter]->SetVertZPos(-10,10);
172           
173               // mecetaphitpc->SetAcceptBadVertex(kTRUE);
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.4,5.0); //0.4,100
192               dtc1etaphitpc[aniter]->SetEtaDaughters(0.8); //0.8
193               dtc1etaphitpc[aniter]->SetPtPosDaughter(0.7,5.0); //0.5
194               dtc1etaphitpc[aniter]->SetPtNegDaughter(0.16,5.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); //1.5 Jai, 0.6 //0.4
201               dtc1etaphitpc[aniter]->SetMaxDcaV0(1.0); //5.0
202               dtc1etaphitpc[aniter]->SetMinDaughtersToPrimVertex(0.1); //0.01
203               dtc1etaphitpc[aniter]->SetMaxCosPointingAngle(0.998); //0.99 - Jai //0.998
204               dtc1etaphitpc[aniter]->SetInvariantMassLambda(1.112683,1.118683);
205
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.4,5.0);
212               dtc2etaphitpc[aniter]->SetEtaDaughters(0.8);
213               dtc2etaphitpc[aniter]->SetPtPosDaughter(0.16,5.0);
214               dtc2etaphitpc[aniter]->SetPtNegDaughter(0.7,5.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(1.0);
222               dtc2etaphitpc[aniter]->SetMinDaughtersToPrimVertex(0.1);
223               dtc2etaphitpc[aniter]->SetMaxCosPointingAngle(0.998); //0.99 - Jai
224               dtc2etaphitpc[aniter]->SetInvariantMassLambda(1.112683,1.118683);
225
226               //ESD first particle cut -> Proton 3, 5; AntiProton 4, 6, 7, 8
227               dtc3etaphitpc[aniter] = new AliFemtoESDTrackCut();
228               dtc3etaphitpc[aniter]->SetMostProbableProton();
229               dtc3etaphitpc[aniter]->SetMass(ProtonMass);
230               dtc3etaphitpc[aniter]->SetCharge(1.0);
231               dtc3etaphitpc[aniter]->SetPt(0.7,5.0);
232               dtc3etaphitpc[aniter]->SetEta(-0.8,0.8);
233
234               // Track quality cuts      
235               dtc3etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCin);
236               dtc3etaphitpc[aniter]->SetminTPCncls(80);
237               dtc3etaphitpc[aniter]->SetRemoveKinks(kTRUE);
238               dtc3etaphitpc[aniter]->SetLabel(kFALSE);
239               dtc3etaphitpc[aniter]->SetMaxTPCChiNdof(4.0);
240               //dtc3etaphitpc[aniter]->SetMaxImpactXY(0.2);
241               dtc3etaphitpc[aniter]->SetMaxImpactZ(2.0);
242               dtc3etaphitpc[aniter]->SetMaxImpactXYPtDep(0.018, 0.035, -1.01);
243
244               //ESD first particle cut -> Proton 3, 5; AntiProton 4, 6, 8, 9
245               dtc4etaphitpc[aniter] = new AliFemtoESDTrackCut();
246               dtc4etaphitpc[aniter]->SetMostProbableProton();
247               dtc4etaphitpc[aniter]->SetMass(ProtonMass);
248               dtc4etaphitpc[aniter]->SetCharge(-1.0);
249               dtc4etaphitpc[aniter]->SetPt(0.7,5.0);
250               dtc4etaphitpc[aniter]->SetEta(-0.8,0.8);
251
252               // Track quality cuts      
253               dtc4etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCin);
254               dtc4etaphitpc[aniter]->SetminTPCncls(80);
255               dtc4etaphitpc[aniter]->SetRemoveKinks(kTRUE);
256               dtc4etaphitpc[aniter]->SetLabel(kFALSE);
257               dtc4etaphitpc[aniter]->SetMaxTPCChiNdof(4.0);
258               //dtc4etaphitpc[aniter]->SetMaxImpactXY(0.2);
259               dtc4etaphitpc[aniter]->SetMaxImpactZ(2.0);
260               dtc4etaphitpc[aniter]->SetMaxImpactXYPtDep(0.018, 0.035, -1.01);
261
262          
263               //V0 monitor
264               cutPass1V0[aniter] = new AliFemtoCutMonitorV0(Form("cutPass1%stpcM%i", chrgs[ichg], imult));
265               cutFail1V0[aniter] = new AliFemtoCutMonitorV0(Form("cutFail1%stpcM%i", chrgs[ichg], imult));
266               //dtc1etaphitpc[aniter]->AddCutMonitor(cutPass1V0[aniter], cutFail1V0[aniter]);
267
268               cutPass2V0[aniter] = new AliFemtoCutMonitorV0(Form("cutPass2%stpcM%i", chrgs[ichg], imult));
269               cutFail2V0[aniter] = new AliFemtoCutMonitorV0(Form("cutFail2%stpcM%i", chrgs[ichg], imult));
270               //dtc2etaphitpc[aniter]->AddCutMonitor(cutPass2V0[aniter], cutFail2V0[aniter]);
271  
272               cutPass1YPtetaphitpc[aniter] = new AliFemtoCutMonitorParticleYPt(Form("cutPass1%stpcM%i", chrgs[ichg], imult), ProtonMass);
273               cutFail1YPtetaphitpc[aniter] = new AliFemtoCutMonitorParticleYPt(Form("cutFail1%stpcM%i", chrgs[ichg], imult), ProtonMass);
274               //if(ichg==7 || ichg==8 || ichg==9)
275               //dtc3etaphitpc[aniter]->AddCutMonitor(cutPass1YPtetaphitpc[aniter], cutFail1YPtetaphitpc[aniter]);
276
277               cutPass2YPtetaphitpc[aniter] = new AliFemtoCutMonitorParticleYPt(Form("cutPass2%stpcM%i", chrgs[ichg], imult), ProtonMass);
278               cutFail2YPtetaphitpc[aniter] = new AliFemtoCutMonitorParticleYPt(Form("cutFail2%stpcM%i", chrgs[ichg], imult), ProtonMass);
279               //if(ichg==7 || ichg==8 || ichg==9)
280               //dtc4etaphitpc[aniter]->AddCutMonitor(cutPass2YPtetaphitpc[aniter], cutFail2YPtetaphitpc[aniter]);
281           
282               cutPass1PIDetaphitpc[aniter] = new AliFemtoCutMonitorParticlePID(Form("cutPass1%stpcM%i", chrgs[ichg], imult),2);
283               cutFail1PIDetaphitpc[aniter] = new AliFemtoCutMonitorParticlePID(Form("cutFail1%stpcM%i", chrgs[ichg], imult),2);
284               //dtc1etaphitpc[aniter]->AddCutMonitor(cutPass1PIDetaphitpc[aniter], cutFail1PIDetaphitpc[aniter]);
285
286               cutPass1PIDetaphitpc[aniter] = new AliFemtoCutMonitorParticlePID(Form("cutPass1%stpcM%i", chrgs[ichg], imult),2);
287               cutFail1PIDetaphitpc[aniter] = new AliFemtoCutMonitorParticlePID(Form("cutFail1%stpcM%i", chrgs[ichg], imult),2);
288               //if(ichg == 4 || ichg == 5 || ichg == 6 || ichg == 7 || ichg == 8 || ichg == 9)
289               //dtc3etaphitpc[aniter]->AddCutMonitor(cutPass1PIDetaphitpc[aniter], cutFail1PIDetaphitpc[aniter]);
290
291
292               sqp1cetaphitpc[aniter] = new AliFemtoV0PairCut();
293               sqp1cetaphitpc[aniter]->SetDataType(AliFemtoPairCut::kAOD);
294               sqp1cetaphitpc[aniter]->SetTPCEntranceSepMinimum(0.00001);
295               sqp1cetaphitpc[aniter]->SetTPCExitSepMinimum(-1.);
296               sqp1cetaphitpc[aniter]->SetMinAvgSeparation(0,0);
297               sqp1cetaphitpc[aniter]->SetMinAvgSeparation(1,0);
298               sqp1cetaphitpc[aniter]->SetMinAvgSeparation(2,0);
299               sqp1cetaphitpc[aniter]->SetMinAvgSeparation(3,0);
300
301               sqp2cetaphitpc[aniter] = new AliFemtoV0TrackPairCut(); //lambda-proton
302               sqp2cetaphitpc[aniter]->SetShareQualityMax(0.0); //between V0 daughter and track
303               sqp2cetaphitpc[aniter]->SetShareFractionMax(0.05);
304               sqp2cetaphitpc[aniter]->SetTPCOnly(kTRUE);
305               sqp2cetaphitpc[aniter]->SetDataType(AliFemtoPairCut::kAOD);
306               sqp2cetaphitpc[aniter]->SetTPCEntranceSepMinimum(0.00001);
307               sqp2cetaphitpc[aniter]->SetTPCExitSepMinimum(-1.);
308               sqp2cetaphitpc[aniter]->SetKstarCut(0.04,AliFemtoV0TrackPairCut::kLambda,AliFemtoV0TrackPairCut::kProton); //0 - lambda, 2 - proton
309               sqp2cetaphitpc[aniter]->SetMinAvgSeparation(0,0); //0 - track-pos, 1 - track-neg
310               sqp2cetaphitpc[aniter]->SetMinAvgSeparation(1,0);
311
312               sqp3cetaphitpc[aniter] = new AliFemtoV0TrackPairCut(); //antilambda-antiproton
313               sqp3cetaphitpc[aniter]->SetShareQualityMax(0.0); //between V0 daughter and track
314               sqp3cetaphitpc[aniter]->SetShareFractionMax(0.05);
315               sqp3cetaphitpc[aniter]->SetTPCOnly(kTRUE);
316               sqp3cetaphitpc[aniter]->SetDataType(AliFemtoPairCut::kAOD);
317               sqp3cetaphitpc[aniter]->SetTPCEntranceSepMinimum(0.00001);
318               sqp3cetaphitpc[aniter]->SetTPCExitSepMinimum(-1.);
319               sqp3cetaphitpc[aniter]->SetKstarCut(0.04,AliFemtoV0TrackPairCut::kAntiLambda,AliFemtoV0TrackPairCut::kAntiProton); //1 - antilambda, 3 - antiproton
320               sqp3cetaphitpc[aniter]->SetMinAvgSeparation(0,0); //0 - track-pos, 1 - track-neg
321               sqp3cetaphitpc[aniter]->SetMinAvgSeparation(1,0);
322
323               sqp4cetaphitpc[aniter] = new AliFemtoV0TrackPairCut(); //lambda-antiproton, antilambda-proton
324               sqp4cetaphitpc[aniter]->SetShareQualityMax(0.0); //between V0 daughter and track
325               sqp4cetaphitpc[aniter]->SetShareFractionMax(0.05);
326               sqp4cetaphitpc[aniter]->SetTPCOnly(kTRUE);
327               sqp4cetaphitpc[aniter]->SetDataType(AliFemtoPairCut::kAOD);
328               sqp4cetaphitpc[aniter]->SetTPCEntranceSepMinimum(0.00001);
329               sqp4cetaphitpc[aniter]->SetTPCExitSepMinimum(-1.);
330               //SetMinAvgSeparation w if'ach ponizej
331
332               //sqp3cetaphitpc[aniter] = new AliFemtoPairCutAntiGamma();
333               sqp5cetaphitpc[aniter] = new AliFemtoPairCutRadialDistance();
334               sqp5cetaphitpc[aniter]->SetMagneticFieldSign(1.0); //-1->field1, 1->field3
335               sqp5cetaphitpc[aniter]->SetPhiStarDifferenceMinimum(0.012);
336               sqp5cetaphitpc[aniter]->SetEtaDifferenceMinimum(0.017);
337               sqp5cetaphitpc[aniter]->SetShareQualityMax(0.0);
338               sqp5cetaphitpc[aniter]->SetShareFractionMax(0.05);
339               sqp5cetaphitpc[aniter]->SetRemoveSameLabel(kFALSE);
340               sqp5cetaphitpc[aniter]->SetMaxEEMinv(0.002);
341               sqp5cetaphitpc[aniter]->SetMaxThetaDiff(0.008);
342               sqp5cetaphitpc[aniter]->SetDataType(AliFemtoPairCut::kAOD);
343               sqp5cetaphitpc[aniter]->SetTPCEntranceSepMinimum(0.0001);
344           
345               avgsepcorr[aniter] = new AliFemtoAvgSepCorrFctn(Form("Avgsep%stpcM%i", chrgs[ichg], imult),5000,0,500);
346           
347
348               if(ichg == 0) //V0LL
349                 {
350                   anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
351                   anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
352                   anetaphitpc[aniter]->SetSecondParticleCut(dtc1etaphitpc[aniter]);
353                   anetaphitpc[aniter]->SetPairCut(sqp1cetaphitpc[aniter]);
354                   avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kV0s);
355                 }
356               else if(ichg == 1) //V0ALAL
357                 {
358                   anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
359                   anetaphitpc[aniter]->SetFirstParticleCut(dtc2etaphitpc[aniter]);
360                   anetaphitpc[aniter]->SetSecondParticleCut(dtc2etaphitpc[aniter]);
361                   anetaphitpc[aniter]->SetPairCut(sqp1cetaphitpc[aniter]);
362                   avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kV0s);
363                 }
364               else if(ichg == 2) //VOLAL
365                 {
366                   anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
367                   anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
368                   anetaphitpc[aniter]->SetSecondParticleCut(dtc2etaphitpc[aniter]);
369                   anetaphitpc[aniter]->SetPairCut(sqp1cetaphitpc[aniter]);
370                   avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kV0s);
371                 }
372               else if(ichg == 3) //V0PL
373                 {
374                   anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
375                   anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
376                   anetaphitpc[aniter]->SetSecondParticleCut(dtc3etaphitpc[aniter]);
377                   anetaphitpc[aniter]->SetPairCut(sqp2cetaphitpc[aniter]);
378                   avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kTrackV0);
379                 }
380               else if(ichg == 4) //V0APL
381                 {
382                   sqp4cetaphitpc[aniter]->SetMinAvgSeparation(0,0); //0 - track-pos, 1 - track-neg
383                   sqp4cetaphitpc[aniter]->SetMinAvgSeparation(1,0);
384                   anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
385                   anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
386                   anetaphitpc[aniter]->SetSecondParticleCut(dtc4etaphitpc[aniter]);
387                   anetaphitpc[aniter]->SetPairCut(sqp4cetaphitpc[aniter]);
388                   avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kTrackV0);
389                 }
390               else if(ichg == 5) //V0PAL
391                 {
392                   sqp4cetaphitpc[aniter]->SetMinAvgSeparation(0,0); //0 - track-pos, 1 - track-neg
393                   sqp4cetaphitpc[aniter]->SetMinAvgSeparation(1,0);
394                   anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
395                   anetaphitpc[aniter]->SetFirstParticleCut(dtc2etaphitpc[aniter]);
396                   anetaphitpc[aniter]->SetSecondParticleCut(dtc3etaphitpc[aniter]);
397                   anetaphitpc[aniter]->SetPairCut(sqp4cetaphitpc[aniter]);
398                   avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kTrackV0);
399                 }
400               else if(ichg == 6) //V0APAL
401                 {
402                   anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
403                   anetaphitpc[aniter]->SetFirstParticleCut(dtc2etaphitpc[aniter]);
404                   anetaphitpc[aniter]->SetSecondParticleCut(dtc4etaphitpc[aniter]);
405                   anetaphitpc[aniter]->SetPairCut(sqp3cetaphitpc[aniter]);
406                   avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kTrackV0);
407                 }
408               else if(ichg ==7) //PP
409                 {
410                   anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
411                   anetaphitpc[aniter]->SetFirstParticleCut(dtc3etaphitpc[aniter]);
412                   anetaphitpc[aniter]->SetSecondParticleCut(dtc3etaphitpc[aniter]);
413                   anetaphitpc[aniter]->SetPairCut(sqp5cetaphitpc[aniter]);
414                   avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kTracks);
415                 }
416               else if(ichg ==8) //PAP
417                 {
418                   anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
419                   anetaphitpc[aniter]->SetFirstParticleCut(dtc3etaphitpc[aniter]);
420                   anetaphitpc[aniter]->SetSecondParticleCut(dtc4etaphitpc[aniter]);
421                   anetaphitpc[aniter]->SetPairCut(sqp5cetaphitpc[aniter]);
422                   avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kTracks);
423                 }
424               else if(ichg ==9) //APAP
425                 {
426                   anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
427                   anetaphitpc[aniter]->SetFirstParticleCut(dtc4etaphitpc[aniter]);
428                   anetaphitpc[aniter]->SetSecondParticleCut(dtc4etaphitpc[aniter]);
429                   anetaphitpc[aniter]->SetPairCut(sqp5cetaphitpc[aniter]);
430                   avgsepcorr[aniter]->SetPairType(AliFemtoAvgSepCorrFctn::kTracks);
431                 }
432           
433               anetaphitpc[aniter]->AddCorrFctn(avgsepcorr[aniter]);
434
435               //cylmetaphitpc[aniter] = new AliFemtoCorrFctnDirectYlm(Form("cylm%stpcM%i", chrgs[ichg], imult),3,nbinssh,0.0,shqmax,runshlcms);
436               //anetaphitpc[aniter]->AddCorrFctn(cylmetaphitpc[aniter]);
437           
438               //cqinvnclstpc[aniter] = new AliFemtoCorrFctnTPCNcls(Form("cqinvncls%stpcM%i", chrgs[ichg], imult),nbinssh,0.0,shqmax);
439               //anetaphitpc[aniter]->AddCorrFctn(cqinvnclstpc[aniter]);
440
441               //cdedpetaphi[aniter] = new AliFemtoCorrFctnDEtaDPhi(Form("cdedp%stpcM%i", chrgs[ichg], imult),45, 45);
442               //anetaphitpc[aniter]->AddCorrFctn(cdedpetaphi[aniter]);
443
444           
445               //cqinvtitpc[aniter] = new AliFemtoTPCInnerCorrFctn(Form("cqinvti%stpcM%i", chrgs[ichg], imult),nbinssh,0.0,shqmax);
446               //anetaphitpc[aniter]->AddCorrFctn(cqinvtitpc[aniter]);
447           
448               //if(ichg==3 || ichg==4 || ichg==5 || ichg==6 || ichg==8) { //PL, APL, PAL, APAL, PAP
449               //cnonidtpc[aniter] = new AliFemtoCorrFctnNonIdDR(Form("cnonid%stpcM%i", chrgs[ichg], imult), nbinssh, 0.0,shqmax);
450               //anetaphitpc[aniter]->AddCorrFctn(cnonidtpc[aniter]);
451               //}
452               //else {
453               //cqinvtpc[aniter] = new AliFemtoQinvCorrFctn(Form("cqinv%stpcM%i", chrgs[ichg], imult),nbinssh,0.0,shqmax);
454               //anetaphitpc[aniter]->AddCorrFctn(cqinvtpc[aniter]);
455               //}
456           
457               cylmkttpc[aniter] = new AliFemtoCorrFctnDirectYlm(Form("cylm%stpcM%i", chrgs[ichg], imult),3, nbinssh, 0.0,shqmax, runshlcms);
458               anetaphitpc[aniter]->AddCorrFctn(cylmkttpc[aniter]);
459           
460               if (runktdep)
461                 {
462                   int ktm;
463                   for (int ikt=0; ikt<numOfkTBins; ikt++) {
464                     ktm = aniter*numOfkTBins + ikt;
465                     ktpcuts[ktm] = new AliFemtoKTPairCut(ktrng[ikt], ktrng[ikt+1]);
466               
467                     cylmkttpc[ktm] = new AliFemtoCorrFctnDirectYlm(Form("cylm%stpcM%ikT%i", chrgs[ichg], imult, ikt),3,nbinssh, 0.0,shqmax,runshlcms);
468                     cylmkttpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
469                     anetaphitpc[aniter]->AddCorrFctn(cylmkttpc[ktm]);
470
471                     //cdedpetaphi[ktm] = new AliFemtoCorrFctnDEtaDPhi(Form("cdedp%stpcM%ikT%i", chrgs[ichg], imult,ikt),45, 45);
472                     // cdedpetaphi[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
473                     //anetaphitpc[aniter]->AddCorrFctn(cdedpetaphi[ktm]);
474
475                     //if(ichg==3 || ichg==4 || ichg==5 || ichg==6 || ichg==8) { //PL, APL, PAL, APAL, PAP
476                     //cnonidtpc[ktm] = new AliFemtoCorrFctnNonIdDR(Form("cnonid%stpcM%ikT%i", chrgs[ichg], imult,ikt),nbinssh, 0.0,shqmax);
477                     //cnonidtpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]);     
478                     //anetaphitpc[aniter]->AddCorrFctn(cnonidtpc[ktm]);
479                     //}
480
481                     //else{ 
482                     //cqinvkttpc[ktm] = new AliFemtoQinvCorrFctn(Form("cqinv%stpcM%ikT%i", chrgs[ichg], imult, ikt),nbinssh,0.0,shqmax);
483                     //cqinvkttpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
484                     //anetaphitpc[aniter]->AddCorrFctn(cqinvkttpc[ktm]);
485              
486                     //}
487      
488                   }
489                 }
490           
491               Manager->AddAnalysis(anetaphitpc[aniter]);        
492         }
493       }
494     }
495   }
496   // *** End of analysis
497
498   return Manager;
499 }                         
500