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