]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FEMTOSCOPY/macros/Train/DEtaDPhi/PID/AOD/NonId/PIK/ConfigFemtoAnalysis.C
config macros for NonId DEtaDPhi train analysis
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / macros / Train / DEtaDPhi / PID / AOD / NonId / PIK / 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"};
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
178                                 // Track quality cuts
179
180                                         if (runtype == 0)
181                                         {
182                                                 dtc1etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
183                                                 dtc1etaphitpc[aniter]->SetminTPCncls(70);
184                                                 dtc1etaphitpc[aniter]->SetRemoveKinks(kTRUE);
185                                                 dtc1etaphitpc[aniter]->SetLabel(kFALSE);
186                                                 //      dtc1etaphitpc[aniter]->SetMaxITSChiNdof(6.0);
187                                                 dtc1etaphitpc[aniter]->SetMaxTPCChiNdof(4.0);
188                                                 dtc1etaphitpc[aniter]->SetMaxImpactXYPtDep(0.018, 0.035, -1.01);        //      DCA xy
189                                                 dtc1etaphitpc[aniter]->SetMaxImpactZ(2);        //DCA Z
190                                                 //      dtc1etaphitpc[aniter]->SetMaxSigmaToVertex(6.0);
191                                                 dtc2etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
192                                                 dtc2etaphitpc[aniter]->SetminTPCncls(70);
193                                                 dtc2etaphitpc[aniter]->SetRemoveKinks(kTRUE);
194                                                 dtc2etaphitpc[aniter]->SetLabel(kFALSE);
195                                                 //      dtc2etaphitpc[aniter]->SetMaxITSChiNdof(6.0);
196                                                 dtc2etaphitpc[aniter]->SetMaxTPCChiNdof(4.0);
197                                                 dtc2etaphitpc[aniter]->SetMaxImpactXYPtDep(0.018, 0.035, -1.01) ;
198                                                 dtc2etaphitpc[aniter]->SetMaxImpactZ(2);
199                                                 //      dtc2etaphitpc[aniter]->SetMaxSigmaToVertex(6.0);
200                                         }
201                                         else if (runtype == 1)
202                                         {
203                                                 ;
204                                         }
205                                         else if (runtype == 2)
206                                         {
207                                                 ;
208                                         }
209
210                                         sqpcetaphitpc[aniter] = new AliFemtoPairCutAntiGamma();
211
212                                         if (runtype == 0)
213                                         {
214                                                 sqpcetaphitpc[aniter]->SetShareQualityMax(1.0);         // two track cuts on splitting and merging
215                                                 sqpcetaphitpc[aniter]->SetShareFractionMax(0.05);       //  ile moga miec wspolnych klastrow
216                                                 sqpcetaphitpc[aniter]->SetRemoveSameLabel(kFALSE);
217                                                 // sqpcetaphitpc[aniter]->SetMaxEEMinv(0.0);
218                                                 // sqpcetaphitpc[aniter]->SetMaxThetaDiff(0.0);
219                                                 //      sqpcetaphitpc[aniter]->SetTPCEntranceSepMinimum(1.5);
220                                                 // sqpcetaphitpc[aniter]->SetRadialDistanceMinimum(0.12, 0.03);
221                                                 //      sqpcetaphitpc[aniter]->SetEtaDifferenceMinimum(0.02);
222                                         }
223                                         else if (runtype == 1)
224                                         {
225                                                 
226                                         }
227                                         else if (runtype == 2)
228                                         {
229                                                 
230                                         }
231                 
232                                         anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
233
234                                         anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
235                                         anetaphitpc[aniter]->SetSecondParticleCut(dtc2etaphitpc[aniter]);
236                                                 //cMinvMonitor[aniter] = new AliFemtoCorrFctnMassInvMonitor(Form("%sM%i",chrgs[ichg], imult),500,ProtonMass);
237                                                 //anetaphitpc[aniter]->AddCorrFctn(cMinvMonitor[aniter]);
238                                         
239                                         anetaphitpc[aniter]->SetPairCut(sqpcetaphitpc[aniter]);
240                                         cdedpetaphi[aniter] = new AliFemtoCorrFctnDEtaDPhi(Form("cdedp%stpcM%i", chrgs[ichg], imult),35, 35);
241                                         anetaphitpc[aniter]->AddCorrFctn(cdedpetaphi[aniter]);
242
243                                         if (runktdep)
244                                         {
245                                                 int ktm;
246                                                 for (int ikt=0; ikt<numOfkTbins; ikt++)
247                                                 {
248                                                         ktm = aniter * numOfkTbins + ikt;
249                                                         ktpcuts[ktm] = new AliFemtoPairCutPt(ktrng[ikt], ktrng[ikt+1]);
250                                 
251                                                         //cqinvkttpc[ktm] = new AliFemtoQinvCorrFctn(Form("cqinv%stpcM%ikT%i", chrgs[ichg], imult, ikt),nbinssh,0.0,(imult>6)?shqmax*2.5:shqmax);
252                                                         //cqinvkttpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
253                                                         //anetaphitpc[aniter]->AddCorrFctn(cqinvkttpc[ktm]);
254
255                                                         cdedpetaphi[ktm] = new AliFemtoCorrFctnDEtaDPhi(Form("cdedp%stpcM%ipT%i", chrgs[ichg], imult,ikt),35, 35);
256                                                         cdedpetaphi[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
257                                                         anetaphitpc[aniter]->AddCorrFctn(cdedpetaphi[ktm]);
258                                                 }
259                                         }               
260                                         Manager->AddAnalysis(anetaphitpc[aniter]);      
261                                 }
262                         }
263                 }
264         }
265
266         return Manager;
267 }