]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSRecoParam.cxx
Stuff from aldaqdqm09
[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 fVtxr3DPileupAlgo(1),
79 fMaxSnp(1.),
80 fNSigmaYLayerForRoadY(0),
81 fNSigmaRoadY(0),
82 fNSigmaZLayerForRoadZ(0),
83 fNSigmaRoadZ(0),
84 fNSigma2RoadZC(0),
85 fNSigma2RoadYC(0),
86 fNSigma2RoadZNonC(0),
87 fNSigma2RoadYNonC(0),
88 fRoadMisal(0),
89 fMaxNormChi2NonCForHypothesis(0),
90 fMaxChi2(0),
91 fMaxRoad(0),
92 fMaxChi2In(0),
93 fChi2PerCluster(0),
94 fXV(0), 
95 fYV(0),
96 fZV(0),
97 fSigmaXV(0),
98 fSigmaYV(0),
99 fSigmaZV(0),
100 fVertexCut(0),
101 fMaxDZforPrimTrk(0),
102 fMaxDZToUseConstraint(0), 
103 fMaxDforV0dghtrForProlongation(0),
104 fMaxDForProlongation(0),
105 fMaxDZForProlongation(0),
106 fMinPtForProlongation(0),
107 fAddVirtualClustersInDeadZone(kFALSE),
108 fZWindowDeadZone(0),
109 fSigmaXDeadZoneHit2(0),
110 fSigmaZDeadZoneHit2(0),
111 fXPassDeadZoneHits(0),
112 fUseTGeoInTracker(3),
113 fStepSizeTGeo(5.),
114 fAllowSharedClusters(kTRUE),
115 fClusterErrorsParam(1),
116 fComputePlaneEff(kFALSE),
117 fHistoPlaneEff(kFALSE),
118 fUseTrackletsPlaneEff(kFALSE),
119 fMCTrackletsPlaneEff(kFALSE),
120 fBkgTrackletsPlaneEff(kFALSE),
121 fTrackleterPhiWindowL1(0.10),
122 fTrackleterPhiWindowL2(0.07),
123 fTrackleterZetaWindowL1(0.6),
124 fTrackleterZetaWindowL2(0.4),
125 fUpdateOncePerEventPlaneEff(kTRUE),
126 fMinContVtxPlaneEff(3),
127 fIPlanePlaneEff(0),
128 fReadPlaneEffFromOCDB(kFALSE),
129 fMinPtPlaneEff(0),
130 fMaxMissingClustersPlaneEff(0),
131 fRequireClusterInOuterLayerPlaneEff(kFALSE),
132 fRequireClusterInInnerLayerPlaneEff(kFALSE),
133 fOnlyConstraintPlaneEff(kFALSE),
134 fExtendedEtaAcceptance(kFALSE),
135 fUseBadZonesFromOCDB(kTRUE),
136 fUseSingleBadChannelsFromOCDB(kFALSE),
137 fMinFractionOfBadInRoad(0),
138 fAllowProlongationWithEmptyRoad(kFALSE),
139 fInwardFlagSA(kFALSE),
140 fOuterStartLayerSA(2),
141 fInnerStartLayerSA(3),
142 fMinNPointsSA(3),
143 fFactorSAWindowSizes(1.),
144 fNLoopsSA(33),
145 fMinPhiSA(0.002),
146 fMaxPhiSA(0.0145),
147 fMinLambdaSA(0.003),
148 fMaxLambdaSA(0.008),
149 fMinClusterChargeSA(0.),
150 fSAOnePointTracks(kFALSE),
151 fSAUseAllClusters(kFALSE),
152 fFindV0s(kTRUE),
153 fStoreLikeSignV0s(kFALSE),
154 fUseUnfoldingInClusterFinderSPD(kFALSE),
155 fUseUnfoldingInClusterFinderSDD(kTRUE),
156 fUseUnfoldingInClusterFinderSSD(kFALSE),
157 fUseBadChannelsInClusterFinderSSD(kFALSE),
158 fUseSDDCorrectionMaps(kTRUE),
159 fUseSDDClusterSizeSelection(kFALSE),
160 fMinClusterChargeSDD(0.),
161 fUseChargeMatchingInClusterFinderSSD(kTRUE),
162 fTrackleterPhiWindow(0.08),
163 fTrackleterThetaWindow(0.025),
164 fTrackleterPhiShift(0.0045),
165 fTrackleterRemoveClustersFromOverlaps(kFALSE),
166 fTrackleterPhiOverlapCut(0.005),
167 fTrackleterZetaOverlapCut(0.05),
168 fUseCosmicRunShiftsSSD(kFALSE),
169 fSPDRemoveNoisyFlag(kTRUE),
170 fSPDRemoveDeadFlag(kTRUE),
171 fVertexerFastSmearX(0.005),
172 fVertexerFastSmearY(0.005),
173 fVertexerFastSmearZ(0.01),
174 fAlignFilterCosmics(kFALSE),
175 fAlignFilterCosmicMergeTracks(kTRUE),
176 fAlignFilterMinITSPoints(4),
177 fAlignFilterMinITSPointsMerged(4),
178 fAlignFilterOnlyITSSATracks(kTRUE),
179 fAlignFilterOnlyITSTPCTracks(kFALSE),
180 fAlignFilterSkipExtra(kFALSE),
181 fAlignFilterMaxMatchingAngle(0.085),
182 fAlignFilterMinAngleWrtModulePlanes(0.52),
183 fAlignFilterMinPt(0.),
184 fAlignFilterMaxPt(1.e10),
185 fAlignFilterFillQANtuples(kTRUE),
186 fESDV0Params(NULL)
187 {
188   //
189   // constructor
190   //
191   SetName("ITS");
192   SetTitle("ITS");
193
194   SetLayersParameters();
195   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) fLayersToSkip[i]=0;
196   SetUseTGeoInTracker(3);
197   SetStepSizeTGeo(5.);
198   SetAllowSharedClusters(kTRUE);
199   SetFindV0s(kTRUE);
200   SetAddVirtualClustersInDeadZone(kFALSE);
201   SetUseAmplitudeInfo(kTRUE);
202   SetClusterErrorsParam(1);
203   SetClusterMisalError(0.);
204   SetClusterMisalErrorBOn(0.);
205   SetVertexer3DDefaults();
206
207   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) fAlignFilterUseLayer[i]=kTRUE;
208   fESDV0Params = new AliESDV0Params();
209   
210   fESDV0Params->SetMaxDist0(0.1);
211   fESDV0Params->SetMaxDist1(0.1);
212   fESDV0Params->SetMaxDist(1.);
213   fESDV0Params->SetMinPointAngle(0.85);
214   fESDV0Params->SetMinPointAngle2(0.99);
215   fESDV0Params->SetMinR(0.5);
216   fESDV0Params->SetMaxR(220.);
217   fESDV0Params->SetCausality0Cut(0.19);
218   fESDV0Params->SetLikelihood01Cut(0.45);
219   fESDV0Params->SetLikelihood1Cut(0.5);  
220   fESDV0Params->SetCombinedCut(0.55);
221   fESDV0Params->SetMinClFullTrk(5.0);
222   fESDV0Params->SetMinTgl0(1.05);
223   fESDV0Params->SetMinTPCdensity(0.6);
224   fESDV0Params->SetMinTgl1(1.1);
225   fESDV0Params->SetMinTgl2(1.0);
226   fESDV0Params->SetMinchi2before0(16.);
227   fESDV0Params->SetMinchi2before1(16.);
228   fESDV0Params->SetMinchi2after0(16.);
229   fESDV0Params->SetMinchi2after1(16.);
230   fESDV0Params->SetAddchi2SharedCl(18.);
231   fESDV0Params->SetAddchi2NegCl0(25.);
232   fESDV0Params->SetAddchi2NegCl1(30.);
233   fESDV0Params->SetSigp0Par0(0.0001);
234   fESDV0Params->SetSigp0Par1(0.001);
235   fESDV0Params->SetSigp0Par2(0.1);
236   fESDV0Params->SetSigpPar0(0.5);
237   fESDV0Params->SetSigpPar1(0.6);
238   fESDV0Params->SetSigpPar2(0.4);
239   fESDV0Params->SetStreamLevel(0);
240   fESDV0Params->SetChi2KF(100);
241   fESDV0Params->SetRobustChi2KF(100);
242   
243 }
244 //_____________________________________________________________________________
245 AliITSRecoParam::~AliITSRecoParam() 
246 {
247   //
248   // destructor
249   //  
250   if(fESDV0Params){
251     delete fESDV0Params;
252     fESDV0Params=NULL;
253   }
254 }
255 //_____________________________________________________________________________
256 AliITSRecoParam *AliITSRecoParam::GetHighFluxParam() 
257 {
258   //
259   // make default reconstruction  parameters for hig  flux env.
260   //
261   AliITSRecoParam *param = new AliITSRecoParam();
262   param->SetVertexerZ();
263
264   // use of bads from OCDB
265   param->SetUseBadZonesFromOCDB(kTRUE);
266   param->SetUseSingleBadChannelsFromOCDB(kFALSE);
267   // extended eta acceptance
268   param->SetExtendedEtaAcceptance(kFALSE);
269   // allow to skip layer if no cluster and no bad
270   param->SetAllowProlongationWithEmptyRoad(kFALSE);
271
272
273   param->fMaxSnp = 0.95;
274
275   param->fNSigmaYLayerForRoadY = 4.;
276   param->fNSigmaRoadY = 7.5;
277   param->fNSigmaZLayerForRoadZ = 4.;
278   param->fNSigmaRoadZ = 7.5;
279
280   param->fNSigma2RoadZC = 60.; //7.75^2
281   param->fNSigma2RoadYC = 60.; //7.75^2
282   param->fNSigma2RoadZNonC = 50.; //7.07^2
283   param->fNSigma2RoadYNonC = 50.; //7.07^2
284
285   param->fMaxChi2PerCluster[0] = 11.; //7
286   param->fMaxChi2PerCluster[1] = 12.; //5
287   param->fMaxChi2PerCluster[2] = 12.; //8
288   param->fMaxChi2PerCluster[3] = 5.;  //8
289   param->fMaxChi2PerCluster[4] = 12.; //6.5
290
291   param->fMaxNormChi2NonC[0] = 7.;
292   param->fMaxNormChi2NonC[1] = 8.;
293   param->fMaxNormChi2NonC[2] = 8.;
294   param->fMaxNormChi2NonC[3] = 11.;
295   param->fMaxNormChi2NonC[4] = 14.;
296   param->fMaxNormChi2NonC[5] = 25.;
297
298   param->fMaxNormChi2C[0] = 11.;
299   param->fMaxNormChi2C[1] = 13.;
300   param->fMaxNormChi2C[2] = 15.;
301   param->fMaxNormChi2C[3] = 18.;
302   param->fMaxNormChi2C[4] = 30.;
303   param->fMaxNormChi2C[5] = 35.;
304
305   param->fMaxNormChi2NonCForHypothesis = 7.;
306   
307   param->fMaxChi2 = 35.;
308
309   param->fMaxChi2s[0] = 25.; //40   
310   param->fMaxChi2s[1] = 25.; //40   
311   param->fMaxChi2s[2] = 25.; //40   
312   param->fMaxChi2s[3] = 25.; //40   
313   param->fMaxChi2s[4] = 40.; //40   
314   param->fMaxChi2s[5] = 50.; //40
315
316   param->fMaxRoad = 6.;
317
318   // not used
319   param->fMaxChi2In = 16.;
320    
321   param->fMaxChi2sR[0] = 10.;   
322   param->fMaxChi2sR[1] = 10.;   
323   param->fMaxChi2sR[2] = 10.;   
324   param->fMaxChi2sR[3] = 10.;   
325   param->fMaxChi2sR[4] = 30.;   
326   param->fMaxChi2sR[5] = 40.;   
327
328   param->fChi2PerCluster = 9.;
329   // not used
330
331   param->fXV = 0.;
332   param->fYV = 0.;
333   param->fZV = 0.;
334   param->fSigmaXV = 0.0050;
335   param->fSigmaYV = 0.0050;
336   param->fSigmaZV = 0.0100;
337
338   param->fVertexCut = 25.;
339
340   param->fMaxDZforPrimTrk = 0.4;
341   param->fMaxDZToUseConstraint = 3.;
342
343   param->fMaxDforV0dghtrForProlongation = 30.;
344   param->fMaxDForProlongation = 40.;//10.;
345   param->fMaxDZForProlongation = 60.;//20.;
346   param->fMinPtForProlongation = 0.120;
347
348   param->fZWindowDeadZone = 2.0;
349   param->fSigmaXDeadZoneHit2 = 0.004/12.;
350   param->fSigmaZDeadZoneHit2 = 0.001/12.;
351   param->fXPassDeadZoneHits = 0.018;
352   
353   return param;
354 }
355 //_____________________________________________________________________________
356 AliITSRecoParam *AliITSRecoParam::GetLowFluxParam() 
357 {
358   //
359   // make default reconstruction  parameters for low  flux env.
360   //
361   AliITSRecoParam *param = new AliITSRecoParam();
362   param->SetVertexer3DDefaults();
363
364   // full use of bads from OCDB
365   param->SetUseBadZonesFromOCDB(kTRUE);
366   param->SetUseSingleBadChannelsFromOCDB(kTRUE);
367   // extended eta acceptance
368   param->SetExtendedEtaAcceptance(kTRUE);
369   // allow to skip layer if no cluster and no bad
370   param->SetAllowProlongationWithEmptyRoad(kTRUE);
371
372
373   param->fMaxSnp = 0.95;
374
375   param->fNSigmaYLayerForRoadY = 4.;
376   param->fNSigmaRoadY = 7.5;
377   param->fNSigmaZLayerForRoadZ = 4.;
378   param->fNSigmaRoadZ = 7.5;
379
380   param->fNSigma2RoadZC = 60.; //7.75^2
381   param->fNSigma2RoadYC = 60.; //7.75^2
382   param->fNSigma2RoadZNonC = 50.; //7.07^2
383   param->fNSigma2RoadYNonC = 50.; //7.07^2
384
385   param->fMaxChi2PerCluster[0] = 11.; //7
386   param->fMaxChi2PerCluster[1] = 12.; //5
387   param->fMaxChi2PerCluster[2] = 12.; //8
388   param->fMaxChi2PerCluster[3] = 5.;  //8
389   param->fMaxChi2PerCluster[4] = 12.; //6.5
390
391   param->fMaxNormChi2NonC[0] = 7.;
392   param->fMaxNormChi2NonC[1] = 8.;
393   param->fMaxNormChi2NonC[2] = 8.;
394   param->fMaxNormChi2NonC[3] = 11.;
395   param->fMaxNormChi2NonC[4] = 14.;
396   param->fMaxNormChi2NonC[5] = 25.;
397
398   param->fMaxNormChi2C[0] = 11.;
399   param->fMaxNormChi2C[1] = 13.;
400   param->fMaxNormChi2C[2] = 15.;
401   param->fMaxNormChi2C[3] = 18.;
402   param->fMaxNormChi2C[4] = 30.;
403   param->fMaxNormChi2C[5] = 35.;
404
405   param->fMaxNormChi2NonCForHypothesis = 7.;
406   
407   param->fMaxChi2 = 35.;
408
409   param->fMaxChi2s[0] = 25.; //40   
410   param->fMaxChi2s[1] = 25.; //40   
411   param->fMaxChi2s[2] = 25.; //40   
412   param->fMaxChi2s[3] = 25.; //40   
413   param->fMaxChi2s[4] = 40.; //40   
414   param->fMaxChi2s[5] = 50.; //40
415
416   param->fMaxRoad = 6.;
417
418   // not used
419   param->fMaxChi2In = 16.;
420    
421   param->fMaxChi2sR[0] = 10.;   
422   param->fMaxChi2sR[1] = 10.;   
423   param->fMaxChi2sR[2] = 10.;   
424   param->fMaxChi2sR[3] = 10.;   
425   param->fMaxChi2sR[4] = 30.;   
426   param->fMaxChi2sR[5] = 40.;   
427
428   param->fChi2PerCluster = 9.;
429   // not used
430
431   param->fXV = 0.;
432   param->fYV = 0.;
433   param->fZV = 0.;
434   param->fSigmaXV = 0.0050;
435   param->fSigmaYV = 0.0050;
436   param->fSigmaZV = 0.0100;
437
438   param->fVertexCut = 25.;
439
440   param->fMaxDZforPrimTrk = 0.4;
441   param->fMaxDZToUseConstraint = 3.;
442
443   param->fMaxDforV0dghtrForProlongation = 30.;
444   param->fMaxDForProlongation = 40.;//10.;
445   param->fMaxDZForProlongation = 60.;//20.;
446   param->fMinPtForProlongation = 0.120;
447
448   param->fZWindowDeadZone = 2.0;
449   param->fSigmaXDeadZoneHit2 = 0.004/12.;
450   param->fSigmaZDeadZoneHit2 = 0.001/12.;
451   param->fXPassDeadZoneHits = 0.018;
452   param->SetNLoopsSA(20);
453   param->fMaxPhiSA = 0.07;
454   param->fMaxLambdaSA = 0.04;
455   return param;
456 }
457 //_____________________________________________________________________________
458 AliITSRecoParam *AliITSRecoParam::GetCosmicTestParam() 
459 {
460   //
461   // make default reconstruction  parameters for cosmics
462   //
463   AliITSRecoParam *param = new AliITSRecoParam();
464
465   // vertexer for cosmics
466   param->SetVertexer(2);
467
468   param->SetClusterErrorsParam(2);
469   param->SetFindV0s(kFALSE);
470   param->SetAddVirtualClustersInDeadZone(kFALSE);
471   param->SetUseAmplitudeInfo(kFALSE);
472
473   // full use of bads from OCDB
474   param->SetUseBadZonesFromOCDB(kTRUE);
475   param->SetUseSingleBadChannelsFromOCDB(kTRUE);
476
477   // find independently ITS SA tracks 
478   param->SetSAUseAllClusters();
479   param->SetOuterStartLayerSA(AliITSgeomTGeo::GetNLayers()-2);
480
481   //****** COSMICS 2009 (same as COSMICS 2008) *********************
482
483   // to maximize efficiency
484   param->SetAllowProlongationWithEmptyRoad();
485
486   // larger seach windows for SA (in case of large misalignments)
487   param->SetNLoopsSA(33);
488   param->SetFactorSAWindowSizes(20);
489
490   // additional error due to misal (B off)
491   param->SetClusterMisalErrorY(1.0,1.0,1.0,1.0,1.0,1.0); // [cm]
492   param->SetClusterMisalErrorZ(1.0,1.0,1.0,1.0,1.0,1.0); // [cm]
493   // additional error due to misal (B on)
494   param->SetClusterMisalErrorYBOn(0.0,0.0,0.1,0.1,0.1,0.1); // [cm]
495   param->SetClusterMisalErrorZBOn(0.1,0.1,0.1,0.1,0.1,0.1); // [cm]
496
497
498   // SDD configuration 
499   param->fUseSDDCorrectionMaps = kFALSE;
500   param->fUseSDDClusterSizeSelection=kTRUE;
501   param->fMinClusterChargeSDD=30.;
502   
503
504   // alignment data filter
505   param->SetAlignFilterCosmics(kTRUE);
506   param->SetAlignFilterCosmicMergeTracks(kTRUE); 
507   param->SetAlignFilterMinITSPoints(1);
508   param->SetAlignFilterMinITSPointsMerged(3);
509   param->SetAlignFilterOnlyITSSATracks(kTRUE);
510   param->SetAlignFilterOnlyITSTPCTracks(kFALSE);
511   param->SetAlignFilterSkipExtra(kFALSE);
512   param->SetAlignFilterMaxMatchingAngle(0.085/*5deg*/);
513   param->SetAlignFilterMinPt(0.2);          
514   param->SetAlignFilterMaxPt(1.e10);          
515   param->SetAlignFilterFillQANtuples(kTRUE);    
516
517   //******************************************************************
518
519   param->fMaxSnp = 0.95;
520
521   param->fNSigmaYLayerForRoadY = 4.;
522   param->fNSigmaRoadY = 7.5;
523   param->fNSigmaZLayerForRoadZ = 4.;
524   param->fNSigmaRoadZ = 7.5;
525
526   param->fNSigma2RoadZC = 60.; //7.75^2
527   param->fNSigma2RoadYC = 60.; //7.75^2
528   param->fNSigma2RoadZNonC = 50.; //7.07^2
529   param->fNSigma2RoadYNonC = 50.; //7.07^2
530
531   param->fMaxChi2PerCluster[0] = 11.; //7
532   param->fMaxChi2PerCluster[1] = 12.; //5
533   param->fMaxChi2PerCluster[2] = 12.; //8
534   param->fMaxChi2PerCluster[3] = 5.;  //8
535   param->fMaxChi2PerCluster[4] = 12.; //6.5
536
537   param->fMaxNormChi2NonC[0] = 7.;
538   param->fMaxNormChi2NonC[1] = 8.;
539   param->fMaxNormChi2NonC[2] = 8.;
540   param->fMaxNormChi2NonC[3] = 11.;
541   param->fMaxNormChi2NonC[4] = 14.;
542   param->fMaxNormChi2NonC[5] = 25.;
543
544   param->fMaxNormChi2C[0] = 11.;
545   param->fMaxNormChi2C[1] = 13.;
546   param->fMaxNormChi2C[2] = 15.;
547   param->fMaxNormChi2C[3] = 18.;
548   param->fMaxNormChi2C[4] = 30.;
549   param->fMaxNormChi2C[5] = 35.;
550
551   param->fMaxNormChi2NonCForHypothesis = 7.;
552   
553   param->fMaxChi2 = 35.;
554
555   param->fMaxChi2s[0] = 25.; //40   
556   param->fMaxChi2s[1] = 25.; //40   
557   param->fMaxChi2s[2] = 25.; //40   
558   param->fMaxChi2s[3] = 25.; //40   
559   param->fMaxChi2s[4] = 40.; //40   
560   param->fMaxChi2s[5] = 50.; //40
561
562   param->fMaxRoad = 6.;
563
564   // not used
565   param->fMaxChi2In = 16.;
566    
567   param->fMaxChi2sR[0] = 10.;   
568   param->fMaxChi2sR[1] = 10.;   
569   param->fMaxChi2sR[2] = 10.;   
570   param->fMaxChi2sR[3] = 10.;   
571   param->fMaxChi2sR[4] = 30.;   
572   param->fMaxChi2sR[5] = 40.;   
573
574   param->fChi2PerCluster = 9.;
575   // not used
576
577   param->fXV = 0.;
578   param->fYV = 0.;
579   param->fZV = 0.;
580   param->fSigmaXV = 0.0050;
581   param->fSigmaYV = 0.0050;
582   param->fSigmaZV = 0.0100;
583
584   param->fVertexCut = 25.;
585
586   param->fMaxDZforPrimTrk = 0.4;
587   param->fMaxDZToUseConstraint = 3.;
588
589   param->fMaxDforV0dghtrForProlongation = 30.;
590   param->fMaxDForProlongation = 10.;
591   param->fMaxDZForProlongation = 20.;
592   param->fMinPtForProlongation = 0.120;
593
594   param->fZWindowDeadZone = 2.0;
595   param->fSigmaXDeadZoneHit2 = 0.004/12.;
596   param->fSigmaZDeadZoneHit2 = 0.001/12.;
597   param->fXPassDeadZoneHits = 0.018;
598
599   return param;
600 }
601 //_____________________________________________________________________________
602 AliITSRecoParam *AliITSRecoParam::GetPlaneEffParam(Int_t i)
603 {
604   //
605   // make special reconstruction parameters for Plane Efficiency study on layer i (0,5)
606   // 
607   // if i=-1, then the evaluation for both pixel layers is tried with the tracklet method
608   //
609  if (i<-1 || i>=AliITSgeomTGeo::kNLayers) {
610     printf("AliITSRecoParam::GetPlaneEffParam: index of ITS Plane nor in the range [0,5] neither =-1\n");
611     printf("returning null pointer");
612     return NULL;
613   }
614   if(i>=0) {  // Method using tracks (remove given plane from tracking)
615     AliITSRecoParam *param;
616     param = GetHighFluxParam();
617     param->SetComputePlaneEff();
618     param->SetLayerToSkip(i);
619     param->SetIPlanePlaneEff(i);
620     // optimized setting for SPD0 (i==0)
621     if (i==0 || i==1) {
622       param->fMinPtPlaneEff = 0.200; // high pt particles
623       param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster
624       param->fRequireClusterInOuterLayerPlaneEff = kTRUE; // cluster on SPD1 must be
625       //param->fOnlyConstraintPlaneEff = kTRUE;
626     }
627     if (i==2 || i==3) {
628       param->fMinPtPlaneEff = 0.200; // high pt particles
629       param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster
630       param->fRequireClusterInOuterLayerPlaneEff = kTRUE;
631       //param->fOnlyConstraintPlaneEff = kTRUE;
632     }
633     if (i==4) {
634       param->fMinPtPlaneEff = 0.200; // high pt particles
635       param->fMaxMissingClustersPlaneEff = 0; // at most 1 layer out of 5 without cluster
636       param->fRequireClusterInOuterLayerPlaneEff = kTRUE;
637       //param->fOnlyConstraintPlaneEff = kTRUE;
638     }
639     if (i==5) {
640       param->fMinPtPlaneEff = 0.200; // high pt particles
641     }
642     //
643     return param;
644   }
645   else if (i==-1) { // Method using tracklets
646     AliITSRecoParam *param;
647     param = GetLowFluxParam();
648     param->SetIPlanePlaneEff(i);
649     param->SetComputePlaneEff(kTRUE,kFALSE);
650     param->SetUseTrackletsPlaneEff(kTRUE);
651     param->SetTrackleterPhiWindowL2(0.07);
652     param->SetTrackleterZetaWindowL2(0.4);
653     param->SetTrackleterPhiWindowL1(0.10);
654     param->SetTrackleterZetaWindowL1(0.6);
655     param->SetUpdateOncePerEventPlaneEff(kTRUE);
656     param->SetMinContVtxPlaneEff(3);
657     return param;
658   }
659   else {
660     AliErrorGeneral("AliITSRecoParam",Form("Unrecognised value of i %d\n",i));
661     return 0;
662   }
663 }
664 //_____________________________________________________________________________
665 void AliITSRecoParam::SetLayersParameters() 
666 {
667   //
668   // number of layers and layers spatial resolutions
669   //
670
671   // spatial resolutions of the detectors
672   // y: 12 12 38 38 20 20 micron
673   fSigmaY2[0]=1.44e-6;
674   fSigmaY2[1]=1.44e-6;
675   fSigmaY2[2]=1.444e-5;
676   fSigmaY2[3]=1.444e-5;
677   fSigmaY2[4]=4.0e-6;
678   fSigmaY2[5]=4.0e-6;
679   // z: 120 120 28 28 830 830 micron
680   fSigmaZ2[0]=1.44e-4;
681   fSigmaZ2[1]=1.44e-4;
682   fSigmaZ2[2]=7.84e-6;
683   fSigmaZ2[3]=7.84e-6;
684   fSigmaZ2[4]=6.889e-3;
685   fSigmaZ2[5]=6.889e-3;
686
687   return;
688 }
689 //_____________________________________________________________________________
690 void AliITSRecoParam::PrintParameters() const 
691 {
692   //
693   // print parameters
694   //
695
696   printf("=============================  AliITSRecoParam::PrintParameters ");
697   printf("============================= \n\n");
698   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
699     if(!fLayersToSkip[i]) {
700       printf("ITS Traking: using layer %d\n",i);
701     } else {
702       printf("ITS Traking: skipping layer %d\n",i);
703     }
704   }
705   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
706     if(fUseAmplitudeInfo[i]) {
707       printf("ITS Traking: use amplitude info for layer %d\n",i);
708     } else {
709       printf("ITS Traking: don't use amplitude info for layer %d\n",i);
710     }
711   }
712   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++)
713     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]);
714
715
716   Dump();
717
718   return;
719 }