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