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