Possibility to reconstruct tracks with 1 point + vertex, and possibility to reuse...
[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 fExtendedEtaAcceptance(kFALSE),
103 fUseDeadZonesFromOCDB(kFALSE),
104 fAllowProlongationWithEmptyRoad(kFALSE),
105 fFactorSAWindowSizes(1.),
106 fSAOnePointTracks(kFALSE),
107 fSAUseAllClusters(kFALSE),
108 fFindV0s(kTRUE),
109 fUseUnfoldingInClusterFinderSPD(kFALSE),
110 fUseUnfoldingInClusterFinderSDD(kTRUE),
111 fUseUnfoldingInClusterFinderSSD(kTRUE)
112 {
113   //
114   // constructor
115   //
116   SetName("ITS");
117   SetTitle("ITS");
118
119   SetLayersParameters();
120   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) fLayersToSkip[i]=0;
121   SetUseTGeoInTracker(3);
122   SetAllowSharedClusters(kTRUE);
123   SetFindV0s(kTRUE);
124   SetAddVirtualClustersInDeadZone(kFALSE);
125   SetUseAmplitudeInfo(kTRUE);
126   SetClusterErrorsParam(1);
127 }
128 //_____________________________________________________________________________
129 AliITSRecoParam::~AliITSRecoParam() 
130 {
131   //
132   // destructor
133   //  
134 }
135 //_____________________________________________________________________________
136 AliITSRecoParam *AliITSRecoParam::GetHighFluxParam() 
137 {
138   //
139   // make default reconstruction  parameters for hig  flux env.
140   //
141   AliITSRecoParam *param = new AliITSRecoParam();
142
143   param->fMaxSnp = 0.95;
144
145   param->fNSigmaYLayerForRoadY = 4.;
146   param->fNSigmaRoadY = 7.5;
147   param->fNSigmaZLayerForRoadZ = 4.;
148   param->fNSigmaRoadZ = 7.5;
149
150   param->fNSigma2RoadZC = 60.; //7.75^2
151   param->fNSigma2RoadYC = 60.; //7.75^2
152   param->fNSigma2RoadZNonC = 50.; //7.07^2
153   param->fNSigma2RoadYNonC = 50.; //7.07^2
154
155   param->fMaxChi2PerCluster[0] = 11.; //7
156   param->fMaxChi2PerCluster[1] = 12.; //5
157   param->fMaxChi2PerCluster[2] = 12.; //8
158   param->fMaxChi2PerCluster[3] = 5.;  //8
159   param->fMaxChi2PerCluster[4] = 12.; //6.5
160
161   param->fMaxNormChi2NonC[0] = 7.;
162   param->fMaxNormChi2NonC[1] = 8.;
163   param->fMaxNormChi2NonC[2] = 8.;
164   param->fMaxNormChi2NonC[3] = 11.;
165   param->fMaxNormChi2NonC[4] = 14.;
166   param->fMaxNormChi2NonC[5] = 25.;
167
168   param->fMaxNormChi2C[0] = 11.;
169   param->fMaxNormChi2C[1] = 13.;
170   param->fMaxNormChi2C[2] = 15.;
171   param->fMaxNormChi2C[3] = 18.;
172   param->fMaxNormChi2C[4] = 30.;
173   param->fMaxNormChi2C[5] = 35.;
174
175   param->fMaxNormChi2NonCForHypothesis = 7.;
176   
177   param->fMaxChi2 = 35.;
178
179   param->fMaxChi2s[0] = 25.; //40   
180   param->fMaxChi2s[1] = 25.; //40   
181   param->fMaxChi2s[2] = 25.; //40   
182   param->fMaxChi2s[3] = 25.; //40   
183   param->fMaxChi2s[4] = 40.; //40   
184   param->fMaxChi2s[5] = 50.; //40
185
186   param->fMaxRoad = 6.;
187
188   // not used
189   param->fMaxChi2In = 16.;
190    
191   param->fMaxChi2sR[0] = 10.;   
192   param->fMaxChi2sR[1] = 10.;   
193   param->fMaxChi2sR[2] = 10.;   
194   param->fMaxChi2sR[3] = 10.;   
195   param->fMaxChi2sR[4] = 30.;   
196   param->fMaxChi2sR[5] = 40.;   
197
198   param->fChi2PerCluster = 9.;
199   // not used
200
201   param->fXV = 0.;
202   param->fYV = 0.;
203   param->fZV = 0.;
204   param->fSigmaXV = 0.0050;
205   param->fSigmaYV = 0.0050;
206   param->fSigmaZV = 0.0100;
207
208   param->fVertexCut = 25.;
209
210   param->fMaxDZforPrimTrk = 0.4;
211   param->fMaxDZToUseConstraint = 3.;
212
213   param->fMaxDforV0dghtrForProlongation = 30.;
214   param->fMaxDForProlongation = 40.;//10.;
215   param->fMaxDZForProlongation = 60.;//20.;
216   param->fMinPtForProlongation = 0.120;
217
218   param->fZWindowDeadZone = 2.0;
219   param->fSigmaXDeadZoneHit2 = 0.004/12.;
220   param->fSigmaZDeadZoneHit2 = 0.001/12.;
221   param->fXPassDeadZoneHits = 0.018;
222
223   
224   return param;
225 }
226 //_____________________________________________________________________________
227 AliITSRecoParam *AliITSRecoParam::GetLowFluxParam() 
228 {
229   //
230   // make default reconstruction  parameters for low  flux env.
231   //
232   return GetHighFluxParam();
233 }
234 //_____________________________________________________________________________
235 AliITSRecoParam *AliITSRecoParam::GetCosmicTestParam() 
236 {
237   //
238   // make default reconstruction  parameters for cosmics
239   //
240   AliITSRecoParam *param = new AliITSRecoParam();
241
242   // larger seach windows for SA (in case of large misalignments)
243   param->SetFactorSAWindowSizes(3.); 
244
245   param->fMaxSnp = 0.95;
246
247   param->fNSigmaYLayerForRoadY = 4.;
248   param->fNSigmaRoadY = 7.5;
249   param->fNSigmaZLayerForRoadZ = 4.;
250   param->fNSigmaRoadZ = 7.5;
251
252   param->fNSigma2RoadZC = 60.; //7.75^2
253   param->fNSigma2RoadYC = 60.; //7.75^2
254   param->fNSigma2RoadZNonC = 50.; //7.07^2
255   param->fNSigma2RoadYNonC = 50.; //7.07^2
256
257   param->fMaxChi2PerCluster[0] = 11.; //7
258   param->fMaxChi2PerCluster[1] = 12.; //5
259   param->fMaxChi2PerCluster[2] = 12.; //8
260   param->fMaxChi2PerCluster[3] = 5.;  //8
261   param->fMaxChi2PerCluster[4] = 12.; //6.5
262
263   param->fMaxNormChi2NonC[0] = 7.;
264   param->fMaxNormChi2NonC[1] = 8.;
265   param->fMaxNormChi2NonC[2] = 8.;
266   param->fMaxNormChi2NonC[3] = 11.;
267   param->fMaxNormChi2NonC[4] = 14.;
268   param->fMaxNormChi2NonC[5] = 25.;
269
270   param->fMaxNormChi2C[0] = 11.;
271   param->fMaxNormChi2C[1] = 13.;
272   param->fMaxNormChi2C[2] = 15.;
273   param->fMaxNormChi2C[3] = 18.;
274   param->fMaxNormChi2C[4] = 30.;
275   param->fMaxNormChi2C[5] = 35.;
276
277   param->fMaxNormChi2NonCForHypothesis = 7.;
278   
279   param->fMaxChi2 = 35.;
280
281   param->fMaxChi2s[0] = 25.; //40   
282   param->fMaxChi2s[1] = 25.; //40   
283   param->fMaxChi2s[2] = 25.; //40   
284   param->fMaxChi2s[3] = 25.; //40   
285   param->fMaxChi2s[4] = 40.; //40   
286   param->fMaxChi2s[5] = 50.; //40
287
288   param->fMaxRoad = 6.;
289
290   // not used
291   param->fMaxChi2In = 16.;
292    
293   param->fMaxChi2sR[0] = 10.;   
294   param->fMaxChi2sR[1] = 10.;   
295   param->fMaxChi2sR[2] = 10.;   
296   param->fMaxChi2sR[3] = 10.;   
297   param->fMaxChi2sR[4] = 30.;   
298   param->fMaxChi2sR[5] = 40.;   
299
300   param->fChi2PerCluster = 9.;
301   // not used
302
303   param->fXV = 0.;
304   param->fYV = 0.;
305   param->fZV = 0.;
306   param->fSigmaXV = 0.0050;
307   param->fSigmaYV = 0.0050;
308   param->fSigmaZV = 0.0100;
309
310   param->fVertexCut = 25.;
311
312   param->fMaxDZforPrimTrk = 0.4;
313   param->fMaxDZToUseConstraint = 3.;
314
315   param->fMaxDforV0dghtrForProlongation = 30.;
316   param->fMaxDForProlongation = 10.;
317   param->fMaxDZForProlongation = 20.;
318   param->fMinPtForProlongation = 0.120;
319
320   param->fZWindowDeadZone = 2.0;
321   param->fSigmaXDeadZoneHit2 = 0.004/12.;
322   param->fSigmaZDeadZoneHit2 = 0.001/12.;
323   param->fXPassDeadZoneHits = 0.018;
324
325   
326   return param;
327 }
328 //_____________________________________________________________________________
329 AliITSRecoParam *AliITSRecoParam::GetPlaneEffParam(Int_t i)
330 {
331   //
332   // make special reconstruction parameters for Plane Efficiency study on layer i
333   //
334   AliITSRecoParam *param;
335   param = GetHighFluxParam();
336   param->SetComputePlaneEff();
337   param->SetLayerToSkip(i);
338   return param;
339 }
340 //_____________________________________________________________________________
341 void AliITSRecoParam::SetLayersParameters() 
342 {
343   //
344   // number of layers and layers spatial resolutions
345   //
346
347   // spatial resolutions of the detectors
348   // y: 12 12 38 38 20 20 micron
349   fSigmaY2[0]=1.44e-6;
350   fSigmaY2[1]=1.44e-6;
351   fSigmaY2[2]=1.444e-5;
352   fSigmaY2[3]=1.444e-5;
353   fSigmaY2[4]=4.0e-6;
354   fSigmaY2[5]=4.0e-6;
355   // z: 120 120 28 28 830 830 micron
356   fSigmaZ2[0]=1.44e-4;
357   fSigmaZ2[1]=1.44e-4;
358   fSigmaZ2[2]=7.84e-6;
359   fSigmaZ2[3]=7.84e-6;
360   fSigmaZ2[4]=6.889e-3;
361   fSigmaZ2[5]=6.889e-3;
362
363   return;
364 }
365