]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FEMTOSCOPY/macros/Train/DEtaDPhi/PID/AOD/NonId/KP/ConfigFemtoAnalysis.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / macros / Train / DEtaDPhi / PID / AOD / NonId / KP / 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};
51         const char *chrgs[numOfChTypes] = {"PIpPp","PImPm","PIpPm","PImPp"};
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                                         if (ichg == 0) // PIpPp
133                                         {
134                                                 dtc1etaphitpc[aniter]->SetCharge(1.0);
135                                                 dtc1etaphitpc[aniter]->SetPt(0.2,20);
136                                                 dtc1etaphitpc[aniter]->SetMass(PionMass);               
137                                                 dtc1etaphitpc[aniter]->SetMostProbablePion();
138                                                 dtc2etaphitpc[aniter]->SetCharge(1.0);
139                                                 dtc2etaphitpc[aniter]->SetPt(0.5,20);
140                                                 dtc2etaphitpc[aniter]->SetMass(ProtonMass);             
141                                                 dtc2etaphitpc[aniter]->SetMostProbableProton();
142                                         }
143                                         if (ichg == 1) // PImPm
144                                         {
145                                                 dtc1etaphitpc[aniter]->SetCharge(-1.0);
146                                                 dtc1etaphitpc[aniter]->SetPt(0.2,20);
147                                                 dtc1etaphitpc[aniter]->SetMass(PionMass);               
148                                                 dtc1etaphitpc[aniter]->SetMostProbablePion();
149                                                 dtc2etaphitpc[aniter]->SetCharge(-1.0);
150                                                 dtc2etaphitpc[aniter]->SetPt(0.5,20);
151                                                 dtc2etaphitpc[aniter]->SetMass(ProtonMass);             
152                                                 dtc2etaphitpc[aniter]->SetMostProbableProton();
153                                         }
154                                         if (ichg == 2) // PIpPm
155                                         {
156                                                 dtc1etaphitpc[aniter]->SetCharge(1.0);
157                                                 dtc1etaphitpc[aniter]->SetPt(0.2,20);
158                                                 dtc1etaphitpc[aniter]->SetMass(PionMass);               
159                                                 dtc1etaphitpc[aniter]->SetMostProbablePion();
160                                                 dtc2etaphitpc[aniter]->SetCharge(-1.0);
161                                                 dtc2etaphitpc[aniter]->SetPt(0.5,20);
162                                                 dtc2etaphitpc[aniter]->SetMass(ProtonMass);             
163                                                 dtc2etaphitpc[aniter]->SetMostProbableProton();
164                                         }
165                                         if (ichg == 3) // PImPp
166                                         {
167                                                 dtc1etaphitpc[aniter]->SetCharge(-1.0);
168                                                 dtc1etaphitpc[aniter]->SetPt(0.2,20);
169                                                 dtc1etaphitpc[aniter]->SetMass(PionMass);               
170                                                 dtc1etaphitpc[aniter]->SetMostProbablePion();
171                                                 dtc2etaphitpc[aniter]->SetCharge(1.0);
172                                                 dtc2etaphitpc[aniter]->SetPt(0.5,20);
173                                                 dtc2etaphitpc[aniter]->SetMass(ProtonMass);             
174                                                 dtc2etaphitpc[aniter]->SetMostProbableProton();
175                                         }
176                                         
177                                 // Track quality cuts
178
179                                         if (runtype == 0)
180                                         {
181                                                 dtc1etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
182                                                 dtc1etaphitpc[aniter]->SetminTPCncls(70);
183                                                 dtc1etaphitpc[aniter]->SetRemoveKinks(kTRUE);
184                                                 dtc1etaphitpc[aniter]->SetLabel(kFALSE);
185                                                 //      dtc1etaphitpc[aniter]->SetMaxITSChiNdof(6.0);
186                                                 dtc1etaphitpc[aniter]->SetMaxTPCChiNdof(4.0);
187                                                 dtc1etaphitpc[aniter]->SetMaxImpactXYPtDep(0.018, 0.035, -1.01);        //      DCA xy
188                                                 dtc1etaphitpc[aniter]->SetMaxImpactZ(2);        //DCA Z
189                                                 //      dtc1etaphitpc[aniter]->SetMaxSigmaToVertex(6.0);
190                                                 dtc2etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCrefit|AliESDtrack::kITSrefit);
191                                                 dtc2etaphitpc[aniter]->SetminTPCncls(70);
192                                                 dtc2etaphitpc[aniter]->SetRemoveKinks(kTRUE);
193                                                 dtc2etaphitpc[aniter]->SetLabel(kFALSE);
194                                                 //      dtc2etaphitpc[aniter]->SetMaxITSChiNdof(6.0);
195                                                 dtc2etaphitpc[aniter]->SetMaxTPCChiNdof(4.0);
196                                                 dtc2etaphitpc[aniter]->SetMaxImpactXYPtDep(0.018, 0.035, -1.01) ;
197                                                 dtc2etaphitpc[aniter]->SetMaxImpactZ(2);
198                                                 //      dtc2etaphitpc[aniter]->SetMaxSigmaToVertex(6.0);
199                                         }
200                                         else if (runtype == 1)
201                                         {
202                                                 ;
203                                         }
204                                         else if (runtype == 2)
205                                         {
206                                                 ;
207                                         }
208
209                                         sqpcetaphitpc[aniter] = new AliFemtoPairCutAntiGamma();
210
211                                         if (runtype == 0)
212                                         {
213                                                 sqpcetaphitpc[aniter]->SetShareQualityMax(1.0);         // two track cuts on splitting and merging
214                                                 sqpcetaphitpc[aniter]->SetShareFractionMax(0.05);       //  ile moga miec wspolnych klastrow
215                                                 sqpcetaphitpc[aniter]->SetRemoveSameLabel(kFALSE);
216                                                 // sqpcetaphitpc[aniter]->SetMaxEEMinv(0.0);
217                                                 // sqpcetaphitpc[aniter]->SetMaxThetaDiff(0.0);
218                                                 //      sqpcetaphitpc[aniter]->SetTPCEntranceSepMinimum(1.5);
219                                                 // sqpcetaphitpc[aniter]->SetRadialDistanceMinimum(0.12, 0.03);
220                                                 //      sqpcetaphitpc[aniter]->SetEtaDifferenceMinimum(0.02);
221                                         }
222                                         else if (runtype == 1)
223                                         {
224                                                 
225                                         }
226                                         else if (runtype == 2)
227                                         {
228                                                 
229                                         }
230                 
231                                         anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
232
233                                         anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);
234                                         anetaphitpc[aniter]->SetSecondParticleCut(dtc2etaphitpc[aniter]);
235                                                 //cMinvMonitor[aniter] = new AliFemtoCorrFctnMassInvMonitor(Form("%sM%i",chrgs[ichg], imult),500,ProtonMass);
236                                                 //anetaphitpc[aniter]->AddCorrFctn(cMinvMonitor[aniter]);
237                                         
238                                         anetaphitpc[aniter]->SetPairCut(sqpcetaphitpc[aniter]);
239                                         cdedpetaphi[aniter] = new AliFemtoCorrFctnDEtaDPhi(Form("cdedp%stpcM%i", chrgs[ichg], imult),35, 35);
240                                         anetaphitpc[aniter]->AddCorrFctn(cdedpetaphi[aniter]);
241
242                                         if (runktdep)
243                                         {
244                                                 int ktm;
245                                                 for (int ikt=0; ikt<numOfkTbins; ikt++)
246                                                 {
247                                                         ktm = aniter * numOfkTbins + ikt;
248                                                         ktpcuts[ktm] = new AliFemtoPairCutPt(ktrng[ikt], ktrng[ikt+1]);
249                                 
250                                                         //cqinvkttpc[ktm] = new AliFemtoQinvCorrFctn(Form("cqinv%stpcM%ikT%i", chrgs[ichg], imult, ikt),nbinssh,0.0,(imult>6)?shqmax*2.5:shqmax);
251                                                         //cqinvkttpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
252                                                         //anetaphitpc[aniter]->AddCorrFctn(cqinvkttpc[ktm]);
253
254                                                         cdedpetaphi[ktm] = new AliFemtoCorrFctnDEtaDPhi(Form("cdedp%stpcM%ipT%i", chrgs[ichg], imult,ikt),35, 35);
255                                                         cdedpetaphi[ktm]->SetPairSelectionCut(ktpcuts[ktm]);
256                                                         anetaphitpc[aniter]->AddCorrFctn(cdedpetaphi[ktm]);
257                                                 }
258                                         }               
259                                         Manager->AddAnalysis(anetaphitpc[aniter]);      
260                                 }
261                         }
262                 }
263         }
264
265         return Manager;
266 }