AliITSRecoParam retrieved from the OCDB
[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 fMaxSnp(1.),
66 fNSigmaYLayerForRoadY(0),
67 fNSigmaRoadY(0),
68 fNSigmaZLayerForRoadZ(0),
69 fNSigmaRoadZ(0),
70 fNSigma2RoadZC(0),
71 fNSigma2RoadYC(0),
72 fNSigma2RoadZNonC(0),
73 fNSigma2RoadYNonC(0),
74 fMaxNormChi2NonCForHypothesis(0),
75 fMaxChi2(0),
76 fMaxRoad(0),
77 fMaxChi2In(0),
78 fChi2PerCluster(0),
79 fXV(0), 
80 fYV(0),
81 fZV(0),
82 fSigmaXV(0),
83 fSigmaYV(0),
84 fSigmaZV(0),
85 fVertexCut(0),
86 fMaxDZforPrimTrk(0),
87 fMaxDZToUseConstraint(0), 
88 fMaxDforV0dghtrForProlongation(0),
89 fMaxDForProlongation(0),
90 fMaxDZForProlongation(0),
91 fMinPtForProlongation(0),
92 fAddVirtualClustersInDeadZone(kFALSE),
93 fZWindowDeadZone(0),
94 fSigmaXDeadZoneHit2(0),
95 fSigmaZDeadZoneHit2(0),
96 fXPassDeadZoneHits(0),
97 fUseTGeoInTracker(3),
98 fAllowSharedClusters(kTRUE),
99 fClusterErrorsParam(1),
100 fComputePlaneEff(kFALSE),
101 fHistoPlaneEff(kFALSE),
102 fReadPlaneEffFromOCDB(kFALSE),
103 fExtendedEtaAcceptance(kFALSE),
104 fUseDeadZonesFromOCDB(kFALSE),
105 fAllowProlongationWithEmptyRoad(kFALSE),
106 fFactorSAWindowSizes(1.),
107 fNLoopsSA(33),
108 fMinPhiSA(0.002),
109 fMaxPhiSA(0.0145),
110 fMinLambdaSA(0.003),
111 fMaxLambdaSA(0.008),
112 fSAOnePointTracks(kFALSE),
113 fSAUseAllClusters(kFALSE),
114 fFindV0s(kTRUE),
115 fUseUnfoldingInClusterFinderSPD(kFALSE),
116 fUseUnfoldingInClusterFinderSDD(kTRUE),
117 fUseUnfoldingInClusterFinderSSD(kTRUE),
118 fUseChargeMatchingInClusterFinderSSD(kTRUE)
119 {
120   //
121   // constructor
122   //
123   SetName("ITS");
124   SetTitle("ITS");
125
126   SetLayersParameters();
127   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) fLayersToSkip[i]=0;
128   SetUseTGeoInTracker(3);
129   SetAllowSharedClusters(kTRUE);
130   SetFindV0s(kTRUE);
131   SetAddVirtualClustersInDeadZone(kFALSE);
132   SetUseAmplitudeInfo(kTRUE);
133   SetClusterErrorsParam(1);
134 }
135 //_____________________________________________________________________________
136 AliITSRecoParam::~AliITSRecoParam() 
137 {
138   //
139   // destructor
140   //  
141 }
142 //_____________________________________________________________________________
143 AliITSRecoParam *AliITSRecoParam::GetHighFluxParam() 
144 {
145   //
146   // make default reconstruction  parameters for hig  flux env.
147   //
148   AliITSRecoParam *param = new AliITSRecoParam();
149
150   param->fMaxSnp = 0.95;
151
152   param->fNSigmaYLayerForRoadY = 4.;
153   param->fNSigmaRoadY = 7.5;
154   param->fNSigmaZLayerForRoadZ = 4.;
155   param->fNSigmaRoadZ = 7.5;
156
157   param->fNSigma2RoadZC = 60.; //7.75^2
158   param->fNSigma2RoadYC = 60.; //7.75^2
159   param->fNSigma2RoadZNonC = 50.; //7.07^2
160   param->fNSigma2RoadYNonC = 50.; //7.07^2
161
162   param->fMaxChi2PerCluster[0] = 11.; //7
163   param->fMaxChi2PerCluster[1] = 12.; //5
164   param->fMaxChi2PerCluster[2] = 12.; //8
165   param->fMaxChi2PerCluster[3] = 5.;  //8
166   param->fMaxChi2PerCluster[4] = 12.; //6.5
167
168   param->fMaxNormChi2NonC[0] = 7.;
169   param->fMaxNormChi2NonC[1] = 8.;
170   param->fMaxNormChi2NonC[2] = 8.;
171   param->fMaxNormChi2NonC[3] = 11.;
172   param->fMaxNormChi2NonC[4] = 14.;
173   param->fMaxNormChi2NonC[5] = 25.;
174
175   param->fMaxNormChi2C[0] = 11.;
176   param->fMaxNormChi2C[1] = 13.;
177   param->fMaxNormChi2C[2] = 15.;
178   param->fMaxNormChi2C[3] = 18.;
179   param->fMaxNormChi2C[4] = 30.;
180   param->fMaxNormChi2C[5] = 35.;
181
182   param->fMaxNormChi2NonCForHypothesis = 7.;
183   
184   param->fMaxChi2 = 35.;
185
186   param->fMaxChi2s[0] = 25.; //40   
187   param->fMaxChi2s[1] = 25.; //40   
188   param->fMaxChi2s[2] = 25.; //40   
189   param->fMaxChi2s[3] = 25.; //40   
190   param->fMaxChi2s[4] = 40.; //40   
191   param->fMaxChi2s[5] = 50.; //40
192
193   param->fMaxRoad = 6.;
194
195   // not used
196   param->fMaxChi2In = 16.;
197    
198   param->fMaxChi2sR[0] = 10.;   
199   param->fMaxChi2sR[1] = 10.;   
200   param->fMaxChi2sR[2] = 10.;   
201   param->fMaxChi2sR[3] = 10.;   
202   param->fMaxChi2sR[4] = 30.;   
203   param->fMaxChi2sR[5] = 40.;   
204
205   param->fChi2PerCluster = 9.;
206   // not used
207
208   param->fXV = 0.;
209   param->fYV = 0.;
210   param->fZV = 0.;
211   param->fSigmaXV = 0.0050;
212   param->fSigmaYV = 0.0050;
213   param->fSigmaZV = 0.0100;
214
215   param->fVertexCut = 25.;
216
217   param->fMaxDZforPrimTrk = 0.4;
218   param->fMaxDZToUseConstraint = 3.;
219
220   param->fMaxDforV0dghtrForProlongation = 30.;
221   param->fMaxDForProlongation = 40.;//10.;
222   param->fMaxDZForProlongation = 60.;//20.;
223   param->fMinPtForProlongation = 0.120;
224
225   param->fZWindowDeadZone = 2.0;
226   param->fSigmaXDeadZoneHit2 = 0.004/12.;
227   param->fSigmaZDeadZoneHit2 = 0.001/12.;
228   param->fXPassDeadZoneHits = 0.018;
229   
230   return param;
231 }
232 //_____________________________________________________________________________
233 AliITSRecoParam *AliITSRecoParam::GetLowFluxParam() 
234 {
235   //
236   // make default reconstruction  parameters for low  flux env.
237   //
238   AliITSRecoParam *param = new AliITSRecoParam();
239
240   param->fMaxSnp = 0.95;
241
242   param->fNSigmaYLayerForRoadY = 4.;
243   param->fNSigmaRoadY = 7.5;
244   param->fNSigmaZLayerForRoadZ = 4.;
245   param->fNSigmaRoadZ = 7.5;
246
247   param->fNSigma2RoadZC = 60.; //7.75^2
248   param->fNSigma2RoadYC = 60.; //7.75^2
249   param->fNSigma2RoadZNonC = 50.; //7.07^2
250   param->fNSigma2RoadYNonC = 50.; //7.07^2
251
252   param->fMaxChi2PerCluster[0] = 11.; //7
253   param->fMaxChi2PerCluster[1] = 12.; //5
254   param->fMaxChi2PerCluster[2] = 12.; //8
255   param->fMaxChi2PerCluster[3] = 5.;  //8
256   param->fMaxChi2PerCluster[4] = 12.; //6.5
257
258   param->fMaxNormChi2NonC[0] = 7.;
259   param->fMaxNormChi2NonC[1] = 8.;
260   param->fMaxNormChi2NonC[2] = 8.;
261   param->fMaxNormChi2NonC[3] = 11.;
262   param->fMaxNormChi2NonC[4] = 14.;
263   param->fMaxNormChi2NonC[5] = 25.;
264
265   param->fMaxNormChi2C[0] = 11.;
266   param->fMaxNormChi2C[1] = 13.;
267   param->fMaxNormChi2C[2] = 15.;
268   param->fMaxNormChi2C[3] = 18.;
269   param->fMaxNormChi2C[4] = 30.;
270   param->fMaxNormChi2C[5] = 35.;
271
272   param->fMaxNormChi2NonCForHypothesis = 7.;
273   
274   param->fMaxChi2 = 35.;
275
276   param->fMaxChi2s[0] = 25.; //40   
277   param->fMaxChi2s[1] = 25.; //40   
278   param->fMaxChi2s[2] = 25.; //40   
279   param->fMaxChi2s[3] = 25.; //40   
280   param->fMaxChi2s[4] = 40.; //40   
281   param->fMaxChi2s[5] = 50.; //40
282
283   param->fMaxRoad = 6.;
284
285   // not used
286   param->fMaxChi2In = 16.;
287    
288   param->fMaxChi2sR[0] = 10.;   
289   param->fMaxChi2sR[1] = 10.;   
290   param->fMaxChi2sR[2] = 10.;   
291   param->fMaxChi2sR[3] = 10.;   
292   param->fMaxChi2sR[4] = 30.;   
293   param->fMaxChi2sR[5] = 40.;   
294
295   param->fChi2PerCluster = 9.;
296   // not used
297
298   param->fXV = 0.;
299   param->fYV = 0.;
300   param->fZV = 0.;
301   param->fSigmaXV = 0.0050;
302   param->fSigmaYV = 0.0050;
303   param->fSigmaZV = 0.0100;
304
305   param->fVertexCut = 25.;
306
307   param->fMaxDZforPrimTrk = 0.4;
308   param->fMaxDZToUseConstraint = 3.;
309
310   param->fMaxDforV0dghtrForProlongation = 30.;
311   param->fMaxDForProlongation = 40.;//10.;
312   param->fMaxDZForProlongation = 60.;//20.;
313   param->fMinPtForProlongation = 0.120;
314
315   param->fZWindowDeadZone = 2.0;
316   param->fSigmaXDeadZoneHit2 = 0.004/12.;
317   param->fSigmaZDeadZoneHit2 = 0.001/12.;
318   param->fXPassDeadZoneHits = 0.018;
319   param->SetNLoopsSA(10);
320   
321   return param;
322 }
323 //_____________________________________________________________________________
324 AliITSRecoParam *AliITSRecoParam::GetCosmicTestParam() 
325 {
326   //
327   // make default reconstruction  parameters for cosmics
328   //
329   AliITSRecoParam *param = new AliITSRecoParam();
330
331   // larger seach windows for SA (in case of large misalignments)
332   param->SetFactorSAWindowSizes(3.); 
333
334   param->fMaxSnp = 0.95;
335
336   param->fNSigmaYLayerForRoadY = 4.;
337   param->fNSigmaRoadY = 7.5;
338   param->fNSigmaZLayerForRoadZ = 4.;
339   param->fNSigmaRoadZ = 7.5;
340
341   param->fNSigma2RoadZC = 60.; //7.75^2
342   param->fNSigma2RoadYC = 60.; //7.75^2
343   param->fNSigma2RoadZNonC = 50.; //7.07^2
344   param->fNSigma2RoadYNonC = 50.; //7.07^2
345
346   param->fMaxChi2PerCluster[0] = 11.; //7
347   param->fMaxChi2PerCluster[1] = 12.; //5
348   param->fMaxChi2PerCluster[2] = 12.; //8
349   param->fMaxChi2PerCluster[3] = 5.;  //8
350   param->fMaxChi2PerCluster[4] = 12.; //6.5
351
352   param->fMaxNormChi2NonC[0] = 7.;
353   param->fMaxNormChi2NonC[1] = 8.;
354   param->fMaxNormChi2NonC[2] = 8.;
355   param->fMaxNormChi2NonC[3] = 11.;
356   param->fMaxNormChi2NonC[4] = 14.;
357   param->fMaxNormChi2NonC[5] = 25.;
358
359   param->fMaxNormChi2C[0] = 11.;
360   param->fMaxNormChi2C[1] = 13.;
361   param->fMaxNormChi2C[2] = 15.;
362   param->fMaxNormChi2C[3] = 18.;
363   param->fMaxNormChi2C[4] = 30.;
364   param->fMaxNormChi2C[5] = 35.;
365
366   param->fMaxNormChi2NonCForHypothesis = 7.;
367   
368   param->fMaxChi2 = 35.;
369
370   param->fMaxChi2s[0] = 25.; //40   
371   param->fMaxChi2s[1] = 25.; //40   
372   param->fMaxChi2s[2] = 25.; //40   
373   param->fMaxChi2s[3] = 25.; //40   
374   param->fMaxChi2s[4] = 40.; //40   
375   param->fMaxChi2s[5] = 50.; //40
376
377   param->fMaxRoad = 6.;
378
379   // not used
380   param->fMaxChi2In = 16.;
381    
382   param->fMaxChi2sR[0] = 10.;   
383   param->fMaxChi2sR[1] = 10.;   
384   param->fMaxChi2sR[2] = 10.;   
385   param->fMaxChi2sR[3] = 10.;   
386   param->fMaxChi2sR[4] = 30.;   
387   param->fMaxChi2sR[5] = 40.;   
388
389   param->fChi2PerCluster = 9.;
390   // not used
391
392   param->fXV = 0.;
393   param->fYV = 0.;
394   param->fZV = 0.;
395   param->fSigmaXV = 0.0050;
396   param->fSigmaYV = 0.0050;
397   param->fSigmaZV = 0.0100;
398
399   param->fVertexCut = 25.;
400
401   param->fMaxDZforPrimTrk = 0.4;
402   param->fMaxDZToUseConstraint = 3.;
403
404   param->fMaxDforV0dghtrForProlongation = 30.;
405   param->fMaxDForProlongation = 10.;
406   param->fMaxDZForProlongation = 20.;
407   param->fMinPtForProlongation = 0.120;
408
409   param->fZWindowDeadZone = 2.0;
410   param->fSigmaXDeadZoneHit2 = 0.004/12.;
411   param->fSigmaZDeadZoneHit2 = 0.001/12.;
412   param->fXPassDeadZoneHits = 0.018;
413
414   
415   return param;
416 }
417 //_____________________________________________________________________________
418 AliITSRecoParam *AliITSRecoParam::GetPlaneEffParam(Int_t i)
419 {
420   //
421   // make special reconstruction parameters for Plane Efficiency study on layer i
422   //
423   AliITSRecoParam *param;
424   param = GetHighFluxParam();
425   param->SetComputePlaneEff();
426   param->SetLayerToSkip(i);
427   return param;
428 }
429 //_____________________________________________________________________________
430 void AliITSRecoParam::SetLayersParameters() 
431 {
432   //
433   // number of layers and layers spatial resolutions
434   //
435
436   // spatial resolutions of the detectors
437   // y: 12 12 38 38 20 20 micron
438   fSigmaY2[0]=1.44e-6;
439   fSigmaY2[1]=1.44e-6;
440   fSigmaY2[2]=1.444e-5;
441   fSigmaY2[3]=1.444e-5;
442   fSigmaY2[4]=4.0e-6;
443   fSigmaY2[5]=4.0e-6;
444   // z: 120 120 28 28 830 830 micron
445   fSigmaZ2[0]=1.44e-4;
446   fSigmaZ2[1]=1.44e-4;
447   fSigmaZ2[2]=7.84e-6;
448   fSigmaZ2[3]=7.84e-6;
449   fSigmaZ2[4]=6.889e-3;
450   fSigmaZ2[5]=6.889e-3;
451
452   return;
453 }
454 //_____________________________________________________________________________
455 void AliITSRecoParam::PrintParameters() const 
456 {
457   //
458   // print parameters
459   //
460
461   printf("=============================  AliITSRecoParam::PrintParameters ");
462   printf("============================= \n \n ");
463   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
464     if(!fLayersToSkip[i]) {
465       printf("ITS Traking: using layer %d\n",i);
466     } else {
467       printf("ITS Traking: skipping layer %d\n",i);
468     }
469   }
470   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
471     if(fUseAmplitudeInfo[i]) {
472       printf("ITS Traking: use amplitude info for layer %d\n",i);
473     } else {
474       printf("ITS Traking: don't use amplitude info for layer %d\n",i);
475     }
476   }
477   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++)
478     printf("Layer %d:\n  sigmaY2 %f, sigma Z2 %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],fMaxNormChi2NonC[i],fMaxNormChi2C[i],fMaxChi2s[i]);
479
480
481   Dump();
482
483   return;
484 }