]>
Commit | Line | Data |
---|---|---|
1e1dd217 | 1 | \r |
2 | /*********************************************************************\r | |
3 | * *\r | |
4 | * ConfigFemtoAnalysis.C - configuration macro for the femtoscopic *\r | |
5 | * analysis, meant as a QA process for two-particle effects *\r | |
6 | * *\r | |
7 | * Author: Adam Kisiel (Adam.Kisiel@cern.ch) *\r | |
8 | * *\r | |
9 | *********************************************************************/\r | |
10 | \r | |
11 | #if !defined(__CINT__) || defined(__MAKECINT_)\r | |
12 | #include "AliFemtoManager.h"\r | |
13 | #include "AliFemtoEventReaderESDChain.h"\r | |
14 | #include "AliFemtoEventReaderESDChainKine.h"\r | |
15 | #include "AliFemtoEventReaderAODChain.h"\r | |
16 | #include "AliFemtoSimpleAnalysis.h"\r | |
17 | #include "AliFemtoBasicEventCut.h"\r | |
18 | #include "AliFemtoESDTrackCut.h"\r | |
19 | #include "AliFemtoCorrFctn.h"\r | |
20 | #include "AliFemtoCutMonitorParticleYPt.h"\r | |
21 | #include "AliFemtoCutMonitorParticleVertPos.h"\r | |
22 | #include "AliFemtoCutMonitorParticleMomRes.h"\r | |
23 | #include "AliFemtoCutMonitorParticlePID.h"\r | |
24 | #include "AliFemtoCutMonitorEventMult.h"\r | |
25 | #include "AliFemtoCutMonitorEventVertex.h"\r | |
26 | #include "AliFemtoShareQualityTPCEntranceSepPairCut.h"\r | |
27 | #include "AliFemtoPairCutAntiGamma.h"\r | |
28 | #include "AliFemtoPairCutRadialDistance.h"\r | |
29 | #include "AliFemtoQinvCorrFctn.h"\r | |
30 | #include "AliFemtoShareQualityCorrFctn.h"\r | |
31 | #include "AliFemtoTPCInnerCorrFctn.h"\r | |
32 | #include "AliFemtoVertexMultAnalysis.h"\r | |
33 | #include "AliFemtoCorrFctn3DSpherical.h"\r | |
34 | #include "AliFemtoChi2CorrFctn.h"\r | |
35 | #include "AliFemtoCorrFctnTPCNcls.h"\r | |
36 | #include "AliFemtoBPLCMS3DCorrFctn.h"\r | |
37 | #include "AliFemtoCorrFctn3DLCMSSym.h"\r | |
38 | #include "AliFemtoModelBPLCMSCorrFctn.h"\r | |
39 | #include "AliFemtoModelCorrFctn3DSpherical.h"\r | |
40 | #include "AliFemtoModelGausLCMSFreezeOutGenerator.h"\r | |
41 | #include "AliFemtoModelGausRinvFreezeOutGenerator.h"\r | |
42 | #include "AliFemtoModelManager.h"\r | |
43 | #include "AliFemtoModelWeightGeneratorBasic.h"\r | |
44 | #include "AliFemtoModelWeightGeneratorLednicky.h"\r | |
45 | #include "AliFemtoCorrFctnDirectYlm.h"\r | |
46 | #include "AliFemtoModelCorrFctnDirectYlm.h"\r | |
47 | #include "AliFemtoModelCorrFctnSource.h"\r | |
48 | #include "AliFemtoModelCorrFctn.h"\r | |
49 | #include "AliFemtoCutMonitorParticlePtPDG.h"\r | |
50 | #include "AliFemtoKTPairCut.h"\r | |
51 | #include "AliFemtoCutMonitorCollections.h"\r | |
52 | #endif\r | |
53 | \r | |
54 | //_ 6 fm pure kaons _(0.2-0.4)______________________________________________________________________\r | |
55 | AliFemtoManager* ConfigFemtoAnalysis() {\r | |
56 | \r | |
57 | double PionMass = 0.13956995;\r | |
58 | double KaonMass = 0.493677;\r | |
59 | double ProtonMass = 0.938272013;\r | |
60 | \r | |
61 | //multiplicity bins\r | |
62 | int runmults[10] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0};\r | |
63 | int multbins[11] = {0.01, 200000, 400, 600, 900, 950, 500, 600, 700, 800, 900};\r | |
64 | \r | |
65 | int runch[3] = {1, 1, 0};\r | |
66 | const char *chrgs[3] = { "kk", "akak", "kak" };\r | |
67 | \r | |
68 | int runktdep = 1;\r | |
69 | // double ktrng[8] = {0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 1.0};\r | |
70 | double ktrng[4] = {0.2, 0.4, 0.6, 1.0}; | |
71 | \r | |
72 | int run3d = 0; // Do 3D cartesian analysis?\r | |
73 | int runshlcms = 1;\r | |
74 | \r | |
75 | int nbinssh = 100;\r | |
76 | double shqmax = 0.5;\r | |
77 | \r | |
78 | \r | |
79 | AliFemtoEventReaderESDChainKine *Reader = new AliFemtoEventReaderESDChainKine();\r | |
80 | Reader->SetKaonAnalysis(kTRUE); | |
81 | //Reader->SetUseMultiplicity(AliFemtoEventReaderESDChainKine::kCentrality);\r | |
82 | //Reader->SetReadTrackType(AliFemtoEventReaderESDChainKine::kGlobal);\r | |
83 | \r | |
84 | // AliFemtoEventReaderKinematicsChain *Reader = new AliFemtoEventReaderKinematicsChain();\r | |
85 | // Reader->SetUseMultiplicity(AliFemtoEventReaderKinematicsChain::kGlobalCount);\r | |
86 | // // // Reader->SetReadTrackType(AliFemtoEventReaderESDChainKine::kGlobal);\r | |
87 | \r | |
88 | AliFemtoModelGausRinvFreezeOutGenerator *tFreeze = new AliFemtoModelGausRinvFreezeOutGenerator();\r | |
89 | tFreeze->SetSizeInv(5.0);\r | |
90 | \r | |
91 | // AliFemtoModelWeightGeneratorLednicky *tWeight = new AliFemtoModelWeightGeneratorLednicky();\r | |
92 | // tWeight->SetPairType(AliFemtoModelWeightGenerator::KaonPlusKaonPlus()); | |
93 | ||
94 | AliFemtoModelWeightGeneratorBasic *tWeight = new AliFemtoModelWeightGeneratorBasic(); | |
95 | tWeight->SetPairType(AliFemtoModelWeightGenerator::KaonPlusKaonPlus()); | |
96 | ||
97 | //////// tWeight->SetPairType(5);\r | |
98 | //tWeight->SetPairType(1);\r | |
99 | \r | |
100 | AliFemtoModelManager *tModelManager = new AliFemtoModelManager();\r | |
101 | tModelManager->AcceptFreezeOutGenerator(tFreeze);\r | |
102 | tModelManager->AcceptWeightGenerator(tWeight);\r | |
103 | tModelManager->CreateCopyHiddenInfo(kFALSE);\r | |
104 | //tModelManager->CreateCopyHiddenInfo(kTRUE);\r | |
105 | \r | |
106 | AliFemtoManager* Manager=new AliFemtoManager();\r | |
107 | Manager->SetEventReader(Reader);\r | |
108 | \r | |
109 | AliFemtoVertexMultAnalysis *anetaphitpc[30];\r | |
110 | AliFemtoBasicEventCut *mecetaphitpc[30];\r | |
111 | AliFemtoCutMonitorEventMult *cutPassEvMetaphitpc[30];\r | |
112 | AliFemtoCutMonitorEventMult *cutFailEvMetaphitpc[30];\r | |
113 | AliFemtoCutMonitorEventVertex *cutPassEvVetaphitpc[30];\r | |
114 | AliFemtoCutMonitorEventVertex *cutFailEvVetaphitpc[30];\r | |
115 | AliFemtoCutMonitorCollections *cutPassColletaphitpc[30];\r | |
116 | AliFemtoCutMonitorCollections *cutFailColletaphitpc[30];\r | |
117 | AliFemtoESDTrackCut *dtc1etaphitpc[30];\r | |
118 | AliFemtoESDTrackCut *dtc2etaphitpc[30];\r | |
119 | AliFemtoCutMonitorParticleYPt *cutPass1YPtetaphitpc[30];\r | |
120 | AliFemtoCutMonitorParticleYPt *cutFail1YPtetaphitpc[30];\r | |
121 | AliFemtoCutMonitorParticlePID *cutPass1PIDetaphitpc[30];\r | |
122 | AliFemtoCutMonitorParticlePID *cutFail1PIDetaphitpc[30];\r | |
123 | AliFemtoCutMonitorParticleYPt *cutPass2YPtetaphitpc[30];\r | |
124 | AliFemtoCutMonitorParticleYPt *cutFail2YPtetaphitpc[30];\r | |
125 | AliFemtoCutMonitorParticlePID *cutPass2PIDetaphitpc[30];\r | |
126 | AliFemtoCutMonitorParticlePID *cutFail2PIDetaphitpc[30];\r | |
127 | // AliFemtoPairCutAntiGamma *sqpcetaphitpc[30];\r | |
128 | AliFemtoShareQualityPairCut *sqpcetaphitpc[30];\r | |
129 | //AliFemtoPairCutRadialDistance *sqpcetaphitpc[30];\r | |
130 | AliFemtoModelCorrFctnDirectYlm *cylmetaphitpc[30];\r | |
131 | AliFemtoCorrFctnDEtaDPhi *cdedpetaphi[30];\r | |
132 | AliFemtoChi2CorrFctn *cchiqinvetaphitpc[30];\r | |
133 | AliFemtoKTPairCut *ktpcuts[30*7];\r | |
134 | AliFemtoModelCorrFctnDirectYlm *cylmkttpc[30*7];\r | |
135 | //AliFemtoModelQinvCorrFctn *cqinvkttpc[30*7];\r | |
136 | AliFemtoModelCorrFctnSource *cqinvkttpc[30*7];\r | |
137 | // AliFemtoModelCorrFctn *cqinvkttpc[30*7];\r | |
138 | //AliFemtoModelCorrFctn3DLCMSSym *cq3dlcmskttpc[30*7];\r | |
139 | AliFemtoCorrFctnTPCNcls *cqinvnclstpc[30];\r | |
140 | AliFemtoShareQualityCorrFctn *cqinvsqtpc[30*10];\r | |
141 | AliFemtoChi2CorrFctn *cqinvchi2tpc[30];\r | |
142 | AliFemtoTPCInnerCorrFctn *cqinvinnertpc[30*10];\r | |
143 | \r | |
144 | \r | |
145 | // *** Begin pion-pion analysis ***\r | |
146 | int aniter = 0;\r | |
147 | \r | |
148 | for (int imult=0; imult<10; imult++) {\r | |
149 | if (runmults[imult]) {\r | |
150 | for (int ichg=0; ichg<3; ichg++) {\r | |
151 | if (runch[ichg]) {\r | |
152 | aniter = ichg*10+imult;\r | |
153 | \r | |
154 | anetaphitpc[aniter] = new AliFemtoVertexMultAnalysis(10, -8.0, 8.0, 4, multbins[imult], multbins[imult+1]);\r | |
155 | anetaphitpc[aniter]->SetNumEventsToMix(5);\r | |
156 | anetaphitpc[aniter]->SetMinSizePartCollection(1);\r | |
157 | \r | |
158 | mecetaphitpc[aniter] = new AliFemtoBasicEventCut();\r | |
159 | mecetaphitpc[aniter]->SetEventMult(0,200000);\r | |
160 | mecetaphitpc[aniter]->SetVertZPos(-8,8);\r | |
161 | \r | |
162 | \r | |
163 | dtc1etaphitpc[aniter] = new AliFemtoESDTrackCut();\r | |
164 | dtc2etaphitpc[aniter] = new AliFemtoESDTrackCut();\r | |
165 | ||
166 | ||
167 | ||
168 | if (ichg == 0) {\r | |
169 | dtc1etaphitpc[aniter]->SetCharge(1.0);\r | |
170 | dtc1etaphitpc[aniter]->SetPt(0.2,1.5);\r | |
171 | }\r | |
172 | else if (ichg == 1) {\r | |
173 | dtc1etaphitpc[aniter]->SetCharge(-1.0);\r | |
174 | dtc1etaphitpc[aniter]->SetPt(0.2,1.5);\r | |
175 | }\r | |
176 | else if (ichg == 2) {\r | |
177 | dtc1etaphitpc[aniter]->SetCharge(-1.0);\r | |
178 | dtc2etaphitpc[aniter]->SetCharge(1.0);\r | |
179 | dtc1etaphitpc[aniter]->SetPt(0.2,1.5);\r | |
180 | dtc2etaphitpc[aniter]->SetPt(0.2,1.5);\r | |
181 | }\r | |
182 | \r | |
183 | dtc1etaphitpc[aniter]->SetEta(-0.8,0.8);\r | |
184 | dtc1etaphitpc[aniter]->SetMass(KaonMass);\r | |
185 | //test dtc1etaphitpc[aniter]->SetMostProbableKaon();\r | |
186 | //test dtc1etaphitpc[aniter]->SetNsigma(3.0);\r | |
187 | //dtc1etaphitpc[aniter]->SetNsigma(2.0);\r | |
188 | //test dtc1etaphitpc[aniter]->SetNsigmaTPCTOF(kTRUE);\r | |
189 | //dtc1etaphitpc[aniter]->SetNsigmaTPConly(kTRUE);\r | |
190 | \r | |
191 | if (ichg == 2) {\r | |
192 | dtc2etaphitpc[aniter]->SetEta(-0.8,0.8);\r | |
193 | dtc2etaphitpc[aniter]->SetMass(KaonMass);\r | |
194 | //test dtc2etaphitpc[aniter]->SetMostProbableKaon();\r | |
195 | //test dtc2etaphitpc[aniter]->SetNsigma(3.0);\r | |
196 | //dtc2etaphitpc[aniter]->SetNsigma(2.0);\r | |
197 | //test dtc2etaphitpc[aniter]->SetNsigmaTPCTOF(kTRUE);\r | |
198 | //dtc2etaphitpc[aniter]->SetNsigmaTPConly(kTRUE);\r | |
199 | \r | |
200 | }\r | |
201 | \r | |
202 | \r | |
203 | dtc1etaphitpc[aniter]->SetStatus(AliESDtrack::kTPCin);\r | |
204 | dtc1etaphitpc[aniter]->SetminTPCncls(80);\r | |
205 | dtc1etaphitpc[aniter]->SetRemoveKinks(kTRUE);\r | |
206 | dtc1etaphitpc[aniter]->SetLabel(kFALSE);\r | |
207 | dtc1etaphitpc[aniter]->SetMaxTPCChiNdof(4.0);\r | |
208 | dtc1etaphitpc[aniter]->SetMaxImpactXY(2.4); // 2.4 0.1\r | |
209 | dtc1etaphitpc[aniter]->SetMaxImpactZ(3.2); // 2.0 0.1\r | |
210 | ||
211 | AliFemtoCutMonitorParticleYPt *cutPassYPtkp = new AliFemtoCutMonitorParticleYPt("cutPasskp", 0.493677); | |
212 | AliFemtoCutMonitorParticleYPt *cutFailYPtkp = new AliFemtoCutMonitorParticleYPt("cutFailkp", 0.493677); | |
213 | dtc1etaphitpc[aniter]->AddCutMonitor(cutPassYPtkp, cutFailYPtkp); | |
214 | ||
215 | AliFemtoCutMonitorParticlePtPDG *cutPassPidkp = new AliFemtoCutMonitorParticlePtPDG("cutPasskp", 0.493677); | |
216 | AliFemtoCutMonitorParticlePtPDG *cutFailPidkp = new AliFemtoCutMonitorParticlePtPDG("cutFailkp", 0.493677); | |
217 | dtc1etaphitpc[aniter]->AddCutMonitor(cutPassPidkp, cutFailPidkp); | |
218 | ||
219 | AliFemtoCutMonitorParticleMomRes *cutPassMRkp = new AliFemtoCutMonitorParticleMomRes("cutPasskp"); | |
220 | AliFemtoCutMonitorParticleMomRes *cutFailMRkp = new AliFemtoCutMonitorParticleMomRes("cutFailkp"); | |
221 | dtc1etaphitpc[aniter]->AddCutMonitor(cutPassMRkp, cutFailMRkp); | |
222 | ||
223 | ||
224 | sqpcetaphitpc[aniter] = new AliFemtoShareQualityPairCut();\r | |
225 | //sqpcetaphitpc[aniter] = new AliFemtoPairCutRadialDistance();\r | |
226 | sqpcetaphitpc[aniter]->SetShareQualityMax(1.0);\r | |
227 | sqpcetaphitpc[aniter]->SetShareFractionMax(0.05);\r | |
228 | sqpcetaphitpc[aniter]->SetRemoveSameLabel(kFALSE);\r | |
229 | ||
230 | \r | |
231 | anetaphitpc[aniter]->SetEventCut(mecetaphitpc[aniter]);\r | |
232 | if (ichg == 2) {\r | |
233 | anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);\r | |
234 | anetaphitpc[aniter]->SetSecondParticleCut(dtc2etaphitpc[aniter]);\r | |
235 | }\r | |
236 | else {\r | |
237 | anetaphitpc[aniter]->SetFirstParticleCut(dtc1etaphitpc[aniter]);\r | |
238 | anetaphitpc[aniter]->SetSecondParticleCut(dtc1etaphitpc[aniter]);\r | |
239 | }\r | |
240 | \r | |
241 | anetaphitpc[aniter]->SetPairCut(sqpcetaphitpc[aniter]);\r | |
242 | \r | |
243 | \r | |
244 | //Qinv (without kT bins)\r | |
245 | cqinvkttpc[aniter] = new AliFemtoModelCorrFctnSource(Form("cqinv%stpcM%i", chrgs[ichg], imult),nbinssh,0.0,shqmax);\r | |
246 | //cqinvkttpc[aniter] = new AliFemtoModelCorrFctn(Form("cqinv%stpcM%i", chrgs[ichg], imult),nbinssh,0.0,shqmax);\r | |
247 | // ktpcuts[0] = new AliFemtoKTPairCut(0.2,0.4);\r | |
248 | // cqinvkttpc[aniter]->SetPairSelectionCut(ktpcuts[0]);\r | |
249 | cqinvkttpc[aniter]->ConnectToManager(tModelManager);\r | |
250 | anetaphitpc[aniter]->AddCorrFctn(cqinvkttpc[aniter]);\r | |
251 | \r | |
252 | \r | |
253 | if (runktdep) {\r | |
254 | int ktm;\r | |
255 | for (int ikt=0; ikt<3; ikt++) {\r | |
256 | ktm = aniter*3 + ikt;\r | |
257 | ktpcuts[ktm] = new AliFemtoKTPairCut(ktrng[ikt], ktrng[ikt+1]);\r | |
258 | ||
259 | cqinvkttpc[ktm] = new AliFemtoModelCorrFctnSource(Form("cqinv%stpcM%ikT%i", chrgs[ichg], imult, ikt),nbinssh,0.0, shqmax);\r | |
260 | cqinvkttpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]);\r | |
261 | cqinvkttpc[ktm]->ConnectToManager(tModelManager);\r | |
262 | anetaphitpc[aniter]->AddCorrFctn(cqinvkttpc[ktm]);\r | |
263 | ||
264 | //if (run3d) {\r | |
265 | // cq3dlcmskttpc[ktm] = new AliFemtoCorrFctn3DLCMSSym(Form("cq3d%stpcM%ikT%i", chrgs[ichg], imult, ikt),60,(imult>3)?((imult>6)?((imult>7)?0.6:0.4):0.25):0.15);\r | |
266 | //cq3dlcmskttpc[ktm] = new AliFemtoModelCorrFctn3DLCMSSym(Form("cq3d%stpcM%ikT%i", chrgs[ichg], imult, ikt),60,0.5);\r | |
267 | //cq3dlcmskttpc[ktm]->SetPairSelectionCut(ktpcuts[ktm]);\r | |
268 | //anetaphitpc[aniter]->AddCorrFctn(cq3dlcmskttpc[ktm]);\r | |
269 | //}\r | |
270 | }\r | |
271 | }\r | |
272 | \r | |
273 | //cdedpetaphi[aniter] = new AliFemtoCorrFctnDEtaDPhi(Form("cdedp%stpcM%i", chrgs[ichg], imult),39, 39);\r | |
274 | //anetaphitpc[aniter]->AddCorrFctn(cdedpetaphi[aniter]);\r | |
275 | \r | |
276 | Manager->AddAnalysis(anetaphitpc[aniter]);\r | |
277 | }\r | |
278 | }\r | |
279 | }\r | |
280 | }\r | |
281 | // *** End pion-pion analysis\r | |
282 | \r | |
283 | return Manager;\r | |
284 | }\r |