]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGPP/ITS/AliAnalysisTaskSEImpParRes.cxx
- coverity fix
[u/mrichter/AliRoot.git] / PWGPP / ITS / AliAnalysisTaskSEImpParRes.cxx
CommitLineData
77e570bf 1/**************************************************************************
2 * Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/////////////////////////////////////////////////////////////
17//
18// AliAnalysisTaskSE for the study of the impact parameter resolution
19//
20// Authors:A.Dainese, andrea.dainese@pd.infn.it
21// and Xianbao Yuan, yuanxb@iopp.ccnu.edu.cn; xianbao.yuan@pd.infn.it
22/////////////////////////////////////////////////////////
23
77e570bf 24#include <TList.h>
25#include <TH1F.h>
26
27#include "AliAnalysisManager.h"
cbddc2a0 28#include "AliGeomManager.h"
66cefb1c 29#include "AliMultiplicity.h"
31a96e36 30#include "AliTriggerConfiguration.h"
31#include "AliCDBManager.h"
32#include "AliCDBEntry.h"
cbddc2a0 33#include "AliTrackPointArray.h"
77e570bf 34#include "AliMCEventHandler.h"
cbddc2a0 35#include "AliGenEventHeader.h"
77e570bf 36#include "AliMCEvent.h"
37#include "AliStack.h"
38#include "AliESDEvent.h"
39#include "AliESDVertex.h"
40#include "AliESDtrack.h"
41#include "AliVertexerTracks.h"
319532c0 42#include "AliVVertex.h"
43#include "AliPID.h"
77e570bf 44#include "AliAnalysisTaskSEImpParRes.h"
45
46ClassImp(AliAnalysisTaskSEImpParRes)
47
48//________________________________________________________________________
49AliAnalysisTaskSEImpParRes::AliAnalysisTaskSEImpParRes():
50AliAnalysisTaskSE(),
51fReadMC(kFALSE),
52fSelectedPdg(-1),
cbddc2a0 53fUseDiamond(kFALSE),
47f68c78 54fSkipTrack(kTRUE),
66cefb1c 55fMinMult(0),
56fMaxMult(1000000),
31a96e36 57fCheckSDDIsIn(0),
58fTriggerClass(""),
59fTrigConfig(0),
60fOCDBPath(""),
77e570bf 61fOutputitspureSARec(0),
62fOutputitspureSASkip(0),
63fOutputallPointRec(0),
64fOutputallPointSkip(0),
65fOutputpartPointRec(0),
66fOutputpartPointSkip(0),
67fOutputonepointSPDRec(0),
68fOutputonepointSPDSkip(0),
69fOutputpostvTracRec(0),
70fOutputpostvTracSkip(0),
71fOutputnegtvTracRec(0),
72fOutputnegtvTracSkip(0),
73fOutputpullAllpointRec(0),
74fOutputpullAllpointSkip(0),
75fOutputOnlyRefitRec(0),
76fOutputOnlyRefitSkip(0),
b2d79ac3 77fOutputSinThetaRec(0),
78fOutputSinThetaSkip(0),
cbddc2a0 79fOutputallPointTrue(0),
80fOutputpostvTracTrue(0),
81fOutputnegtvTracTrue(0),
82fOutputpullAllpointTrue(0),
83fOutputphiAllpointSkip(0),
84fOutputphiPostvtracSkip(0),
85fOutputphiNegtvtracSkip(0),
319532c0 86fOutputparticlePID(0),
77e570bf 87fOutputPt(0),
88fNentries(0),
89fEstimVtx(0)
90{
91 //
92 // Default constructor
93 //
94}
95
96//________________________________________________________________________
97AliAnalysisTaskSEImpParRes::AliAnalysisTaskSEImpParRes(const char *name):
98AliAnalysisTaskSE(name),
99fReadMC(kFALSE),
100fSelectedPdg(-1),
cbddc2a0 101fUseDiamond(kFALSE),
47f68c78 102fSkipTrack(kTRUE),
66cefb1c 103fMinMult(0),
104fMaxMult(1000000),
31a96e36 105fCheckSDDIsIn(0),
106fTriggerClass(""),
107fTrigConfig(0),
108fOCDBPath(""),
77e570bf 109fOutputitspureSARec(0),
110fOutputitspureSASkip(0),
111fOutputallPointRec(0),
112fOutputallPointSkip(0),
113fOutputpartPointRec(0),
114fOutputpartPointSkip(0),
115fOutputonepointSPDRec(0),
116fOutputonepointSPDSkip(0),
117fOutputpostvTracRec(0),
118fOutputpostvTracSkip(0),
119fOutputnegtvTracRec(0),
120fOutputnegtvTracSkip(0),
121fOutputpullAllpointRec(0),
122fOutputpullAllpointSkip(0),
123fOutputOnlyRefitRec(0),
124fOutputOnlyRefitSkip(0),
b2d79ac3 125fOutputSinThetaRec(0),
126fOutputSinThetaSkip(0),
cbddc2a0 127fOutputallPointTrue(0),
128fOutputpostvTracTrue(0),
129fOutputnegtvTracTrue(0),
130fOutputpullAllpointTrue(0),
131fOutputphiAllpointSkip(0),
132fOutputphiPostvtracSkip(0),
133fOutputphiNegtvtracSkip(0),
319532c0 134fOutputparticlePID(0),
77e570bf 135fOutputPt(0),
136fNentries(0),
137fEstimVtx(0)
138{
139 //
140 // Default constructor
141 //
142
143 DefineOutput(1, TList::Class()); //My private output
144 DefineOutput(2, TList::Class()); //My private output
145 DefineOutput(3, TList::Class()); //My private output
146 DefineOutput(4, TList::Class()); //My private output
147 DefineOutput(5, TList::Class());
148 DefineOutput(6, TList::Class()); //My private output
149 DefineOutput(7, TList::Class());
150 DefineOutput(8, TList::Class()); //My private output
151 DefineOutput(9, TList::Class()); //My private output
152 DefineOutput(10, TList::Class()); //My private output
153 DefineOutput(11, TList::Class()); //My private output
154 DefineOutput(12, TList::Class());
155 DefineOutput(13, TList::Class()); //My private output
156 DefineOutput(14, TList::Class());
157 DefineOutput(15, TList::Class()); //My private output
158 DefineOutput(16, TList::Class());
159 DefineOutput(17, TList::Class()); //My private output
b2d79ac3 160 DefineOutput(18, TList::Class());
161 DefineOutput(19, TList::Class()); //My private output
cbddc2a0 162 DefineOutput(20, TList::Class()); //My private output
163 DefineOutput(21, TList::Class());
164 DefineOutput(22, TList::Class()); //My private output
165 DefineOutput(23, TList::Class());
166 DefineOutput(24, TList::Class()); //My private output
167 DefineOutput(25, TList::Class());
168 DefineOutput(26, TList::Class()); //My private output
169 DefineOutput(27, TList::Class());
26f8147c 170 DefineOutput(28, TH1F::Class());
171 DefineOutput(29, TH1F::Class());
77e570bf 172}
173
174//________________________________________________________________________
175AliAnalysisTaskSEImpParRes::~AliAnalysisTaskSEImpParRes()
176{
177 //
178 // default distructor
179 //
9c12af5f 180 if (AliAnalysisManager::GetAnalysisManager()->IsProofMode()) return; // RS
181 //
cbddc2a0 182 if (fOutputitspureSARec) { delete fOutputitspureSARec; fOutputitspureSARec=0x0;}
183 if (fOutputitspureSASkip) { delete fOutputitspureSASkip; fOutputitspureSASkip=0x0;}
184 if (fOutputallPointRec) { delete fOutputallPointRec; fOutputallPointRec=0x0; }
185 if (fOutputallPointSkip) { delete fOutputallPointSkip; fOutputallPointSkip=0x0; }
186 if (fOutputpartPointRec) { delete fOutputpartPointRec; fOutputpartPointRec=0x0; }
187 if (fOutputpartPointSkip) { delete fOutputpartPointSkip; fOutputpartPointSkip=0x0; }
188 if (fOutputonepointSPDRec) { delete fOutputonepointSPDRec;fOutputonepointSPDRec=0x0;}
189 if (fOutputonepointSPDSkip) { delete fOutputonepointSPDSkip;fOutputonepointSPDSkip=0x0;}
190 if (fOutputpostvTracRec) { delete fOutputpostvTracRec; fOutputpostvTracRec=0x0;}
191 if (fOutputpostvTracSkip) { delete fOutputpostvTracSkip; fOutputpostvTracSkip=0x0;}
192 if (fOutputnegtvTracRec) { delete fOutputnegtvTracRec; fOutputnegtvTracRec=0x0;}
193 if (fOutputnegtvTracSkip) { delete fOutputnegtvTracSkip; fOutputnegtvTracSkip=0x0;}
194 if (fOutputpullAllpointRec) {delete fOutputpullAllpointRec; fOutputpullAllpointRec=0x0;}
195 if (fOutputpullAllpointSkip) {delete fOutputpullAllpointSkip; fOutputpullAllpointSkip=0x0;}
196 if (fOutputOnlyRefitRec) {delete fOutputOnlyRefitRec; fOutputOnlyRefitRec=0x0;}
197 if (fOutputOnlyRefitSkip) {delete fOutputOnlyRefitSkip; fOutputOnlyRefitSkip=0x0;}
198 if (fOutputSinThetaRec) {delete fOutputSinThetaRec; fOutputSinThetaRec=0x0;}
199 if (fOutputSinThetaSkip) {delete fOutputSinThetaSkip; fOutputSinThetaSkip=0x0;}
200 if (fOutputallPointTrue) {delete fOutputallPointTrue; fOutputallPointTrue=0x0;}
201 if (fOutputpostvTracTrue) {delete fOutputpostvTracTrue;fOutputpostvTracTrue=0x0;}
202 if (fOutputnegtvTracTrue) {delete fOutputnegtvTracTrue;fOutputnegtvTracTrue=0x0;}
203 if (fOutputpullAllpointTrue) {delete fOutputpullAllpointTrue;fOutputpullAllpointTrue=0x0;}
204 if (fOutputphiAllpointSkip) {delete fOutputphiAllpointSkip;fOutputphiAllpointSkip=0x0;}
319532c0 205 if (fOutputphiPostvtracSkip) {delete fOutputphiPostvtracSkip;fOutputphiPostvtracSkip=0x0;}
cbddc2a0 206 if (fOutputphiNegtvtracSkip) {delete fOutputphiNegtvtracSkip;fOutputphiNegtvtracSkip=0x0;}
319532c0 207 if (fOutputparticlePID) {delete fOutputparticlePID;fOutputparticlePID=0x0;}
cbddc2a0 208 if (fOutputPt) {delete fOutputPt;fOutputPt=0x0;}
209 if (fNentries) { delete fNentries; fNentries =0x0; }
210 if (fEstimVtx) { delete fEstimVtx; fEstimVtx =0x0; }
77e570bf 211
212}
213
214//________________________________________________________________________
215void AliAnalysisTaskSEImpParRes::UserCreateOutputObjects()
216{
217 //
218 // Create the output container
219 //
220
221 if(fDebug>1) printf("AnalysisTaskSEImpParRes::UserCreateOutputObjects() \n");
222
223 // Several histograms are more conveniently managed in a TList
224 if (!fOutputitspureSARec) {
225 fOutputitspureSARec = new TList();
226 fOutputitspureSARec->SetOwner();
227 fOutputitspureSARec->SetName("ITSpureSARec");
228 }
229
230 if (!fOutputitspureSASkip) {
231 fOutputitspureSASkip = new TList();
232 fOutputitspureSASkip->SetOwner();
233 fOutputitspureSASkip->SetName("ITSpureSASkip");
234 }
235
236 if (!fOutputallPointRec) {
237 fOutputallPointRec = new TList();
238 fOutputallPointRec->SetOwner();
239 fOutputallPointRec->SetName("allpointRec");
240 }
241
242 if (!fOutputallPointSkip) {
243 fOutputallPointSkip = new TList();
244 fOutputallPointSkip->SetOwner();
245 fOutputallPointSkip->SetName("allpointSkip");
246 }
247
248 if (!fOutputpartPointRec) {
249 fOutputpartPointRec = new TList();
250 fOutputpartPointRec->SetOwner();
251 fOutputpartPointRec->SetName("partpointRec");
252 }
253
254 if (!fOutputpartPointSkip) {
255 fOutputpartPointSkip = new TList();
256 fOutputpartPointSkip->SetOwner();
257 fOutputpartPointSkip->SetName("partpointSkip");
258 }
259
260 if (!fOutputonepointSPDRec) {
261 fOutputonepointSPDRec = new TList();
262 fOutputonepointSPDRec->SetOwner();
263 fOutputonepointSPDRec->SetName("onepointSPDRec");
264 }
265
266 if (!fOutputonepointSPDSkip) {
267 fOutputonepointSPDSkip = new TList();
268 fOutputonepointSPDSkip->SetOwner();
269 fOutputonepointSPDSkip->SetName("onepointSPDSkip");
270 }
271
272 if (!fOutputpostvTracRec) {
273 fOutputpostvTracRec = new TList();
274 fOutputpostvTracRec->SetOwner();
275 fOutputpostvTracRec->SetName("postvtracRec");
276 }
277
278 if (!fOutputpostvTracSkip) {
279 fOutputpostvTracSkip = new TList();
280 fOutputpostvTracSkip->SetOwner();
281 fOutputpostvTracSkip->SetName("postvtracSkip");
282 }
283
284 if (!fOutputnegtvTracRec) {
285 fOutputnegtvTracRec = new TList();
286 fOutputnegtvTracRec->SetOwner();
287 fOutputnegtvTracRec->SetName("negtvtracRe");
288 }
289
290 if (!fOutputnegtvTracSkip) {
291 fOutputnegtvTracSkip = new TList();
292 fOutputnegtvTracSkip->SetOwner();
293 fOutputnegtvTracSkip->SetName("negtvtracSkip");
294 }
cbddc2a0 295
77e570bf 296 if (!fOutputpullAllpointSkip) {
297 fOutputpullAllpointSkip = new TList();
298 fOutputpullAllpointSkip->SetOwner();
299 fOutputpullAllpointSkip->SetName("pullAllpointSkip");
300 }
cbddc2a0 301
77e570bf 302 if (!fOutputpullAllpointRec) {
303 fOutputpullAllpointRec = new TList();
304 fOutputpullAllpointRec->SetOwner();
305 fOutputpullAllpointRec->SetName("pullAllpointRec");
306 }
cbddc2a0 307
77e570bf 308 if (!fOutputOnlyRefitRec) {
309 fOutputOnlyRefitRec = new TList();
310 fOutputOnlyRefitRec->SetOwner();
311 fOutputOnlyRefitRec->SetName("onlyRefitRec");
312 }
cbddc2a0 313
77e570bf 314 if (!fOutputOnlyRefitSkip) {
315 fOutputOnlyRefitSkip = new TList();
316 fOutputOnlyRefitSkip->SetOwner();
317 fOutputOnlyRefitSkip->SetName("onlyRefitRec");
318 }
cbddc2a0 319
320 if (!fOutputallPointTrue) {
321 fOutputallPointTrue = new TList();
322 fOutputallPointTrue->SetOwner();
323 fOutputallPointTrue->SetName("allpointTrue");
324 }
325
326 if (!fOutputpostvTracTrue) {
327 fOutputpostvTracTrue = new TList();
328 fOutputpostvTracTrue->SetOwner();
329 fOutputpostvTracTrue->SetName("postvtracTrue");
330 }
331
332 if (!fOutputnegtvTracTrue) {
333 fOutputnegtvTracTrue = new TList();
334 fOutputnegtvTracTrue->SetOwner();
335 fOutputnegtvTracTrue->SetName("negtvtracTrue");
336 }
337
338 if (!fOutputpullAllpointTrue) {
339 fOutputpullAllpointTrue = new TList();
340 fOutputpullAllpointTrue->SetOwner();
341 fOutputpullAllpointTrue->SetName("pullAllpointTrue");
342 }
343
319532c0 344
345 if (!fOutputparticlePID) {
346 fOutputparticlePID = new TList();
347 fOutputparticlePID->SetOwner();
348 fOutputparticlePID->SetName("particlePID");
349 }
350
77e570bf 351 if (!fOutputPt) {
352 fOutputPt = new TList();
353 fOutputPt->SetOwner();
354 fOutputPt->SetName("Pt");
355 }
356
357 const Int_t nhist=26;
b2d79ac3 358 const TString d0ITSpureSArphiTitle = "d_{0} Distribution_rphi; d_{0} [#mum]; Entries";
359 const TString d0ITSpureSAzTitle = "d_{0} Distribution_z; d_{0} [#mum]; Entries";
360 const TString d0allpointrphiTitle = "d_{0} Distribution_rphi; d_{0} [#mum]; Entries";
361 const TString d0allpointzTitle = "d_{0} Distribution_z; d_{0} [#mum]; Entries";
362 const TString d0partpointrphiTitle = "d_{0} Distribution_rphi; d_{0} [#mum]; Entries";
363 const TString d0partpointzTitle = "d_{0} Distribution_z; d_{0} [#mum]; Entries";
364 const TString d0onepointSPDrphiTitle = "d_{0} Distribution_rphi; d_{0} [#mum]; Entries";
365 const TString d0onepointSPDzTitle = "d_{0} Distribution_rphi; d_{0} [#mum]; Entries";
366 const TString d0postvtracrphiTitle = "d_{0} Distribution_rphi; d_{0} [#mum]; Entries";
367 const TString d0postvtraczTitle = "d_{0} Distribution_z; d_{0} [#mum]; Entries";
368 const TString d0negtvtracrphiTitle = "d_{0} Distribution_rphi; d_{0} [#mum]; Entries";
369 const TString d0negtvtraczTitle = "d_{0} Distribution_z; d_{0} [#mum]; Entries";
370 const TString d0pullAllpointrphiTitle = "d_{0} Pull Distribution_rphi; d_{0} pull; Entries";
371 const TString d0pullAllpointzTitle = "d_{0} Pull Distribution_z; d_{0} pull; Entries";
372 const TString d0onlyRefitrphiTitle = "d_{0} Distribution_rphi; d_{0} [#mum]; Entries";
373 const TString d0onlyRefitzTitle = "d_{0} Distribution_z; d_{0} [#mum]; Entries";
374 const TString d0ptTitle = "d_{0} Distribution_rphi; d_{0} [#mum]; Entries";
cbddc2a0 375 const TString d0rphiTitle = "d_{0} Distribution_rphi; d_{0} [#mum]; Entries";
376 const TString d0zTitle = "d_{0} Distribution_z; d_{0} [#mum]; Entries";
319532c0 377 const TString d0rphiParticlPID = "d_{0} Distribution_rphi; d_{0} [#mum]; Entries";
378 const TString d0zPrtilePID = "d_{0} Distribution_z; d_{0} [#mum]; Entries";
cbddc2a0 379
319532c0 380 TString named0itspureSArphiRec,named0itspureSAzRec,named0allpointrphiRec, named0allpointzRec,named0partpointrphiRec, named0partpointzRec,named0onepointSPDrphiRec, named0onepointSPDzRec,named0postvtracrphiRec, named0postvtraczRec,named0negtvtracrphiRec, named0negtvtraczRec,named0pt,named0pullAllpointrphiRec,named0pullAllpointzRec,named0onlyRefitrphiRec,named0onlyRefitzRec,named0pionPIDrphiRec, named0pionPIDzRec,named0kaonPIDrphiRec, named0kaonPIDzRec,named0protonPIDrphiRec, named0protonPIDzRec;
cbddc2a0 381
77e570bf 382 TH1F *d0ITSpureSArphiRec=0,*d0ITSpureSAzRec=0,*d0AllpointrphiRec=0, *d0AllpointzRec=0,*d0PartpointrphiRec=0, *d0PartpointzRec=0,
319532c0 383 *d0OnepointSPDrphiRec=0,*d0OnepointSPDzRec=0,*d0PostvtracrphiRec=0, *d0PostvtraczRec=0,*d0NegtvtracrphiRec=0, *d0NegtvtraczRec=0,*d0Pt=0,*d0PullAllpointrphiRec=0,*d0PullAllpointzRec=0,*d0OnlyRefitrphiRec=0,*d0OnlyRefitzRec=0,*d0PionPIDrphiRec=0,*d0PionPIDzRec=0,*d0KaonPIDrphiRec=0,*d0KaonPIDzRec=0,*d0ProtonPIDrphiRec=0,*d0ProtonPIDzRec=0;
77e570bf 384
31a96e36 385 TString named0itspureSArphiSkip,named0itspureSAzSkip,named0allpointrphiSkip, named0allpointzSkip,named0partpointrphiSkip, named0partpointzSkip,named0onepointSPDrphiSkip, named0onepointSPDzSkip,named0postvtracrphiSkip, named0postvtraczSkip,named0negtvtracrphiSkip, named0negtvtraczSkip,named0ptSkip,named0pullAllpointrphiSkip,named0pullAllpointzSkip,named0onlyRefitrphiSkip,named0onlyRefitzSkip,named0allpointrphiTrue, named0allpointzTrue,named0postvtracrphiTrue, named0postvtraczTrue,named0negtvtracrphiTrue, named0negtvtraczTrue,named0pullAllpointrphiTrue,named0pullAllpointzTrue,named0pionPIDrphiSkip, named0pionPIDzSkip,named0kaonPIDrphiSkip, named0kaonPIDzSkip,named0protonPIDrphiSkip, named0protonPIDzSkip;
77e570bf 386
31a96e36 387 TH1F *d0ITSpureSArphiSkip=0,*d0ITSpureSAzSkip=0,*d0AllpointrphiSkip=0, *d0AllpointzSkip=0,*d0PartpointrphiSkip=0, *d0PartpointzSkip=0,*d0OnepointSPDrphiSkip=0,*d0OnepointSPDzSkip=0,*d0PostvtracrphiSkip=0, *d0PostvtraczSkip=0,*d0NegtvtracrphiSkip=0,*d0NegtvtraczSkip=0,*d0PullAllpointrphiSkip=0,*d0PullAllpointzSkip=0,*d0OnlyRefitrphiSkip=0,*d0OnlyRefitzSkip=0,*d0AllpointrphiTrue=0, *d0AllpointzTrue=0,*d0PostvtracrphiTrue=0, *d0PostvtraczTrue=0,*d0NegtvtracrphiTrue=0,*d0NegtvtraczTrue=0,*d0PullAllpointrphiTrue,*d0PullAllpointzTrue,*d0PionPIDrphiSkip=0,*d0PionPIDzSkip=0,*d0KaonPIDrphiSkip=0,*d0KaonPIDzSkip=0,*d0ProtonPIDrphiSkip=0,*d0ProtonPIDzSkip=0;
77e570bf 388
b2d79ac3 389 for(Int_t i=1; i<=nhist; i++) {
319532c0 390
77e570bf 391 named0itspureSArphiRec = "d0itspureSArphiRec_";
b2d79ac3 392 named0itspureSArphiRec += i;
77e570bf 393 named0itspureSAzRec = "d0itspureSAzRec_";
b2d79ac3 394 named0itspureSAzRec += i;
395 d0ITSpureSArphiRec = new TH1F(named0itspureSArphiRec.Data(), d0ITSpureSArphiTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 396 d0ITSpureSArphiRec->Sumw2();
397 d0ITSpureSArphiRec->SetMinimum(0);
398 fOutputitspureSARec->Add(d0ITSpureSArphiRec);
b2d79ac3 399 d0ITSpureSAzRec = new TH1F(named0itspureSAzRec.Data(), d0ITSpureSAzTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 400 d0ITSpureSAzRec->Sumw2();
401 d0ITSpureSAzRec->SetMinimum(0);
402 fOutputitspureSARec->Add(d0ITSpureSAzRec);
403
404 named0itspureSArphiSkip = "d0itspureSArphiSkip_";
b2d79ac3 405 named0itspureSArphiSkip += i;
77e570bf 406 named0itspureSAzSkip = "d0itspureSAzSkip_";
b2d79ac3 407 named0itspureSAzSkip += i;
319532c0 408 d0ITSpureSArphiSkip = new TH1F(named0itspureSArphiSkip.Data(), d0ITSpureSArphiTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i)); d0ITSpureSArphiSkip->Sumw2();
77e570bf 409 d0ITSpureSArphiSkip->SetMinimum(0);
410 fOutputitspureSASkip->Add(d0ITSpureSArphiSkip);
b2d79ac3 411 d0ITSpureSAzSkip = new TH1F(named0itspureSAzSkip.Data(), d0ITSpureSAzTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 412 d0ITSpureSAzSkip->Sumw2();
413 d0ITSpureSAzSkip->SetMinimum(0);
414 fOutputitspureSASkip->Add(d0ITSpureSAzSkip);
415
416 named0allpointrphiRec = "d0allpointrphiRec_";
b2d79ac3 417 named0allpointrphiRec += i;
77e570bf 418 named0allpointzRec = "d0allpointzRec_";
b2d79ac3 419 named0allpointzRec += i;
420 d0AllpointrphiRec = new TH1F(named0allpointrphiRec.Data(), d0allpointrphiTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 421 d0AllpointrphiRec->Sumw2();
422 d0AllpointrphiRec->SetMinimum(0);
423 fOutputallPointRec->Add(d0AllpointrphiRec);
b2d79ac3 424 d0AllpointzRec= new TH1F(named0allpointzRec.Data(), d0allpointzTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 425 d0AllpointzRec->Sumw2();
426 d0AllpointzRec->SetMinimum(0);
427 fOutputallPointRec->Add(d0AllpointzRec);
428
429 named0allpointrphiSkip = "d0allpointrphiSkip_";
b2d79ac3 430 named0allpointrphiSkip += i;
77e570bf 431 named0allpointzSkip = "d0allpointzSkip_";
b2d79ac3 432 named0allpointzSkip += i;
433 d0AllpointrphiSkip = new TH1F(named0allpointrphiSkip.Data(), d0allpointrphiTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 434 d0AllpointrphiSkip->Sumw2();
435 d0AllpointrphiSkip->SetMinimum(0);
436 fOutputallPointSkip->Add(d0AllpointrphiSkip);
b2d79ac3 437 d0AllpointzSkip = new TH1F(named0allpointzSkip.Data(), d0allpointzTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 438 d0AllpointzSkip->Sumw2();
439 d0AllpointzSkip->SetMinimum(0);
440 fOutputallPointSkip->Add(d0AllpointzSkip);
441
442 named0partpointrphiRec = "d0partpointrphiRec_";
b2d79ac3 443 named0partpointrphiRec += i;
77e570bf 444 named0partpointzRec = "d0partpointzRec_";
b2d79ac3 445 named0partpointzRec += i;
446 d0PartpointrphiRec = new TH1F(named0partpointrphiRec.Data(), d0partpointrphiTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 447 d0PartpointrphiRec->Sumw2();
448 d0PartpointrphiRec->SetMinimum(0);
449 fOutputpartPointRec->Add(d0PartpointrphiRec);
b2d79ac3 450 d0PartpointzRec = new TH1F(named0partpointzRec.Data(), d0partpointzTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 451 d0PartpointzRec->Sumw2();
452 d0PartpointzRec->SetMinimum(0);
453 fOutputpartPointRec->Add(d0PartpointzRec);
454
455 named0partpointrphiSkip = "d0partpointrphiSkip_";
b2d79ac3 456 named0partpointrphiSkip += i;
77e570bf 457 named0partpointzSkip = "d0partpointzSkip_";
b2d79ac3 458 named0partpointzSkip += i;
459 d0PartpointrphiSkip = new TH1F(named0partpointrphiSkip.Data(), d0partpointrphiTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 460 d0PartpointrphiSkip->Sumw2();
461 d0PartpointrphiSkip->SetMinimum(0);
462 fOutputpartPointSkip->Add(d0PartpointrphiSkip);
b2d79ac3 463 d0PartpointzSkip = new TH1F(named0partpointzSkip.Data(), d0partpointzTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 464 d0PartpointzSkip->Sumw2();
465 d0PartpointzSkip->SetMinimum(0);
466 fOutputpartPointSkip->Add(d0PartpointzSkip);
467
468 named0onepointSPDrphiRec = "d0onepointSPDrphiRec_";
b2d79ac3 469 named0onepointSPDrphiRec += i;
77e570bf 470 named0onepointSPDzRec = "d0onepointSPDzRec_";
b2d79ac3 471 named0onepointSPDzRec += i;
472 d0OnepointSPDrphiRec = new TH1F(named0onepointSPDrphiRec.Data(), d0onepointSPDrphiTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 473 d0OnepointSPDrphiRec->Sumw2();
474 d0OnepointSPDrphiRec->SetMinimum(0);
475 fOutputonepointSPDRec->Add(d0OnepointSPDrphiRec);
b2d79ac3 476 d0OnepointSPDzRec = new TH1F(named0onepointSPDzRec.Data(), d0onepointSPDzTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 477 d0OnepointSPDzRec->Sumw2();
478 d0OnepointSPDzRec->SetMinimum(0);
479 fOutputonepointSPDRec->Add(d0OnepointSPDzRec);
480
481 named0onepointSPDrphiSkip = "d0onepointSPDrphiSkip_";
b2d79ac3 482 named0onepointSPDrphiSkip += i;
77e570bf 483 named0onepointSPDzSkip = "d0onepointSPDzSkip_";
b2d79ac3 484 named0onepointSPDzSkip += i;
485 d0OnepointSPDrphiSkip = new TH1F(named0onepointSPDrphiSkip.Data(), d0onepointSPDrphiTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 486 d0OnepointSPDrphiSkip->Sumw2();
487 d0OnepointSPDrphiSkip->SetMinimum(0);
488 fOutputonepointSPDSkip->Add(d0OnepointSPDrphiSkip);
b2d79ac3 489 d0OnepointSPDzSkip = new TH1F(named0onepointSPDzSkip.Data(), d0onepointSPDzTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 490 d0OnepointSPDzSkip->Sumw2();
491 d0OnepointSPDzSkip->SetMinimum(0);
492 fOutputonepointSPDSkip->Add(d0OnepointSPDzSkip);
493
494 named0postvtracrphiRec = "d0postvtracrphiRec_";
b2d79ac3 495 named0postvtracrphiRec += i;
77e570bf 496 named0postvtraczRec = "d0postvtraczRec_";
b2d79ac3 497 named0postvtraczRec += i;
498 d0PostvtracrphiRec = new TH1F(named0postvtracrphiRec.Data(), d0postvtracrphiTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 499 d0PostvtracrphiRec->Sumw2();
500 d0PostvtracrphiRec->SetMinimum(0);
501 fOutputpostvTracRec->Add(d0PostvtracrphiRec);
b2d79ac3 502 d0PostvtraczRec = new TH1F(named0postvtraczRec.Data(), d0postvtraczTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 503 d0PostvtraczRec->Sumw2();
504 d0PostvtraczRec->SetMinimum(0);
505 fOutputpostvTracRec->Add(d0PostvtraczRec);
506
507 named0postvtracrphiSkip = "d0postvtracrphiSkip_";
b2d79ac3 508 named0postvtracrphiSkip += i;
77e570bf 509 named0postvtraczSkip = "d0postvtraczSkip_";
b2d79ac3 510 named0postvtraczSkip += i;
511 d0PostvtracrphiSkip = new TH1F(named0postvtracrphiSkip.Data(), d0postvtracrphiTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 512 d0PostvtracrphiSkip->Sumw2();
513 d0PostvtracrphiSkip->SetMinimum(0);
514 fOutputpostvTracSkip->Add(d0PostvtracrphiSkip);
b2d79ac3 515 d0PostvtraczSkip = new TH1F(named0postvtraczSkip.Data(), d0postvtraczTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 516 d0PostvtraczSkip->Sumw2();
517 d0PostvtraczSkip->SetMinimum(0);
518 fOutputpostvTracSkip->Add(d0PostvtraczSkip);
519
520 named0negtvtracrphiRec = "d0negtvtracrphiRec_";
b2d79ac3 521 named0negtvtracrphiRec += i;
77e570bf 522 named0negtvtraczRec = "d0negtvtraczRec_";
b2d79ac3 523 named0negtvtraczRec += i;
524 d0NegtvtracrphiRec = new TH1F(named0negtvtracrphiRec.Data(), d0negtvtracrphiTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 525 d0NegtvtracrphiRec->Sumw2();
526 d0NegtvtracrphiRec->SetMinimum(0);
527 fOutputnegtvTracRec->Add(d0NegtvtracrphiRec);
b2d79ac3 528 d0NegtvtraczRec = new TH1F(named0negtvtraczRec.Data(), d0negtvtraczTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 529 d0NegtvtraczRec->Sumw2();
530 d0NegtvtraczRec->SetMinimum(0);
531 fOutputnegtvTracRec->Add(d0NegtvtraczRec);
532
533 named0negtvtracrphiSkip = "d0negtvtracrphiSkip_";
b2d79ac3 534 named0negtvtracrphiSkip += i;
77e570bf 535 named0negtvtraczSkip = "d0negtvtraczSkip_";
b2d79ac3 536 named0negtvtraczSkip += i;
537 d0NegtvtracrphiSkip = new TH1F(named0negtvtracrphiSkip.Data(), d0negtvtracrphiTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 538 d0NegtvtracrphiSkip->Sumw2();
539 d0NegtvtracrphiSkip->SetMinimum(0);
540 fOutputnegtvTracSkip->Add(d0NegtvtracrphiSkip);
b2d79ac3 541 d0NegtvtraczSkip = new TH1F(named0negtvtraczSkip.Data(), d0negtvtraczTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
77e570bf 542 d0NegtvtraczSkip->Sumw2();
543 d0NegtvtraczSkip->SetMinimum(0);
544 fOutputnegtvTracSkip->Add(d0NegtvtraczSkip);
545
546 named0pullAllpointrphiSkip = "d0pullAllpointrphiSkip_";
b2d79ac3 547 named0pullAllpointrphiSkip +=i;
77e570bf 548 named0pullAllpointzSkip = "d0pullAllpointzSkip_";
b2d79ac3 549 named0pullAllpointzSkip +=i;
77e570bf 550 d0PullAllpointrphiSkip = new TH1F(named0pullAllpointrphiSkip.Data(),d0pullAllpointrphiTitle.Data(),400,-10.,10.);
551 d0PullAllpointrphiSkip->Sumw2();
552 d0PullAllpointrphiSkip->SetMinimum(0);
553 fOutputpullAllpointSkip->Add(d0PullAllpointrphiSkip);
554 d0PullAllpointzSkip = new TH1F(named0pullAllpointzSkip.Data(),d0pullAllpointzTitle.Data(),400,-10.,10.);
555 d0PullAllpointzSkip->Sumw2();
556 d0PullAllpointzSkip->SetMinimum(0);
557 fOutputpullAllpointSkip->Add(d0PullAllpointzSkip);
558
559 named0pullAllpointrphiRec = "d0pullAllpointrphiRec_";
b2d79ac3 560 named0pullAllpointrphiRec +=i;
77e570bf 561 named0pullAllpointzRec = "d0pullAllpointzRec_";
b2d79ac3 562 named0pullAllpointzRec +=i;
77e570bf 563 d0PullAllpointrphiRec = new TH1F(named0pullAllpointrphiRec.Data(),d0pullAllpointrphiTitle.Data(),400,-10.,10.);
564 d0PullAllpointrphiRec->Sumw2();
565 d0PullAllpointrphiRec->SetMinimum(0);
566 fOutputpullAllpointRec->Add(d0PullAllpointrphiRec);
567 d0PullAllpointzRec = new TH1F(named0pullAllpointzRec.Data(),d0pullAllpointzTitle.Data(),400,-10.,10.);
568 d0PullAllpointzRec->Sumw2();
569 d0PullAllpointzRec->SetMinimum(0);
570 fOutputpullAllpointRec->Add(d0PullAllpointzRec);
571
77e570bf 572 named0onlyRefitrphiRec = "d0onlyrefitrphiRec_";
b2d79ac3 573 named0onlyRefitrphiRec +=i;
77e570bf 574 named0onlyRefitzRec = "d0onlyrefitzRec_";
b2d79ac3 575 named0onlyRefitzRec +=i;
576 d0OnlyRefitrphiRec = new TH1F(named0onlyRefitrphiRec.Data(),d0onlyRefitrphiTitle.Data(),400,-Getd0HistRange(i),Getd0HistRange(i));
77e570bf 577 d0OnlyRefitrphiRec->Sumw2();
578 d0OnlyRefitrphiRec->SetMinimum(0);
579 fOutputOnlyRefitRec->Add(d0OnlyRefitrphiRec);
b2d79ac3 580 d0OnlyRefitzRec = new TH1F(named0onlyRefitzRec.Data(),d0onlyRefitzTitle.Data(),400,-Getd0HistRange(i),Getd0HistRange(i));
77e570bf 581 d0OnlyRefitzRec->Sumw2();
582 d0OnlyRefitzRec->SetMinimum(0);
583 fOutputOnlyRefitRec->Add(d0OnlyRefitzRec);
584
77e570bf 585 named0onlyRefitrphiSkip = "d0onlyrefitrphiSkip_";
b2d79ac3 586 named0onlyRefitrphiSkip +=i;
77e570bf 587 named0onlyRefitzSkip = "d0onlyrefitzSkip_";
b2d79ac3 588 named0onlyRefitzSkip +=i;
589 d0OnlyRefitrphiSkip = new TH1F(named0onlyRefitrphiSkip.Data(),d0onlyRefitrphiTitle.Data(),400,-Getd0HistRange(i),Getd0HistRange(i));
77e570bf 590 d0OnlyRefitrphiSkip->Sumw2();
591 d0OnlyRefitrphiSkip->SetMinimum(0);
592 fOutputOnlyRefitSkip->Add(d0OnlyRefitrphiSkip);
b2d79ac3 593 d0OnlyRefitzSkip = new TH1F(named0onlyRefitzSkip.Data(),d0onlyRefitzTitle.Data(),400,-Getd0HistRange(i),Getd0HistRange(i));
77e570bf 594 d0OnlyRefitzSkip->Sumw2();
595 d0OnlyRefitzSkip->SetMinimum(0);
596 fOutputOnlyRefitSkip->Add(d0OnlyRefitzSkip);
597
cbddc2a0 598 named0allpointrphiTrue = "d0allpointrphiTrue_";
599 named0allpointrphiTrue += i;
600 named0allpointzTrue = "d0allpointzTrue_";
601 named0allpointzTrue += i;
602 d0AllpointrphiTrue = new TH1F(named0allpointrphiTrue.Data(), d0allpointrphiTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
603 d0AllpointrphiTrue->Sumw2();
604 d0AllpointrphiTrue->SetMinimum(0);
605 fOutputallPointTrue->Add(d0AllpointrphiTrue);
606 d0AllpointzTrue = new TH1F(named0allpointzTrue.Data(), d0allpointzTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
607 d0AllpointzTrue->Sumw2();
608 d0AllpointzTrue->SetMinimum(0);
609 fOutputallPointTrue->Add(d0AllpointzTrue);
610
611 named0postvtracrphiTrue = "d0postvtracrphiTrue_";
612 named0postvtracrphiTrue += i;
613 named0postvtraczTrue = "d0postvtraczTrue_";
614 named0postvtraczTrue += i;
615 d0PostvtracrphiTrue = new TH1F(named0postvtracrphiTrue.Data(), d0postvtracrphiTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
616 d0PostvtracrphiTrue->Sumw2();
617 d0PostvtracrphiTrue->SetMinimum(0);
618 fOutputpostvTracTrue->Add(d0PostvtracrphiTrue);
619 d0PostvtraczTrue = new TH1F(named0postvtraczTrue.Data(), d0postvtraczTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
620 d0PostvtraczTrue->Sumw2();
621 d0PostvtraczTrue->SetMinimum(0);
622 fOutputpostvTracTrue->Add(d0PostvtraczTrue);
623
624 named0negtvtracrphiTrue = "d0negtvtracrphiTrue_";
625 named0negtvtracrphiTrue += i;
626 named0negtvtraczTrue = "d0negtvtraczTrue_";
627 named0negtvtraczTrue += i;
628 d0NegtvtracrphiTrue = new TH1F(named0negtvtracrphiTrue.Data(), d0negtvtracrphiTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
629 d0NegtvtracrphiTrue->Sumw2();
630 d0NegtvtracrphiTrue->SetMinimum(0);
631 fOutputnegtvTracTrue->Add(d0NegtvtracrphiTrue);
632 d0NegtvtraczTrue = new TH1F(named0negtvtraczTrue.Data(), d0negtvtraczTitle.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
633 d0NegtvtraczTrue->Sumw2();
634 d0NegtvtraczTrue->SetMinimum(0);
635 fOutputnegtvTracTrue->Add(d0NegtvtraczTrue);
636
637 named0pullAllpointrphiTrue = "d0pullAllpointrphiTrue_";
638 named0pullAllpointrphiTrue +=i;
639 named0pullAllpointzTrue = "d0pullAllpointzTrue_";
640 named0pullAllpointzTrue +=i;
641 d0PullAllpointrphiTrue = new TH1F(named0pullAllpointrphiTrue.Data(),d0pullAllpointrphiTitle.Data(),400,-10.,10.);
642 d0PullAllpointrphiTrue->Sumw2();
643 d0PullAllpointrphiTrue->SetMinimum(0);
644 fOutputpullAllpointTrue->Add(d0PullAllpointrphiTrue);
645 d0PullAllpointzTrue = new TH1F(named0pullAllpointzTrue.Data(),d0pullAllpointzTitle.Data(),400,-10.,10.);
646 d0PullAllpointzTrue->Sumw2();
647 d0PullAllpointzTrue->SetMinimum(0);
648 fOutputpullAllpointTrue->Add(d0PullAllpointzTrue);
649
cbddc2a0 650
319532c0 651 named0pionPIDrphiRec = "d0pionPIDrphiRec_";
652 named0pionPIDrphiRec += i;
653 named0pionPIDzRec = "d0pionPIDzRec_";
654 named0pionPIDzRec += i;
655 d0PionPIDrphiRec = new TH1F(named0pionPIDrphiRec.Data(), d0rphiParticlPID.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
656 d0PionPIDrphiRec->Sumw2();
657 d0PionPIDrphiRec->SetMinimum(0);
658 fOutputparticlePID->Add(d0PionPIDrphiRec);
659 d0PionPIDzRec = new TH1F(named0pionPIDzRec.Data(), d0zPrtilePID.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
660 d0PionPIDzRec->Sumw2();
661 d0PionPIDzRec->SetMinimum(0);
662 fOutputparticlePID->Add(d0PionPIDzRec);
663
664 named0pionPIDrphiSkip = "d0pionPIDrphiSkip_";
665 named0pionPIDrphiSkip += i;
666 named0pionPIDzSkip = "d0pionPIDzSkip_";
667 named0pionPIDzSkip += i;
668 d0PionPIDrphiSkip = new TH1F(named0pionPIDrphiSkip.Data(), d0rphiParticlPID.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
669 d0PionPIDrphiSkip->Sumw2();
670 d0PionPIDrphiSkip->SetMinimum(0);
671 fOutputparticlePID->Add(d0PionPIDrphiSkip);
672 d0PionPIDzSkip = new TH1F(named0pionPIDzSkip.Data(), d0zPrtilePID.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
673 d0PionPIDzSkip->Sumw2();
674 d0PionPIDzSkip->SetMinimum(0);
675 fOutputparticlePID->Add(d0PionPIDzSkip);
676
677 named0kaonPIDrphiRec = "d0kaonPIDrphiRec_";
678 named0kaonPIDrphiRec += i;
679 named0kaonPIDzRec = "d0kaonPIDzRec_";
680 named0kaonPIDzRec += i;
681 d0KaonPIDrphiRec = new TH1F(named0kaonPIDrphiRec.Data(), d0rphiParticlPID.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
682 d0KaonPIDrphiRec->Sumw2();
683 d0KaonPIDrphiRec->SetMinimum(0);
684 fOutputparticlePID->Add(d0KaonPIDrphiRec);
685 d0KaonPIDzRec = new TH1F(named0kaonPIDzRec.Data(), d0zPrtilePID.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
686 d0KaonPIDzRec->Sumw2();
687 d0KaonPIDzRec->SetMinimum(0);
688 fOutputparticlePID->Add(d0KaonPIDzRec);
689
690 named0kaonPIDrphiSkip = "d0kaonPIDrphiSkip_";
691 named0kaonPIDrphiSkip += i;
692 named0kaonPIDzSkip = "d0kaonPIDzSkip_";
693 named0kaonPIDzSkip += i;
694 d0KaonPIDrphiSkip = new TH1F(named0kaonPIDrphiSkip.Data(), d0rphiParticlPID.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
695 d0KaonPIDrphiSkip->Sumw2();
696 d0KaonPIDrphiSkip->SetMinimum(0);
697 fOutputparticlePID->Add(d0KaonPIDrphiSkip);
698 d0KaonPIDzSkip = new TH1F(named0kaonPIDzSkip.Data(), d0zPrtilePID.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
699 d0KaonPIDzSkip->Sumw2();
700 d0KaonPIDzSkip->SetMinimum(0);
701 fOutputparticlePID->Add(d0KaonPIDzSkip);
702
703 named0protonPIDrphiRec = "d0protonPIDrphiRec_";
704 named0protonPIDrphiRec += i;
705 named0protonPIDzRec = "d0protonPIDzRec_";
706 named0protonPIDzRec += i;
707 d0ProtonPIDrphiRec = new TH1F(named0protonPIDrphiRec.Data(), d0rphiParticlPID.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
708 d0ProtonPIDrphiRec->Sumw2();
709 d0ProtonPIDrphiRec->SetMinimum(0);
710 fOutputparticlePID->Add(d0ProtonPIDrphiRec);
711 d0ProtonPIDzRec = new TH1F(named0protonPIDzRec.Data(), d0zPrtilePID.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
712 d0ProtonPIDzRec->Sumw2();
713 d0ProtonPIDzRec->SetMinimum(0);
714 fOutputparticlePID->Add(d0ProtonPIDzRec);
715
716 named0protonPIDrphiSkip = "d0protonPIDrphiSkip_";
717 named0protonPIDrphiSkip += i;
718 named0protonPIDzSkip = "d0protonPIDzSkip_";
719 named0protonPIDzSkip += i;
720 d0ProtonPIDrphiSkip = new TH1F(named0protonPIDrphiSkip.Data(), d0rphiParticlPID.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
721 d0ProtonPIDrphiSkip->Sumw2();
722 d0ProtonPIDrphiSkip->SetMinimum(0);
723 fOutputparticlePID->Add(d0ProtonPIDrphiSkip);
724 d0ProtonPIDzSkip = new TH1F(named0protonPIDzSkip.Data(), d0zPrtilePID.Data(), 400, -Getd0HistRange(i), Getd0HistRange(i));
725 d0ProtonPIDzSkip->Sumw2();
726 d0ProtonPIDzSkip->SetMinimum(0);
727 fOutputparticlePID->Add(d0ProtonPIDzSkip);
728
77e570bf 729 named0pt = "d0pt_";
b2d79ac3 730 named0pt += i;
77e570bf 731 d0Pt = new TH1F(named0pt.Data(), d0ptTitle.Data(), 100, 0, 35.);
732 d0Pt->Sumw2();
733 d0Pt->SetMinimum(0);
734 fOutputPt->Add(d0Pt);
77e570bf 735 }
736
319532c0 737
5a4911b5 738 if (!fOutputSinThetaRec){
739 fOutputSinThetaRec = new TList();
740 fOutputSinThetaRec->SetOwner();
741 fOutputSinThetaRec->SetName("thetaRec");
742 }
743
744 if (!fOutputSinThetaSkip){
745 fOutputSinThetaSkip = new TList();
746 fOutputSinThetaSkip->SetOwner();
747 fOutputSinThetaSkip->SetName("thetaSkip");
748 }
749
750 if (!fOutputphiAllpointSkip) {
751 fOutputphiAllpointSkip = new TList();
752 fOutputphiAllpointSkip->SetOwner();
753 fOutputphiAllpointSkip->SetName("phiallpointSkip");
754 }
755
756 if (!fOutputphiPostvtracSkip) {
757 fOutputphiPostvtracSkip = new TList();
758 fOutputphiPostvtracSkip->SetOwner();
759 fOutputphiPostvtracSkip->SetName("postvtracSkip");
760 }
761
762 if (!fOutputphiNegtvtracSkip) {
763 fOutputphiNegtvtracSkip = new TList();
764 fOutputphiNegtvtracSkip->SetOwner();
765 fOutputphiNegtvtracSkip->SetName("negtvtracSkip");
766 }
767
768
769 const TString d0sinThetarphiTitle ="d_{0} Distribution_rphi; d_{0} [#mum]; Entries";
770 const TString d0sinThetazTitle ="d_{0} Distribution_z; d_{0} [#mum]; Entries";
771 const TString d0phiAllpointrphiTitle = "d_{0} Distribution_rphi; d_{0} [#mum]; Entries";
772 const TString d0phiAllpointzTitle = "d_{0} Distribution_z; d_{0} [#mum]; Entries";
773 const TString d0phiPostvtracrphiTitle = "d_{0} Distribution_rphi; d_{0} [#mum]; Entries";
774 const TString d0phiPostvtraczTitle = "d_{0} Distribution_z; d_{0} [#mum]; Entries";
775 const TString d0phiNegtvtracrphiTitle = "d_{0} Distribution_rphi; d_{0} [#mum]; Entries";
776 const TString d0phiNegtvtraczTitle = "d_{0} Distribution_z; d_{0} [#mum]; Entries";
319532c0 777 TString named0sinThetaonerphiRec,named0sinThetaonezRec,named0sinThetatworphiRec,named0sinThetatwozRec,named0sinThetathreerphiRec,named0sinThetathreezRec,named0sinThetafourrphiRec,named0sinThetafourzRec,named0thetaForwardrphiRec,named0thetaForwardzRec,named0thetaBackwardrphiRec,named0thetaBackwardzRec;
5a4911b5 778
319532c0 779 TH1F *d0SinThetaonerphiRec,*d0SinThetaonezRec,*d0SinThetatworphiRec,*d0SinThetatwozRec,*d0SinThetathreerphiRec,*d0SinThetathreezRec,*d0SinThetafourrphiRec,*d0SinThetafourzRec,*d0ThetaforwardrphiRec,*d0ThetaforwardzRec,*d0ThetabackwardrphiRec,*d0ThetabackwardzRec;
5a4911b5 780
319532c0 781 TString named0sinThetaonerphiSkip,named0sinThetaonezSkip,named0sinThetatworphiSkip,named0sinThetatwozSkip,named0sinThetathreerphiSkip,named0sinThetathreezSkip,named0sinThetafourrphiSkip,named0sinThetafourzSkip,named0phiAllpointrphiSkip, named0phiAllpointzSkip,named0phiPostvtracrphiSkip, named0phiPostvtraczSkip,named0phiNegtvtracrphiSkip,named0phiNegtvtraczSkip,named0thetaForwardrphiSkip,named0thetaForwardzSkip,named0thetaBackwardrphiSkip,named0thetaBackwardzSkip;
5a4911b5 782
319532c0 783 TH1F*d0SinThetaonerphiSkip,*d0SinThetaonezSkip,*d0SinThetatworphiSkip,*d0SinThetatwozSkip,*d0SinThetathreerphiSkip,*d0SinThetathreezSkip,*d0SinThetafourrphiSkip,*d0SinThetafourzSkip, *d0PhiAllpointrphiSkip,*d0PhiAllpointzSkip,*d0PhiPostvtracrphiSkip,*d0PhiPostvtraczSkip,*d0PhiNegtvtracrphiSkip,*d0PhiNegtvtraczSkip,*d0ThetaforwardrphiSkip,*d0ThetaforwardzSkip,*d0ThetabackwardrphiSkip,*d0ThetabackwardzSkip;
5a4911b5 784
b2d79ac3 785 const Int_t nhistm=10;
cbddc2a0 786 for(Int_t i=0; i<=nhistm; i++) {
b2d79ac3 787 named0sinThetaonerphiRec = "d0sinthetaonerphiRec_";
788 named0sinThetaonerphiRec += i;
789 named0sinThetaonezRec ="d0sinthetaonezRec_";
790 named0sinThetaonezRec += i;
791 d0SinThetaonerphiRec = new TH1F(named0sinThetaonerphiRec.Data(),d0sinThetarphiTitle.Data(),400,-2000,2000);
792 d0SinThetaonerphiRec->Sumw2();
793 d0SinThetaonerphiRec->SetMinimum(0);
794 fOutputSinThetaRec->Add(d0SinThetaonerphiRec);
795 d0SinThetaonezRec = new TH1F(named0sinThetaonezRec.Data(),d0sinThetazTitle.Data(),400,-2000,2000);
796 d0SinThetaonezRec->Sumw2();
797 d0SinThetaonezRec->SetMinimum(0);
798 fOutputSinThetaRec->Add(d0SinThetaonezRec);
799
800 named0sinThetatworphiRec = "d0sinthetatworphiRec_";
801 named0sinThetatworphiRec += i;
802 named0sinThetatwozRec ="d0sinthetatwozRec_";
803 named0sinThetatwozRec += i;
804 d0SinThetatworphiRec = new TH1F(named0sinThetatworphiRec.Data(),d0sinThetarphiTitle.Data(),400,-2000,2000);
805 d0SinThetatworphiRec->Sumw2();
806 d0SinThetatworphiRec->SetMinimum(0);
807 fOutputSinThetaRec->Add(d0SinThetatworphiRec);
808 d0SinThetatwozRec = new TH1F(named0sinThetatwozRec.Data(),d0sinThetazTitle.Data(),400,-2000,2000);
809 d0SinThetatwozRec->Sumw2();
810 d0SinThetatwozRec->SetMinimum(0);
811 fOutputSinThetaRec->Add(d0SinThetatwozRec);
812
813 named0sinThetathreerphiRec = "d0sinthetathreerphiRec_";
814 named0sinThetathreerphiRec += i;
815 named0sinThetathreezRec ="d0sinthetathreezRec_";
816 named0sinThetathreezRec += i;
817
818 d0SinThetathreerphiRec = new TH1F(named0sinThetathreerphiRec.Data(),d0sinThetarphiTitle.Data(),400,-2000,2000);
819 d0SinThetathreerphiRec->Sumw2();
820 d0SinThetathreerphiRec->SetMinimum(0);
821 fOutputSinThetaRec->Add(d0SinThetathreerphiRec);
822 d0SinThetathreezRec = new TH1F(named0sinThetathreezRec.Data(),d0sinThetazTitle.Data(),400,-2000,2000);
823 d0SinThetathreezRec->Sumw2();
824 d0SinThetathreezRec->SetMinimum(0);
825 fOutputSinThetaRec->Add(d0SinThetathreezRec);
826
827 named0sinThetafourrphiRec = "d0sinthetafourrphiRec_";
828 named0sinThetafourrphiRec += i;
829 named0sinThetafourzRec ="d0sinthetafourzRec_";
830 named0sinThetafourzRec += i;
831 d0SinThetafourrphiRec = new TH1F(named0sinThetafourrphiRec.Data(),d0sinThetarphiTitle.Data(),400,-2000,2000);
832 d0SinThetafourrphiRec->Sumw2();
833 d0SinThetafourrphiRec->SetMinimum(0);
834 fOutputSinThetaRec->Add(d0SinThetafourrphiRec);
835 d0SinThetafourzRec = new TH1F(named0sinThetafourzRec.Data(),d0sinThetazTitle.Data(),400,-2000,2000);
836 d0SinThetafourzRec->Sumw2();
837 d0SinThetafourzRec->SetMinimum(0);
838 fOutputSinThetaRec->Add(d0SinThetafourzRec);
319532c0 839
840 named0thetaForwardrphiRec = "d0thetaforwardrphiRec_";
841 named0thetaForwardrphiRec += i;
842 named0thetaForwardzRec ="d0thetaforwardzRec_";
843 named0thetaForwardzRec += i;
844 d0ThetaforwardrphiRec = new TH1F(named0thetaForwardrphiRec.Data(),d0sinThetarphiTitle.Data(),400,-2000,2000);
845 d0ThetaforwardrphiRec->Sumw2();
846 d0ThetaforwardrphiRec->SetMinimum(0);
847 fOutputSinThetaRec->Add(d0ThetaforwardrphiRec);
848 d0ThetaforwardzRec = new TH1F(named0thetaForwardzRec.Data(),d0sinThetazTitle.Data(),400,-2000,2000);
849 d0ThetaforwardzRec->Sumw2();
850 d0ThetaforwardzRec->SetMinimum(0);
851 fOutputSinThetaRec->Add(d0ThetaforwardzRec);
852
853 named0thetaBackwardrphiRec = "d0thetabackwardrphiRec_";
854 named0thetaBackwardrphiRec += i;
855 named0thetaBackwardzRec ="d0thetabackwardzRec_";
856 named0thetaBackwardzRec += i;
857 d0ThetabackwardrphiRec = new TH1F(named0thetaBackwardrphiRec.Data(),d0sinThetarphiTitle.Data(),400,-2000,2000);
858 d0ThetabackwardrphiRec->Sumw2();
859 d0ThetabackwardrphiRec->SetMinimum(0);
860 fOutputSinThetaRec->Add(d0ThetabackwardrphiRec);
861 d0ThetabackwardzRec = new TH1F(named0thetaBackwardzRec.Data(),d0sinThetazTitle.Data(),400,-2000,2000);
862 d0ThetabackwardzRec->Sumw2();
863 d0ThetabackwardzRec->SetMinimum(0);
864 fOutputSinThetaRec->Add(d0ThetabackwardzRec);
b2d79ac3 865
866 named0sinThetaonerphiSkip = "d0sinthetaonerphiSkip_";
867 named0sinThetaonerphiSkip += i;
868 named0sinThetaonezSkip ="d0sinthetaonezSkip_";
869 named0sinThetaonezSkip += i;
870 d0SinThetaonerphiSkip = new TH1F(named0sinThetaonerphiSkip.Data(),d0sinThetarphiTitle.Data(),400,-2000,2000);
871 d0SinThetaonerphiSkip->Sumw2();
872 d0SinThetaonerphiSkip->SetMinimum(0);
873 fOutputSinThetaSkip->Add(d0SinThetaonerphiSkip);
874 d0SinThetaonezSkip = new TH1F(named0sinThetaonezSkip.Data(),d0sinThetazTitle.Data(),400,-2000,2000);
875 d0SinThetaonezSkip->Sumw2();
876 d0SinThetaonezSkip->SetMinimum(0);
877 fOutputSinThetaSkip->Add(d0SinThetaonezSkip);
878
879 named0sinThetatworphiSkip = "d0sinthetatworphiSkip_";
880 named0sinThetatworphiSkip += i;
881 named0sinThetatwozSkip ="d0sinthetatwozSkip_";
882 named0sinThetatwozSkip += i;
883 d0SinThetatworphiSkip = new TH1F(named0sinThetatworphiSkip.Data(),d0sinThetarphiTitle.Data(),400,-2000,2000);
884 d0SinThetatworphiSkip->Sumw2();
885 d0SinThetatworphiSkip->SetMinimum(0);
886 fOutputSinThetaSkip->Add(d0SinThetatworphiSkip);
887 d0SinThetatwozSkip = new TH1F(named0sinThetatwozSkip.Data(),d0sinThetazTitle.Data(),400,-2000,2000);
888 d0SinThetatwozSkip->Sumw2();
889 d0SinThetatwozSkip->SetMinimum(0);
890 fOutputSinThetaSkip->Add(d0SinThetatwozSkip);
891
892 named0sinThetathreerphiSkip = "d0sinthetathreerphiSkip_";
893 named0sinThetathreerphiSkip += i;
894 named0sinThetathreezSkip ="d0sinthetathreezSkip_";
895 named0sinThetathreezSkip += i;
896
897 d0SinThetathreerphiSkip = new TH1F(named0sinThetathreerphiSkip.Data(),d0sinThetarphiTitle.Data(),400,-2000,2000);
898 d0SinThetathreerphiSkip->Sumw2();
899 d0SinThetathreerphiSkip->SetMinimum(0);
900 fOutputSinThetaSkip->Add(d0SinThetathreerphiSkip);
901 d0SinThetathreezSkip = new TH1F(named0sinThetathreezSkip.Data(),d0sinThetazTitle.Data(),400,-2000,2000);
902 d0SinThetathreezSkip->Sumw2();
903 d0SinThetathreezSkip->SetMinimum(0);
904 fOutputSinThetaSkip->Add(d0SinThetathreezSkip);
905
906 named0sinThetafourrphiSkip = "d0sinthetafourrphiSkip_";
907 named0sinThetafourrphiSkip += i;
908 named0sinThetafourzSkip ="d0sinthetafourzSkip_";
909 named0sinThetafourzSkip += i;
910 d0SinThetafourrphiSkip = new TH1F(named0sinThetafourrphiSkip.Data(),d0sinThetarphiTitle.Data(),400,-2000,2000);
911 d0SinThetafourrphiSkip->Sumw2();
912 d0SinThetafourrphiSkip->SetMinimum(0);
913 fOutputSinThetaSkip->Add(d0SinThetafourrphiSkip);
914 d0SinThetafourzSkip = new TH1F(named0sinThetafourzSkip.Data(),d0sinThetazTitle.Data(),400,-2000,2000);
915 d0SinThetafourzSkip->Sumw2();
916 d0SinThetafourzSkip->SetMinimum(0);
917 fOutputSinThetaSkip->Add(d0SinThetafourzSkip);
319532c0 918
919 named0thetaForwardrphiSkip = "d0thetaforwardrphiSkip_";
920 named0thetaForwardrphiSkip += i;
921 named0thetaForwardzSkip ="d0thetaforwardzSkip_";
922 named0thetaForwardzSkip += i;
923 d0ThetaforwardrphiSkip = new TH1F(named0thetaForwardrphiSkip.Data(),d0sinThetarphiTitle.Data(),400,-2000,2000);
924 d0ThetaforwardrphiSkip->Sumw2();
925 d0ThetaforwardrphiSkip->SetMinimum(0);
926 fOutputSinThetaSkip->Add(d0ThetaforwardrphiSkip);
927 d0ThetaforwardzSkip = new TH1F(named0thetaForwardzSkip.Data(),d0sinThetazTitle.Data(),400,-2000,2000);
928 d0ThetaforwardzSkip->Sumw2();
929 d0ThetaforwardzSkip->SetMinimum(0);
930 fOutputSinThetaSkip->Add(d0ThetaforwardzSkip);
931
932 named0thetaBackwardrphiSkip = "d0thetabackwardrphiSkip_";
933 named0thetaBackwardrphiSkip += i;
934 named0thetaBackwardzSkip ="d0thetabackwardzSkip_";
935 named0thetaBackwardzSkip += i;
936 d0ThetabackwardrphiSkip = new TH1F(named0thetaBackwardrphiSkip.Data(),d0sinThetarphiTitle.Data(),400,-2000,2000);
937 d0ThetabackwardrphiSkip->Sumw2();
938 d0ThetabackwardrphiSkip->SetMinimum(0);
939 fOutputSinThetaSkip->Add(d0ThetabackwardrphiSkip);
940 d0ThetabackwardzSkip = new TH1F(named0thetaBackwardzSkip.Data(),d0sinThetazTitle.Data(),400,-2000,2000);
941 d0ThetabackwardzSkip->Sumw2();
942 d0ThetabackwardzSkip->SetMinimum(0);
943 fOutputSinThetaSkip->Add(d0ThetabackwardzSkip);
944
5a4911b5 945 }
946
947 const Int_t nhistphi=20;
948 for(Int_t i=0; i<=nhistphi; i++) {
cbddc2a0 949
950 named0phiAllpointrphiSkip = "d0phiallpointrphiSkip_";
951 named0phiAllpointrphiSkip += i;
952 named0phiAllpointzSkip ="d0phiallpointzSkip_";
953 named0phiAllpointzSkip += i;
954 d0PhiAllpointrphiSkip = new TH1F(named0phiAllpointrphiSkip.Data(),d0phiAllpointrphiTitle.Data(),400,-2000,2000);
955 d0PhiAllpointrphiSkip->Sumw2();
956 d0PhiAllpointrphiSkip->SetMinimum(0);
957 fOutputphiAllpointSkip->Add(d0PhiAllpointrphiSkip);
958 d0PhiAllpointzSkip = new TH1F(named0phiAllpointzSkip.Data(),d0phiAllpointzTitle.Data(),400,-2000,2000);
959 d0PhiAllpointzSkip->Sumw2();
960 d0PhiAllpointzSkip->SetMinimum(0);
961 fOutputphiAllpointSkip->Add(d0PhiAllpointzSkip);
962
963
964 named0phiPostvtracrphiSkip = "d0phipostvtracrphiSkip_";
965 named0phiPostvtracrphiSkip += i;
966 named0phiPostvtraczSkip ="d0phipostvtraczSkip_";
967 named0phiPostvtraczSkip += i;
968 d0PhiPostvtracrphiSkip = new TH1F(named0phiPostvtracrphiSkip.Data(),d0phiPostvtracrphiTitle.Data(),400,-2000,2000);
969 d0PhiPostvtracrphiSkip->Sumw2();
970 d0PhiPostvtracrphiSkip->SetMinimum(0);
971 fOutputphiPostvtracSkip->Add(d0PhiPostvtracrphiSkip);
972 d0PhiPostvtraczSkip = new TH1F(named0phiPostvtraczSkip.Data(),d0phiPostvtraczTitle.Data(),400,-2000,2000);
973 d0PhiPostvtraczSkip->Sumw2();
974 d0PhiPostvtraczSkip->SetMinimum(0);
975 fOutputphiPostvtracSkip->Add(d0PhiPostvtraczSkip);
976
977
978 named0phiNegtvtracrphiSkip = "d0phinegtvtracrphiSkip_";
979 named0phiNegtvtracrphiSkip += i;
980 named0phiNegtvtraczSkip ="d0phinegtvtraczSkip_";
981 named0phiNegtvtraczSkip += i;
982 d0PhiNegtvtracrphiSkip = new TH1F(named0phiNegtvtracrphiSkip.Data(),d0phiNegtvtracrphiTitle.Data(),400,-2000,2000);
983 d0PhiNegtvtracrphiSkip->Sumw2();
984 d0PhiNegtvtracrphiSkip->SetMinimum(0);
985 fOutputphiNegtvtracSkip->Add(d0PhiNegtvtracrphiSkip);
986 d0PhiNegtvtraczSkip = new TH1F(named0phiNegtvtraczSkip.Data(),d0phiNegtvtraczTitle.Data(),400,-2000,2000);
987 d0PhiNegtvtraczSkip->Sumw2();
988 d0PhiNegtvtraczSkip->SetMinimum(0);
989 fOutputphiNegtvtracSkip->Add(d0PhiNegtvtraczSkip);
b2d79ac3 990 }
991
77e570bf 992 if(!fNentries) fNentries = new TH1F("hNentries", "number of entries", 26, 0., 40.);
319532c0 993 if(!fEstimVtx) fEstimVtx = new TH1F("vtxRes","Resolution of vertex",1000,-5000.,5000);
4f7217d1 994 PostData(1, fOutputitspureSARec);
995 PostData(2, fOutputitspureSASkip);
996 PostData(3, fOutputallPointRec);
997 PostData(4, fOutputallPointSkip);
998 PostData(5, fOutputpartPointRec);
999 PostData(6, fOutputpartPointSkip);
1000 PostData(7, fOutputonepointSPDRec);
1001 PostData(8, fOutputonepointSPDSkip);
1002 PostData(9, fOutputpostvTracRec);
1003 PostData(10, fOutputpostvTracSkip);
1004 PostData(11, fOutputnegtvTracRec);
1005 PostData(12, fOutputnegtvTracSkip);
1006 PostData(13, fOutputpullAllpointRec);
1007 PostData(14, fOutputpullAllpointSkip);
1008 PostData(15, fOutputOnlyRefitRec);
1009 PostData(16, fOutputOnlyRefitSkip);
1010 PostData(17, fOutputSinThetaRec);
1011 PostData(18, fOutputSinThetaSkip);
1012 PostData(19, fOutputallPointTrue);
1013 PostData(20, fOutputpostvTracTrue);
1014 PostData(21, fOutputnegtvTracTrue);
1015 PostData(22, fOutputpullAllpointTrue);
1016 PostData(23, fOutputphiAllpointSkip);
1017 PostData(24, fOutputphiPostvtracSkip);
1018 PostData(25, fOutputphiNegtvtracSkip);
31a96e36 1019 PostData(26, fOutputparticlePID);
1020 PostData(27, fOutputPt);
1021 PostData(28, fNentries);
1022 PostData(29, fEstimVtx);
319532c0 1023
77e570bf 1024 return;
1025}
1026
1027//________________________________________________________________________
1028void AliAnalysisTaskSEImpParRes::UserExec(Option_t */*option*/)
1029{
1030 //
1031 // Track selection and filling of d0 histograms
1032 //
1033 AliESDEvent *esd = dynamic_cast<AliESDEvent*>(InputEvent());
1034 if (!esd) {
1035 AliError("ESD event not found. Nothing done!");
1036 return;
1037 }
1038
66cefb1c 1039 // only events in the requested multiplicity range
1040 if(!IsSelectedCentrality(esd)) return;
1041
31a96e36 1042 TString firedTriggerClasses=esd->GetFiredTriggerClasses();
1043 if(!firedTriggerClasses.Contains(fTriggerClass.Data())) return;
1044
1045
1046 Bool_t sddIsIn=kTRUE;
1047 if(fCheckSDDIsIn) {
1048
1049 if(!fTrigConfig) {
1050 AliCDBManager* man = AliCDBManager::Instance();
1051 if(fOCDBPath.Contains("OCDB")) { // when running in the QAtrain this is not called (OCBD is already set)
1052 man->SetDefaultStorage(fOCDBPath.Data());
1053 man->SetRun(esd->GetRunNumber());
1054 }
1055 if(!man) {
1056 AliFatal("CDB not set but needed by AliAnalysisTaskITSTrackingCheck");
1057 return;
1058 }
1059 AliCDBEntry* eT=(AliCDBEntry*)man->Get("GRP/CTP/Config");
1060 if(eT) {
1061 fTrigConfig=(AliTriggerConfiguration*)eT->GetObject();
1062 }
1063 if(!eT || !fTrigConfig) {
1064 AliError("Cannot retrieve CDB entry for GRP/CTP/Config");
1065 return;
1066 }
1067 }
1068
1069 sddIsIn=esd->IsDetectorInTriggerCluster("ITSSDD",fTrigConfig);
1070 if(fCheckSDDIsIn==1 && !sddIsIn) return;
1071 if(fCheckSDDIsIn==-1 && sddIsIn) return;
1072 }
1073
319532c0 1074 fNentries->Fill(1);
0faeb7ba 1075
1076
1077 Int_t nTrks = esd->GetNumberOfTracks();
1078 Bool_t highMult=(nTrks>500 ? kTRUE : kFALSE);
1079
319532c0 1080
1081 // diamond constraint
77e570bf 1082 Float_t diamondcovxy[3];
1083 esd->GetDiamondCovXY(diamondcovxy);
1084 Double_t pos[3]={esd->GetDiamondX(),esd->GetDiamondY(),0.};
77e570bf 1085 Double_t cov[6]={diamondcovxy[0],diamondcovxy[1],diamondcovxy[2],0.,0.,10.};
319532c0 1086 AliESDVertex diamond(pos,cov,1.,1);
1087
1088 Double_t vtxTrue[3];
cbddc2a0 1089 AliStack *stack=0;
1090 AliESDVertex *vtxESDTrue=0;
319532c0 1091 AliESDVertex *vtxESDSkip=0;
1092 AliESDVertex *vtxESDRec=0;
1093
1094 // event primary vertex
1095 AliVertexerTracks vertexer0(esd->GetMagneticField());
1096 vertexer0.SetITSMode();
4a037efc 1097 vertexer0.SetMinClusters(3);
0faeb7ba 1098 if(highMult) vertexer0.SetITSMode(0.1,0.1,0.5,5,1,3.,100.,1000.,3.,30.,1,1);
319532c0 1099 if(fUseDiamond) vertexer0.SetVtxStart(&diamond);
1100 vtxESDRec = (AliESDVertex*)vertexer0.FindPrimaryVertex(esd);
1101 if(vtxESDRec->GetNContributors()<1) {
1102 delete vtxESDRec; vtxESDRec=NULL;
1103 return;
1104 }
1105
1106 if (fReadMC) {
77e570bf 1107 AliMCEventHandler *eventHandler = dynamic_cast<AliMCEventHandler*>(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
1108 if (!eventHandler) {
1109 Printf("ERROR: Could not retrieve MC event handler");
1110 return;
1111 }
319532c0 1112
77e570bf 1113 AliMCEvent* mcEvent = eventHandler->MCEvent();
1114 if (!mcEvent) {
1115 Printf("ERROR: Could not retrieve MC event");
1116 return;
1117 }
319532c0 1118
77e570bf 1119 stack = mcEvent->Stack();
1120 if (!stack) {
1121 AliDebug(AliLog::kError, "Stack not available");
1122 return;
1123 }
77e570bf 1124
2bfe5463 1125 //load MC header for ESD;//see $ALICE_ROOT/PWGPP/global/AliAnalysisTaskSEVertexESD.cxx
cbddc2a0 1126 AliHeader *mcHeader = eventHandler->MCEvent()->Header();
1127 if (!mcHeader) {
1128 AliDebug(AliLog::kError, "Header not available");
1129 return;
1130 }
1131
319532c0 1132 AliGenEventHeader* genHeader = mcHeader->GenEventHeader();
cbddc2a0 1133 TArrayF mcVertex(3);
1134 mcVertex[0]=9999.; mcVertex[1]=9999.; mcVertex[2]=9999.;
1135 genHeader->PrimaryVertex(mcVertex);
1136 vtxTrue[0]=mcVertex[0];vtxTrue[1]=mcVertex[1];vtxTrue[2]=mcVertex[2];
1137 Double_t sigmaTrue[3]={0., 0., 0.,};
1138 //mcHeader->GetVertex(vtxTrue);//note the vtxTrue is void here,so must need the next line.
1139 //AliESDVertex *vtxESDTrue = new AliESDVertex(vtxTrue,sigmaTrue);
1140 vtxESDTrue = new AliESDVertex(vtxTrue,sigmaTrue);
319532c0 1141 }
1142
319532c0 1143 Double_t beampiperadius=3.;
1144 AliESDtrack *esdtrack = 0;
1145 Int_t pdgCode=0;
1146 Int_t trkLabel;
1147 TParticle *part =0;
1148 Int_t npointsITS=0,npointsSPD=0;
1149 Int_t ilayer;
1150 Int_t skipped[2];
1151 Double_t dzRec[2], covdzRec[3], dzRecSkip[2], covdzRecSkip[3],dzTrue[2], covdzTrue[3];
1152 Double_t pt;
1153 Int_t bin;
1154
77e570bf 1155 for (Int_t it=0; it<nTrks; it++) { // loop over tracks
1156 // read track
319532c0 1157 esdtrack = esd->GetTrack(it);
77e570bf 1158
1159 // ask for ITS refit
1160 if (!(esdtrack->GetStatus()&AliESDtrack::kITSrefit)) {
1161 continue;
1162 }
1163
319532c0 1164 pdgCode=0;
77e570bf 1165 if(fReadMC && stack) {
319532c0 1166 trkLabel = esdtrack->GetLabel();
77e570bf 1167 if(trkLabel<0) continue;
319532c0 1168 part = (TParticle*)stack->Particle(trkLabel);
77e570bf 1169 pdgCode = TMath::Abs(part->GetPdgCode());
1170 //printf("pdgCode===%d\n", pdgCode);
1171 if(fSelectedPdg>0 && pdgCode!=fSelectedPdg) continue;
1172 }
1173
319532c0 1174 npointsITS=0; npointsSPD=0;
1175 for (ilayer=0; ilayer<6; ilayer++){
1176 if (ilayer<2 && esdtrack->HasPointOnITSLayer(ilayer)) npointsSPD++;
1177 if (esdtrack->HasPointOnITSLayer(ilayer)) npointsITS++;
77e570bf 1178 }
1179
1180 //Get specific primary vertex--Reconstructed primary vertex do not include the track considering.
319532c0 1181 AliVertexerTracks vertexer(esd->GetMagneticField());
1182 vertexer.SetITSMode();
4a037efc 1183 vertexer.SetMinClusters(3);
319532c0 1184 if(fUseDiamond) vertexer.SetVtxStart(&diamond);
77e570bf 1185 skipped[0] = (Int_t)esdtrack->GetID();
319532c0 1186 vertexer.SetSkipTracks(1,skipped);
1187 // create vertex with new!
47f68c78 1188 if(!highMult && fSkipTrack) {
0faeb7ba 1189 vtxESDSkip = (AliESDVertex*)vertexer.FindPrimaryVertex(esd);
1190 if(vtxESDSkip->GetNContributors()<1) {
1191 delete vtxESDSkip; vtxESDSkip=NULL;
1192 continue;
1193 }
1194 } else {
1195 vtxESDSkip = new AliESDVertex(); // dummy
319532c0 1196 }
77e570bf 1197
319532c0 1198 //pt= esdtrack->P();
1199 pt = esdtrack->Pt();
1200 bin = PtBin(pt);
77e570bf 1201
1202 if(bin==-1) {
319532c0 1203 delete vtxESDSkip; vtxESDSkip=NULL;
77e570bf 1204 continue;
1205 }
1206
319532c0 1207
1208 // Select primary particle if MC event (for ESD event), Rprod < 1 micron
1209 if(fReadMC){
1210 if((part->Vx()-vtxTrue[0])*(part->Vx()-vtxTrue[0])+
1211 (part->Vy()-vtxTrue[1])*(part->Vy()-vtxTrue[1])
1212 > 0.0001*0.0001) {
1213 delete vtxESDSkip; vtxESDSkip=NULL;
1214 continue;
1215 }
1216 }
1217
1218 // compute impact patameters
1219 // wrt event vertex
77e570bf 1220 esdtrack->PropagateToDCA(vtxESDRec, esd->GetMagneticField(), beampiperadius, dzRec, covdzRec);
319532c0 1221 // wrt event vertex without this track
7b00d86d 1222 if(!highMult && fSkipTrack) {
0faeb7ba 1223 esdtrack->PropagateToDCA(vtxESDSkip, esd->GetMagneticField(), beampiperadius, dzRecSkip, covdzRecSkip);
7b00d86d 1224 } else if(!fSkipTrack) {
1225 dzRecSkip[0]=dzRec[0];
1226 dzRecSkip[1]=dzRec[1];
1227 covdzRecSkip[0]=covdzRec[0];
1228 covdzRecSkip[1]=covdzRec[1];
1229 covdzRecSkip[2]=covdzRec[2];
0faeb7ba 1230 } else {
7b00d86d 1231 dzRecSkip[0]=0;
1232 dzRecSkip[1]=0;
1233 covdzRecSkip[0]=0;
1234 covdzRecSkip[1]=0;
1235 covdzRecSkip[2]=0;
0faeb7ba 1236 }
319532c0 1237 delete vtxESDSkip; vtxESDSkip=NULL; // not needed anymore
1238 // wrt MC vertex
cbddc2a0 1239 if(fReadMC) esdtrack->PropagateToDCA(vtxESDTrue, esd->GetMagneticField(), beampiperadius, dzTrue, covdzTrue);
319532c0 1240
1241 if(covdzRec[0]<1.e-13 || covdzRec[2]<1.e-13 || covdzRecSkip[0]<1.e-13 || covdzRecSkip[2]<1.e-13) continue;
1242
1243 if(fReadMC && (covdzTrue[0]<1.e-13 || covdzTrue[2]<1.e-13)) continue;
77e570bf 1244
1245 //printf("Pt: %f GeV/c; Impact parameter: rphi %f cm z %f cm\n", pt, dzRec[0], dzRec[1]);
1246
1247 /*
1248 // RUBEN'S METHOD, NOT FULLY IMPLEMENTED YET
1249 Double_t fIPCenIni[3], xyzDCA[3];
1250 for (int i=3;i--;) fIPCenIni[i] = 0.;
1251 //Int_t nTracks = nTrks - 1;
1252 esdtrack->GetXYZ(xyzDCA);
1253 //double pTrack = esdtrack->GetP();
1254 double phiTrack = esdtrack->Phi();
1255 double cs = TMath::Cos(phiTrack);
1256 double sn = TMath::Sin(phiTrack);
1257 double trDCA = (xyzDCA[0]-fIPCenIni[0]) *sn - (xyzDCA[1]-fIPCenIni[1]) *cs; // track signed DCA to origin
1258 double vtDCA = (vtxESDSkip->GetXv()-fIPCenIni[0])*sn - (vtxESDSkip->GetYv()-fIPCenIni[1])*cs; // vertex signed DCA to origin
1259
1260 // update the estimator values
1261 //double estIP = rvD*rtD;
1262 double estVtx = vtDCA*( vtDCA- trDCA);
1263 //double estTrc = rtD*(rtD - rvD);
1264 //
1265 //if (nTracks >= fMinTracksForIP) fEstimIP->Fill(phiTrack, estIP);
1266 fEstimVtx->Fill(10000*estVtx);
1267 //if (pTrack<1e-6) pTrack = GetTrackMinP()+1e6;
1268 //fEstimTrc->Fill(1./pTrack,estTrc);
1269 */
1270
1271
1272 //fill the histgram with all particle
1273 //-------------------------------------------1----------------------------------------------
1274
1275 /*
1276 TString named0AllrphiRec=" ",named0AllzRec =" ";//named0AllrphiTrue=" ",named0AllzTrue =" ";
1277 //named0AllrphiSkip=" ",named0AllzSkip =" ";
1278
1279 named0AllrphiRec ="d0allrphiRec_";
1280 named0AllrphiRec += bin;
1281 named0AllzRec = "d0allzRec_";
1282 named0AllzRec += bin;
1283 ((TH1F*)(fOutputallRec->FindObject(named0AllrphiRec)))->Fill(10000*dzRec[0]);
1284 ((TH1F*)(fOutputallRec->FindObject(named0AllzRec)))->Fill(10000*dzRec[1]);
1285 */
1286
1287 //-------------------------------------------2----------------------------------------------
1288 //TSting named0AllrphiRec = "d0allrphiRec_" + bin;
1289 //TSting named0AllzRec = "d0allzRec_" + bin;
1290 //((TH1F*)(fOutputallRec->FindObject(named0AllrphiRec.Data())))->Fill(10000.*dzRec[0]);
1291 //((TH1F*)(fOutputallRec->FindObject(named0AllzRec.Data())))->Fill(10000.*dzRec[1]);
1292
1293 //-------------------------------------------3------------------------------------------------
1294
1295
1296 // ITS standalone
ebcbf764 1297 if (esdtrack->GetNcls(1)==0 &&
1298 (esdtrack->GetStatus()&AliESDtrack::kITSrefit)
77e570bf 1299 && npointsSPD>0 && npointsITS>=4) {
1300 char *named0ITSpureSArphiRec = Form("d0itspureSArphiRec_%d", bin);
1301 char *named0ITSpureSArphiSkip = Form("d0itspureSArphiSkip_%d", bin);
1302 char *named0ITSpureSAzRec = Form("d0itspureSAzRec_%d", bin);
1303 char *named0ITSpureSAzSkip = Form("d0itspureSAzSkip_%d", bin);
1304 ((TH1F*)(fOutputitspureSARec->FindObject(named0ITSpureSArphiRec)))->Fill(10000.*dzRec[0]);
1305 ((TH1F*)(fOutputitspureSARec->FindObject(named0ITSpureSAzRec)))->Fill(10000.*dzRec[1]);
1306 ((TH1F*)(fOutputitspureSASkip->FindObject(named0ITSpureSArphiSkip)))->Fill(10000.*dzRecSkip[0]);
1307 ((TH1F*)(fOutputitspureSASkip->FindObject(named0ITSpureSAzSkip)))->Fill(10000.*dzRecSkip[1]);
1308 }
1309
1310
1311 // ask for TPC refit
319532c0 1312 if (!(esdtrack->GetStatus()&AliESDtrack::kTPCrefit) ||
1313 esdtrack->GetNcls(1)<70) continue;
77e570bf 1314
1315 // only ITS and TPC refit
1316 char *named0OnlyrefitrphiRec = Form("d0onlyrefitrphiRec_%d", bin);
1317 char *named0OnlyrefitrphiSkip = Form("d0onlyrefitrphiSkip_%d", bin);
1318 char *named0OnlyrefitzRec = Form("d0onlyrefitzRec_%d", bin);
1319 char *named0OnlyrefitzSkip = Form("d0onlyrefitzSkip_%d", bin);
1320 ((TH1F*)(fOutputOnlyRefitRec->FindObject(named0OnlyrefitrphiRec)))->Fill(10000.*dzRec[0]);
1321 ((TH1F*)(fOutputOnlyRefitRec->FindObject(named0OnlyrefitzRec)))->Fill(10000.*dzRec[1]);
1322 ((TH1F*)(fOutputOnlyRefitSkip->FindObject(named0OnlyrefitrphiSkip)))->Fill(10000.*dzRecSkip[0]);
1323 ((TH1F*)(fOutputOnlyRefitSkip->FindObject(named0OnlyrefitzSkip)))->Fill(10000.*dzRecSkip[1]);
77e570bf 1324
cbddc2a0 1325
77e570bf 1326 if(npointsITS>=4 && npointsSPD>0) {
1327 char *named0PartpointrphiRec = Form("d0partpointrphiRec_%d", bin);
1328 char *named0PartpointrphiSkip = Form("d0partpointrphiSkip_%d", bin);
1329 char *named0PartpointzRec = Form("d0partpointzRec_%d", bin);
1330 char *named0PartpointzSkip = Form("d0partpointzSkip_%d", bin);
1331 ((TH1F*)(fOutputpartPointRec->FindObject(named0PartpointrphiRec)))->Fill(10000.*dzRec[0]);
1332 ((TH1F*)(fOutputpartPointRec->FindObject(named0PartpointzRec)))->Fill(10000.*dzRec[1]);
1333 ((TH1F*)(fOutputpartPointSkip->FindObject(named0PartpointrphiSkip)))->Fill(10000.*dzRecSkip[0]);
1334 ((TH1F*)(fOutputpartPointSkip->FindObject(named0PartpointzSkip)))->Fill(10000.*dzRecSkip[1]);
1335 }
1336
1337 if(npointsSPD>0) {
1338 char *named0OnepointSPDrphiRec = Form("d0onepointSPDrphiRec_%d", bin);
1339 char *named0OnepointSPDrphiSkip = Form("d0onepointSPDrphiSkip_%d", bin);
1340 char *named0OnepointSPDzRec = Form("d0onepointSPDzRec_%d", bin);
1341 char *named0OnepointSPDzSkip = Form("d0onepointSPDzSkip_%d", bin);
1342 ((TH1F*)(fOutputonepointSPDRec->FindObject(named0OnepointSPDrphiRec)))->Fill(10000.*dzRec[0]);
1343 ((TH1F*)(fOutputonepointSPDRec->FindObject(named0OnepointSPDzRec)))->Fill(10000.*dzRec[1]);
1344 ((TH1F*)(fOutputonepointSPDSkip->FindObject(named0OnepointSPDrphiSkip)))->Fill(10000.*dzRecSkip[0]);
1345 ((TH1F*)(fOutputonepointSPDSkip->FindObject(named0OnepointSPDzSkip)))->Fill(10000.*dzRecSkip[1]);
1346 }
1347
cbddc2a0 1348 // with 6 ITS points (including different selection)
31a96e36 1349 if(npointsITS==6 || (npointsITS==4 && !sddIsIn)) {
319532c0 1350 //pt
cbddc2a0 1351 char *named0Pt = Form("d0pt_%d",bin);
1352 ((TH1F*)(fOutputPt->FindObject(named0Pt)))->Fill(pt);
319532c0 1353
cbddc2a0 1354 // allpoint
1355 char *named0AllpointrphiRec = Form("d0allpointrphiRec_%d", bin);
1356 char *named0AllpointrphiSkip = Form("d0allpointrphiSkip_%d", bin);
1357 char *named0AllpointrphiTrue = Form("d0allpointrphiTrue_%d", bin);
1358 char *named0AllpointzRec = Form("d0allpointzRec_%d", bin);
1359 char *named0AllpointzSkip = Form("d0allpointzSkip_%d", bin);
1360 char *named0AllpointzTrue = Form("d0allpointzTrue_%d", bin);
1361 ((TH1F*)(fOutputallPointRec->FindObject(named0AllpointrphiRec)))->Fill(10000.*dzRec[0]);
1362 ((TH1F*)(fOutputallPointRec->FindObject(named0AllpointzRec)))->Fill(10000.*dzRec[1]);
1363 ((TH1F*)(fOutputallPointSkip->FindObject(named0AllpointrphiSkip)))->Fill(10000.*dzRecSkip[0]);
1364 ((TH1F*)(fOutputallPointSkip->FindObject(named0AllpointzSkip)))->Fill(10000.*dzRecSkip[1]);
cde71236 1365 if(fReadMC) {
1366 ((TH1F*)(fOutputallPointTrue->FindObject(named0AllpointrphiTrue)))->Fill(10000.*dzTrue[0]);
1367 ((TH1F*)(fOutputallPointTrue->FindObject(named0AllpointzTrue)))->Fill(10000.*dzTrue[1]);
1368 }
319532c0 1369
cbddc2a0 1370 // pulls
1371 char *named0PullAllpointrphiRec = Form("d0pullAllpointrphiRec_%d", bin);
1372 char *named0PullAllpointrphiSkip = Form("d0pullAllpointrphiSkip_%d", bin);
1373 char *named0PullAllpointrphiTrue = Form("d0pullAllpointrphiTrue_%d", bin);
1374 char *named0PullAllpointzRec = Form("d0pullAllpointzRec_%d", bin);
1375 char *named0PullAllpointzSkip = Form("d0pullAllpointzSkip_%d", bin);
1376 char *named0PullAllpointzTrue = Form("d0pullAllpointzTrue_%d", bin);
1377 ((TH1F*)(fOutputpullAllpointRec->FindObject(named0PullAllpointrphiRec)))->Fill(dzRec[0]/TMath::Sqrt(covdzRec[0]));
1378 ((TH1F*)(fOutputpullAllpointRec->FindObject(named0PullAllpointzRec)))->Fill(dzRec[1]/TMath::Sqrt(covdzRec[2]));
1379 ((TH1F*)(fOutputpullAllpointSkip->FindObject(named0PullAllpointrphiSkip)))->Fill(dzRecSkip[0]/TMath::Sqrt(covdzRecSkip[0]));
1380 ((TH1F*)(fOutputpullAllpointSkip->FindObject(named0PullAllpointzSkip)))->Fill(dzRecSkip[1]/TMath::Sqrt(covdzRecSkip[2]));
cde71236 1381 if(fReadMC) {
1382 ((TH1F*)(fOutputpullAllpointTrue->FindObject(named0PullAllpointrphiTrue)))->Fill(dzTrue[0]/TMath::Sqrt(covdzTrue[0]));
1383 ((TH1F*)(fOutputpullAllpointTrue->FindObject(named0PullAllpointzTrue)))->Fill(dzTrue[1]/TMath::Sqrt(covdzTrue[2]));
1384 }
cbddc2a0 1385 //postive and negative track
319532c0 1386 Int_t charge=esdtrack->Charge();
f06878d2 1387 if(charge==1) {
cbddc2a0 1388 char *named0PostvtracrphiRec = Form("d0postvtracrphiRec_%d", bin);
1389 char *named0PostvtracrphiSkip = Form("d0postvtracrphiSkip_%d", bin);
1390 char *named0PostvtracrphiTrue = Form("d0postvtracrphiTrue_%d", bin);
1391 char *named0PostvtraczRec = Form("d0postvtraczRec_%d", bin);
1392 char *named0PostvtraczSkip = Form("d0postvtraczSkip_%d", bin);
1393 char *named0PostvtraczTrue = Form("d0postvtraczTrue_%d", bin);
1394 ((TH1F*)(fOutputpostvTracRec->FindObject(named0PostvtracrphiRec)))->Fill(10000.*dzRec[0]);
1395 ((TH1F*)(fOutputpostvTracRec->FindObject(named0PostvtraczRec)))->Fill(10000.*dzRec[1]);
1396 ((TH1F*)(fOutputpostvTracSkip->FindObject(named0PostvtracrphiSkip)))->Fill(10000.*dzRecSkip[0]);
1397 ((TH1F*)(fOutputpostvTracSkip->FindObject(named0PostvtraczSkip)))->Fill(10000.*dzRecSkip[1]);
cde71236 1398 if(fReadMC) {
1399 ((TH1F*)(fOutputpostvTracTrue->FindObject(named0PostvtracrphiTrue)))->Fill(10000.*dzTrue[0]);
1400 ((TH1F*)(fOutputpostvTracTrue->FindObject(named0PostvtraczTrue)))->Fill(10000.*dzTrue[1]);
1401 }
cbddc2a0 1402 }
1403
f06878d2 1404 if(charge==-1) {
cbddc2a0 1405 char *named0NegtvtracrphiRec = Form("d0negtvtracrphiRec_%d", bin);
1406 char *named0NegtvtracrphiSkip = Form("d0negtvtracrphiSkip_%d", bin);
1407 char *named0NegtvtracrphiTrue = Form("d0negtvtracrphiTrue_%d", bin);
1408 char *named0NegtvtraczRec = Form("d0negtvtraczRec_%d", bin);
1409 char *named0NegtvtraczSkip = Form("d0negtvtraczSkip_%d", bin);
1410 char *named0NegtvtraczTrue = Form("d0negtvtraczTrue_%d", bin);
1411 ((TH1F*)(fOutputnegtvTracRec->FindObject(named0NegtvtracrphiRec)))->Fill(10000.*dzRec[0]);
1412 ((TH1F*)(fOutputnegtvTracRec->FindObject(named0NegtvtraczRec)))->Fill(10000.*dzRec[1]);
1413 ((TH1F*)(fOutputnegtvTracSkip->FindObject(named0NegtvtracrphiSkip)))->Fill(10000.*dzRecSkip[0]);
1414 ((TH1F*)(fOutputnegtvTracSkip->FindObject(named0NegtvtraczSkip)))->Fill(10000.*dzRecSkip[1]);
cde71236 1415 if(fReadMC) {
1416 ((TH1F*)(fOutputnegtvTracTrue->FindObject(named0NegtvtracrphiTrue)))->Fill(10000.*dzTrue[0]);
1417 ((TH1F*)(fOutputnegtvTracTrue->FindObject(named0NegtvtraczTrue)))->Fill(10000.*dzTrue[1]);
1418 }
1419 }
cbddc2a0 1420
1421 // SinTheta
1422 Double_t theta=esdtrack->Theta();
1423 Double_t Sintheta=TMath::Sin(theta);
319532c0 1424 Double_t pi=TMath::Pi();
1425 Double_t halfpi=0.5*pi;
cbddc2a0 1426 Int_t thetabin = SinThetaBin(Sintheta);
319532c0 1427 if(thetabin<0) continue;
1428 if(bin==4 && theta<halfpi){
1429 char *named0ThetaforwardrphiRec = Form("d0thetaforwardrphiRec_%d", thetabin);
1430 char *named0ThetaforwardzRec = Form("d0thetaforwardzRec_%d", thetabin);
1431 char *named0ThetaforwardrphiSkip = Form("d0thetaforwardrphiSkip_%d", thetabin);
1432 char *named0ThetaforwardzSkip = Form("d0thetaforwardzSkip_%d", thetabin);
1433 ((TH1F*)(fOutputSinThetaRec->FindObject(named0ThetaforwardrphiRec)))->Fill(10000*dzRec[0]);
1434 ((TH1F*)(fOutputSinThetaRec->FindObject(named0ThetaforwardzRec)))->Fill(10000*dzRec[1]);
1435 ((TH1F*)(fOutputSinThetaSkip->FindObject(named0ThetaforwardrphiSkip)))->Fill(10000*dzRecSkip[0]);
1436 ((TH1F*)(fOutputSinThetaSkip->FindObject(named0ThetaforwardzSkip)))->Fill(10000*dzRecSkip[1]);
1437 }
1438
1439 if(bin==4 && theta>halfpi){
1440 char *named0ThetabackwardrphiRec = Form("d0thetabackwardrphiRec_%d", thetabin);
1441 char *named0ThetabackwardzRec = Form("d0thetabackwardzRec_%d", thetabin);
1442 char *named0ThetabackwardrphiSkip = Form("d0thetabackwardrphiSkip_%d", thetabin);
1443 char *named0ThetabackwardzSkip = Form("d0thetabackwardzSkip_%d", thetabin);
1444 ((TH1F*)(fOutputSinThetaRec->FindObject(named0ThetabackwardrphiRec)))->Fill(10000*dzRec[0]);
1445 ((TH1F*)(fOutputSinThetaRec->FindObject(named0ThetabackwardzRec)))->Fill(10000*dzRec[1]);
1446 ((TH1F*)(fOutputSinThetaSkip->FindObject(named0ThetabackwardrphiSkip)))->Fill(10000*dzRecSkip[0]);
1447 ((TH1F*)(fOutputSinThetaSkip->FindObject(named0ThetabackwardzSkip)))->Fill(10000*dzRecSkip[1]);
1448 }
cbddc2a0 1449
1450 if(bin==1) {
1451 char *named0SinthetaonerphiRec = Form("d0sinthetaonerphiRec_%d", thetabin);
1452 char *named0SinthetaonezRec = Form("d0sinthetaonezRec_%d", thetabin);
1453 char *named0SinthetaonerphiSkip = Form("d0sinthetaonerphiSkip_%d", thetabin);
1454 char *named0SinthetaonezSkip = Form("d0sinthetaonezSkip_%d", thetabin);
1455 ((TH1F*)(fOutputSinThetaRec->FindObject(named0SinthetaonerphiRec)))->Fill(10000*dzRec[0]);
1456 ((TH1F*)(fOutputSinThetaRec->FindObject(named0SinthetaonezRec)))->Fill(10000*dzRec[1]);
1457 ((TH1F*)(fOutputSinThetaSkip->FindObject(named0SinthetaonerphiSkip)))->Fill(10000*dzRecSkip[0]);
1458 ((TH1F*)(fOutputSinThetaSkip->FindObject(named0SinthetaonezSkip)))->Fill(10000*dzRecSkip[1]);
1459 }
1460
1461 if(bin==5) {
1462 char *named0SinthetatworphiRec = Form("d0sinthetatworphiRec_%d", thetabin);
1463 char *named0SinthetatwozRec = Form("d0sinthetatwozRec_%d", thetabin);
1464 char *named0SinthetatworphiSkip = Form("d0sinthetatworphiSkip_%d", thetabin);
1465 char *named0SinthetatwozSkip = Form("d0sinthetatwozSkip_%d", thetabin);
1466 ((TH1F*)(fOutputSinThetaRec->FindObject(named0SinthetatworphiRec)))->Fill(10000*dzRec[0]);
1467 ((TH1F*)(fOutputSinThetaRec->FindObject(named0SinthetatwozRec)))->Fill(10000*dzRec[1]);
1468 ((TH1F*)(fOutputSinThetaSkip->FindObject(named0SinthetatworphiSkip)))->Fill(10000*dzRecSkip[0]);
1469 ((TH1F*)(fOutputSinThetaSkip->FindObject(named0SinthetatwozSkip)))->Fill(10000*dzRecSkip[1]);
1470 }
1471
1472 if(bin==10) {
1473 char *named0SinthetathreerphiRec = Form("d0sinthetathreerphiRec_%d", thetabin);
1474 char *named0SinthetathreezRec = Form("d0sinthetathreezRec_%d", thetabin);
1475 char *named0SinthetathreerphiSkip = Form("d0sinthetathreerphiSkip_%d", thetabin);
1476 char *named0SinthetathreezSkip = Form("d0sinthetathreezSkip_%d", thetabin);
1477 ((TH1F*)(fOutputSinThetaRec->FindObject(named0SinthetathreerphiRec)))->Fill(10000*dzRec[0]);
1478 ((TH1F*)(fOutputSinThetaRec->FindObject(named0SinthetathreezRec)))->Fill(10000*dzRec[1]);
1479 ((TH1F*)(fOutputSinThetaSkip->FindObject(named0SinthetathreerphiSkip)))->Fill(10000*dzRecSkip[0]);
1480 ((TH1F*)(fOutputSinThetaSkip->FindObject(named0SinthetathreezSkip)))->Fill(10000*dzRecSkip[1]);
1481 }
1482
1483 if(bin==15) {
1484 char *named0SinthetafourrphiRec = Form("d0sinthetafourrphiRec_%d", thetabin);
1485 char *named0SinthetafourzRec = Form("d0sinthetafourzRec_%d", thetabin);
1486 char *named0SinthetafourrphiSkip = Form("d0sinthetafourrphiSkip_%d", thetabin);
1487 char *named0SinthetafourzSkip = Form("d0sinthetafourzSkip_%d", thetabin);
1488 ((TH1F*)(fOutputSinThetaRec->FindObject(named0SinthetafourrphiRec)))->Fill(10000*dzRec[0]);
1489 ((TH1F*)(fOutputSinThetaRec->FindObject(named0SinthetafourzRec)))->Fill(10000*dzRec[1]);
1490 ((TH1F*)(fOutputSinThetaSkip->FindObject(named0SinthetafourrphiSkip)))->Fill(10000*dzRecSkip[0]);
1491 ((TH1F*)(fOutputSinThetaSkip->FindObject(named0SinthetafourzSkip)))->Fill(10000*dzRecSkip[1]);
1492 }
1493
1494 //Phi
1495 Double_t phi=esdtrack->Phi();
1496 //Double_t pi=TMath::Pi();
1497 Int_t phibin=PhiBin(phi);
319532c0 1498 if(phibin<0) continue;
1499 if(pt>0.34 && pt<0.5) {
cbddc2a0 1500 char *named0PhiallpointrphiSkip =Form("d0phiallpointrphiSkip_%d",phibin);
1501 char *named0PhiallpointzSkip = Form("d0phiallpointzSkip_%d",phibin);
1502 char *named0PhipostvtracrphiSkip =Form("d0phipostvtracrphiSkip_%d",phibin);
1503 char *named0PhipostvtraczSkip = Form("d0phipostvtraczSkip_%d",phibin);
1504 char *named0PhinegtvtracrphiSkip =Form("d0phinegtvtracrphiSkip_%d",phibin);
1505 char *named0PhinegtvtraczSkip = Form("d0phinegtvtraczSkip_%d",phibin);
1506 ((TH1F*)(fOutputphiAllpointSkip->FindObject(named0PhiallpointrphiSkip)))->Fill(10000*dzRecSkip[0]);
1507 ((TH1F*)(fOutputphiAllpointSkip->FindObject(named0PhiallpointzSkip)))->Fill(10000*dzRecSkip[1]);
238eda67 1508 if(charge==+1) {
1509 ((TH1F*)(fOutputphiPostvtracSkip->FindObject(named0PhipostvtracrphiSkip)))->Fill(10000*dzRecSkip[0]);
1510 ((TH1F*)(fOutputphiPostvtracSkip->FindObject(named0PhipostvtraczSkip)))->Fill(10000*dzRecSkip[1]);
1511 }
1512 if(charge==-1) {
1513 ((TH1F*)(fOutputphiNegtvtracSkip->FindObject(named0PhinegtvtracrphiSkip)))->Fill(10000*dzRecSkip[0]);
1514 ((TH1F*)(fOutputphiNegtvtracSkip->FindObject(named0PhinegtvtraczSkip)))->Fill(10000*dzRecSkip[1]);
1515 }
cbddc2a0 1516 }
319532c0 1517
319532c0 1518
1519 // Bayesian PID
1520 Double_t prob[AliPID::kSPECIES];
1521 esdtrack->GetESDpid(prob);
1522 Double_t priors[5] = {0.01, 0.01, 0.85, 0.10, 0.05};
1523
1524 //Int_t charge = track->Charge();
1525 //Int_t esdPid = -1;
1526
1527 AliPID pid;
1528 pid.SetPriors(priors);
1529 pid.SetProbabilities(prob);
1530
1531 // identify particle as the most probable
1532 Double_t pelectron = pid.GetProbability(AliPID::kElectron);
1533 Double_t pmuon = pid.GetProbability(AliPID::kMuon);
1534 Double_t ppion = pid.GetProbability(AliPID::kPion);
1535 Double_t pkaon = pid.GetProbability(AliPID::kKaon);
1536 Double_t pproton = pid.GetProbability(AliPID::kProton);
1537
1538 if (ppion > pelectron &&
1539 ppion >pmuon &&
1540 ppion > pkaon &&
1541 ppion > pproton ) {
1542 //esdPid =-kPDGelectron;
1543 char *named0PionPIDrphiRec = Form("d0pionPIDrphiRec_%d", bin);
1544 char *named0PionPIDzRec = Form("d0pionPIDzRec_%d", bin);
1545 char *named0PionPIDrphiSkip = Form("d0pionPIDrphiSkip_%d", bin);
1546 char *named0PionPIDzSkip = Form("d0pionPIDzSkip_%d", bin);
1547 ((TH1F*)(fOutputparticlePID->FindObject(named0PionPIDrphiRec)))->Fill(10000.*dzRec[0]);
1548 ((TH1F*)(fOutputparticlePID->FindObject(named0PionPIDzRec)))->Fill(10000.*dzRec[1]);
1549 ((TH1F*)(fOutputparticlePID->FindObject(named0PionPIDrphiSkip)))->Fill(10000.*dzRecSkip[0]);
1550 ((TH1F*)(fOutputparticlePID->FindObject(named0PionPIDzSkip)))->Fill(10000.*dzRecSkip[1]);
1551 }
1552
1553
1554 if (pkaon > pelectron &&
1555 pkaon >pmuon &&
1556 pkaon > ppion &&
1557 pkaon > pproton ) {
1558 //esdPid =-kPDGelectron;
1559 char *named0KaonPIDrphiRec = Form("d0kaonPIDrphiRec_%d", bin);
1560 char *named0KaonPIDzRec = Form("d0kaonPIDzRec_%d", bin);
1561 char *named0KaonPIDrphiSkip = Form("d0kaonPIDrphiSkip_%d", bin);
1562 char *named0KaonPIDzSkip = Form("d0kaonPIDzSkip_%d", bin);
1563 ((TH1F*)(fOutputparticlePID->FindObject(named0KaonPIDrphiRec)))->Fill(10000.*dzRec[0]);
1564 ((TH1F*)(fOutputparticlePID->FindObject(named0KaonPIDzRec)))->Fill(10000.*dzRec[1]);
1565 ((TH1F*)(fOutputparticlePID->FindObject(named0KaonPIDrphiSkip)))->Fill(10000.*dzRecSkip[0]);
1566 ((TH1F*)(fOutputparticlePID->FindObject(named0KaonPIDzSkip)))->Fill(10000.*dzRecSkip[1]);
1567 }
1568
1569
1570 if (pproton > pelectron &&
1571 pproton >pmuon &&
1572 pproton > ppion &&
1573 pproton > pkaon ) {
1574 //esdPid =-kPDGelectron;
1575 //if(p<0.5 && fReadMC){fEstimVtx->Fill(pdgCode);}
1576 char *named0ProtonPIDrphiRec = Form("d0protonPIDrphiRec_%d", bin);
1577 char *named0ProtonPIDzRec = Form("d0protonPIDzRec_%d", bin);
1578 char *named0ProtonPIDrphiSkip = Form("d0protonPIDrphiSkip_%d", bin);
1579 char *named0ProtonPIDzSkip = Form("d0protonPIDzSkip_%d", bin);
1580 ((TH1F*)(fOutputparticlePID->FindObject(named0ProtonPIDrphiRec)))->Fill(10000.*dzRec[0]);
1581 ((TH1F*)(fOutputparticlePID->FindObject(named0ProtonPIDzRec)))->Fill(10000.*dzRec[1]);
1582 ((TH1F*)(fOutputparticlePID->FindObject(named0ProtonPIDrphiSkip)))->Fill(10000.*dzRecSkip[0]);
1583 ((TH1F*)(fOutputparticlePID->FindObject(named0ProtonPIDzSkip)))->Fill(10000.*dzRecSkip[1]);
1584 }
1585
b2d79ac3 1586 }
319532c0 1587
1588
77e570bf 1589 } // end loop of tracks
1590
b6292968 1591 delete vtxESDRec; vtxESDRec=NULL;
1592 delete vtxESDTrue; vtxESDTrue=NULL;
77e570bf 1593 PostData(1, fOutputitspureSARec);
1594 PostData(2, fOutputitspureSASkip);
1595 PostData(3, fOutputallPointRec);
1596 PostData(4, fOutputallPointSkip);
1597 PostData(5, fOutputpartPointRec);
1598 PostData(6, fOutputpartPointSkip);
1599 PostData(7, fOutputonepointSPDRec);
1600 PostData(8, fOutputonepointSPDSkip);
1601 PostData(9, fOutputpostvTracRec);
1602 PostData(10, fOutputpostvTracSkip);
1603 PostData(11, fOutputnegtvTracRec);
1604 PostData(12, fOutputnegtvTracSkip);
1605 PostData(13, fOutputpullAllpointRec);
1606 PostData(14, fOutputpullAllpointSkip);
1607 PostData(15, fOutputOnlyRefitRec);
1608 PostData(16, fOutputOnlyRefitSkip);
cbddc2a0 1609 PostData(17, fOutputSinThetaRec);
1610 PostData(18, fOutputSinThetaSkip);
1611 PostData(19, fOutputallPointTrue);
1612 PostData(20, fOutputpostvTracTrue);
1613 PostData(21, fOutputnegtvTracTrue);
1614 PostData(22, fOutputpullAllpointTrue);
1615 PostData(23, fOutputphiAllpointSkip);
1616 PostData(24, fOutputphiPostvtracSkip);
1617 PostData(25, fOutputphiNegtvtracSkip);
31a96e36 1618 PostData(26, fOutputparticlePID);
1619 PostData(27, fOutputPt);
1620 PostData(28, fNentries);
1621 PostData(29, fEstimVtx);
319532c0 1622
77e570bf 1623 return;
1624}
1625
1626//________________________________________________________________________
1627Int_t AliAnalysisTaskSEImpParRes::PtBin(Double_t pt) const {
1628 //
1629 // return the number of the pt bin
1630 //
1631
cbddc2a0 1632 if (pt>0.22 && pt<0.23) return 1;
1633 if (pt>0.26 && pt<0.27) return 2;
0f607695 1634 if (pt>0.345 && pt<0.355) return 3;
cbddc2a0 1635 if (pt>0.45 && pt<0.46) return 4;
1636 if (pt>0.55 && pt<0.56) return 5;
1637 if (pt>0.65 && pt<0.66) return 6;
1638 if (pt>0.75 && pt<0.76) return 7;
1639 if (pt>0.85 && pt<0.865) return 8;
1640 if (pt>1.05 && pt<1.07) return 9;
77e570bf 1641 if (pt>1.25 && pt<1.30) return 10;
1642 if (pt>1.4 && pt<1.55) return 11;
1643 if (pt>1.6 && pt<1.8) return 12;
1644 if (pt>1.8 && pt<2.0) return 13;
1645 if (pt>2.1 && pt<2.3) return 14;
1646 if (pt>2.34 && pt<2.64) return 15;
1647 if (pt>2.65 && pt<3.0) return 16;
1648 if (pt>3.1 && pt<4.) return 17;
1649 if (pt>4.1 && pt<5.2) return 18;
1650 if (pt>5.3 && pt<6.8) return 19;
1651 if (pt>7.0 && pt<8.8) return 20;
b2d79ac3 1652 if (pt>9. && pt<11.) return 21;
1653 if (pt>11.1 && pt<14.) return 22;
1654 if (pt>14.1 && pt<17.) return 23;
1655 if (pt>17.2 && pt<21.8) return 24;
1656 if (pt>22.1 && pt<29.) return 25;
1657 if (pt>29.05 && pt<35.) return 26;
77e570bf 1658 /*
1659 if (pt>0.22 && pt<0.23) return 1 ;
1660 if (pt>0.26 && pt<0.27) return 2 ;
1661 if (pt>0.35 && pt<0.36) return 3 ;
1662 if (pt>0.45 && pt<0.46) return 4 ;
1663 if (pt>0.55 && pt<0.56) return 5 ;
1664 if (pt>0.65 && pt<0.66) return 6 ;
1665 if (pt>0.75 && pt<0.76) return 7 ;
1666 if (pt>0.85 && pt<0.86) return 8 ;
1667 if (pt>1.05 && pt<1.06) return 9 ;
1668 if (pt>1.25 && pt<1.27) return 10;
1669 if (pt>1.45 && pt<1.47) return 11;
1670 if (pt>1.65 && pt<1.67) return 12;
1671 if (pt>1.85 && pt<1.87) return 13;
1672 if (pt>2.15 && pt<2.17) return 14;
1673 if (pt>2.45 && pt<2.48) return 15;
1674 if (pt>2.65 && pt<2.67) return 16;
1675 if (pt>2.85 && pt<2.87) return 17;
1676 if (pt>3.25 && pt<3.27) return 18;
1677 if (pt>3.75 && pt<3.8) return 19;
1678 if (pt>4.15 && pt<4.20) return 20;
1679 if (pt>4.95 && pt<5.15) return 21;
1680 if (pt>5.35 && pt<5.55) return 22;
1681 if (pt>6.0 && pt<6.8) return 23;
1682 if (pt>8.5 && pt<10.5) return 24;
1683 if (pt>12. && pt<19.) return 25;
1684 if (pt>21. && pt<32.) return 26;
1685 */
1686 return -1;
1687}
1688
b2d79ac3 1689//________________________________________________________________________
1690Double_t AliAnalysisTaskSEImpParRes::Getd0HistRange(Int_t i) const {
1691 //
1692 // Return the range of the d0 histograms for each pt bin
1693 //
1694 if (i==1) return 2500.;
1695 if (i==2) return 1800.;
1696 if (i==3) return 1750.;
1697 if (i==4) return 1200.;
1698 if (i==5) return 1000.;
1699 if (i==6) return 900.;
1700 if (i==7) return 850.;
1701 if (i==8) return 700.;
1702 if (i==9) return 650.;
1703 if (i==10) return 600.;
1704 if (i==11) return 550.;
1705 if (i==12) return 500.;
1706 if (i==13) return 450.;
1707 if (i==14) return 400.;
1708 if (i==15) return 390.;
1709 if (i==16) return 380.;
1710 if (i==17) return 380.;
1711 if (i==18) return 350.;
1712 if (i==19) return 320.;
1713 if (i==20) return 300.;
1714 if (i==21) return 290.;
1715 if (i==22) return 270.;
1716 if (i==23) return 250.;
1717 if (i==24) return 270.;
1718 if (i==25) return 279.;
1719 if (i==26) return 270.;
1720
1721 return 2000.;
1722}
1723
1724//________________________________________________________________________
1725Int_t AliAnalysisTaskSEImpParRes::SinThetaBin(Double_t sintheta) const {
1726 //
1727 // Return the number of the sinTheta bin
1728 //
1729 if(sintheta>0.7 && sintheta<0.73) return 1;
1730 if(sintheta>0.73 && sintheta<0.76) return 2;
1731 if(sintheta>0.76 && sintheta<0.79) return 3;
1732 if(sintheta>0.79 && sintheta<0.82) return 4;
1733 if(sintheta>0.82 && sintheta<0.85) return 5;
1734 if(sintheta>0.85 && sintheta<0.88) return 6;
1735 if(sintheta>0.88 && sintheta<0.91) return 7;
1736 if(sintheta>0.91 && sintheta<0.94) return 8;
1737 if(sintheta>0.94 && sintheta<0.97) return 9;
1738 if(sintheta>0.97 && sintheta<1.0) return 10;
1739 return -1;
1740}
1741
cbddc2a0 1742//___________________________________________________________________________
1743Int_t AliAnalysisTaskSEImpParRes::PhiBin(Double_t phi) const {
1744 Double_t pi=TMath::Pi();
1745 if(phi>2.*pi || phi<0.) return -1;
5a4911b5 1746 if(phi<0.1*pi) return 1;
1747 if(phi<0.2*pi) return 2;
1748 if(phi<0.3*pi) return 3;
1749 if(phi<0.4*pi) return 4;
1750 if(phi<0.5*pi) return 5;
1751 if(phi<0.6*pi) return 6;
1752 if(phi<0.7*pi) return 7;
1753 if(phi<0.8*pi) return 8;
1754 if(phi<0.9*pi) return 9;
1755 if(phi<1.0*pi) return 10;
1756 if(phi<1.1*pi) return 11;
1757 if(phi<1.2*pi) return 12;
1758 if(phi<1.3*pi) return 13;
1759 if(phi<1.4*pi) return 14;
1760 if(phi<1.5*pi) return 15;
1761 if(phi<1.6*pi) return 16;
1762 if(phi<1.7*pi) return 17;
1763 if(phi<1.8*pi) return 18;
1764 if(phi<1.9*pi) return 19;
1765 if(phi<2.0*pi) return 20;
cbddc2a0 1766 return -1;
1767}
cbddc2a0 1768//___________________________________________________________________________
77e570bf 1769void AliAnalysisTaskSEImpParRes::Terminate(Option_t */*option*/) {
1770 //
1771 // Terminate analysis
1772 //
1773
1774 if (fDebug>1) printf("AnalysisTaskSEImpParRes: Terminate() \n");
1775
77e570bf 1776 return;
1777}
319532c0 1778//__________________________________________________________________________
1779Int_t AliAnalysisTaskSEImpParRes::ClusterTypeOnITSLayer(AliESDtrack *track,
1780 Int_t layer) const {
cbddc2a0 1781//
1782// Returns cluster type on ITS layer. Returns -1 if no cluster on this layer
1783//
319532c0 1784 Int_t ctype=-1;
cbddc2a0 1785
1786 if(layer<0 || layer>5) return ctype;
1787 if(!track->HasPointOnITSLayer(layer)) return ctype;
319532c0 1788
cbddc2a0 1789 const AliTrackPointArray *array = track->GetTrackPointArray();
319532c0 1790 if(!array) {
a4666767 1791// printf("No tracks points avaialble: check ESDfriends\n");
319532c0 1792 return ctype;
1793 }
cbddc2a0 1794 AliTrackPoint point;
1795 Int_t ipt,volId,modId,layerId;
319532c0 1796 for(ipt=0; ipt<array->GetNPoints(); ipt++) {
1797 array->GetPoint(point,ipt);
1798 volId = point.GetVolumeID();
1799 if(volId<=0) continue;
1800 layerId = AliGeomManager::VolUIDToLayer(volId,modId);
1801 if(layerId==layer+1 && !point.IsExtra()) {
1802 ctype = point.GetClusterType();
1803 break;
1804 }
cbddc2a0 1805 }
319532c0 1806 return ctype;
1807}
66cefb1c 1808//---------------------------------------------------------------------------
1809Bool_t AliAnalysisTaskSEImpParRes::IsSelectedCentrality(AliESDEvent *esd) const
1810{
1811 //
1812 // check if events is in the required multiplicity range
1813 //
1814
1815 const AliMultiplicity *alimult = esd->GetMultiplicity();
1816 Int_t ntrklets=1;
1817 Int_t nclsSPDouter=0;
1818 if(alimult) {
1819 ntrklets = alimult->GetNumberOfTracklets();
1820 nclsSPDouter = alimult->GetNumberOfITSClusters(1);
1821 }
1822
1823 if(nclsSPDouter<fMinMult || nclsSPDouter>fMaxMult) return kFALSE;
1824
1825
1826 return kTRUE;
1827}