]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSRecoParam.cxx
Options for ITS reconstruction moved to AliITSRecoParam (Dainese, Prino)
[u/mrichter/AliRoot.git] / ITS / AliITSRecoParam.cxx
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
29 ClassImp(AliITSRecoParam)
30
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
62
63 //_____________________________________________________________________________
64 AliITSRecoParam::AliITSRecoParam() : AliDetectorRecoParam(),
65 fTracker(0),
66 fITSonly(kFALSE),
67 fVertexer(0),
68 fClusterFinder(0),
69 fPID(0),
70 fMaxSnp(1.),
71 fNSigmaYLayerForRoadY(0),
72 fNSigmaRoadY(0),
73 fNSigmaZLayerForRoadZ(0),
74 fNSigmaRoadZ(0),
75 fNSigma2RoadZC(0),
76 fNSigma2RoadYC(0),
77 fNSigma2RoadZNonC(0),
78 fNSigma2RoadYNonC(0),
79 fRoadMisal(0),
80 fMaxNormChi2NonCForHypothesis(0),
81 fMaxChi2(0),
82 fMaxRoad(0),
83 fMaxChi2In(0),
84 fChi2PerCluster(0),
85 fXV(0), 
86 fYV(0),
87 fZV(0),
88 fSigmaXV(0),
89 fSigmaYV(0),
90 fSigmaZV(0),
91 fVertexCut(0),
92 fMaxDZforPrimTrk(0),
93 fMaxDZToUseConstraint(0), 
94 fMaxDforV0dghtrForProlongation(0),
95 fMaxDForProlongation(0),
96 fMaxDZForProlongation(0),
97 fMinPtForProlongation(0),
98 fAddVirtualClustersInDeadZone(kFALSE),
99 fZWindowDeadZone(0),
100 fSigmaXDeadZoneHit2(0),
101 fSigmaZDeadZoneHit2(0),
102 fXPassDeadZoneHits(0),
103 fUseTGeoInTracker(3),
104 fAllowSharedClusters(kTRUE),
105 fClusterErrorsParam(1),
106 fComputePlaneEff(kFALSE),
107 fHistoPlaneEff(kFALSE),
108 fIPlanePlaneEff(0),
109 fReadPlaneEffFromOCDB(kFALSE),
110 fMinPtPlaneEff(0),
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.),
122 fNLoopsSA(33),
123 fMinPhiSA(0.002),
124 fMaxPhiSA(0.0145),
125 fMinLambdaSA(0.003),
126 fMaxLambdaSA(0.008),
127 fSAOnePointTracks(kFALSE),
128 fSAUseAllClusters(kFALSE),
129 fFindV0s(kTRUE),
130 fUseUnfoldingInClusterFinderSPD(kFALSE),
131 fUseUnfoldingInClusterFinderSDD(kTRUE),
132 fUseUnfoldingInClusterFinderSSD(kTRUE),
133 fUseChargeMatchingInClusterFinderSSD(kTRUE)
134 {
135   //
136   // constructor
137   //
138   SetName("ITS");
139   SetTitle("ITS");
140
141   SetLayersParameters();
142   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) fLayersToSkip[i]=0;
143   SetUseTGeoInTracker(3);
144   SetAllowSharedClusters(kTRUE);
145   SetFindV0s(kTRUE);
146   SetAddVirtualClustersInDeadZone(kFALSE);
147   SetUseAmplitudeInfo(kTRUE);
148   SetClusterErrorsParam(1);
149   SetClusterMisalError(0.);
150 }
151 //_____________________________________________________________________________
152 AliITSRecoParam::~AliITSRecoParam() 
153 {
154   //
155   // destructor
156   //  
157 }
158 //_____________________________________________________________________________
159 AliITSRecoParam *AliITSRecoParam::GetHighFluxParam() 
160 {
161   //
162   // make default reconstruction  parameters for hig  flux env.
163   //
164   AliITSRecoParam *param = new AliITSRecoParam();
165
166   param->fMaxSnp = 0.95;
167
168   param->fNSigmaYLayerForRoadY = 4.;
169   param->fNSigmaRoadY = 7.5;
170   param->fNSigmaZLayerForRoadZ = 4.;
171   param->fNSigmaRoadZ = 7.5;
172
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
177
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
183
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.;
190
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.;
197
198   param->fMaxNormChi2NonCForHypothesis = 7.;
199   
200   param->fMaxChi2 = 35.;
201
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
208
209   param->fMaxRoad = 6.;
210
211   // not used
212   param->fMaxChi2In = 16.;
213    
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.;   
220
221   param->fChi2PerCluster = 9.;
222   // not used
223
224   param->fXV = 0.;
225   param->fYV = 0.;
226   param->fZV = 0.;
227   param->fSigmaXV = 0.0050;
228   param->fSigmaYV = 0.0050;
229   param->fSigmaZV = 0.0100;
230
231   param->fVertexCut = 25.;
232
233   param->fMaxDZforPrimTrk = 0.4;
234   param->fMaxDZToUseConstraint = 3.;
235
236   param->fMaxDforV0dghtrForProlongation = 30.;
237   param->fMaxDForProlongation = 40.;//10.;
238   param->fMaxDZForProlongation = 60.;//20.;
239   param->fMinPtForProlongation = 0.120;
240
241   param->fZWindowDeadZone = 2.0;
242   param->fSigmaXDeadZoneHit2 = 0.004/12.;
243   param->fSigmaZDeadZoneHit2 = 0.001/12.;
244   param->fXPassDeadZoneHits = 0.018;
245   
246   return param;
247 }
248 //_____________________________________________________________________________
249 AliITSRecoParam *AliITSRecoParam::GetLowFluxParam() 
250 {
251   //
252   // make default reconstruction  parameters for low  flux env.
253   //
254   AliITSRecoParam *param = new AliITSRecoParam();
255
256   param->fMaxSnp = 0.95;
257
258   param->fNSigmaYLayerForRoadY = 4.;
259   param->fNSigmaRoadY = 7.5;
260   param->fNSigmaZLayerForRoadZ = 4.;
261   param->fNSigmaRoadZ = 7.5;
262
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
267
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
273
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.;
280
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.;
287
288   param->fMaxNormChi2NonCForHypothesis = 7.;
289   
290   param->fMaxChi2 = 35.;
291
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
298
299   param->fMaxRoad = 6.;
300
301   // not used
302   param->fMaxChi2In = 16.;
303    
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.;   
310
311   param->fChi2PerCluster = 9.;
312   // not used
313
314   param->fXV = 0.;
315   param->fYV = 0.;
316   param->fZV = 0.;
317   param->fSigmaXV = 0.0050;
318   param->fSigmaYV = 0.0050;
319   param->fSigmaZV = 0.0100;
320
321   param->fVertexCut = 25.;
322
323   param->fMaxDZforPrimTrk = 0.4;
324   param->fMaxDZToUseConstraint = 3.;
325
326   param->fMaxDforV0dghtrForProlongation = 30.;
327   param->fMaxDForProlongation = 40.;//10.;
328   param->fMaxDZForProlongation = 60.;//20.;
329   param->fMinPtForProlongation = 0.120;
330
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);
336   
337   return param;
338 }
339 //_____________________________________________________________________________
340 AliITSRecoParam *AliITSRecoParam::GetCosmicTestParam() 
341 {
342   //
343   // make default reconstruction  parameters for cosmics
344   //
345   AliITSRecoParam *param = new AliITSRecoParam();
346
347   // vertexer for cosmics
348   param->SetVertexer(2);
349
350   // find independently ITS SA tracks 
351   param->SetSAUseAllClusters();
352   param->SetOuterStartLayerSA(AliITSgeomTGeo::GetNLayers()-2);
353
354   // larger seach windows for SA (in case of large misalignments)
355   param->SetFactorSAWindowSizes(3.); 
356
357   param->fMaxSnp = 0.95;
358
359   param->fNSigmaYLayerForRoadY = 4.;
360   param->fNSigmaRoadY = 7.5;
361   param->fNSigmaZLayerForRoadZ = 4.;
362   param->fNSigmaRoadZ = 7.5;
363
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
368
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
374
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.;
381
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.;
388
389   param->fMaxNormChi2NonCForHypothesis = 7.;
390   
391   param->fMaxChi2 = 35.;
392
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
399
400   param->fMaxRoad = 6.;
401
402   // not used
403   param->fMaxChi2In = 16.;
404    
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.;   
411
412   param->fChi2PerCluster = 9.;
413   // not used
414
415   param->fXV = 0.;
416   param->fYV = 0.;
417   param->fZV = 0.;
418   param->fSigmaXV = 0.0050;
419   param->fSigmaYV = 0.0050;
420   param->fSigmaZV = 0.0100;
421
422   param->fVertexCut = 25.;
423
424   param->fMaxDZforPrimTrk = 0.4;
425   param->fMaxDZToUseConstraint = 3.;
426
427   param->fMaxDforV0dghtrForProlongation = 30.;
428   param->fMaxDForProlongation = 10.;
429   param->fMaxDZForProlongation = 20.;
430   param->fMinPtForProlongation = 0.120;
431
432   param->fZWindowDeadZone = 2.0;
433   param->fSigmaXDeadZoneHit2 = 0.004/12.;
434   param->fSigmaZDeadZoneHit2 = 0.001/12.;
435   param->fXPassDeadZoneHits = 0.018;
436
437   
438   return param;
439 }
440 //_____________________________________________________________________________
441 AliITSRecoParam *AliITSRecoParam::GetPlaneEffParam(Int_t i)
442 {
443   //
444   // make special reconstruction parameters for Plane Efficiency study on layer i
445   //
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");
449     return NULL;
450   }
451   AliITSRecoParam *param;
452   param = GetHighFluxParam();
453   param->SetComputePlaneEff();
454   param->SetLayerToSkip(i);
455   param->SetIPlanePlaneEff(i);
456   // optimized setting for SPD0 (i==0)
457   if (i==0 || i==1) {
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;
462   }
463   if (i==2 || i==3) {
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;
468   }
469   if (i==4) {
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;
474   }
475   if (i==5) {
476     param->fMinPtPlaneEff = 0.200; // high pt particles
477   }
478   //
479   return param;
480 }
481 //_____________________________________________________________________________
482 void AliITSRecoParam::SetLayersParameters() 
483 {
484   //
485   // number of layers and layers spatial resolutions
486   //
487
488   // spatial resolutions of the detectors
489   // y: 12 12 38 38 20 20 micron
490   fSigmaY2[0]=1.44e-6;
491   fSigmaY2[1]=1.44e-6;
492   fSigmaY2[2]=1.444e-5;
493   fSigmaY2[3]=1.444e-5;
494   fSigmaY2[4]=4.0e-6;
495   fSigmaY2[5]=4.0e-6;
496   // z: 120 120 28 28 830 830 micron
497   fSigmaZ2[0]=1.44e-4;
498   fSigmaZ2[1]=1.44e-4;
499   fSigmaZ2[2]=7.84e-6;
500   fSigmaZ2[3]=7.84e-6;
501   fSigmaZ2[4]=6.889e-3;
502   fSigmaZ2[5]=6.889e-3;
503
504   return;
505 }
506 //_____________________________________________________________________________
507 void AliITSRecoParam::PrintParameters() const 
508 {
509   //
510   // print parameters
511   //
512
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);
518     } else {
519       printf("ITS Traking: skipping layer %d\n",i);
520     }
521   }
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);
525     } else {
526       printf("ITS Traking: don't use amplitude info for layer %d\n",i);
527     }
528   }
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]);
531
532
533   Dump();
534
535   return;
536 }