Changes for task Optimization of V0 finder (2079) + plus fix for the bug number 47412...
[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.5;
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->SetMinPABestConst(0.9999);
218   fESDV0Params->SetMaxRBestConst(10.);
219   fESDV0Params->SetCausality0Cut(0.19);
220   fESDV0Params->SetLikelihood01Cut(0.45);
221   fESDV0Params->SetLikelihood1Cut(0.5);  
222   fESDV0Params->SetCombinedCut(0.55);
223   fESDV0Params->SetMinClFullTrk(5.0);
224   fESDV0Params->SetMinTgl0(1.05);
225   fESDV0Params->SetMinRTgl0(40.0);
226
227   fESDV0Params->SetMinNormDistForbTgl0(3.0);
228   fESDV0Params->SetMinClForb0(4.5);
229   fESDV0Params->SetMinNormDistForb1(3.0);
230   fESDV0Params->SetMinNormDistForb2(2.0);
231   fESDV0Params->SetMinNormDistForb3(1.0);
232   fESDV0Params->SetMinNormDistForb4(4.0);
233   fESDV0Params->SetMinNormDistForb5(5.0);
234
235   fESDV0Params->SetMinRTPCdensity(40.);
236   fESDV0Params->SetMaxRTPCdensity0(110.);
237   fESDV0Params->SetMaxRTPCdensity10(120.);
238   fESDV0Params->SetMaxRTPCdensity20(130.);
239   fESDV0Params->SetMaxRTPCdensity30(140.);
240
241   fESDV0Params->SetMinTPCdensity(0.6);
242   fESDV0Params->SetMinTgl1(1.1);
243   fESDV0Params->SetMinTgl2(1.0);
244   fESDV0Params->SetMinchi2before0(16.);
245   fESDV0Params->SetMinchi2before1(16.);
246   fESDV0Params->SetMinchi2after0(16.);
247   fESDV0Params->SetMinchi2after1(16.);
248   fESDV0Params->SetAddchi2SharedCl(18.);
249   fESDV0Params->SetAddchi2NegCl0(25.);
250   fESDV0Params->SetAddchi2NegCl1(30.);
251   fESDV0Params->SetSigp0Par0(0.0001);
252   fESDV0Params->SetSigp0Par1(0.001);
253   fESDV0Params->SetSigp0Par2(0.1);
254   fESDV0Params->SetSigpPar0(0.5);
255   fESDV0Params->SetSigpPar1(0.6);
256   fESDV0Params->SetSigpPar2(0.4);
257   fESDV0Params->SetMaxDcaLh0(0.5);
258   fESDV0Params->SetStreamLevel(0);
259   fESDV0Params->SetChi2KF(100);
260   fESDV0Params->SetRobustChi2KF(100);
261   
262 }
263 //_____________________________________________________________________________
264 AliITSRecoParam::~AliITSRecoParam() 
265 {
266   //
267   // destructor
268   //  
269   if(fESDV0Params){
270     delete fESDV0Params;
271     fESDV0Params=NULL;
272   }
273 }
274 //_____________________________________________________________________________
275 AliITSRecoParam *AliITSRecoParam::GetHighFluxParam() 
276 {
277   //
278   // make default reconstruction  parameters for hig  flux env.
279   //
280   AliITSRecoParam *param = new AliITSRecoParam();
281   param->SetVertexerZ();
282
283   // use of bads from OCDB
284   param->SetUseBadZonesFromOCDB(kTRUE);
285   param->SetUseSingleBadChannelsFromOCDB(kFALSE);
286   // extended eta acceptance
287   param->SetExtendedEtaAcceptance(kFALSE);
288   // allow to skip layer if no cluster and no bad
289   param->SetAllowProlongationWithEmptyRoad(kFALSE);
290
291
292   param->fMaxSnp = 0.95;
293
294   param->fNSigmaYLayerForRoadY = 4.;
295   param->fNSigmaRoadY = 7.5;
296   param->fNSigmaZLayerForRoadZ = 4.;
297   param->fNSigmaRoadZ = 7.5;
298
299   param->fNSigma2RoadZC = 60.; //7.75^2
300   param->fNSigma2RoadYC = 60.; //7.75^2
301   param->fNSigma2RoadZNonC = 50.; //7.07^2
302   param->fNSigma2RoadYNonC = 50.; //7.07^2
303
304   param->fMaxChi2PerCluster[0] = 11.; //7
305   param->fMaxChi2PerCluster[1] = 12.; //5
306   param->fMaxChi2PerCluster[2] = 12.; //8
307   param->fMaxChi2PerCluster[3] = 5.;  //8
308   param->fMaxChi2PerCluster[4] = 12.; //6.5
309
310   param->fMaxNormChi2NonC[0] = 7.;
311   param->fMaxNormChi2NonC[1] = 8.;
312   param->fMaxNormChi2NonC[2] = 8.;
313   param->fMaxNormChi2NonC[3] = 11.;
314   param->fMaxNormChi2NonC[4] = 14.;
315   param->fMaxNormChi2NonC[5] = 25.;
316
317   param->fMaxNormChi2C[0] = 11.;
318   param->fMaxNormChi2C[1] = 13.;
319   param->fMaxNormChi2C[2] = 15.;
320   param->fMaxNormChi2C[3] = 18.;
321   param->fMaxNormChi2C[4] = 30.;
322   param->fMaxNormChi2C[5] = 35.;
323
324   param->fMaxNormChi2NonCForHypothesis = 7.;
325   
326   param->fMaxChi2 = 35.;
327
328   param->fMaxChi2s[0] = 25.; //40   
329   param->fMaxChi2s[1] = 25.; //40   
330   param->fMaxChi2s[2] = 25.; //40   
331   param->fMaxChi2s[3] = 25.; //40   
332   param->fMaxChi2s[4] = 40.; //40   
333   param->fMaxChi2s[5] = 50.; //40
334
335   param->fMaxRoad = 6.;
336
337   // not used
338   param->fMaxChi2In = 16.;
339    
340   param->fMaxChi2sR[0] = 10.;   
341   param->fMaxChi2sR[1] = 10.;   
342   param->fMaxChi2sR[2] = 10.;   
343   param->fMaxChi2sR[3] = 10.;   
344   param->fMaxChi2sR[4] = 30.;   
345   param->fMaxChi2sR[5] = 40.;   
346
347   param->fChi2PerCluster = 9.;
348   // not used
349
350   param->fXV = 0.;
351   param->fYV = 0.;
352   param->fZV = 0.;
353   param->fSigmaXV = 0.0050;
354   param->fSigmaYV = 0.0050;
355   param->fSigmaZV = 0.0100;
356
357   param->fVertexCut = 25.;
358
359   param->fMaxDZforPrimTrk = 0.4;
360   param->fMaxDZToUseConstraint = 3.;
361
362   param->fMaxDforV0dghtrForProlongation = 30.;
363   param->fMaxDForProlongation = 40.;//10.;
364   param->fMaxDZForProlongation = 60.;//20.;
365   param->fMinPtForProlongation = 0.120;
366
367   param->fZWindowDeadZone = 2.0;
368   param->fSigmaXDeadZoneHit2 = 0.004/12.;
369   param->fSigmaZDeadZoneHit2 = 0.001/12.;
370   param->fXPassDeadZoneHits = 0.018;
371
372
373   
374   return param;
375 }
376 //_____________________________________________________________________________
377 AliITSRecoParam *AliITSRecoParam::GetLowFluxParam() 
378 {
379   //
380   // make default reconstruction  parameters for low  flux env.
381   //
382   AliITSRecoParam *param = new AliITSRecoParam();
383   param->SetVertexer3DDefaults();
384
385   // full use of bads from OCDB
386   param->SetUseBadZonesFromOCDB(kTRUE);
387   param->SetUseSingleBadChannelsFromOCDB(kTRUE);
388   // extended eta acceptance
389   param->SetExtendedEtaAcceptance(kTRUE);
390   // allow to skip layer if no cluster and no bad
391   param->SetAllowProlongationWithEmptyRoad(kTRUE);
392
393
394   param->fMaxSnp = 0.95;
395
396   param->fNSigmaYLayerForRoadY = 4.;
397   param->fNSigmaRoadY = 7.5;
398   param->fNSigmaZLayerForRoadZ = 4.;
399   param->fNSigmaRoadZ = 7.5;
400
401   param->fNSigma2RoadZC = 60.; //7.75^2
402   param->fNSigma2RoadYC = 60.; //7.75^2
403   param->fNSigma2RoadZNonC = 50.; //7.07^2
404   param->fNSigma2RoadYNonC = 50.; //7.07^2
405
406   param->fMaxChi2PerCluster[0] = 11.; //7
407   param->fMaxChi2PerCluster[1] = 12.; //5
408   param->fMaxChi2PerCluster[2] = 12.; //8
409   param->fMaxChi2PerCluster[3] = 5.;  //8
410   param->fMaxChi2PerCluster[4] = 12.; //6.5
411
412   param->fMaxNormChi2NonC[0] = 7.;
413   param->fMaxNormChi2NonC[1] = 8.;
414   param->fMaxNormChi2NonC[2] = 8.;
415   param->fMaxNormChi2NonC[3] = 11.;
416   param->fMaxNormChi2NonC[4] = 14.;
417   param->fMaxNormChi2NonC[5] = 25.;
418
419   param->fMaxNormChi2C[0] = 11.;
420   param->fMaxNormChi2C[1] = 13.;
421   param->fMaxNormChi2C[2] = 15.;
422   param->fMaxNormChi2C[3] = 18.;
423   param->fMaxNormChi2C[4] = 30.;
424   param->fMaxNormChi2C[5] = 35.;
425
426   param->fMaxNormChi2NonCForHypothesis = 7.;
427   
428   param->fMaxChi2 = 35.;
429
430   param->fMaxChi2s[0] = 25.; //40   
431   param->fMaxChi2s[1] = 25.; //40   
432   param->fMaxChi2s[2] = 25.; //40   
433   param->fMaxChi2s[3] = 25.; //40   
434   param->fMaxChi2s[4] = 40.; //40   
435   param->fMaxChi2s[5] = 50.; //40
436
437   param->fMaxRoad = 6.;
438
439   // not used
440   param->fMaxChi2In = 16.;
441    
442   param->fMaxChi2sR[0] = 10.;   
443   param->fMaxChi2sR[1] = 10.;   
444   param->fMaxChi2sR[2] = 10.;   
445   param->fMaxChi2sR[3] = 10.;   
446   param->fMaxChi2sR[4] = 30.;   
447   param->fMaxChi2sR[5] = 40.;   
448
449   param->fChi2PerCluster = 9.;
450   // not used
451
452   param->fXV = 0.;
453   param->fYV = 0.;
454   param->fZV = 0.;
455   param->fSigmaXV = 0.0050;
456   param->fSigmaYV = 0.0050;
457   param->fSigmaZV = 0.0100;
458
459   param->fVertexCut = 25.;
460
461   param->fMaxDZforPrimTrk = 0.4;
462   param->fMaxDZToUseConstraint = 3.;
463
464   param->fMaxDforV0dghtrForProlongation = 30.;
465   param->fMaxDForProlongation = 40.;//10.;
466   param->fMaxDZForProlongation = 60.;//20.;
467   param->fMinPtForProlongation = 0.120;
468
469   param->fZWindowDeadZone = 2.0;
470   param->fSigmaXDeadZoneHit2 = 0.004/12.;
471   param->fSigmaZDeadZoneHit2 = 0.001/12.;
472   param->fXPassDeadZoneHits = 0.018;
473   param->SetNLoopsSA(20);
474   param->fMaxPhiSA = 0.07;
475   param->fMaxLambdaSA = 0.04;
476
477  
478   param->GetESDV0Params()->SetMinRTgl0(0.5);
479   param->GetESDV0Params()->SetMaxDist(1.5);
480   param->GetESDV0Params()->SetMaxDcaLh0(1.5);
481   param->GetESDV0Params()->SetMaxRBestConst(80);
482   param->GetESDV0Params()->SetMinPABestConst(0.99);
483   param->GetESDV0Params()->SetMinNormDistForbTgl0(1.);
484   param->GetESDV0Params()->SetMinNormDistForb1(2.);
485   param->GetESDV0Params()->SetLikelihood01Cut(0.3);
486   param->GetESDV0Params()->SetLikelihood1Cut(0.35);
487   param->GetESDV0Params()->SetCombinedCut(0.4);
488
489
490
491   return param;
492 }
493 //_____________________________________________________________________________
494 AliITSRecoParam *AliITSRecoParam::GetCosmicTestParam() 
495 {
496   //
497   // make default reconstruction  parameters for cosmics
498   //
499   AliITSRecoParam *param = new AliITSRecoParam();
500
501   // vertexer for cosmics
502   param->SetVertexer(2);
503
504   param->SetClusterErrorsParam(2);
505   param->SetFindV0s(kFALSE);
506   param->SetAddVirtualClustersInDeadZone(kFALSE);
507   param->SetUseAmplitudeInfo(kFALSE);
508
509   // full use of bads from OCDB
510   param->SetUseBadZonesFromOCDB(kTRUE);
511   param->SetUseSingleBadChannelsFromOCDB(kTRUE);
512
513   // find independently ITS SA tracks 
514   param->SetSAUseAllClusters();
515   param->SetOuterStartLayerSA(AliITSgeomTGeo::GetNLayers()-2);
516
517   //****** COSMICS 2009 (same as COSMICS 2008) *********************
518
519   // to maximize efficiency
520   param->SetAllowProlongationWithEmptyRoad();
521
522   // larger seach windows for SA (in case of large misalignments)
523   param->SetNLoopsSA(33);
524   param->SetFactorSAWindowSizes(20);
525
526   // additional error due to misal (B off)
527   param->SetClusterMisalErrorY(1.0,1.0,1.0,1.0,1.0,1.0); // [cm]
528   param->SetClusterMisalErrorZ(1.0,1.0,1.0,1.0,1.0,1.0); // [cm]
529   // additional error due to misal (B on)
530   param->SetClusterMisalErrorYBOn(0.0,0.0,0.1,0.1,0.1,0.1); // [cm]
531   param->SetClusterMisalErrorZBOn(0.1,0.1,0.1,0.1,0.1,0.1); // [cm]
532
533
534   // SDD configuration 
535   param->fUseSDDCorrectionMaps = kFALSE;
536   param->fUseSDDClusterSizeSelection=kTRUE;
537   param->fMinClusterChargeSDD=30.;
538   
539
540   // alignment data filter
541   param->SetAlignFilterCosmics(kTRUE);
542   param->SetAlignFilterCosmicMergeTracks(kTRUE); 
543   param->SetAlignFilterMinITSPoints(1);
544   param->SetAlignFilterMinITSPointsMerged(3);
545   param->SetAlignFilterOnlyITSSATracks(kTRUE);
546   param->SetAlignFilterOnlyITSTPCTracks(kFALSE);
547   param->SetAlignFilterSkipExtra(kFALSE);
548   param->SetAlignFilterMaxMatchingAngle(0.085/*5deg*/);
549   param->SetAlignFilterMinPt(0.2);          
550   param->SetAlignFilterMaxPt(1.e10);          
551   param->SetAlignFilterFillQANtuples(kTRUE);    
552
553   //******************************************************************
554
555   param->fMaxSnp = 0.95;
556
557   param->fNSigmaYLayerForRoadY = 4.;
558   param->fNSigmaRoadY = 7.5;
559   param->fNSigmaZLayerForRoadZ = 4.;
560   param->fNSigmaRoadZ = 7.5;
561
562   param->fNSigma2RoadZC = 60.; //7.75^2
563   param->fNSigma2RoadYC = 60.; //7.75^2
564   param->fNSigma2RoadZNonC = 50.; //7.07^2
565   param->fNSigma2RoadYNonC = 50.; //7.07^2
566
567   param->fMaxChi2PerCluster[0] = 11.; //7
568   param->fMaxChi2PerCluster[1] = 12.; //5
569   param->fMaxChi2PerCluster[2] = 12.; //8
570   param->fMaxChi2PerCluster[3] = 5.;  //8
571   param->fMaxChi2PerCluster[4] = 12.; //6.5
572
573   param->fMaxNormChi2NonC[0] = 7.;
574   param->fMaxNormChi2NonC[1] = 8.;
575   param->fMaxNormChi2NonC[2] = 8.;
576   param->fMaxNormChi2NonC[3] = 11.;
577   param->fMaxNormChi2NonC[4] = 14.;
578   param->fMaxNormChi2NonC[5] = 25.;
579
580   param->fMaxNormChi2C[0] = 11.;
581   param->fMaxNormChi2C[1] = 13.;
582   param->fMaxNormChi2C[2] = 15.;
583   param->fMaxNormChi2C[3] = 18.;
584   param->fMaxNormChi2C[4] = 30.;
585   param->fMaxNormChi2C[5] = 35.;
586
587   param->fMaxNormChi2NonCForHypothesis = 7.;
588   
589   param->fMaxChi2 = 35.;
590
591   param->fMaxChi2s[0] = 25.; //40   
592   param->fMaxChi2s[1] = 25.; //40   
593   param->fMaxChi2s[2] = 25.; //40   
594   param->fMaxChi2s[3] = 25.; //40   
595   param->fMaxChi2s[4] = 40.; //40   
596   param->fMaxChi2s[5] = 50.; //40
597
598   param->fMaxRoad = 6.;
599
600   // not used
601   param->fMaxChi2In = 16.;
602    
603   param->fMaxChi2sR[0] = 10.;   
604   param->fMaxChi2sR[1] = 10.;   
605   param->fMaxChi2sR[2] = 10.;   
606   param->fMaxChi2sR[3] = 10.;   
607   param->fMaxChi2sR[4] = 30.;   
608   param->fMaxChi2sR[5] = 40.;   
609
610   param->fChi2PerCluster = 9.;
611   // not used
612
613   param->fXV = 0.;
614   param->fYV = 0.;
615   param->fZV = 0.;
616   param->fSigmaXV = 0.0050;
617   param->fSigmaYV = 0.0050;
618   param->fSigmaZV = 0.0100;
619
620   param->fVertexCut = 25.;
621
622   param->fMaxDZforPrimTrk = 0.4;
623   param->fMaxDZToUseConstraint = 3.;
624
625   param->fMaxDforV0dghtrForProlongation = 30.;
626   param->fMaxDForProlongation = 10.;
627   param->fMaxDZForProlongation = 20.;
628   param->fMinPtForProlongation = 0.120;
629
630   param->fZWindowDeadZone = 2.0;
631   param->fSigmaXDeadZoneHit2 = 0.004/12.;
632   param->fSigmaZDeadZoneHit2 = 0.001/12.;
633   param->fXPassDeadZoneHits = 0.018;
634
635   return param;
636 }
637 //_____________________________________________________________________________
638 AliITSRecoParam *AliITSRecoParam::GetPlaneEffParam(Int_t i)
639 {
640   //
641   // make special reconstruction parameters for Plane Efficiency study on layer i (0,5)
642   // 
643   // if i=-1, then the evaluation for both pixel layers is tried with the tracklet method
644   //
645  if (i<-1 || i>=AliITSgeomTGeo::kNLayers) {
646     printf("AliITSRecoParam::GetPlaneEffParam: index of ITS Plane nor in the range [0,5] neither =-1\n");
647     printf("returning null pointer");
648     return NULL;
649   }
650   if(i>=0) {  // Method using tracks (remove given plane from tracking)
651     AliITSRecoParam *param;
652     param = GetHighFluxParam();
653     param->SetComputePlaneEff();
654     param->SetLayerToSkip(i);
655     param->SetIPlanePlaneEff(i);
656     // optimized setting for SPD0 (i==0)
657     if (i==0 || i==1) {
658       param->fMinPtPlaneEff = 0.200; // high pt particles
659       param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster
660       param->fRequireClusterInOuterLayerPlaneEff = kTRUE; // cluster on SPD1 must be
661       //param->fOnlyConstraintPlaneEff = kTRUE;
662     }
663     if (i==2 || i==3) {
664       param->fMinPtPlaneEff = 0.200; // high pt particles
665       param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster
666       param->fRequireClusterInOuterLayerPlaneEff = kTRUE;
667       //param->fOnlyConstraintPlaneEff = kTRUE;
668     }
669     if (i==4) {
670       param->fMinPtPlaneEff = 0.200; // high pt particles
671       param->fMaxMissingClustersPlaneEff = 0; // at most 1 layer out of 5 without cluster
672       param->fRequireClusterInOuterLayerPlaneEff = kTRUE;
673       //param->fOnlyConstraintPlaneEff = kTRUE;
674     }
675     if (i==5) {
676       param->fMinPtPlaneEff = 0.200; // high pt particles
677     }
678     //
679     return param;
680   }
681   else if (i==-1) { // Method using tracklets
682     AliITSRecoParam *param;
683     param = GetLowFluxParam();
684     param->SetIPlanePlaneEff(i);
685     param->SetComputePlaneEff(kTRUE,kFALSE);
686     param->SetUseTrackletsPlaneEff(kTRUE);
687     param->SetTrackleterPhiWindowL2(0.07);
688     param->SetTrackleterZetaWindowL2(0.4);
689     param->SetTrackleterPhiWindowL1(0.10);
690     param->SetTrackleterZetaWindowL1(0.6);
691     param->SetUpdateOncePerEventPlaneEff(kTRUE);
692     param->SetMinContVtxPlaneEff(3);
693     return param;
694   }
695   else {
696     AliErrorGeneral("AliITSRecoParam",Form("Unrecognised value of i %d\n",i));
697     return 0;
698   }
699 }
700 //_____________________________________________________________________________
701 void AliITSRecoParam::SetLayersParameters() 
702 {
703   //
704   // number of layers and layers spatial resolutions
705   //
706
707   // spatial resolutions of the detectors
708   // y: 12 12 38 38 20 20 micron
709   fSigmaY2[0]=1.44e-6;
710   fSigmaY2[1]=1.44e-6;
711   fSigmaY2[2]=1.444e-5;
712   fSigmaY2[3]=1.444e-5;
713   fSigmaY2[4]=4.0e-6;
714   fSigmaY2[5]=4.0e-6;
715   // z: 120 120 28 28 830 830 micron
716   fSigmaZ2[0]=1.44e-4;
717   fSigmaZ2[1]=1.44e-4;
718   fSigmaZ2[2]=7.84e-6;
719   fSigmaZ2[3]=7.84e-6;
720   fSigmaZ2[4]=6.889e-3;
721   fSigmaZ2[5]=6.889e-3;
722
723   return;
724 }
725 //_____________________________________________________________________________
726 void AliITSRecoParam::PrintParameters() const 
727 {
728   //
729   // print parameters
730   //
731
732   printf("=============================  AliITSRecoParam::PrintParameters ");
733   printf("============================= \n\n");
734   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
735     if(!fLayersToSkip[i]) {
736       printf("ITS Traking: using layer %d\n",i);
737     } else {
738       printf("ITS Traking: skipping layer %d\n",i);
739     }
740   }
741   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
742     if(fUseAmplitudeInfo[i]) {
743       printf("ITS Traking: use amplitude info for layer %d\n",i);
744     } else {
745       printf("ITS Traking: don't use amplitude info for layer %d\n",i);
746     }
747   }
748   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++)
749     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]);
750
751
752   Dump();
753
754   return;
755 }
756