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