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