1 /**************************************************************************
2 * Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
16 #include "AliITSRecoParam.h"
20 ///////////////////////////////////////////////////////////////////////////////
22 // Class with ITS reconstruction parameters //
23 // Origin: andrea.dainese@lnl.infn.it //
25 ///////////////////////////////////////////////////////////////////////////////
29 ClassImp(AliITSRecoParam)
31 const Int_t AliITSRecoParam::fgkLayersNotToSkip[AliITSgeomTGeo::kNLayers]={0,0,0,0,0,0};
32 const Int_t AliITSRecoParam::fgkLastLayerToTrackTo=0;
33 const Int_t AliITSRecoParam::fgkMaxDetectorPerLayer=1000;
34 const Double_t AliITSRecoParam::fgkriw=80.0;
35 const Double_t AliITSRecoParam::fgkdiw=0.0053;
36 const Double_t AliITSRecoParam::fgkX0iw=30.0;
37 const Double_t AliITSRecoParam::fgkrcd=61.0;
38 const Double_t AliITSRecoParam::fgkdcd=0.0053;
39 const Double_t AliITSRecoParam::fgkX0cd=30.0;
40 const Double_t AliITSRecoParam::fgkyr=12.8;
41 const Double_t AliITSRecoParam::fgkdr=0.03;
42 const Double_t AliITSRecoParam::fgkzm=0.2;
43 const Double_t AliITSRecoParam::fgkdm=0.40;
44 const Double_t AliITSRecoParam::fgkrs=50.0;
45 const Double_t AliITSRecoParam::fgkds=0.001;
46 const Double_t AliITSRecoParam::fgkrInsideITSscreen=49.0;
47 const Double_t AliITSRecoParam::fgkrInsideSPD1=3.7;
48 const Double_t AliITSRecoParam::fgkrPipe=3.;
49 const Double_t AliITSRecoParam::fgkrInsidePipe=2.7;
50 const Double_t AliITSRecoParam::fgkrOutsidePipe=3.3;
51 const Double_t AliITSRecoParam::fgkdPipe=0.0028;
52 const Double_t AliITSRecoParam::fgkrInsideShield[2]={7.5,25.0};
53 const Double_t AliITSRecoParam::fgkrOutsideShield[2]={10.5,30.0};
54 const Double_t AliITSRecoParam::fgkdshield[2]={0.0097,0.0034};
55 const Double_t AliITSRecoParam::fgkX0shield[2]={38.6,42.0};
56 const Double_t AliITSRecoParam::fgkX0Air=21.82;
57 const Double_t AliITSRecoParam::fgkX0Be=65.19;
58 const Double_t AliITSRecoParam::fgkBoundaryWidth=0.2;
59 const Double_t AliITSRecoParam::fgkDeltaXNeighbDets=0.5;
60 const Double_t AliITSRecoParam::fgkSPDdetzlength=6.960; // 7.072-2*0.056
61 const Double_t AliITSRecoParam::fgkSPDdetxlength=1.298; // 1.410-2*0.056
63 //_____________________________________________________________________________
64 AliITSRecoParam::AliITSRecoParam() : AliDetectorRecoParam(),
71 fNSigmaYLayerForRoadY(0),
73 fNSigmaZLayerForRoadZ(0),
80 fMaxNormChi2NonCForHypothesis(0),
93 fMaxDZToUseConstraint(0),
94 fMaxDforV0dghtrForProlongation(0),
95 fMaxDForProlongation(0),
96 fMaxDZForProlongation(0),
97 fMinPtForProlongation(0),
98 fAddVirtualClustersInDeadZone(kFALSE),
100 fSigmaXDeadZoneHit2(0),
101 fSigmaZDeadZoneHit2(0),
102 fXPassDeadZoneHits(0),
103 fUseTGeoInTracker(3),
104 fAllowSharedClusters(kTRUE),
105 fClusterErrorsParam(1),
106 fComputePlaneEff(kFALSE),
107 fHistoPlaneEff(kFALSE),
109 fReadPlaneEffFromOCDB(kFALSE),
111 fMaxMissingClustersPlaneEff(0),
112 fRequireClusterInOuterLayerPlaneEff(kFALSE),
113 fRequireClusterInInnerLayerPlaneEff(kFALSE),
114 fOnlyConstraintPlaneEff(kFALSE),
115 fExtendedEtaAcceptance(kFALSE),
116 fUseBadZonesFromOCDB(kFALSE),
117 fUseSingleBadChannelsFromOCDB(kFALSE),
118 fMinFractionOfBadInRoad(0),
119 fAllowProlongationWithEmptyRoad(kFALSE),
120 fOuterStartLayerSA(0),
121 fFactorSAWindowSizes(1.),
127 fSAOnePointTracks(kFALSE),
128 fSAUseAllClusters(kFALSE),
130 fUseUnfoldingInClusterFinderSPD(kFALSE),
131 fUseUnfoldingInClusterFinderSDD(kTRUE),
132 fUseUnfoldingInClusterFinderSSD(kTRUE),
133 fUseChargeMatchingInClusterFinderSSD(kTRUE)
141 SetLayersParameters();
142 for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) fLayersToSkip[i]=0;
143 SetUseTGeoInTracker(3);
144 SetAllowSharedClusters(kTRUE);
146 SetAddVirtualClustersInDeadZone(kFALSE);
147 SetUseAmplitudeInfo(kTRUE);
148 SetClusterErrorsParam(1);
149 SetClusterMisalError(0.);
151 //_____________________________________________________________________________
152 AliITSRecoParam::~AliITSRecoParam()
158 //_____________________________________________________________________________
159 AliITSRecoParam *AliITSRecoParam::GetHighFluxParam()
162 // make default reconstruction parameters for hig flux env.
164 AliITSRecoParam *param = new AliITSRecoParam();
166 param->fMaxSnp = 0.95;
168 param->fNSigmaYLayerForRoadY = 4.;
169 param->fNSigmaRoadY = 7.5;
170 param->fNSigmaZLayerForRoadZ = 4.;
171 param->fNSigmaRoadZ = 7.5;
173 param->fNSigma2RoadZC = 60.; //7.75^2
174 param->fNSigma2RoadYC = 60.; //7.75^2
175 param->fNSigma2RoadZNonC = 50.; //7.07^2
176 param->fNSigma2RoadYNonC = 50.; //7.07^2
178 param->fMaxChi2PerCluster[0] = 11.; //7
179 param->fMaxChi2PerCluster[1] = 12.; //5
180 param->fMaxChi2PerCluster[2] = 12.; //8
181 param->fMaxChi2PerCluster[3] = 5.; //8
182 param->fMaxChi2PerCluster[4] = 12.; //6.5
184 param->fMaxNormChi2NonC[0] = 7.;
185 param->fMaxNormChi2NonC[1] = 8.;
186 param->fMaxNormChi2NonC[2] = 8.;
187 param->fMaxNormChi2NonC[3] = 11.;
188 param->fMaxNormChi2NonC[4] = 14.;
189 param->fMaxNormChi2NonC[5] = 25.;
191 param->fMaxNormChi2C[0] = 11.;
192 param->fMaxNormChi2C[1] = 13.;
193 param->fMaxNormChi2C[2] = 15.;
194 param->fMaxNormChi2C[3] = 18.;
195 param->fMaxNormChi2C[4] = 30.;
196 param->fMaxNormChi2C[5] = 35.;
198 param->fMaxNormChi2NonCForHypothesis = 7.;
200 param->fMaxChi2 = 35.;
202 param->fMaxChi2s[0] = 25.; //40
203 param->fMaxChi2s[1] = 25.; //40
204 param->fMaxChi2s[2] = 25.; //40
205 param->fMaxChi2s[3] = 25.; //40
206 param->fMaxChi2s[4] = 40.; //40
207 param->fMaxChi2s[5] = 50.; //40
209 param->fMaxRoad = 6.;
212 param->fMaxChi2In = 16.;
214 param->fMaxChi2sR[0] = 10.;
215 param->fMaxChi2sR[1] = 10.;
216 param->fMaxChi2sR[2] = 10.;
217 param->fMaxChi2sR[3] = 10.;
218 param->fMaxChi2sR[4] = 30.;
219 param->fMaxChi2sR[5] = 40.;
221 param->fChi2PerCluster = 9.;
227 param->fSigmaXV = 0.0050;
228 param->fSigmaYV = 0.0050;
229 param->fSigmaZV = 0.0100;
231 param->fVertexCut = 25.;
233 param->fMaxDZforPrimTrk = 0.4;
234 param->fMaxDZToUseConstraint = 3.;
236 param->fMaxDforV0dghtrForProlongation = 30.;
237 param->fMaxDForProlongation = 40.;//10.;
238 param->fMaxDZForProlongation = 60.;//20.;
239 param->fMinPtForProlongation = 0.120;
241 param->fZWindowDeadZone = 2.0;
242 param->fSigmaXDeadZoneHit2 = 0.004/12.;
243 param->fSigmaZDeadZoneHit2 = 0.001/12.;
244 param->fXPassDeadZoneHits = 0.018;
248 //_____________________________________________________________________________
249 AliITSRecoParam *AliITSRecoParam::GetLowFluxParam()
252 // make default reconstruction parameters for low flux env.
254 AliITSRecoParam *param = new AliITSRecoParam();
256 param->fMaxSnp = 0.95;
258 param->fNSigmaYLayerForRoadY = 4.;
259 param->fNSigmaRoadY = 7.5;
260 param->fNSigmaZLayerForRoadZ = 4.;
261 param->fNSigmaRoadZ = 7.5;
263 param->fNSigma2RoadZC = 60.; //7.75^2
264 param->fNSigma2RoadYC = 60.; //7.75^2
265 param->fNSigma2RoadZNonC = 50.; //7.07^2
266 param->fNSigma2RoadYNonC = 50.; //7.07^2
268 param->fMaxChi2PerCluster[0] = 11.; //7
269 param->fMaxChi2PerCluster[1] = 12.; //5
270 param->fMaxChi2PerCluster[2] = 12.; //8
271 param->fMaxChi2PerCluster[3] = 5.; //8
272 param->fMaxChi2PerCluster[4] = 12.; //6.5
274 param->fMaxNormChi2NonC[0] = 7.;
275 param->fMaxNormChi2NonC[1] = 8.;
276 param->fMaxNormChi2NonC[2] = 8.;
277 param->fMaxNormChi2NonC[3] = 11.;
278 param->fMaxNormChi2NonC[4] = 14.;
279 param->fMaxNormChi2NonC[5] = 25.;
281 param->fMaxNormChi2C[0] = 11.;
282 param->fMaxNormChi2C[1] = 13.;
283 param->fMaxNormChi2C[2] = 15.;
284 param->fMaxNormChi2C[3] = 18.;
285 param->fMaxNormChi2C[4] = 30.;
286 param->fMaxNormChi2C[5] = 35.;
288 param->fMaxNormChi2NonCForHypothesis = 7.;
290 param->fMaxChi2 = 35.;
292 param->fMaxChi2s[0] = 25.; //40
293 param->fMaxChi2s[1] = 25.; //40
294 param->fMaxChi2s[2] = 25.; //40
295 param->fMaxChi2s[3] = 25.; //40
296 param->fMaxChi2s[4] = 40.; //40
297 param->fMaxChi2s[5] = 50.; //40
299 param->fMaxRoad = 6.;
302 param->fMaxChi2In = 16.;
304 param->fMaxChi2sR[0] = 10.;
305 param->fMaxChi2sR[1] = 10.;
306 param->fMaxChi2sR[2] = 10.;
307 param->fMaxChi2sR[3] = 10.;
308 param->fMaxChi2sR[4] = 30.;
309 param->fMaxChi2sR[5] = 40.;
311 param->fChi2PerCluster = 9.;
317 param->fSigmaXV = 0.0050;
318 param->fSigmaYV = 0.0050;
319 param->fSigmaZV = 0.0100;
321 param->fVertexCut = 25.;
323 param->fMaxDZforPrimTrk = 0.4;
324 param->fMaxDZToUseConstraint = 3.;
326 param->fMaxDforV0dghtrForProlongation = 30.;
327 param->fMaxDForProlongation = 40.;//10.;
328 param->fMaxDZForProlongation = 60.;//20.;
329 param->fMinPtForProlongation = 0.120;
331 param->fZWindowDeadZone = 2.0;
332 param->fSigmaXDeadZoneHit2 = 0.004/12.;
333 param->fSigmaZDeadZoneHit2 = 0.001/12.;
334 param->fXPassDeadZoneHits = 0.018;
335 param->SetNLoopsSA(10);
339 //_____________________________________________________________________________
340 AliITSRecoParam *AliITSRecoParam::GetCosmicTestParam()
343 // make default reconstruction parameters for cosmics
345 AliITSRecoParam *param = new AliITSRecoParam();
347 // vertexer for cosmics
348 param->SetVertexer(2);
350 // find independently ITS SA tracks
351 param->SetSAUseAllClusters();
352 param->SetOuterStartLayerSA(AliITSgeomTGeo::GetNLayers()-2);
354 // larger seach windows for SA (in case of large misalignments)
355 param->SetFactorSAWindowSizes(3.);
357 param->fMaxSnp = 0.95;
359 param->fNSigmaYLayerForRoadY = 4.;
360 param->fNSigmaRoadY = 7.5;
361 param->fNSigmaZLayerForRoadZ = 4.;
362 param->fNSigmaRoadZ = 7.5;
364 param->fNSigma2RoadZC = 60.; //7.75^2
365 param->fNSigma2RoadYC = 60.; //7.75^2
366 param->fNSigma2RoadZNonC = 50.; //7.07^2
367 param->fNSigma2RoadYNonC = 50.; //7.07^2
369 param->fMaxChi2PerCluster[0] = 11.; //7
370 param->fMaxChi2PerCluster[1] = 12.; //5
371 param->fMaxChi2PerCluster[2] = 12.; //8
372 param->fMaxChi2PerCluster[3] = 5.; //8
373 param->fMaxChi2PerCluster[4] = 12.; //6.5
375 param->fMaxNormChi2NonC[0] = 7.;
376 param->fMaxNormChi2NonC[1] = 8.;
377 param->fMaxNormChi2NonC[2] = 8.;
378 param->fMaxNormChi2NonC[3] = 11.;
379 param->fMaxNormChi2NonC[4] = 14.;
380 param->fMaxNormChi2NonC[5] = 25.;
382 param->fMaxNormChi2C[0] = 11.;
383 param->fMaxNormChi2C[1] = 13.;
384 param->fMaxNormChi2C[2] = 15.;
385 param->fMaxNormChi2C[3] = 18.;
386 param->fMaxNormChi2C[4] = 30.;
387 param->fMaxNormChi2C[5] = 35.;
389 param->fMaxNormChi2NonCForHypothesis = 7.;
391 param->fMaxChi2 = 35.;
393 param->fMaxChi2s[0] = 25.; //40
394 param->fMaxChi2s[1] = 25.; //40
395 param->fMaxChi2s[2] = 25.; //40
396 param->fMaxChi2s[3] = 25.; //40
397 param->fMaxChi2s[4] = 40.; //40
398 param->fMaxChi2s[5] = 50.; //40
400 param->fMaxRoad = 6.;
403 param->fMaxChi2In = 16.;
405 param->fMaxChi2sR[0] = 10.;
406 param->fMaxChi2sR[1] = 10.;
407 param->fMaxChi2sR[2] = 10.;
408 param->fMaxChi2sR[3] = 10.;
409 param->fMaxChi2sR[4] = 30.;
410 param->fMaxChi2sR[5] = 40.;
412 param->fChi2PerCluster = 9.;
418 param->fSigmaXV = 0.0050;
419 param->fSigmaYV = 0.0050;
420 param->fSigmaZV = 0.0100;
422 param->fVertexCut = 25.;
424 param->fMaxDZforPrimTrk = 0.4;
425 param->fMaxDZToUseConstraint = 3.;
427 param->fMaxDforV0dghtrForProlongation = 30.;
428 param->fMaxDForProlongation = 10.;
429 param->fMaxDZForProlongation = 20.;
430 param->fMinPtForProlongation = 0.120;
432 param->fZWindowDeadZone = 2.0;
433 param->fSigmaXDeadZoneHit2 = 0.004/12.;
434 param->fSigmaZDeadZoneHit2 = 0.001/12.;
435 param->fXPassDeadZoneHits = 0.018;
440 //_____________________________________________________________________________
441 AliITSRecoParam *AliITSRecoParam::GetPlaneEffParam(Int_t i)
444 // make special reconstruction parameters for Plane Efficiency study on layer i
446 if (i<0 || i>=AliITSgeomTGeo::kNLayers) {
447 printf("AliITSRecoParam::GetPlaneEffParam: index of ITS Plane not in the range [0,5]\n");
448 printf("returning null pointer");
451 AliITSRecoParam *param;
452 param = GetHighFluxParam();
453 param->SetComputePlaneEff();
454 param->SetLayerToSkip(i);
455 param->SetIPlanePlaneEff(i);
456 // optimized setting for SPD0 (i==0)
458 param->fMinPtPlaneEff = 0.200; // high pt particles
459 param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster
460 param->fRequireClusterInOuterLayerPlaneEff = kTRUE; // cluster on SPD1 must be
461 //param->fOnlyConstraintPlaneEff = kTRUE;
464 param->fMinPtPlaneEff = 0.200; // high pt particles
465 param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster
466 param->fRequireClusterInOuterLayerPlaneEff = kTRUE;
467 //param->fOnlyConstraintPlaneEff = kTRUE;
470 param->fMinPtPlaneEff = 0.200; // high pt particles
471 param->fMaxMissingClustersPlaneEff = 0; // at most 1 layer out of 5 without cluster
472 param->fRequireClusterInOuterLayerPlaneEff = kTRUE;
473 //param->fOnlyConstraintPlaneEff = kTRUE;
476 param->fMinPtPlaneEff = 0.200; // high pt particles
481 //_____________________________________________________________________________
482 void AliITSRecoParam::SetLayersParameters()
485 // number of layers and layers spatial resolutions
488 // spatial resolutions of the detectors
489 // y: 12 12 38 38 20 20 micron
492 fSigmaY2[2]=1.444e-5;
493 fSigmaY2[3]=1.444e-5;
496 // z: 120 120 28 28 830 830 micron
501 fSigmaZ2[4]=6.889e-3;
502 fSigmaZ2[5]=6.889e-3;
506 //_____________________________________________________________________________
507 void AliITSRecoParam::PrintParameters() const
513 printf("============================= AliITSRecoParam::PrintParameters ");
514 printf("============================= \n\n");
515 for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
516 if(!fLayersToSkip[i]) {
517 printf("ITS Traking: using layer %d\n",i);
519 printf("ITS Traking: skipping layer %d\n",i);
522 for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
523 if(fUseAmplitudeInfo[i]) {
524 printf("ITS Traking: use amplitude info for layer %d\n",i);
526 printf("ITS Traking: don't use amplitude info for layer %d\n",i);
529 for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++)
530 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]);