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