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