]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSRecoParam.cxx
increased number of channels used in the TOFFEElight data structure, from 157248...
[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 #include "AliLog.h"
18
19 /* $Id$ */
20
21 ///////////////////////////////////////////////////////////////////////////////
22 //                                                                           //
23 // Class with ITS reconstruction parameters                                  //
24 // Origin: andrea.dainese@lnl.infn.it                                        //
25 //                                                                           //
26 ///////////////////////////////////////////////////////////////////////////////
27
28
29
30 ClassImp(AliITSRecoParam)
31
32 const Int_t AliITSRecoParam::fgkLayersNotToSkip[AliITSgeomTGeo::kNLayers]={0,0,0,0,0,0};
33 const Int_t AliITSRecoParam::fgkLastLayerToTrackTo=0;
34 const Int_t AliITSRecoParam::fgkMaxDetectorPerLayer=1000;
35 const Double_t AliITSRecoParam::fgkriw=80.0;
36 const Double_t AliITSRecoParam::fgkdiw=0.0053;
37 const Double_t AliITSRecoParam::fgkX0iw=30.0;
38 const Double_t AliITSRecoParam::fgkrcd=61.0;
39 const Double_t AliITSRecoParam::fgkdcd=0.0053;
40 const Double_t AliITSRecoParam::fgkX0cd=30.0;
41 const Double_t AliITSRecoParam::fgkyr=12.8;
42 const Double_t AliITSRecoParam::fgkdr=0.03;
43 const Double_t AliITSRecoParam::fgkzm=0.2;
44 const Double_t AliITSRecoParam::fgkdm=0.40;
45 const Double_t AliITSRecoParam::fgkrs=50.0;
46 const Double_t AliITSRecoParam::fgkds=0.001;
47 const Double_t AliITSRecoParam::fgkrInsideITSscreen=49.0;
48 const Double_t AliITSRecoParam::fgkrInsideSPD1=3.7;
49 const Double_t AliITSRecoParam::fgkrPipe=3.;
50 const Double_t AliITSRecoParam::fgkrInsidePipe=2.7;
51 const Double_t AliITSRecoParam::fgkrOutsidePipe=3.3;
52 const Double_t AliITSRecoParam::fgkdPipe=0.0028;
53 const Double_t AliITSRecoParam::fgkrInsideShield[2]={7.5,25.0};
54 const Double_t AliITSRecoParam::fgkrOutsideShield[2]={10.5,30.0};
55 const Double_t AliITSRecoParam::fgkdshield[2]={0.0097,0.0034};
56 const Double_t AliITSRecoParam::fgkX0shield[2]={38.6,42.0};
57 const Double_t AliITSRecoParam::fgkX0Air=21.82;
58 const Double_t AliITSRecoParam::fgkX0Be=65.19;
59 const Double_t AliITSRecoParam::fgkBoundaryWidth=0.2;
60 const Double_t AliITSRecoParam::fgkDeltaXNeighbDets=0.5;
61 const Double_t AliITSRecoParam::fgkSPDdetzlength=6.960; // 7.072-2*0.056
62 const Double_t AliITSRecoParam::fgkSPDdetxlength=1.298; // 1.410-2*0.056
63
64 //_____________________________________________________________________________
65 AliITSRecoParam::AliITSRecoParam() : AliDetectorRecoParam(),
66 fTracker(0),
67 fITSonly(kFALSE),
68 fVertexer(0),
69 fClusterFinder(0),
70 fPID(0),
71 fVtxr3DZCutWide(0.),
72 fVtxr3DRCutWide(0.),
73 fVtxr3DZCutNarrow(0.),
74 fVtxr3DRCutNarrow(0.),
75 fVtxr3DPhiCutLoose(0.),
76 fVtxr3DPhiCutTight(0.),
77 fVtxr3DDCACut(0.),
78 fMaxSnp(1.),
79 fNSigmaYLayerForRoadY(0),
80 fNSigmaRoadY(0),
81 fNSigmaZLayerForRoadZ(0),
82 fNSigmaRoadZ(0),
83 fNSigma2RoadZC(0),
84 fNSigma2RoadYC(0),
85 fNSigma2RoadZNonC(0),
86 fNSigma2RoadYNonC(0),
87 fRoadMisal(0),
88 fMaxNormChi2NonCForHypothesis(0),
89 fMaxChi2(0),
90 fMaxRoad(0),
91 fMaxChi2In(0),
92 fChi2PerCluster(0),
93 fXV(0), 
94 fYV(0),
95 fZV(0),
96 fSigmaXV(0),
97 fSigmaYV(0),
98 fSigmaZV(0),
99 fVertexCut(0),
100 fMaxDZforPrimTrk(0),
101 fMaxDZToUseConstraint(0), 
102 fMaxDforV0dghtrForProlongation(0),
103 fMaxDForProlongation(0),
104 fMaxDZForProlongation(0),
105 fMinPtForProlongation(0),
106 fAddVirtualClustersInDeadZone(kFALSE),
107 fZWindowDeadZone(0),
108 fSigmaXDeadZoneHit2(0),
109 fSigmaZDeadZoneHit2(0),
110 fXPassDeadZoneHits(0),
111 fUseTGeoInTracker(3),
112 fStepSizeTGeo(5.),
113 fAllowSharedClusters(kTRUE),
114 fClusterErrorsParam(1),
115 fComputePlaneEff(kFALSE),
116 fHistoPlaneEff(kFALSE),
117 fUseTrackletsPlaneEff(kFALSE),
118 fMCTrackletsPlaneEff(kFALSE),
119 fBkgTrackletsPlaneEff(kFALSE),
120 fTrackleterPhiWindowL1(0.10),
121 fTrackleterZetaWindowL1(0.6),
122 fUpdateOncePerEventPlaneEff(kTRUE),
123 fMinContVtxPlaneEff(3),
124 fIPlanePlaneEff(0),
125 fReadPlaneEffFromOCDB(kFALSE),
126 fMinPtPlaneEff(0),
127 fMaxMissingClustersPlaneEff(0),
128 fRequireClusterInOuterLayerPlaneEff(kFALSE),
129 fRequireClusterInInnerLayerPlaneEff(kFALSE),
130 fOnlyConstraintPlaneEff(kFALSE),
131 fExtendedEtaAcceptance(kFALSE),
132 fUseBadZonesFromOCDB(kTRUE),
133 fUseSingleBadChannelsFromOCDB(kFALSE),
134 fMinFractionOfBadInRoad(0),
135 fAllowProlongationWithEmptyRoad(kFALSE),
136 fInwardFlagSA(kFALSE),
137 fOuterStartLayerSA(2),
138 fInnerStartLayerSA(3),
139 fMinNPointsSA(3),
140 fFactorSAWindowSizes(1.),
141 fNLoopsSA(33),
142 fMinPhiSA(0.002),
143 fMaxPhiSA(0.0145),
144 fMinLambdaSA(0.003),
145 fMaxLambdaSA(0.008),
146 fMinClusterChargeSA(0.),
147 fSAOnePointTracks(kFALSE),
148 fSAUseAllClusters(kFALSE),
149 fFindV0s(kTRUE),
150 fStoreLikeSignV0s(kFALSE),
151 fUseUnfoldingInClusterFinderSPD(kFALSE),
152 fUseUnfoldingInClusterFinderSDD(kTRUE),
153 fUseUnfoldingInClusterFinderSSD(kFALSE),
154 fUseSDDCorrectionMaps(kTRUE),
155 fUseSDDClusterSizeSelection(kFALSE),
156 fMinClusterChargeSDD(0.),
157 fUseChargeMatchingInClusterFinderSSD(kTRUE),
158 fTrackleterOnlyOneTrackletPerC2(kTRUE),
159 fTrackleterPhiWindow(0.08),
160 fTrackleterZetaWindow(1.00),
161 fTrackleterRemoveClustersFromOverlaps(kFALSE),
162 fTrackleterPhiOverlapCut(0.005),
163 fTrackleterZetaOverlapCut(0.05),
164 fUseCosmicRunShiftsSSD(kFALSE),
165 fSPDRemoveNoisyFlag(kTRUE),
166 fSPDRemoveDeadFlag(kTRUE),
167 fVertexerFastSmearX(0.005),
168 fVertexerFastSmearY(0.005),
169 fVertexerFastSmearZ(0.01),
170 fAlignFilterCosmics(kFALSE),
171 fAlignFilterCosmicMergeTracks(kTRUE),
172 fAlignFilterMinITSPoints(4),
173 fAlignFilterMinITSPointsMerged(4),
174 fAlignFilterOnlyITSSATracks(kTRUE),
175 fAlignFilterOnlyITSTPCTracks(kFALSE),
176 fAlignFilterSkipExtra(kFALSE),
177 fAlignFilterMaxMatchingAngle(0.085),
178 fAlignFilterMinAngleWrtModulePlanes(0.52),
179 fAlignFilterMinPt(0.),
180 fAlignFilterMaxPt(1.e10),
181 fAlignFilterFillQANtuples(kTRUE)
182 {
183   //
184   // constructor
185   //
186   SetName("ITS");
187   SetTitle("ITS");
188
189   SetLayersParameters();
190   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) fLayersToSkip[i]=0;
191   SetUseTGeoInTracker(3);
192   SetStepSizeTGeo(5.);
193   SetAllowSharedClusters(kTRUE);
194   SetFindV0s(kTRUE);
195   SetAddVirtualClustersInDeadZone(kFALSE);
196   SetUseAmplitudeInfo(kTRUE);
197   SetClusterErrorsParam(1);
198   SetClusterMisalError(0.);
199   SetVertexer3DDefaults();
200
201   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) fAlignFilterUseLayer[i]=kTRUE;
202 }
203 //_____________________________________________________________________________
204 AliITSRecoParam::~AliITSRecoParam() 
205 {
206   //
207   // destructor
208   //  
209 }
210 //_____________________________________________________________________________
211 AliITSRecoParam *AliITSRecoParam::GetHighFluxParam() 
212 {
213   //
214   // make default reconstruction  parameters for hig  flux env.
215   //
216   AliITSRecoParam *param = new AliITSRecoParam();
217   param->SetVertexerZ();
218
219   // use of bads from OCDB
220   param->SetUseBadZonesFromOCDB(kTRUE);
221   param->SetUseSingleBadChannelsFromOCDB(kFALSE);
222   // extended eta acceptance
223   param->SetExtendedEtaAcceptance(kFALSE);
224   // allow to skip layer if no cluster and no bad
225   param->SetAllowProlongationWithEmptyRoad(kFALSE);
226
227
228   param->fMaxSnp = 0.95;
229
230   param->fNSigmaYLayerForRoadY = 4.;
231   param->fNSigmaRoadY = 7.5;
232   param->fNSigmaZLayerForRoadZ = 4.;
233   param->fNSigmaRoadZ = 7.5;
234
235   param->fNSigma2RoadZC = 60.; //7.75^2
236   param->fNSigma2RoadYC = 60.; //7.75^2
237   param->fNSigma2RoadZNonC = 50.; //7.07^2
238   param->fNSigma2RoadYNonC = 50.; //7.07^2
239
240   param->fMaxChi2PerCluster[0] = 11.; //7
241   param->fMaxChi2PerCluster[1] = 12.; //5
242   param->fMaxChi2PerCluster[2] = 12.; //8
243   param->fMaxChi2PerCluster[3] = 5.;  //8
244   param->fMaxChi2PerCluster[4] = 12.; //6.5
245
246   param->fMaxNormChi2NonC[0] = 7.;
247   param->fMaxNormChi2NonC[1] = 8.;
248   param->fMaxNormChi2NonC[2] = 8.;
249   param->fMaxNormChi2NonC[3] = 11.;
250   param->fMaxNormChi2NonC[4] = 14.;
251   param->fMaxNormChi2NonC[5] = 25.;
252
253   param->fMaxNormChi2C[0] = 11.;
254   param->fMaxNormChi2C[1] = 13.;
255   param->fMaxNormChi2C[2] = 15.;
256   param->fMaxNormChi2C[3] = 18.;
257   param->fMaxNormChi2C[4] = 30.;
258   param->fMaxNormChi2C[5] = 35.;
259
260   param->fMaxNormChi2NonCForHypothesis = 7.;
261   
262   param->fMaxChi2 = 35.;
263
264   param->fMaxChi2s[0] = 25.; //40   
265   param->fMaxChi2s[1] = 25.; //40   
266   param->fMaxChi2s[2] = 25.; //40   
267   param->fMaxChi2s[3] = 25.; //40   
268   param->fMaxChi2s[4] = 40.; //40   
269   param->fMaxChi2s[5] = 50.; //40
270
271   param->fMaxRoad = 6.;
272
273   // not used
274   param->fMaxChi2In = 16.;
275    
276   param->fMaxChi2sR[0] = 10.;   
277   param->fMaxChi2sR[1] = 10.;   
278   param->fMaxChi2sR[2] = 10.;   
279   param->fMaxChi2sR[3] = 10.;   
280   param->fMaxChi2sR[4] = 30.;   
281   param->fMaxChi2sR[5] = 40.;   
282
283   param->fChi2PerCluster = 9.;
284   // not used
285
286   param->fXV = 0.;
287   param->fYV = 0.;
288   param->fZV = 0.;
289   param->fSigmaXV = 0.0050;
290   param->fSigmaYV = 0.0050;
291   param->fSigmaZV = 0.0100;
292
293   param->fVertexCut = 25.;
294
295   param->fMaxDZforPrimTrk = 0.4;
296   param->fMaxDZToUseConstraint = 3.;
297
298   param->fMaxDforV0dghtrForProlongation = 30.;
299   param->fMaxDForProlongation = 40.;//10.;
300   param->fMaxDZForProlongation = 60.;//20.;
301   param->fMinPtForProlongation = 0.120;
302
303   param->fZWindowDeadZone = 2.0;
304   param->fSigmaXDeadZoneHit2 = 0.004/12.;
305   param->fSigmaZDeadZoneHit2 = 0.001/12.;
306   param->fXPassDeadZoneHits = 0.018;
307   
308   return param;
309 }
310 //_____________________________________________________________________________
311 AliITSRecoParam *AliITSRecoParam::GetLowFluxParam() 
312 {
313   //
314   // make default reconstruction  parameters for low  flux env.
315   //
316   AliITSRecoParam *param = new AliITSRecoParam();
317   param->SetVertexer3DDefaults();
318
319   // full use of bads from OCDB
320   param->SetUseBadZonesFromOCDB(kTRUE);
321   param->SetUseSingleBadChannelsFromOCDB(kTRUE);
322   // extended eta acceptance
323   param->SetExtendedEtaAcceptance(kTRUE);
324   // allow to skip layer if no cluster and no bad
325   param->SetAllowProlongationWithEmptyRoad(kTRUE);
326
327
328   param->fMaxSnp = 0.95;
329
330   param->fNSigmaYLayerForRoadY = 4.;
331   param->fNSigmaRoadY = 7.5;
332   param->fNSigmaZLayerForRoadZ = 4.;
333   param->fNSigmaRoadZ = 7.5;
334
335   param->fNSigma2RoadZC = 60.; //7.75^2
336   param->fNSigma2RoadYC = 60.; //7.75^2
337   param->fNSigma2RoadZNonC = 50.; //7.07^2
338   param->fNSigma2RoadYNonC = 50.; //7.07^2
339
340   param->fMaxChi2PerCluster[0] = 11.; //7
341   param->fMaxChi2PerCluster[1] = 12.; //5
342   param->fMaxChi2PerCluster[2] = 12.; //8
343   param->fMaxChi2PerCluster[3] = 5.;  //8
344   param->fMaxChi2PerCluster[4] = 12.; //6.5
345
346   param->fMaxNormChi2NonC[0] = 7.;
347   param->fMaxNormChi2NonC[1] = 8.;
348   param->fMaxNormChi2NonC[2] = 8.;
349   param->fMaxNormChi2NonC[3] = 11.;
350   param->fMaxNormChi2NonC[4] = 14.;
351   param->fMaxNormChi2NonC[5] = 25.;
352
353   param->fMaxNormChi2C[0] = 11.;
354   param->fMaxNormChi2C[1] = 13.;
355   param->fMaxNormChi2C[2] = 15.;
356   param->fMaxNormChi2C[3] = 18.;
357   param->fMaxNormChi2C[4] = 30.;
358   param->fMaxNormChi2C[5] = 35.;
359
360   param->fMaxNormChi2NonCForHypothesis = 7.;
361   
362   param->fMaxChi2 = 35.;
363
364   param->fMaxChi2s[0] = 25.; //40   
365   param->fMaxChi2s[1] = 25.; //40   
366   param->fMaxChi2s[2] = 25.; //40   
367   param->fMaxChi2s[3] = 25.; //40   
368   param->fMaxChi2s[4] = 40.; //40   
369   param->fMaxChi2s[5] = 50.; //40
370
371   param->fMaxRoad = 6.;
372
373   // not used
374   param->fMaxChi2In = 16.;
375    
376   param->fMaxChi2sR[0] = 10.;   
377   param->fMaxChi2sR[1] = 10.;   
378   param->fMaxChi2sR[2] = 10.;   
379   param->fMaxChi2sR[3] = 10.;   
380   param->fMaxChi2sR[4] = 30.;   
381   param->fMaxChi2sR[5] = 40.;   
382
383   param->fChi2PerCluster = 9.;
384   // not used
385
386   param->fXV = 0.;
387   param->fYV = 0.;
388   param->fZV = 0.;
389   param->fSigmaXV = 0.0050;
390   param->fSigmaYV = 0.0050;
391   param->fSigmaZV = 0.0100;
392
393   param->fVertexCut = 25.;
394
395   param->fMaxDZforPrimTrk = 0.4;
396   param->fMaxDZToUseConstraint = 3.;
397
398   param->fMaxDforV0dghtrForProlongation = 30.;
399   param->fMaxDForProlongation = 40.;//10.;
400   param->fMaxDZForProlongation = 60.;//20.;
401   param->fMinPtForProlongation = 0.120;
402
403   param->fZWindowDeadZone = 2.0;
404   param->fSigmaXDeadZoneHit2 = 0.004/12.;
405   param->fSigmaZDeadZoneHit2 = 0.001/12.;
406   param->fXPassDeadZoneHits = 0.018;
407   param->SetNLoopsSA(20);
408   param->fMaxPhiSA = 0.07;
409   param->fMaxLambdaSA = 0.04;
410   return param;
411 }
412 //_____________________________________________________________________________
413 AliITSRecoParam *AliITSRecoParam::GetCosmicTestParam() 
414 {
415   //
416   // make default reconstruction  parameters for cosmics
417   //
418   AliITSRecoParam *param = new AliITSRecoParam();
419
420   // vertexer for cosmics
421   param->SetVertexer(2);
422
423   // find independently ITS SA tracks 
424   param->SetSAUseAllClusters();
425   param->SetOuterStartLayerSA(AliITSgeomTGeo::GetNLayers()-2);
426
427   // larger seach windows for SA (in case of large misalignments)
428   param->SetFactorSAWindowSizes(3.); 
429
430   // alignment data filter
431   param->SetAlignFilterCosmics(kTRUE);
432   param->SetAlignFilterCosmicMergeTracks(kTRUE); 
433   param->SetAlignFilterMinITSPoints(1);
434   param->SetAlignFilterMinITSPointsMerged(3);
435   param->SetAlignFilterOnlyITSSATracks(kTRUE);
436   param->SetAlignFilterOnlyITSTPCTracks(kFALSE);
437   param->SetAlignFilterSkipExtra(kFALSE);
438   param->SetAlignFilterMaxMatchingAngle(0.085/*5deg*/);
439   param->SetAlignFilterMinPt(0.2);          
440   param->SetAlignFilterMaxPt(1.e10);          
441   param->SetAlignFilterFillQANtuples(kTRUE);    
442
443   param->fMaxSnp = 0.95;
444
445   param->fNSigmaYLayerForRoadY = 4.;
446   param->fNSigmaRoadY = 7.5;
447   param->fNSigmaZLayerForRoadZ = 4.;
448   param->fNSigmaRoadZ = 7.5;
449
450   param->fNSigma2RoadZC = 60.; //7.75^2
451   param->fNSigma2RoadYC = 60.; //7.75^2
452   param->fNSigma2RoadZNonC = 50.; //7.07^2
453   param->fNSigma2RoadYNonC = 50.; //7.07^2
454
455   param->fMaxChi2PerCluster[0] = 11.; //7
456   param->fMaxChi2PerCluster[1] = 12.; //5
457   param->fMaxChi2PerCluster[2] = 12.; //8
458   param->fMaxChi2PerCluster[3] = 5.;  //8
459   param->fMaxChi2PerCluster[4] = 12.; //6.5
460
461   param->fMaxNormChi2NonC[0] = 7.;
462   param->fMaxNormChi2NonC[1] = 8.;
463   param->fMaxNormChi2NonC[2] = 8.;
464   param->fMaxNormChi2NonC[3] = 11.;
465   param->fMaxNormChi2NonC[4] = 14.;
466   param->fMaxNormChi2NonC[5] = 25.;
467
468   param->fMaxNormChi2C[0] = 11.;
469   param->fMaxNormChi2C[1] = 13.;
470   param->fMaxNormChi2C[2] = 15.;
471   param->fMaxNormChi2C[3] = 18.;
472   param->fMaxNormChi2C[4] = 30.;
473   param->fMaxNormChi2C[5] = 35.;
474
475   param->fMaxNormChi2NonCForHypothesis = 7.;
476   
477   param->fMaxChi2 = 35.;
478
479   param->fMaxChi2s[0] = 25.; //40   
480   param->fMaxChi2s[1] = 25.; //40   
481   param->fMaxChi2s[2] = 25.; //40   
482   param->fMaxChi2s[3] = 25.; //40   
483   param->fMaxChi2s[4] = 40.; //40   
484   param->fMaxChi2s[5] = 50.; //40
485
486   param->fMaxRoad = 6.;
487
488   // not used
489   param->fMaxChi2In = 16.;
490    
491   param->fMaxChi2sR[0] = 10.;   
492   param->fMaxChi2sR[1] = 10.;   
493   param->fMaxChi2sR[2] = 10.;   
494   param->fMaxChi2sR[3] = 10.;   
495   param->fMaxChi2sR[4] = 30.;   
496   param->fMaxChi2sR[5] = 40.;   
497
498   param->fChi2PerCluster = 9.;
499   // not used
500
501   param->fXV = 0.;
502   param->fYV = 0.;
503   param->fZV = 0.;
504   param->fSigmaXV = 0.0050;
505   param->fSigmaYV = 0.0050;
506   param->fSigmaZV = 0.0100;
507
508   param->fVertexCut = 25.;
509
510   param->fMaxDZforPrimTrk = 0.4;
511   param->fMaxDZToUseConstraint = 3.;
512
513   param->fMaxDforV0dghtrForProlongation = 30.;
514   param->fMaxDForProlongation = 10.;
515   param->fMaxDZForProlongation = 20.;
516   param->fMinPtForProlongation = 0.120;
517
518   param->fZWindowDeadZone = 2.0;
519   param->fSigmaXDeadZoneHit2 = 0.004/12.;
520   param->fSigmaZDeadZoneHit2 = 0.001/12.;
521   param->fXPassDeadZoneHits = 0.018;
522
523   param->fUseSDDCorrectionMaps = kFALSE;
524   
525   return param;
526 }
527 //_____________________________________________________________________________
528 AliITSRecoParam *AliITSRecoParam::GetPlaneEffParam(Int_t i)
529 {
530   //
531   // make special reconstruction parameters for Plane Efficiency study on layer i (0,5)
532   // 
533   // if i=-1, then the evaluation for both pixel layers is tried with the tracklet method
534   //
535  if (i<-1 || i>=AliITSgeomTGeo::kNLayers) {
536     printf("AliITSRecoParam::GetPlaneEffParam: index of ITS Plane nor in the range [0,5] neither =-1\n");
537     printf("returning null pointer");
538     return NULL;
539   }
540   if(i>=0) {  // Method using tracks (remove given plane from tracking)
541     AliITSRecoParam *param;
542     param = GetHighFluxParam();
543     param->SetComputePlaneEff();
544     param->SetLayerToSkip(i);
545     param->SetIPlanePlaneEff(i);
546     // optimized setting for SPD0 (i==0)
547     if (i==0 || i==1) {
548       param->fMinPtPlaneEff = 0.200; // high pt particles
549       param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster
550       param->fRequireClusterInOuterLayerPlaneEff = kTRUE; // cluster on SPD1 must be
551       //param->fOnlyConstraintPlaneEff = kTRUE;
552     }
553     if (i==2 || i==3) {
554       param->fMinPtPlaneEff = 0.200; // high pt particles
555       param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster
556       param->fRequireClusterInOuterLayerPlaneEff = kTRUE;
557       //param->fOnlyConstraintPlaneEff = kTRUE;
558     }
559     if (i==4) {
560       param->fMinPtPlaneEff = 0.200; // high pt particles
561       param->fMaxMissingClustersPlaneEff = 0; // at most 1 layer out of 5 without cluster
562       param->fRequireClusterInOuterLayerPlaneEff = kTRUE;
563       //param->fOnlyConstraintPlaneEff = kTRUE;
564     }
565     if (i==5) {
566       param->fMinPtPlaneEff = 0.200; // high pt particles
567     }
568     //
569     return param;
570   }
571   else if (i==-1) { // Method using tracklets
572     AliITSRecoParam *param;
573     param = GetLowFluxParam();
574     param->SetIPlanePlaneEff(i);
575     param->SetComputePlaneEff(kTRUE,kFALSE);
576     param->SetUseTrackletsPlaneEff(kTRUE);
577     param->SetTrackleterPhiWindow(0.07);
578     param->SetTrackleterZetaWindow(0.4);
579     param->SetTrackleterPhiWindowL1(0.10);
580     param->SetTrackleterZetaWindowL1(0.6);
581     param->SetUpdateOncePerEventPlaneEff(kTRUE);
582     param->SetMinContVtxPlaneEff(3);
583     return param;
584   }
585   else {
586     AliErrorGeneral("AliITSRecoParam",Form("Unrecognised value of i %d\n",i));
587     return 0;
588   }
589 }
590 //_____________________________________________________________________________
591 void AliITSRecoParam::SetLayersParameters() 
592 {
593   //
594   // number of layers and layers spatial resolutions
595   //
596
597   // spatial resolutions of the detectors
598   // y: 12 12 38 38 20 20 micron
599   fSigmaY2[0]=1.44e-6;
600   fSigmaY2[1]=1.44e-6;
601   fSigmaY2[2]=1.444e-5;
602   fSigmaY2[3]=1.444e-5;
603   fSigmaY2[4]=4.0e-6;
604   fSigmaY2[5]=4.0e-6;
605   // z: 120 120 28 28 830 830 micron
606   fSigmaZ2[0]=1.44e-4;
607   fSigmaZ2[1]=1.44e-4;
608   fSigmaZ2[2]=7.84e-6;
609   fSigmaZ2[3]=7.84e-6;
610   fSigmaZ2[4]=6.889e-3;
611   fSigmaZ2[5]=6.889e-3;
612
613   return;
614 }
615 //_____________________________________________________________________________
616 void AliITSRecoParam::PrintParameters() const 
617 {
618   //
619   // print parameters
620   //
621
622   printf("=============================  AliITSRecoParam::PrintParameters ");
623   printf("============================= \n\n");
624   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
625     if(!fLayersToSkip[i]) {
626       printf("ITS Traking: using layer %d\n",i);
627     } else {
628       printf("ITS Traking: skipping layer %d\n",i);
629     }
630   }
631   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
632     if(fUseAmplitudeInfo[i]) {
633       printf("ITS Traking: use amplitude info for layer %d\n",i);
634     } else {
635       printf("ITS Traking: don't use amplitude info for layer %d\n",i);
636     }
637   }
638   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++)
639     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]);
640
641
642   Dump();
643
644   return;
645 }