]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - ITS/AliITSRecoParam.cxx
More on char* constantness
[u/mrichter/AliRoot.git] / ITS / AliITSRecoParam.cxx
... / ...
CommitLineData
1/**************************************************************************
2 * Copyright(c) 2007-2009, 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#include "AliITSRecoParam.h"
17
18/* $Id$ */
19
20///////////////////////////////////////////////////////////////////////////////
21// //
22// Class with ITS reconstruction parameters //
23// Origin: andrea.dainese@lnl.infn.it //
24// //
25///////////////////////////////////////////////////////////////////////////////
26
27
28
29ClassImp(AliITSRecoParam)
30
31const Int_t AliITSRecoParam::fgkLayersNotToSkip[AliITSgeomTGeo::kNLayers]={0,0,0,0,0,0};
32const Int_t AliITSRecoParam::fgkLastLayerToTrackTo=0;
33const Int_t AliITSRecoParam::fgkMaxDetectorPerLayer=1000;
34const Double_t AliITSRecoParam::fgkriw=80.0;
35const Double_t AliITSRecoParam::fgkdiw=0.0053;
36const Double_t AliITSRecoParam::fgkX0iw=30.0;
37const Double_t AliITSRecoParam::fgkrcd=61.0;
38const Double_t AliITSRecoParam::fgkdcd=0.0053;
39const Double_t AliITSRecoParam::fgkX0cd=30.0;
40const Double_t AliITSRecoParam::fgkyr=12.8;
41const Double_t AliITSRecoParam::fgkdr=0.03;
42const Double_t AliITSRecoParam::fgkzm=0.2;
43const Double_t AliITSRecoParam::fgkdm=0.40;
44const Double_t AliITSRecoParam::fgkrs=50.0;
45const Double_t AliITSRecoParam::fgkds=0.001;
46const Double_t AliITSRecoParam::fgkrInsideITSscreen=49.0;
47const Double_t AliITSRecoParam::fgkrInsideSPD1=3.7;
48const Double_t AliITSRecoParam::fgkrPipe=3.;
49const Double_t AliITSRecoParam::fgkrInsidePipe=2.7;
50const Double_t AliITSRecoParam::fgkrOutsidePipe=3.3;
51const Double_t AliITSRecoParam::fgkdPipe=0.0028;
52const Double_t AliITSRecoParam::fgkrInsideShield[2]={7.5,25.0};
53const Double_t AliITSRecoParam::fgkrOutsideShield[2]={10.5,30.0};
54const Double_t AliITSRecoParam::fgkdshield[2]={0.0097,0.0034};
55const Double_t AliITSRecoParam::fgkX0shield[2]={38.6,42.0};
56const Double_t AliITSRecoParam::fgkX0Air=21.82;
57const Double_t AliITSRecoParam::fgkX0Be=65.19;
58const Double_t AliITSRecoParam::fgkBoundaryWidth=0.2;
59const Double_t AliITSRecoParam::fgkDeltaXNeighbDets=0.5;
60const Double_t AliITSRecoParam::fgkSPDdetzlength=6.960; // 7.072-2*0.056
61const Double_t AliITSRecoParam::fgkSPDdetxlength=1.298; // 1.410-2*0.056
62
63//_____________________________________________________________________________
64AliITSRecoParam::AliITSRecoParam() : AliDetectorRecoParam(),
65fTracker(0),
66fITSonly(kFALSE),
67fVertexer(0),
68fClusterFinder(0),
69fPID(0),
70fVtxr3DZCutWide(0.),
71fVtxr3DRCutWide(0.),
72fVtxr3DZCutNarrow(0.),
73fVtxr3DRCutNarrow(0.),
74fVtxr3DPhiCutLoose(0.),
75fVtxr3DPhiCutTight(0.),
76fVtxr3DDCACut(0.),
77fMaxSnp(1.),
78fNSigmaYLayerForRoadY(0),
79fNSigmaRoadY(0),
80fNSigmaZLayerForRoadZ(0),
81fNSigmaRoadZ(0),
82fNSigma2RoadZC(0),
83fNSigma2RoadYC(0),
84fNSigma2RoadZNonC(0),
85fNSigma2RoadYNonC(0),
86fRoadMisal(0),
87fMaxNormChi2NonCForHypothesis(0),
88fMaxChi2(0),
89fMaxRoad(0),
90fMaxChi2In(0),
91fChi2PerCluster(0),
92fXV(0),
93fYV(0),
94fZV(0),
95fSigmaXV(0),
96fSigmaYV(0),
97fSigmaZV(0),
98fVertexCut(0),
99fMaxDZforPrimTrk(0),
100fMaxDZToUseConstraint(0),
101fMaxDforV0dghtrForProlongation(0),
102fMaxDForProlongation(0),
103fMaxDZForProlongation(0),
104fMinPtForProlongation(0),
105fAddVirtualClustersInDeadZone(kFALSE),
106fZWindowDeadZone(0),
107fSigmaXDeadZoneHit2(0),
108fSigmaZDeadZoneHit2(0),
109fXPassDeadZoneHits(0),
110fUseTGeoInTracker(3),
111fAllowSharedClusters(kTRUE),
112fClusterErrorsParam(1),
113fComputePlaneEff(kFALSE),
114fHistoPlaneEff(kFALSE),
115fIPlanePlaneEff(0),
116fReadPlaneEffFromOCDB(kFALSE),
117fMinPtPlaneEff(0),
118fMaxMissingClustersPlaneEff(0),
119fRequireClusterInOuterLayerPlaneEff(kFALSE),
120fRequireClusterInInnerLayerPlaneEff(kFALSE),
121fOnlyConstraintPlaneEff(kFALSE),
122fExtendedEtaAcceptance(kFALSE),
123fUseBadZonesFromOCDB(kTRUE),
124fUseSingleBadChannelsFromOCDB(kFALSE),
125fMinFractionOfBadInRoad(0),
126fAllowProlongationWithEmptyRoad(kFALSE),
127fOuterStartLayerSA(0),
128fFactorSAWindowSizes(1.),
129fNLoopsSA(33),
130fMinPhiSA(0.002),
131fMaxPhiSA(0.0145),
132fMinLambdaSA(0.003),
133fMaxLambdaSA(0.008),
134fSAOnePointTracks(kFALSE),
135fSAUseAllClusters(kFALSE),
136fFindV0s(kTRUE),
137fUseUnfoldingInClusterFinderSPD(kFALSE),
138fUseUnfoldingInClusterFinderSDD(kTRUE),
139fUseUnfoldingInClusterFinderSSD(kTRUE),
140fUseChargeMatchingInClusterFinderSSD(kTRUE),
141fTrackleterOnlyOneTrackletPerC2(kTRUE),
142fTrackleterPhiWindow(0.08),
143fTrackleterZetaWindow(1.00),
144fTrackleterRemoveClustersFromOverlaps(kFALSE),
145fTrackleterPhiOverlapCut(0.005),
146fTrackleterZetaOverlapCut(0.05),
147fUseCosmicRunShiftsSSD(kFALSE)
148{
149 //
150 // constructor
151 //
152 SetName("ITS");
153 SetTitle("ITS");
154
155 SetLayersParameters();
156 for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) fLayersToSkip[i]=0;
157 SetUseTGeoInTracker(3);
158 SetAllowSharedClusters(kTRUE);
159 SetFindV0s(kTRUE);
160 SetAddVirtualClustersInDeadZone(kFALSE);
161 SetUseAmplitudeInfo(kTRUE);
162 SetClusterErrorsParam(1);
163 SetClusterMisalError(0.);
164 SetVertexer3DDefaults();
165}
166//_____________________________________________________________________________
167AliITSRecoParam::~AliITSRecoParam()
168{
169 //
170 // destructor
171 //
172}
173//_____________________________________________________________________________
174AliITSRecoParam *AliITSRecoParam::GetHighFluxParam()
175{
176 //
177 // make default reconstruction parameters for hig flux env.
178 //
179 AliITSRecoParam *param = new AliITSRecoParam();
180 param->SetVertexerZ();
181
182 param->fMaxSnp = 0.95;
183
184 param->fNSigmaYLayerForRoadY = 4.;
185 param->fNSigmaRoadY = 7.5;
186 param->fNSigmaZLayerForRoadZ = 4.;
187 param->fNSigmaRoadZ = 7.5;
188
189 param->fNSigma2RoadZC = 60.; //7.75^2
190 param->fNSigma2RoadYC = 60.; //7.75^2
191 param->fNSigma2RoadZNonC = 50.; //7.07^2
192 param->fNSigma2RoadYNonC = 50.; //7.07^2
193
194 param->fMaxChi2PerCluster[0] = 11.; //7
195 param->fMaxChi2PerCluster[1] = 12.; //5
196 param->fMaxChi2PerCluster[2] = 12.; //8
197 param->fMaxChi2PerCluster[3] = 5.; //8
198 param->fMaxChi2PerCluster[4] = 12.; //6.5
199
200 param->fMaxNormChi2NonC[0] = 7.;
201 param->fMaxNormChi2NonC[1] = 8.;
202 param->fMaxNormChi2NonC[2] = 8.;
203 param->fMaxNormChi2NonC[3] = 11.;
204 param->fMaxNormChi2NonC[4] = 14.;
205 param->fMaxNormChi2NonC[5] = 25.;
206
207 param->fMaxNormChi2C[0] = 11.;
208 param->fMaxNormChi2C[1] = 13.;
209 param->fMaxNormChi2C[2] = 15.;
210 param->fMaxNormChi2C[3] = 18.;
211 param->fMaxNormChi2C[4] = 30.;
212 param->fMaxNormChi2C[5] = 35.;
213
214 param->fMaxNormChi2NonCForHypothesis = 7.;
215
216 param->fMaxChi2 = 35.;
217
218 param->fMaxChi2s[0] = 25.; //40
219 param->fMaxChi2s[1] = 25.; //40
220 param->fMaxChi2s[2] = 25.; //40
221 param->fMaxChi2s[3] = 25.; //40
222 param->fMaxChi2s[4] = 40.; //40
223 param->fMaxChi2s[5] = 50.; //40
224
225 param->fMaxRoad = 6.;
226
227 // not used
228 param->fMaxChi2In = 16.;
229
230 param->fMaxChi2sR[0] = 10.;
231 param->fMaxChi2sR[1] = 10.;
232 param->fMaxChi2sR[2] = 10.;
233 param->fMaxChi2sR[3] = 10.;
234 param->fMaxChi2sR[4] = 30.;
235 param->fMaxChi2sR[5] = 40.;
236
237 param->fChi2PerCluster = 9.;
238 // not used
239
240 param->fXV = 0.;
241 param->fYV = 0.;
242 param->fZV = 0.;
243 param->fSigmaXV = 0.0050;
244 param->fSigmaYV = 0.0050;
245 param->fSigmaZV = 0.0100;
246
247 param->fVertexCut = 25.;
248
249 param->fMaxDZforPrimTrk = 0.4;
250 param->fMaxDZToUseConstraint = 3.;
251
252 param->fMaxDforV0dghtrForProlongation = 30.;
253 param->fMaxDForProlongation = 40.;//10.;
254 param->fMaxDZForProlongation = 60.;//20.;
255 param->fMinPtForProlongation = 0.120;
256
257 param->fZWindowDeadZone = 2.0;
258 param->fSigmaXDeadZoneHit2 = 0.004/12.;
259 param->fSigmaZDeadZoneHit2 = 0.001/12.;
260 param->fXPassDeadZoneHits = 0.018;
261
262 return param;
263}
264//_____________________________________________________________________________
265AliITSRecoParam *AliITSRecoParam::GetLowFluxParam()
266{
267 //
268 // make default reconstruction parameters for low flux env.
269 //
270 AliITSRecoParam *param = new AliITSRecoParam();
271 param->SetVertexer3DDefaults();
272
273 param->fMaxSnp = 0.95;
274
275 param->fNSigmaYLayerForRoadY = 4.;
276 param->fNSigmaRoadY = 7.5;
277 param->fNSigmaZLayerForRoadZ = 4.;
278 param->fNSigmaRoadZ = 7.5;
279
280 param->fNSigma2RoadZC = 60.; //7.75^2
281 param->fNSigma2RoadYC = 60.; //7.75^2
282 param->fNSigma2RoadZNonC = 50.; //7.07^2
283 param->fNSigma2RoadYNonC = 50.; //7.07^2
284
285 param->fMaxChi2PerCluster[0] = 11.; //7
286 param->fMaxChi2PerCluster[1] = 12.; //5
287 param->fMaxChi2PerCluster[2] = 12.; //8
288 param->fMaxChi2PerCluster[3] = 5.; //8
289 param->fMaxChi2PerCluster[4] = 12.; //6.5
290
291 param->fMaxNormChi2NonC[0] = 7.;
292 param->fMaxNormChi2NonC[1] = 8.;
293 param->fMaxNormChi2NonC[2] = 8.;
294 param->fMaxNormChi2NonC[3] = 11.;
295 param->fMaxNormChi2NonC[4] = 14.;
296 param->fMaxNormChi2NonC[5] = 25.;
297
298 param->fMaxNormChi2C[0] = 11.;
299 param->fMaxNormChi2C[1] = 13.;
300 param->fMaxNormChi2C[2] = 15.;
301 param->fMaxNormChi2C[3] = 18.;
302 param->fMaxNormChi2C[4] = 30.;
303 param->fMaxNormChi2C[5] = 35.;
304
305 param->fMaxNormChi2NonCForHypothesis = 7.;
306
307 param->fMaxChi2 = 35.;
308
309 param->fMaxChi2s[0] = 25.; //40
310 param->fMaxChi2s[1] = 25.; //40
311 param->fMaxChi2s[2] = 25.; //40
312 param->fMaxChi2s[3] = 25.; //40
313 param->fMaxChi2s[4] = 40.; //40
314 param->fMaxChi2s[5] = 50.; //40
315
316 param->fMaxRoad = 6.;
317
318 // not used
319 param->fMaxChi2In = 16.;
320
321 param->fMaxChi2sR[0] = 10.;
322 param->fMaxChi2sR[1] = 10.;
323 param->fMaxChi2sR[2] = 10.;
324 param->fMaxChi2sR[3] = 10.;
325 param->fMaxChi2sR[4] = 30.;
326 param->fMaxChi2sR[5] = 40.;
327
328 param->fChi2PerCluster = 9.;
329 // not used
330
331 param->fXV = 0.;
332 param->fYV = 0.;
333 param->fZV = 0.;
334 param->fSigmaXV = 0.0050;
335 param->fSigmaYV = 0.0050;
336 param->fSigmaZV = 0.0100;
337
338 param->fVertexCut = 25.;
339
340 param->fMaxDZforPrimTrk = 0.4;
341 param->fMaxDZToUseConstraint = 3.;
342
343 param->fMaxDforV0dghtrForProlongation = 30.;
344 param->fMaxDForProlongation = 40.;//10.;
345 param->fMaxDZForProlongation = 60.;//20.;
346 param->fMinPtForProlongation = 0.120;
347
348 param->fZWindowDeadZone = 2.0;
349 param->fSigmaXDeadZoneHit2 = 0.004/12.;
350 param->fSigmaZDeadZoneHit2 = 0.001/12.;
351 param->fXPassDeadZoneHits = 0.018;
352 param->SetNLoopsSA(10);
353
354 return param;
355}
356//_____________________________________________________________________________
357AliITSRecoParam *AliITSRecoParam::GetCosmicTestParam()
358{
359 //
360 // make default reconstruction parameters for cosmics
361 //
362 AliITSRecoParam *param = new AliITSRecoParam();
363
364 // vertexer for cosmics
365 param->SetVertexer(2);
366
367 // find independently ITS SA tracks
368 param->SetSAUseAllClusters();
369 param->SetOuterStartLayerSA(AliITSgeomTGeo::GetNLayers()-2);
370
371 // larger seach windows for SA (in case of large misalignments)
372 param->SetFactorSAWindowSizes(3.);
373
374 param->fMaxSnp = 0.95;
375
376 param->fNSigmaYLayerForRoadY = 4.;
377 param->fNSigmaRoadY = 7.5;
378 param->fNSigmaZLayerForRoadZ = 4.;
379 param->fNSigmaRoadZ = 7.5;
380
381 param->fNSigma2RoadZC = 60.; //7.75^2
382 param->fNSigma2RoadYC = 60.; //7.75^2
383 param->fNSigma2RoadZNonC = 50.; //7.07^2
384 param->fNSigma2RoadYNonC = 50.; //7.07^2
385
386 param->fMaxChi2PerCluster[0] = 11.; //7
387 param->fMaxChi2PerCluster[1] = 12.; //5
388 param->fMaxChi2PerCluster[2] = 12.; //8
389 param->fMaxChi2PerCluster[3] = 5.; //8
390 param->fMaxChi2PerCluster[4] = 12.; //6.5
391
392 param->fMaxNormChi2NonC[0] = 7.;
393 param->fMaxNormChi2NonC[1] = 8.;
394 param->fMaxNormChi2NonC[2] = 8.;
395 param->fMaxNormChi2NonC[3] = 11.;
396 param->fMaxNormChi2NonC[4] = 14.;
397 param->fMaxNormChi2NonC[5] = 25.;
398
399 param->fMaxNormChi2C[0] = 11.;
400 param->fMaxNormChi2C[1] = 13.;
401 param->fMaxNormChi2C[2] = 15.;
402 param->fMaxNormChi2C[3] = 18.;
403 param->fMaxNormChi2C[4] = 30.;
404 param->fMaxNormChi2C[5] = 35.;
405
406 param->fMaxNormChi2NonCForHypothesis = 7.;
407
408 param->fMaxChi2 = 35.;
409
410 param->fMaxChi2s[0] = 25.; //40
411 param->fMaxChi2s[1] = 25.; //40
412 param->fMaxChi2s[2] = 25.; //40
413 param->fMaxChi2s[3] = 25.; //40
414 param->fMaxChi2s[4] = 40.; //40
415 param->fMaxChi2s[5] = 50.; //40
416
417 param->fMaxRoad = 6.;
418
419 // not used
420 param->fMaxChi2In = 16.;
421
422 param->fMaxChi2sR[0] = 10.;
423 param->fMaxChi2sR[1] = 10.;
424 param->fMaxChi2sR[2] = 10.;
425 param->fMaxChi2sR[3] = 10.;
426 param->fMaxChi2sR[4] = 30.;
427 param->fMaxChi2sR[5] = 40.;
428
429 param->fChi2PerCluster = 9.;
430 // not used
431
432 param->fXV = 0.;
433 param->fYV = 0.;
434 param->fZV = 0.;
435 param->fSigmaXV = 0.0050;
436 param->fSigmaYV = 0.0050;
437 param->fSigmaZV = 0.0100;
438
439 param->fVertexCut = 25.;
440
441 param->fMaxDZforPrimTrk = 0.4;
442 param->fMaxDZToUseConstraint = 3.;
443
444 param->fMaxDforV0dghtrForProlongation = 30.;
445 param->fMaxDForProlongation = 10.;
446 param->fMaxDZForProlongation = 20.;
447 param->fMinPtForProlongation = 0.120;
448
449 param->fZWindowDeadZone = 2.0;
450 param->fSigmaXDeadZoneHit2 = 0.004/12.;
451 param->fSigmaZDeadZoneHit2 = 0.001/12.;
452 param->fXPassDeadZoneHits = 0.018;
453
454
455 return param;
456}
457//_____________________________________________________________________________
458AliITSRecoParam *AliITSRecoParam::GetPlaneEffParam(Int_t i)
459{
460 //
461 // make special reconstruction parameters for Plane Efficiency study on layer i
462 //
463 if (i<0 || i>=AliITSgeomTGeo::kNLayers) {
464 printf("AliITSRecoParam::GetPlaneEffParam: index of ITS Plane not in the range [0,5]\n");
465 printf("returning null pointer");
466 return NULL;
467 }
468 AliITSRecoParam *param;
469 param = GetHighFluxParam();
470 param->SetComputePlaneEff();
471 param->SetLayerToSkip(i);
472 param->SetIPlanePlaneEff(i);
473 // optimized setting for SPD0 (i==0)
474 if (i==0 || i==1) {
475 param->fMinPtPlaneEff = 0.200; // high pt particles
476 param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster
477 param->fRequireClusterInOuterLayerPlaneEff = kTRUE; // cluster on SPD1 must be
478 //param->fOnlyConstraintPlaneEff = kTRUE;
479 }
480 if (i==2 || i==3) {
481 param->fMinPtPlaneEff = 0.200; // high pt particles
482 param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster
483 param->fRequireClusterInOuterLayerPlaneEff = kTRUE;
484 //param->fOnlyConstraintPlaneEff = kTRUE;
485 }
486 if (i==4) {
487 param->fMinPtPlaneEff = 0.200; // high pt particles
488 param->fMaxMissingClustersPlaneEff = 0; // at most 1 layer out of 5 without cluster
489 param->fRequireClusterInOuterLayerPlaneEff = kTRUE;
490 //param->fOnlyConstraintPlaneEff = kTRUE;
491 }
492 if (i==5) {
493 param->fMinPtPlaneEff = 0.200; // high pt particles
494 }
495 //
496 return param;
497}
498//_____________________________________________________________________________
499void AliITSRecoParam::SetLayersParameters()
500{
501 //
502 // number of layers and layers spatial resolutions
503 //
504
505 // spatial resolutions of the detectors
506 // y: 12 12 38 38 20 20 micron
507 fSigmaY2[0]=1.44e-6;
508 fSigmaY2[1]=1.44e-6;
509 fSigmaY2[2]=1.444e-5;
510 fSigmaY2[3]=1.444e-5;
511 fSigmaY2[4]=4.0e-6;
512 fSigmaY2[5]=4.0e-6;
513 // z: 120 120 28 28 830 830 micron
514 fSigmaZ2[0]=1.44e-4;
515 fSigmaZ2[1]=1.44e-4;
516 fSigmaZ2[2]=7.84e-6;
517 fSigmaZ2[3]=7.84e-6;
518 fSigmaZ2[4]=6.889e-3;
519 fSigmaZ2[5]=6.889e-3;
520
521 return;
522}
523//_____________________________________________________________________________
524void AliITSRecoParam::PrintParameters() const
525{
526 //
527 // print parameters
528 //
529
530 printf("============================= AliITSRecoParam::PrintParameters ");
531 printf("============================= \n\n");
532 for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
533 if(!fLayersToSkip[i]) {
534 printf("ITS Traking: using layer %d\n",i);
535 } else {
536 printf("ITS Traking: skipping layer %d\n",i);
537 }
538 }
539 for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
540 if(fUseAmplitudeInfo[i]) {
541 printf("ITS Traking: use amplitude info for layer %d\n",i);
542 } else {
543 printf("ITS Traking: don't use amplitude info for layer %d\n",i);
544 }
545 }
546 for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++)
547 printf("Layer %d:\n sigmaY2 %f, sigmaZ2 %f\n sigmaMisalY %f, sigmaMisalZ %f\n max norm chi2 for non constrained tracks %f\n max norm chi2 for constrained tracks %f\n max predicted chi2 (cluster & track prol.) %f\n",i,fSigmaY2[i],fSigmaZ2[i],fClusterMisalErrorY[i],fClusterMisalErrorZ[i],fMaxNormChi2NonC[i],fMaxNormChi2C[i],fMaxChi2s[i]);
548
549
550 Dump();
551
552 return;
553}