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