1 /*********************************************************************
3 * Configfemtoanalysis.C - configuration macro for the femtoscopic *
4 * analysis, meant as a QA process for two-particle effects *
6 * Author: Adam Kisiel (Adam.Kisiel@cern.ch) *
8 *********************************************************************/
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"
36 //________________________________________________________________________
37 AliFemtoManager* ConfigFemtoAnalysis() {
39 double PionMass = 0.13956995;
40 double KaonMass = 0.493677;
41 double ProtonMass = 0.938272013;
43 const int numOfMultBins = 5;
44 const int numOfChTypes = 12;
45 const int numOfkTbins = 2;
47 int runmults[numOfMultBins] = {1, 1, 1, 0, 1};
48 int multbins[numOfMultBins+1] = {0, 20, 50, 150, 2, 150};
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"};
54 double ktrng[numOfkTbins+1] = {0.0, 0.7, 100.0};
56 int runtype = 0; // Types 0 - global, 1 - ITS only, 2 - TPC Inner //global tracks ->mfit ITS+TPC
58 int gammacut = 0; // cut na ee z gamma
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);
67 AliFemtoEventReaderAODChain *Reader = new AliFemtoEventReaderAODChain();
68 Reader->SetFilterBit(0);
69 Reader->SetUseMultiplicity(AliFemtoEventReaderAOD::kReference);
71 // //Reader->SetCentralityPreSelection(0.001, 910);
73 AliFemtoManager* Manager = new AliFemtoManager();
74 Manager->SetEventReader(Reader);
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];
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];
97 // *** Third QA task - HBT analysis with all pair cuts off, TPC only ***
98 // *** Begin pion-pion (positive) analysis ***
101 for (int imult = 0; imult < numOfMultBins; imult++)
105 for (int ichg = 0; ichg < numOfChTypes; ichg++)
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);
115 mecetaphitpc[aniter] = new AliFemtoBasicEventCut();
116 mecetaphitpc[aniter]->SetEventMult(0.001,100000);
117 mecetaphitpc[aniter]->SetVertZPos(-8,8);//cm
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]);
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]);
127 dtc1etaphitpc[aniter] = new AliFemtoESDTrackCut();
128 dtc2etaphitpc[aniter] = new AliFemtoESDTrackCut();
130 dtc1etaphitpc[aniter]->SetEta(-1.0,1.0);
131 dtc2etaphitpc[aniter]->SetEta(-1.0,1.0);
133 if (ichg == 0) // PIpKp
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();
144 if (ichg == 1) // PImKm
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();
155 if (ichg == 2) //PIpKm
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();
166 if (ichg == 3) // PImKp
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();
178 // Track quality cuts
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);
201 else if (runtype == 1)
205 else if (runtype == 2)
210 sqpcetaphitpc[aniter] = new AliFemtoPairCutAntiGamma();
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);
223 else if (runtype == 1)
227 else if (runtype == 2)
232 anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
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]);
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]);
246 for (int ikt=0; ikt<numOfkTbins; ikt++)
248 ktm = aniter * numOfkTbins + ikt;
249 ktpcuts[ktm] = new AliFemtoPairCutPt(ktrng[ikt], ktrng[ikt+1]);
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]);
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]);
260 Manager->AddAnalysis(anetaphitpc[aniter]);