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};
51 const char *chrgs[numOfChTypes] = {"PIpPp","PImPm","PIpPm","PImPp"};
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);
132 if (ichg == 0) // PIpPp
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();
143 if (ichg == 1) // PImPm
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();
154 if (ichg == 2) // PIpPm
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();
165 if (ichg == 3) // PImPp
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();
177 // Track quality cuts
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);
200 else if (runtype == 1)
204 else if (runtype == 2)
209 sqpcetaphitpc[aniter] = new AliFemtoPairCutAntiGamma();
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);
222 else if (runtype == 1)
226 else if (runtype == 2)
231 anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);
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]);
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]);
245 for (int ikt=0; ikt<numOfkTbins; ikt++)
247 ktm = aniter * numOfkTbins + ikt;
248 ktpcuts[ktm] = new AliFemtoPairCutPt(ktrng[ikt], ktrng[ikt+1]);
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]);
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]);
259 Manager->AddAnalysis(anetaphitpc[aniter]);