]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FEMTOSCOPY/macros/Train/DEtaDPhi/PID/AOD/NonId/ConfigFemtoAnalysis.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / macros / Train / DEtaDPhi / PID / AOD / NonId / 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 "AliFemtoEventReaderAODChain.h"
15 #include "AliFemtoSimpleAnalysis.h"
16 #include "AliFemtoBasicEventCut.h"
17 #include "AliFemtoESDTrackCut.h"
18 #include "AliFemtoCorrFctn.h"
19 #include "AliFemtoCutMonitorParticleYPt.h"
20 //#include "AliFemtoCutMonitorParticleVertPos.h"
21 //#include "AliFemtoCutMonitorParticleMomRes.h"
22 #include "AliFemtoCutMonitorParticlePID.h"
23 //#include "AliFemtoCutMonitorEventMult.h"
24 //#include "AliFemtoCutMonitorEventVertex.h"
25 #include "AliFemtoShareQualityTPCEntranceSepPairCut.h"
26 #include "AliFemtoPairCutAntiGamma.h"
27 #include "AliFemtoPairCutRadialDistance.h"
28 #include "AliFemtoQinvCorrFctn.h"
29 //#include "AliFemtoTPCInnerCorrFctn.h"
30 #include "AliFemtoVertexMultAnalysis.h"
31 //#include "AliFemtoCutMonitorParticlePtPDG.h"
32 #include "AliFemtoPairCutPt.h"
33 //#include "AliFemtoCorrFctnMassInvMonitor.h"
34 #endif
35
36 //________________________________________________________________________
37 AliFemtoManager* ConfigFemtoAnalysis() {
38
39         double PionMass = 0.13956995;
40         double KaonMass = 0.493677;
41         double ProtonMass = 0.938272013;
42
43         const int numOfMultBins = 5;    
44         const int numOfChTypes = 12;
45         const int numOfkTbins = 2;
46
47         int runmults[numOfMultBins] = {1, 1, 1, 0, 1};
48         int multbins[numOfMultBins+1] = {0, 20, 50, 150, 2, 150};
49         
50         int runch[numOfChTypes] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
51         const char *chrgs[numOfChTypes] = { "PIpKp", "PImKm", "PIpKm", "PImKp", "PIpPp","PImPm","PIpPm","PImPp", "KpPp","KmPm","KpPm","KmPp"};
52         
53         int runktdep = 0;
54         double ktrng[numOfkTbins+1] = {0.0, 0.7, 100.0};
55
56         int runtype = 0; // Types 0 - global, 1 - ITS only, 2 - TPC Inner       //global tracks ->mfit ITS+TPC
57
58         int gammacut = 0;       // cut na ee z gamma 
59         
60
61         //AliFemtoEventReaderESDChainKine* Reader=new AliFemtoEventReaderESDChainKine();
62         //Reader->SetUseMultiplicity(AliFemtoEventReaderESDChainKine::kReferenceITSTPC);
63         //Reader->SetMagneticFieldSign(1.0);
64         //AliFemtoEventReaderESDChain *Reader = new AliFemtoEventReaderESDChain();
65         //Reader->SetUseMultiplicity(AliFemtoEventReaderESDChain::kReferenceITSTPC);
66
67         AliFemtoEventReaderAODChain *Reader = new AliFemtoEventReaderAODChain();
68         Reader->SetFilterBit(0);
69         Reader->SetUseMultiplicity(AliFemtoEventReaderAOD::kReference);
70
71         // //Reader->SetCentralityPreSelection(0.001, 910);
72
73         AliFemtoManager* Manager = new AliFemtoManager();
74         Manager->SetEventReader(Reader);
75
76         AliFemtoVertexMultAnalysis              *anetaphitpc[numOfMultBins*numOfChTypes];
77         AliFemtoBasicEventCut                            *mecetaphitpc[numOfMultBins*numOfChTypes];
78 /*      AliFemtoCutMonitorEventMult      *cutPassEvMetaphitpc[numOfMultBins*numOfChTypes];
79         AliFemtoCutMonitorEventMult      *cutFailEvMetaphitpc[numOfMultBins*numOfChTypes];
80         AliFemtoCutMonitorEventVertex *cutPassEvVetaphitpc[numOfMultBins*numOfChTypes];
81         AliFemtoCutMonitorEventVertex *cutFailEvVetaphitpc[numOfMultBins*numOfChTypes];
82 */      AliFemtoESDTrackCut                                      *dtc1etaphitpc[numOfMultBins*numOfChTypes];
83         AliFemtoESDTrackCut                                      *dtc2etaphitpc[numOfMultBins*numOfChTypes];
84
85         //       AliFemtoPairCutAntiGamma                       *sqpcetaphitpcdiff[numOfMultBins*numOfChTypes];
86         //       AliFemtoShareQualityTPCEntranceSepPairCut                      *sqpcetaphitpcsame[numOfMultBins*numOfChTypes];
87         AliFemtoPairCutAntiGamma                        *sqpcetaphitpc[numOfMultBins*numOfChTypes];
88         //      AliFemtoPairCutRadialDistance                   *sqpcetaphitpc[numOfMultBins*numOfChTypes];
89         //      AliFemtoChi2CorrFctn                                    *cchiqinvetaphitpc[numOfMultBins*numOfChTypes];
90         AliFemtoPairCutPt                                                *ktpcuts[numOfMultBins*numOfChTypes];
91         AliFemtoQinvCorrFctn                                    *cqinvkttpc[numOfMultBins*numOfChTypes];
92         AliFemtoQinvCorrFctn                                    *cqinvtpc[numOfMultBins*numOfChTypes];
93         AliFemtoCorrFctnDEtaDPhi                        *cdedpetaphi[numOfMultBins*numOfChTypes];
94         //AliFemtoCorrFctnMassInvMonitor                        *cMinvMonitor[numOfMultBins*numOfChTypes];
95
96         
97         // *** Third QA task - HBT analysis with all pair cuts off, TPC only ***
98         // *** Begin pion-pion (positive) analysis ***
99         int aniter = 0; 
100
101         for (int imult = 0; imult < numOfMultBins; imult++)
102         {
103                 if (runmults[imult])
104                 {
105                         for (int ichg = 0; ichg < numOfChTypes; ichg++)
106                         {
107                                 if (runch[ichg])
108                                 {
109
110                                         aniter = ichg * numOfMultBins + imult;
111                                         anetaphitpc[aniter] = new AliFemtoVertexMultAnalysis(8, -8.0, 8.0, 6, multbins[imult], multbins[imult+1]);
112                                         anetaphitpc[aniter]->SetNumEventsToMix(10);
113                                         anetaphitpc[aniter]->SetMinSizePartCollection(1);
114
115                                         mecetaphitpc[aniter] = new AliFemtoBasicEventCut();
116                                         mecetaphitpc[aniter]->SetEventMult(0.001,100000);
117                                         mecetaphitpc[aniter]->SetVertZPos(-8,8);//cm
118                                 
119                         /*              cutPassEvMetaphitpc[aniter] = new AliFemtoCutMonitorEventMult(Form("cutPass%stpcM%i", chrgs[ichg], imult));
120                                         cutFailEvMetaphitpc[aniter] = new AliFemtoCutMonitorEventMult(Form("cutFail%stpcM%i", chrgs[ichg], imult));
121                                         mecetaphitpc[aniter]->AddCutMonitor(cutPassEvMetaphitpc[aniter], cutFailEvMetaphitpc[aniter]);
122                 
123                                         cutPassEvVetaphitpc[aniter] = new AliFemtoCutMonitorEventVertex(Form("cutPass%stpcM%i", chrgs[ichg], imult));
124                                         cutFailEvVetaphitpc[aniter] = new AliFemtoCutMonitorEventVertex(Form("cutFail%stpcM%i", chrgs[ichg], imult));
125                                         mecetaphitpc[aniter]->AddCutMonitor(cutPassEvVetaphitpc[aniter], cutFailEvVetaphitpc[aniter]);
126                 */
127                                         dtc1etaphitpc[aniter] = new AliFemtoESDTrackCut();
128                                         dtc2etaphitpc[aniter] = new AliFemtoESDTrackCut();
129
130                                         dtc1etaphitpc[aniter]->SetEta(-1.0,1.0);
131                                         dtc2etaphitpc[aniter]->SetEta(-1.0,1.0);
132                                                         
133                                         if (ichg == 0) // PIpKp
134                                         {
135                                                 dtc1etaphitpc[aniter]->SetCharge(1.0);
136                                                 dtc1etaphitpc[aniter]->SetPt(0.2,20);
137                                                 dtc1etaphitpc[aniter]->SetMass(PionMass);               
138                                                 dtc1etaphitpc[aniter]->SetMostProbablePion();
139                                                 dtc2etaphitpc[aniter]->SetCharge(1.0);
140                                                 dtc2etaphitpc[aniter]->SetPt(0.3,20);
141                                                 dtc2etaphitpc[aniter]->SetMass(KaonMass);               
142                                                 dtc2etaphitpc[aniter]->SetMostProbableKaon();
143                                         }               
144                                         if (ichg == 1) // PImKm
145                                         {
146                                                 dtc1etaphitpc[aniter]->SetCharge(-1.0);
147                                                 dtc1etaphitpc[aniter]->SetPt(0.2,20);
148                                                 dtc1etaphitpc[aniter]->SetMass(PionMass);               
149                                                 dtc1etaphitpc[aniter]->SetMostProbablePion();
150                                                 dtc2etaphitpc[aniter]->SetCharge(-1.0);
151                                                 dtc2etaphitpc[aniter]->SetPt(0.3,20);
152                                                 dtc2etaphitpc[aniter]->SetMass(KaonMass);               
153                                                 dtc2etaphitpc[aniter]->SetMostProbableKaon();
154                                         }               
155                                         if (ichg == 2) //PIpKm
156                                         {
157                                                 dtc1etaphitpc[aniter]->SetCharge(1.0);
158                                                 dtc1etaphitpc[aniter]->SetPt(0.2,20);
159                                                 dtc1etaphitpc[aniter]->SetMass(PionMass);               
160                                                 dtc1etaphitpc[aniter]->SetMostProbablePion();
161                                                 dtc2etaphitpc[aniter]->SetCharge(-1.0);
162                                                 dtc2etaphitpc[aniter]->SetPt(0.3,20);
163                                                 dtc2etaphitpc[aniter]->SetMass(KaonMass);               
164                                                 dtc2etaphitpc[aniter]->SetMostProbableKaon();
165                                         }
166                                         if (ichg == 3) // PImKp
167                                         {
168                                                 dtc1etaphitpc[aniter]->SetCharge(-1.0);
169                                                 dtc1etaphitpc[aniter]->SetPt(0.2,20);
170                                                 dtc1etaphitpc[aniter]->SetMass(PionMass);               
171                                                 dtc1etaphitpc[aniter]->SetMostProbablePion();
172                                                 dtc2etaphitpc[aniter]->SetCharge(1.0);
173                                                 dtc2etaphitpc[aniter]->SetPt(0.3,20);
174                                                 dtc2etaphitpc[aniter]->SetMass(KaonMass);               
175                                                 dtc2etaphitpc[aniter]->SetMostProbableKaon();
176                                         }
177                                         if (ichg == 4) // PIpPp
178                                         {
179                                                 dtc1etaphitpc[aniter]->SetCharge(1.0);
180                                                 dtc1etaphitpc[aniter]->SetPt(0.2,20);
181                                                 dtc1etaphitpc[aniter]->SetMass(PionMass);               
182                                                 dtc1etaphitpc[aniter]->SetMostProbablePion();
183                                                 dtc2etaphitpc[aniter]->SetCharge(1.0);
184                                                 dtc2etaphitpc[aniter]->SetPt(0.5,20);
185                                                 dtc2etaphitpc[aniter]->SetMass(ProtonMass);             
186                                                 dtc2etaphitpc[aniter]->SetMostProbableProton();
187                                         }
188                                         if (ichg == 5) // PImPm
189                                         {
190                                                 dtc1etaphitpc[aniter]->SetCharge(-1.0);
191                                                 dtc1etaphitpc[aniter]->SetPt(0.2,20);
192                                                 dtc1etaphitpc[aniter]->SetMass(PionMass);               
193                                                 dtc1etaphitpc[aniter]->SetMostProbablePion();
194                                                 dtc2etaphitpc[aniter]->SetCharge(-1.0);
195                                                 dtc2etaphitpc[aniter]->SetPt(0.5,20);
196                                                 dtc2etaphitpc[aniter]->SetMass(ProtonMass);             
197                                                 dtc2etaphitpc[aniter]->SetMostProbableProton();
198                                         }
199                                         if (ichg == 6) // PIpPm
200                                         {
201                                                 dtc1etaphitpc[aniter]->SetCharge(1.0);
202                                                 dtc1etaphitpc[aniter]->SetPt(0.2,20);
203                                                 dtc1etaphitpc[aniter]->SetMass(PionMass);               
204                                                 dtc1etaphitpc[aniter]->SetMostProbablePion();
205                                                 dtc2etaphitpc[aniter]->SetCharge(-1.0);
206                                                 dtc2etaphitpc[aniter]->SetPt(0.5,20);
207                                                 dtc2etaphitpc[aniter]->SetMass(ProtonMass);             
208                                                 dtc2etaphitpc[aniter]->SetMostProbableProton();
209                                         }
210                                         if (ichg == 7) // PImPp
211                                         {
212                                                 dtc1etaphitpc[aniter]->SetCharge(-1.0);
213                                                 dtc1etaphitpc[aniter]->SetPt(0.2,20);
214                                                 dtc1etaphitpc[aniter]->SetMass(PionMass);               
215                                                 dtc1etaphitpc[aniter]->SetMostProbablePion();
216                                                 dtc2etaphitpc[aniter]->SetCharge(1.0);
217                                                 dtc2etaphitpc[aniter]->SetPt(0.5,20);
218                                                 dtc2etaphitpc[aniter]->SetMass(ProtonMass);             
219                                                 dtc2etaphitpc[aniter]->SetMostProbableProton();
220                                         }
221                                         if (ichg == 8) // KpPp
222                                         {
223                                                 dtc1etaphitpc[aniter]->SetCharge(1.0);
224                                                 dtc1etaphitpc[aniter]->SetPt(0.3,20);
225                                                 dtc1etaphitpc[aniter]->SetMass(KaonMass);               
226                                                 dtc1etaphitpc[aniter]->SetMostProbableKaon();
227                                                 dtc2etaphitpc[aniter]->SetCharge(1.0);
228                                                 dtc2etaphitpc[aniter]->SetPt(0.5,20);
229                                                 dtc2etaphitpc[aniter]->SetMass(ProtonMass);             
230                                                 dtc2etaphitpc[aniter]->SetMostProbableProton();
231                                         }
232                                         if (ichg == 9) // KmPm
233                                         {
234                                                 dtc1etaphitpc[aniter]->SetCharge(-1.0);
235                                                 dtc1etaphitpc[aniter]->SetPt(0.3,20);
236                                                 dtc1etaphitpc[aniter]->SetMass(KaonMass);               
237                                                 dtc1etaphitpc[aniter]->SetMostProbableKaon();
238                                                 dtc2etaphitpc[aniter]->SetCharge(-1.0);
239                                                 dtc2etaphitpc[aniter]->SetPt(0.5,20);
240                                                 dtc2etaphitpc[aniter]->SetMass(ProtonMass);             
241                                                 dtc2etaphitpc[aniter]->SetMostProbableProton();
242                                         }
243                                         if (ichg == 10) // KpPm
244                                         {
245                                                 dtc1etaphitpc[aniter]->SetCharge(1.0);
246                                                 dtc1etaphitpc[aniter]->SetPt(0.3,20);
247                                                 dtc1etaphitpc[aniter]->SetMass(KaonMass);               
248                                                 dtc1etaphitpc[aniter]->SetMostProbableKaon();
249                                                 dtc2etaphitpc[aniter]->SetCharge(-1.0);
250                                                 dtc2etaphitpc[aniter]->SetPt(0.5,20);
251                                                 dtc2etaphitpc[aniter]->SetMass(ProtonMass);             
252                                                 dtc2etaphitpc[aniter]->SetMostProbableProton();
253                                         }
254                                         if (ichg ==11) // KmPp
255                                         {
256                                                 dtc1etaphitpc[aniter]->SetCharge(-1.0);
257                                                 dtc1etaphitpc[aniter]->SetPt(0.3,20);
258                                                 dtc1etaphitpc[aniter]->SetMass(KaonMass);               
259                                                 dtc1etaphitpc[aniter]->SetMostProbableKaon();
260                                                 dtc2etaphitpc[aniter]->SetCharge(1.0);
261                                                 dtc2etaphitpc[aniter]->SetPt(0.5,20);
262                                                 dtc2etaphitpc[aniter]->SetMass(ProtonMass);             
263                                                 dtc2etaphitpc[aniter]->SetMostProbableProton();
264                                         }
265
266                                 // Track quality cuts
267
268                                         if (runtype == 0)
269                                         {
270                                                 dtc1etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
271                                                 dtc1etaphitpc[aniter]->SetminTPCncls(70);
272                                                 dtc1etaphitpc[aniter]->SetRemoveKinks(kTRUE);
273                                                 dtc1etaphitpc[aniter]->SetLabel(kFALSE);
274                                                 //      dtc1etaphitpc[aniter]->SetMaxITSChiNdof(6.0);
275                                                 dtc1etaphitpc[aniter]->SetMaxTPCChiNdof(4.0);
276                                                 dtc1etaphitpc[aniter]->SetMaxImpactXYPtDep(0.018, 0.035, -1.01);        //      DCA xy
277                                                 dtc1etaphitpc[aniter]->SetMaxImpactZ(2);        //DCA Z
278                                                 //      dtc1etaphitpc[aniter]->SetMaxSigmaToVertex(6.0);
279                                                 dtc2etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
280                                                 dtc2etaphitpc[aniter]->SetminTPCncls(70);
281                                                 dtc2etaphitpc[aniter]->SetRemoveKinks(kTRUE);
282                                                 dtc2etaphitpc[aniter]->SetLabel(kFALSE);
283                                                 //      dtc2etaphitpc[aniter]->SetMaxITSChiNdof(6.0);
284                                                 dtc2etaphitpc[aniter]->SetMaxTPCChiNdof(4.0);
285                                                 dtc2etaphitpc[aniter]->SetMaxImpactXYPtDep(0.018, 0.035, -1.01) ;
286                                                 dtc2etaphitpc[aniter]->SetMaxImpactZ(2);
287                                                 //      dtc2etaphitpc[aniter]->SetMaxSigmaToVertex(6.0);
288                                         }
289                                         else if (runtype == 1)
290                                         {
291                                                 ;
292                                         }
293                                         else if (runtype == 2)
294                                         {
295                                                 ;
296                                         }
297
298                                         sqpcetaphitpc[aniter] = new AliFemtoPairCutAntiGamma();
299
300                                         if (runtype == 0)
301                                         {
302                                                 sqpcetaphitpc[aniter]->SetShareQualityMax(1.0);         // two track cuts on splitting and merging
303                                                 sqpcetaphitpc[aniter]->SetShareFractionMax(0.05);       //  ile moga miec wspolnych klastrow
304                                                 sqpcetaphitpc[aniter]->SetRemoveSameLabel(kFALSE);
305                                                 // sqpcetaphitpc[aniter]->SetMaxEEMinv(0.0);
306                                                 // sqpcetaphitpc[aniter]->SetMaxThetaDiff(0.0);
307                                                 //      sqpcetaphitpc[aniter]->SetTPCEntranceSepMinimum(1.5);
308                                                 // sqpcetaphitpc[aniter]->SetRadialDistanceMinimum(0.12, 0.03);
309                                                 //      sqpcetaphitpc[aniter]->SetEtaDifferenceMinimum(0.02);
310                                         }
311                                         else if (runtype == 1)
312                                         {
313                                                 
314                                         }
315                                         else if (runtype == 2)
316                                         {
317                                                 
318                                         }
319                 
320                                         anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
321
322                                         anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
323                                         anetaphitpc[aniter]->SetSecondParticleCut(dtc2etaphitpc[aniter]);
324                                                 //cMinvMonitor[aniter] = new AliFemtoCorrFctnMassInvMonitor(Form("%sM%i",chrgs[ichg], imult),500,ProtonMass);
325                                                 //anetaphitpc[aniter]->AddCorrFctn(cMinvMonitor[aniter]);
326                                         
327                                         anetaphitpc[aniter]->SetPairCut(sqpcetaphitpc[aniter]);
328                                         cdedpetaphi[aniter] = new AliFemtoCorrFctnDEtaDPhi(Form("cdedp%stpcM%i", chrgs[ichg], imult),35, 35);
329                                         anetaphitpc[aniter]->AddCorrFctn(cdedpetaphi[aniter]);
330
331                                         if (runktdep)
332                                         {
333                                                 int ktm;
334                                                 for (int ikt=0; ikt<numOfkTbins; ikt++)
335                                                 {
336                                                         ktm = aniter * numOfkTbins + ikt;
337                                                         ktpcuts[ktm] = new AliFemtoPairCutPt(ktrng[ikt], ktrng[ikt+1]);
338                                 
339                                                         //cqinvkttpc[ktm] = new AliFemtoQinvCorrFctn(Form("cqinv%stpcM%ikT%i", chrgs[ichg], imult, ikt),nbinssh,0.0,(imult>6)?shqmax*2.5:shqmax);
340                                                         //cqinvkttpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
341                                                         //anetaphitpc[aniter]->AddCorrFctn(cqinvkttpc[ktm]);
342
343                                                         cdedpetaphi[ktm] = new AliFemtoCorrFctnDEtaDPhi(Form("cdedp%stpcM%ipT%i", chrgs[ichg], imult,ikt),35, 35);
344                                                         cdedpetaphi[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
345                                                         anetaphitpc[aniter]->AddCorrFctn(cdedpetaphi[ktm]);
346                                                 }
347                                         }               
348                                         Manager->AddAnalysis(anetaphitpc[aniter]);      
349                                 }
350                         }
351                 }
352         }
353
354         return Manager;
355 }