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