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