]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FEMTOSCOPY/macros/Train/KaonTrain/ConfigFemtoAnalysis.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / macros / Train / KaonTrain / ConfigFemtoAnalysis.C
1
2 /*********************************************************************
3  *                                                                   *
4  * ConfigFemtoAnalysis.C - configuration macro for the femtoscopic   *
5  * analysis, meant as a QA process for two-particle effects          *
6  *                                                                   *
7  * Author: Adam Kisiel (Adam.Kisiel@cern.ch)                         *
8  *                                                                   *
9  *********************************************************************/
10
11 #if !defined(__CINT__) || defined(__MAKECINT_)
12 #include "AliFemtoManager.h"
13 #include "AliFemtoEventReaderESDChain.h"
14 #include "AliFemtoEventReaderESDChainKine.h"
15 #include "AliFemtoEventReaderAODChain.h"
16 #include "AliFemtoSimpleAnalysis.h"
17 #include "AliFemtoBasicEventCut.h"
18 #include "AliFemtoESDTrackCut.h"
19 #include "AliFemtoCorrFctn.h"
20 #include "AliFemtoCutMonitorParticleYPt.h"
21 #include "AliFemtoCutMonitorParticleVertPos.h"
22 #include "AliFemtoCutMonitorParticleMomRes.h"
23 #include "AliFemtoCutMonitorParticlePID.h"
24 #include "AliFemtoCutMonitorEventMult.h"
25 #include "AliFemtoCutMonitorEventVertex.h"
26 #include "AliFemtoShareQualityTPCEntranceSepPairCut.h"
27 #include "AliFemtoPairCutAntiGamma.h"
28 #include "AliFemtoPairCutRadialDistance.h"
29 #include "AliFemtoQinvCorrFctn.h"
30 #include "AliFemtoShareQualityCorrFctn.h"
31 #include "AliFemtoTPCInnerCorrFctn.h"
32 #include "AliFemtoVertexMultAnalysis.h"
33 #include "AliFemtoCorrFctn3DSpherical.h"
34 #include "AliFemtoChi2CorrFctn.h"
35 #include "AliFemtoCorrFctnTPCNcls.h"
36 #include "AliFemtoBPLCMS3DCorrFctn.h"
37 #include "AliFemtoCorrFctn3DLCMSSym.h"
38 #include "AliFemtoModelBPLCMSCorrFctn.h"
39 #include "AliFemtoModelCorrFctn3DSpherical.h"
40 #include "AliFemtoModelGausLCMSFreezeOutGenerator.h"
41 #include "AliFemtoModelGausRinvFreezeOutGenerator.h"
42 #include "AliFemtoModelManager.h"
43 #include "AliFemtoModelWeightGeneratorBasic.h"
44 #include "AliFemtoModelWeightGeneratorLednicky.h"
45 #include "AliFemtoCorrFctnDirectYlm.h"
46 #include "AliFemtoModelCorrFctnDirectYlm.h"
47 #include "AliFemtoModelCorrFctnSource.h"
48 #include "AliFemtoKTPairCut.h"
49 #endif
50
51 //________________________________________________________________________
52 AliFemtoManager* ConfigFemtoAnalysis() {
53
54   double PionMass = 0.13956995;
55   double KaonMass = 0.493677;
56         
57   // Switches for QA analyses
58   // int runmults[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
59   // int multbins[11] = {30, 70, 150, 310, 590, 990, 1570, 2370, 2370, 2370, 6500};
60
61   int runmults[10] = {1, 1, 1, 0, 0, 0, 0, 0, 0, 0};
62   int multbins[11] = {0, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900};
63
64   int runch[2] = {1, 1};
65   const char *chrgs[2] = { "Kp", "Km"};
66   
67   
68   int runktdep = 1;
69   double ktrng[8] = {0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 1.0};
70
71   int run3d = 1;
72   int runshlcms = 1;
73
74   int runtype = 2; // Types 0 - global, 1 - ITS only, 2 - TPC Inner
75   int isrealdata = 1;
76
77   //   AliFemtoEventReaderESDChainKine* Reader=new AliFemtoEventReaderESDChainKine();
78   //   Reader->SetConstrained(true);
79   //   Reader->SetUseTPCOnly(false);
80
81   double shqmax;
82   double shqmaxSH;
83   int nbinssh = 100;
84
85 //ml  if (runshlcms) shqmax = 0.25;
86 //  else shqmax = 0.9;
87   
88
89   if (runshlcms) shqmaxSH = 0.25;
90   shqmax = 0.9;
91   
92
93   // AliFemtoEventReaderESDChain* Reader=new AliFemtoEventReaderESDChain();
94   // Reader->SetConstrained(true);
95   // Reader->SetUseTPCOnly(false);
96   // Reader->SetReadTPCInner(false);
97   // Reader->SetUseMultiplicity(AliFemtoEventReaderESDChain::kV0Centrality);
98
99   // if (runtype == 0)
100   //   Reader->SetReadTrackType(AliFemtoEventReaderESDChain::kGlobal);
101   // else if (runtype == 1)
102   //   Reader->SetReadTrackType(AliFemtoEventReaderESDChain::kITSOnly);
103   // else if (runtype == 2)
104   //   Reader->SetReadTrackType(AliFemtoEventReaderESDChain::kTPCOnly);
105   // if (isrealdata)
106   //   Reader->SetUsePhysicsSelection(kTRUE);
107   // else
108   //   Reader->SetUsePhysicsSelection(kFALSE);
109
110   // Reader->SetUseMultiplicity(AliFemtoEventReaderESDChain::kV0Centrality);
111
112   AliFemtoEventReaderAODChain *Reader = new AliFemtoEventReaderAODChain();
113     Reader->SetFilterBit(7);
114     Reader->SetCentralityPreSelection(0, 200);
115 //fan
116     //Reader->SetCentralityPreSelection(0, 2000);
117
118   AliFemtoManager* Manager=new AliFemtoManager();
119   Manager->SetEventReader(Reader);
120
121   AliFemtoVertexMultAnalysis    *anetaphitpc[20];
122   AliFemtoBasicEventCut         *mecetaphitpc[20];
123   AliFemtoCutMonitorEventMult   *cutPassEvMetaphitpc[20];
124   AliFemtoCutMonitorEventMult   *cutFailEvMetaphitpc[20];
125   AliFemtoCutMonitorEventVertex *cutPassEvVetaphitpc[20];
126   AliFemtoCutMonitorEventVertex *cutFailEvVetaphitpc[20];
127   AliFemtoESDTrackCut           *dtc1etaphitpc[20];
128   AliFemtoESDTrackCut           *dtc2etaphitpc[20];
129   AliFemtoCutMonitorParticleYPt *cutPass1YPtetaphitpc[20];
130   AliFemtoCutMonitorParticleYPt *cutFail1YPtetaphitpc[20];
131   AliFemtoCutMonitorParticlePID *cutPass1PIDetaphitpc[20];
132   AliFemtoCutMonitorParticlePID *cutFail1PIDetaphitpc[20];
133   AliFemtoCutMonitorParticleYPt *cutPass2YPtetaphitpc[20];
134   AliFemtoCutMonitorParticleYPt *cutFail2YPtetaphitpc[20];
135   AliFemtoCutMonitorParticlePID *cutPass2PIDetaphitpc[20];
136   AliFemtoCutMonitorParticlePID *cutFail2PIDetaphitpc[20];
137 //AliFemtoPairCutAntiGamma      *sqpcetaphitpc[20];
138 //    AliFemtoShareQualityTPCEntranceSepPairCut      *sqpcetaphitpc[20];
139    AliFemtoPairCutRadialDistance      *sqpcetaphitpc[20];
140   AliFemtoCorrFctnDirectYlm     *cylmetaphitpc[20];
141   AliFemtoCorrFctnDEtaDPhi      *cdedpetaphi[20];
142   AliFemtoChi2CorrFctn          *cchiqinvetaphitpc[20];
143   AliFemtoKTPairCut             *ktpcuts[20*7];
144   AliFemtoCorrFctnDirectYlm     *cylmkttpc[20*7];
145   AliFemtoQinvCorrFctn          *cqinvkttpc[20*7];
146   AliFemtoCorrFctn3DLCMSSym     *cq3dlcmskttpc[20*7];
147   AliFemtoCorrFctnTPCNcls       *cqinvnclstpc[20];
148   AliFemtoShareQualityCorrFctn  *cqinvsqtpc[20*10];
149   AliFemtoChi2CorrFctn          *cqinvchi2tpc[20];
150   AliFemtoTPCInnerCorrFctn      *cqinvinnertpc[20*10];
151
152   // *** Third QA task - HBT analysis with all pair cuts off, TPC only ***
153   // *** Begin Kaon-Kaon (positive) analysis ***
154   int aniter = 0;
155
156   for (int imult=0; imult<10; imult++) {
157     if (runmults[imult]) {
158       for (int ichg=0; ichg<2; ichg++) {
159         if (runch[ichg]) {
160           aniter = ichg*10+imult;
161
162           anetaphitpc[aniter] = new AliFemtoVertexMultAnalysis(4, -8.0, 8.0, 5, multbins[imult], multbins[imult+1]);
163           anetaphitpc[aniter]->SetNumEventsToMix(3);
164           anetaphitpc[aniter]->SetMinSizePartCollection(1);
165
166           mecetaphitpc[aniter] = new AliFemtoBasicEventCut();
167           mecetaphitpc[aniter]->SetEventMult(0,100000);
168           mecetaphitpc[aniter]->SetVertZPos(-8,8);
169           if (isrealdata)
170              mecetaphitpc[aniter]->SetAcceptOnlyPhysics(kTRUE);
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           dtc1etaphitpc[aniter] = new AliFemtoESDTrackCut();
183           //     dtc1etaphitpc[aniter]->SetPidProbPion(0.0,1.001);
184           //     dtc1etaphitpc[aniter]->SetPidProbMuon(0.0,1.0);
185           //     dtc1etaphitpc[aniter]->SetPidProbKaon(0.0,1.0);
186           //     dtc1etaphitpc[aniter]->SetPidProbProton(0.0,1.0);
187           if (ichg == 0)
188             dtc1etaphitpc[aniter]->SetCharge(1.0);
189           else if (ichg == 1)
190             dtc1etaphitpc[aniter]->SetCharge(-1.0);
191             
192           dtc1etaphitpc[aniter]->SetPt(0.14,1.5);
193           //      dtc1etaphitpc[aniter]->SetEta(-1.2,1.2);
194           dtc1etaphitpc[aniter]->SetEta(-0.8,0.8);
195           //    //    dtc1etaphitpc[aniter]->SetEta(-0.5,0.5);
196           dtc1etaphitpc[aniter]->SetMass(KaonMass);
197           //      dtc1etaphitpc[aniter]->SetminTPCncls(80);
198
199                   
200           dtc1etaphitpc[aniter]->SetMostProbableKaon();
201           //      dtc1etaphitpc[aniter]->SetMostProbablePion();
202           //    // Track quality cuts
203           if (runtype == 0) {
204             dtc1etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
205             //      dtc1etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCrefit);
206             //    dtc1etaphitpc[aniter]->SetStatus(AliESDtrack::kITSrefit);
207             dtc1etaphitpc[aniter]->SetminTPCncls(80);
208             dtc1etaphitpc[aniter]->SetRemoveKinks(kTRUE);
209             dtc1etaphitpc[aniter]->SetLabel(kFALSE);
210             //    dtc1etaphitpc[aniter]->SetMaxITSChiNdof(6.0);
211             dtc1etaphitpc[aniter]->SetMaxTPCChiNdof(4.0);
212             dtc1etaphitpc[aniter]->SetMaxImpactXY(0.2);
213             //            dtc1etaphitpc[aniter]->SetMaxImpactXYPtDep(0.0182, 0.0350, -1.01);
214             dtc1etaphitpc[aniter]->SetMaxImpactZ(0.15);
215             //      dtc1etaphitpc[aniter]->SetMaxSigmaToVertex(6.0);
216           }
217           else if (runtype == 1) {
218             //      dtc1etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
219             //    dtc1etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCrefit);
220             //      dtc1etaphitpc[aniter]->SetStatus(AliESDtrack::kITSrefit|AliESDtrack::kITSpureSA);
221             //      dtc1etaphitpc[aniter]->SetminTPCncls(70);
222             dtc1etaphitpc[aniter]->SetStatus(AliESDtrack::kITSrefit);
223             dtc1etaphitpc[aniter]->SetRemoveKinks(kTRUE);
224             dtc1etaphitpc[aniter]->SetLabel(kFALSE);
225             //    dtc1etaphitpc[aniter]->SetMaxITSChiNdof(6.0);
226             //      dtc1etaphitpc[aniter]->SetMaxTPCChiNdof(6.0);
227             dtc1etaphitpc[aniter]->SetMaxImpactXY(0.2);
228             dtc1etaphitpc[aniter]->SetMaxImpactZ(0.25);
229             //      dtc1etaphitpc[aniter]->SetMaxSigmaToVertex(6.0);
230           }
231           else if (runtype == 2) {
232             //      dtc1etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
233             dtc1etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCin);
234             //      dtc1etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCrefit);
235             //    dtc1etaphitpc[aniter]->SetStatus(AliESDtrack::kITSrefit);
236             dtc1etaphitpc[aniter]->SetminTPCncls(80); //was "0"
237             dtc1etaphitpc[aniter]->SetRemoveKinks(kTRUE);
238             dtc1etaphitpc[aniter]->SetLabel(kFALSE);
239             //    dtc1etaphitpc[aniter]->SetMaxITSChiNdof(6.0);
240             dtc1etaphitpc[aniter]->SetMaxTPCChiNdof(4.0);
241             dtc1etaphitpc[aniter]->SetMaxImpactXY(0.20); //2.4
242             //            dtc1etaphitpc[aniter]->SetMaxImpactXYPtDep(0.0182, 0.0350, -1.01);
243             dtc1etaphitpc[aniter]->SetMaxImpactZ(0.15);  //3.0
244             //      dtc1etaphitpc[aniter]->SetMaxSigmaToVertex(6.0);
245           }
246           
247           cutPass1YPtetaphitpc[aniter] = new AliFemtoCutMonitorParticleYPt(Form("cutPass1%stpcM%i", chrgs[ichg], imult), 0.493677);
248           cutFail1YPtetaphitpc[aniter] = new AliFemtoCutMonitorParticleYPt(Form("cutFail1%stpcM%i", chrgs[ichg], imult), 0.493677);
249           dtc1etaphitpc[aniter]->AddCutMonitor(cutPass1YPtetaphitpc[aniter], cutFail1YPtetaphitpc[aniter]);
250           
251           cutPass1PIDetaphitpc[aniter] = new AliFemtoCutMonitorParticlePID(Form("cutPass1%stpcM%i", chrgs[ichg], imult),0);
252           cutFail1PIDetaphitpc[aniter] = new AliFemtoCutMonitorParticlePID(Form("cutFail1%stpcM%i", chrgs[ichg], imult),0);
253           dtc1etaphitpc[aniter]->AddCutMonitor(cutPass1PIDetaphitpc[aniter], cutFail1PIDetaphitpc[aniter]);
254           
255          // sqpcetaphitpc[aniter] = new AliFemtoPairCutAntiGamma();
256         //  sqpcetaphitpc[aniter] = new AliFemtoShareQualityTPCEntranceSepPairCut();
257           
258           if (ichg < 2) {
259           sqpcetaphitpc[aniter] = new AliFemtoPairCutRadialDistance();
260           if (runtype == 0) {
261             sqpcetaphitpc[aniter]->SetShareQualityMax(1.0);
262             sqpcetaphitpc[aniter]->SetShareFractionMax(0.05);
263             sqpcetaphitpc[aniter]->SetRemoveSameLabel(kFALSE);
264             // sqpcetaphitpc[aniter]->SetMaxEEMinv(0.0);
265             // sqpcetaphitpc[aniter]->SetMaxThetaDiff(0.0);
266                     //ml sqpcetaphitpc[aniter]->SetTPCEntranceSepMinimum(1.5);
267 //ml        sqpcetaphitpc[aniter]->SetRadialDistanceMinimum(0.12, 0.03);
268 //ml        sqpcetaphitpc[aniter]->SetEtaDifferenceMinimum(0.02);
269
270         
271           sqpcetaphitpc[aniter]->SetPhiStarDifferenceMinimum(0.017);
272          sqpcetaphitpc[aniter]->SetEtaDifferenceMinimum(0.015);
273          sqpcetaphitpc[aniter]->SetMinimumRadius(0.8);
274          sqpcetaphitpc[aniter]->SetMagneticFieldSign(1.0);
275           
276          
277             
278           }
279           else if (runtype == 1) {
280             sqpcetaphitpc[aniter]->SetShareQualityMax(1.0);
281             sqpcetaphitpc[aniter]->SetShareFractionMax(1.05);
282             sqpcetaphitpc[aniter]->SetRemoveSameLabel(kFALSE);
283             // sqpcetaphitpc[aniter]->SetMaxEEMinv(0.002);
284             // sqpcetaphitpc[aniter]->SetMaxThetaDiff(0.008);
285                     //ml sqpcetaphitpc[aniter]->SetTPCEntranceSepMinimum(5.0);
286 //          sqpcetaphitpc[aniter]->SetRadialDistanceMinimum(1.2, 0.03);
287 //          sqpcetaphitpc[aniter]->SetEtaDifferenceMinimum(0.02);
288
289 //  void SetPhiStarDifferenceMinimum(double dtpc);
290 //  void SetEtaDifferenceMinimum(double etpc);
291 //  void SetMinimumRadius(double minrad);
292 //  void SetMagneticFieldSign(int magsign);
293
294          sqpcetaphitpc[aniter]->SetPhiStarDifferenceMinimum(0.017);
295          sqpcetaphitpc[aniter]->SetEtaDifferenceMinimum(0.015);
296          sqpcetaphitpc[aniter]->SetMinimumRadius(0.8);
297          sqpcetaphitpc[aniter]->SetMagneticFieldSign(1.0);
298
299
300           }
301           else if (runtype == 2) {
302             //news here:
303             sqpcetaphitpc[aniter]->SetDataType(AliFemtoPairCutAntiGamma::kAOD); // was an error with sqpcetaphitpc[aniter]->SetUseAOD(kTRUE);
304             //
305             sqpcetaphitpc[aniter]->SetShareQualityMax(1.0);
306             sqpcetaphitpc[aniter]->SetShareFractionMax(0.05);
307             sqpcetaphitpc[aniter]->SetRemoveSameLabel(kFALSE);
308             // sqpcetaphitpc[aniter]->SetMaxEEMinv(0.0);
309             // sqpcetaphitpc[aniter]->SetMaxThetaDiff(0.0);
310                 //ml    sqpcetaphitpc[aniter]->SetTPCEntranceSepMinimum(0.0);
311 //ml        sqpcetaphitpc[aniter]->SetRadialDistanceMinimum(1.2, 0.045);
312 //ml        sqpcetaphitpc[aniter]->SetEtaDifferenceMinimum(0.016);
313
314          sqpcetaphitpc[aniter]->SetPhiStarDifferenceMinimum(0.017);
315          sqpcetaphitpc[aniter]->SetEtaDifferenceMinimum(0.015);
316          sqpcetaphitpc[aniter]->SetMinimumRadius(0.8);
317          sqpcetaphitpc[aniter]->SetMagneticFieldSign(1.0);
318          
319
320           }
321          }        
322
323           
324           anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
325           anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
326           anetaphitpc[aniter]->SetSecondParticleCut(dtc1etaphitpc[aniter]);
327           anetaphitpc[aniter]->SetPairCut(sqpcetaphitpc[aniter]);
328           
329          //       cylmetaphitpc[aniter] = new AliFemtoCorrFctnDirectYlm(Form("cylm%stpcM%i", chrgs[ichg], imult),3,nbinssh,0.0,shqmaxSH,runshlcms);
330           ///     anetaphitpc[aniter]->AddCorrFctn(cylmetaphitpc[aniter]);
331           
332           // cqinvnclstpc[aniter] = new AliFemtoCorrFctnTPCNcls(Form("cqinvncls%stpcM%i", chrgs[ichg], imult),nbinssh,0.0,shqmax);
333           // anetaphitpc[aniter]->AddCorrFctn(cqinvnclstpc[aniter]);
334
335           //      cqinvchi2tpc[aniter] = new AliFemtoChi2CorrFctn(Form("cqinvchi2%stpcM%i", chrgs[ichg], imult),nbinssh,0.0,shqmax);
336           //      anetaphitpc[aniter]->AddCorrFctn(cqinvchi2tpc[aniter]);
337
338           if (runktdep) {
339             int ktm;
340             for (int ikt=0; ikt<7; ikt++) {
341               ktm = aniter*7 + ikt;
342               ktpcuts[ktm] = new AliFemtoKTPairCut(ktrng[ikt], ktrng[ikt+1]);
343               
344               cylmkttpc[ktm] = new AliFemtoCorrFctnDirectYlm(Form("cylm%stpcM%ikT%i", chrgs[ichg], imult, ikt),3,
345                                                              nbinssh, 0.0,
346                                                              (imult>6)?shqmaxSH*2.5:shqmaxSH,
347                                                              runshlcms);
348               cylmkttpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
349               anetaphitpc[aniter]->AddCorrFctn(cylmkttpc[ktm]);
350               
351               cqinvkttpc[ktm] = new AliFemtoQinvCorrFctn(Form("cqinv%stpcM%ikT%i", chrgs[ichg], imult, ikt),nbinssh,0.0,(imult>6)?shqmax*2.5:shqmax);
352               cqinvkttpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
353               anetaphitpc[aniter]->AddCorrFctn(cqinvkttpc[ktm]);
354
355               cqinvsqtpc[ktm] = new AliFemtoShareQualityCorrFctn(Form("cqinvsq%stpcM%ikT%i", chrgs[ichg], imult, ikt),nbinssh,0.0,shqmax);
356               cqinvsqtpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
357               anetaphitpc[aniter]->AddCorrFctn(cqinvsqtpc[ktm]);
358
359               cqinvinnertpc[ktm] = new AliFemtoTPCInnerCorrFctn(Form("cqinvinner%stpcM%ikT%i", chrgs[ichg], imult, ikt),nbinssh,0.0,shqmax);
360               cqinvinnertpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
361               cqinvinnertpc[ktm]->SetRadius(1.2);
362               anetaphitpc[aniter]->AddCorrFctn(cqinvinnertpc[ktm]);
363
364               if (run3d) {
365                 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);
366                 cq3dlcmskttpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
367                 anetaphitpc[aniter]->AddCorrFctn(cq3dlcmskttpc[ktm]);
368               }
369             }
370           }
371           
372           // cdedpetaphi[aniter] = new AliFemtoCorrFctnDEtaDPhi(Form("cdedp%stpcM%i", chrgs[ichg], imult),24, 24);
373           // anetaphitpc[aniter]->AddCorrFctn(cdedpetaphi[aniter]);
374           
375           Manager->AddAnalysis(anetaphitpc[aniter]);    
376         }
377       }
378     }
379   }
380   // *** End Kaon-Kaon (positive) analysis
381
382   return Manager;
383 }                         
384