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