]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSRecoParam.cxx
Updates to multreconstructro - Savannah bug 74741 (Ruben)
[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
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   return param;
440 }
441 //_____________________________________________________________________________
442 AliITSRecoParam *AliITSRecoParam::GetLowFluxParam() 
443 {
444   //
445   // make default reconstruction  parameters for low  flux env.
446   //
447   AliITSRecoParam *param = new AliITSRecoParam();
448   param->SetVertexer3DDefaults();
449
450   // full use of bads from OCDB
451   param->SetUseBadZonesFromOCDB(kTRUE);
452   param->SetUseSingleBadChannelsFromOCDB(kTRUE);
453   // extended eta acceptance
454   param->SetExtendedEtaAcceptance(kTRUE);
455   // allow to skip layer if no cluster and no bad
456   param->SetAllowProlongationWithEmptyRoad(kTRUE);
457   // set event specie
458   param->SetEventSpecie(AliRecoParam::kLowMult);
459
460   param->fMaxSnp = 0.95;
461
462   param->fNSigmaYLayerForRoadY = 4.;
463   param->fNSigmaRoadY = 7.5;
464   param->fNSigmaZLayerForRoadZ = 4.;
465   param->fNSigmaRoadZ = 7.5;
466
467   param->fNSigma2RoadZC = 60.; //7.75^2
468   param->fNSigma2RoadYC = 60.; //7.75^2
469   param->fNSigma2RoadZNonC = 50.; //7.07^2
470   param->fNSigma2RoadYNonC = 50.; //7.07^2
471
472   param->fMaxChi2PerCluster[0] = 11.; //7
473   param->fMaxChi2PerCluster[1] = 12.; //5
474   param->fMaxChi2PerCluster[2] = 12.; //8
475   param->fMaxChi2PerCluster[3] = 5.;  //8
476   param->fMaxChi2PerCluster[4] = 12.; //6.5
477
478   param->fMaxNormChi2NonC[0] = 7.;
479   param->fMaxNormChi2NonC[1] = 8.;
480   param->fMaxNormChi2NonC[2] = 8.;
481   param->fMaxNormChi2NonC[3] = 11.;
482   param->fMaxNormChi2NonC[4] = 14.;
483   param->fMaxNormChi2NonC[5] = 25.;
484
485   param->fMaxNormChi2C[0] = 11.;
486   param->fMaxNormChi2C[1] = 13.;
487   param->fMaxNormChi2C[2] = 15.;
488   param->fMaxNormChi2C[3] = 18.;
489   param->fMaxNormChi2C[4] = 30.;
490   param->fMaxNormChi2C[5] = 35.;
491
492   param->fMaxNormChi2NonCForHypothesis = 7.;
493   
494   param->fMaxChi2 = 35.;
495
496   param->fMaxChi2s[0] = 25.; //40   
497   param->fMaxChi2s[1] = 25.; //40   
498   param->fMaxChi2s[2] = 25.; //40   
499   param->fMaxChi2s[3] = 25.; //40   
500   param->fMaxChi2s[4] = 40.; //40   
501   param->fMaxChi2s[5] = 50.; //40
502
503   param->fMaxRoad = 6.;
504
505   // not used
506   param->fMaxChi2In = 16.;
507    
508   param->fMaxChi2sR[0] = 10.;   
509   param->fMaxChi2sR[1] = 10.;   
510   param->fMaxChi2sR[2] = 10.;   
511   param->fMaxChi2sR[3] = 10.;   
512   param->fMaxChi2sR[4] = 30.;   
513   param->fMaxChi2sR[5] = 40.;   
514
515   param->fChi2PerCluster = 9.;
516   // not used
517
518   param->fXV = 0.;
519   param->fYV = 0.;
520   param->fZV = 0.;
521   param->fSigmaXV = 0.0050;
522   param->fSigmaYV = 0.0050;
523   param->fSigmaZV = 0.0100;
524
525   param->fVertexCut = 25.;
526
527   param->fMaxDZforPrimTrk = 0.4;
528   param->fMaxDZToUseConstraint = 3.;
529
530   param->fMaxDforV0dghtrForProlongation = 30.;
531   param->fMaxDForProlongation = 40.;//10.;
532   param->fMaxDZForProlongation = 60.;//20.;
533   param->fMinPtForProlongation = 0.120;
534
535   param->fZWindowDeadZone = 2.0;
536   param->fSigmaXDeadZoneHit2 = 0.004/12.;
537   param->fSigmaZDeadZoneHit2 = 0.001/12.;
538   param->fXPassDeadZoneHits = 0.018;
539   param->SetNLoopsSA(20);
540   param->fMaxPhiSA = 0.07;
541   param->fMaxLambdaSA = 0.04;
542
543  
544   param->GetESDV0Params()->SetMinRTgl0(0.5);
545   param->GetESDV0Params()->SetMaxDist(1.5);
546   param->GetESDV0Params()->SetMaxDcaLh0(1.5);
547   param->GetESDV0Params()->SetMaxRBestConst(80);
548   param->GetESDV0Params()->SetMinPABestConst(0.99);
549   param->GetESDV0Params()->SetMinNormDistForbTgl0(1.);
550   param->GetESDV0Params()->SetMinNormDistForb1(2.);
551   param->GetESDV0Params()->SetMinNormDistForbProt(1.);
552   param->GetESDV0Params()->SetMaxPidProbPionForb(0.7);
553   param->GetESDV0Params()->SetLikelihood01Cut(0.3);
554   param->GetESDV0Params()->SetLikelihood1Cut(0.35);
555   param->GetESDV0Params()->SetCombinedCut(0.4);
556
557   // mult reco
558   param->fMultCutPxDrSPDin = 0.1;
559   param->fMultCutPxDrSPDout = 0.15;
560   param->fMultCutPxDz = 0.2;
561   param->fMultCutDCArz = 0.5;
562   param->fMultCutMinElectronProbTPC = 0.5;
563   param->fMultCutMinElectronProbESD = 0.1;
564   param->fMultCutMinP = 0.05;
565   param->fMultCutMinRGamma = 2.;
566   param->fMultCutMinRK0 = 1.;
567   param->fMultCutMinPointAngle = 0.98;
568   param->fMultCutMaxDCADauther = 0.5;
569   param->fMultCutMassGamma = 0.03;
570   param->fMultCutMassGammaNSigma = 5.;
571   param->fMultCutMassK0 = 0.03;
572   param->fMultCutMassK0NSigma = 5.;
573   param->fMultCutChi2cGamma = 2.;
574   param->fMultCutChi2cK0 = 2.;
575   param->fMultCutGammaSFromDecay = -10.;
576   param->fMultCutK0SFromDecay = -10.;
577   param->fMultCutMaxDCA = 1.;  
578   //
579
580   return param;
581 }
582 //_____________________________________________________________________________
583 AliITSRecoParam *AliITSRecoParam::GetCosmicTestParam() 
584 {
585   //
586   // make default reconstruction  parameters for cosmics
587   //
588   AliITSRecoParam *param = new AliITSRecoParam();
589
590   // vertexer for cosmics
591   param->SetVertexer(2);
592
593   param->SetClusterErrorsParam(2);
594   param->SetFindV0s(kFALSE);
595   param->SetAddVirtualClustersInDeadZone(kFALSE);
596   param->SetUseAmplitudeInfo(kFALSE);
597
598   // set event specie
599   param->SetEventSpecie(AliRecoParam::kCosmic);
600
601   // full use of bads from OCDB
602   param->SetUseBadZonesFromOCDB(kTRUE);
603   param->SetUseSingleBadChannelsFromOCDB(kTRUE);
604
605   // find independently ITS SA tracks 
606   param->SetSAUseAllClusters();
607   param->SetOuterStartLayerSA(AliITSgeomTGeo::GetNLayers()-2);
608
609   //****** COSMICS 2009 (same as COSMICS 2008) *********************
610
611   // to maximize efficiency
612   param->SetAllowProlongationWithEmptyRoad();
613   param->SetMinNPointsSA(2);
614
615   // larger seach windows for SA (in case of large misalignments)
616   param->SetNLoopsSA(33);
617   param->SetFactorSAWindowSizes(20);
618
619   // additional error due to misal (B off)
620   param->SetClusterMisalErrorY(1.0,1.0,1.0,1.0,1.0,1.0); // [cm]
621   param->SetClusterMisalErrorZ(1.0,1.0,1.0,1.0,1.0,1.0); // [cm]
622   // additional error due to misal (B on)
623   param->SetClusterMisalErrorYBOn(0.0,0.0,0.1,0.1,0.1,0.1); // [cm]
624   param->SetClusterMisalErrorZBOn(0.1,0.1,0.1,0.1,0.1,0.1); // [cm]
625
626
627   // SDD configuration 
628   param->fUseSDDCorrectionMaps = kFALSE;
629   param->fUseSDDClusterSizeSelection=kTRUE;
630   param->fMinClusterChargeSDD=30.;
631   
632
633   // alignment data filter
634   param->SetAlignFilterCosmics(kTRUE);
635   param->SetAlignFilterCosmicMergeTracks(kTRUE); 
636   param->SetAlignFilterMinITSPoints(1);
637   param->SetAlignFilterMinITSPointsMerged(3);
638   param->SetAlignFilterOnlyITSSATracks(kTRUE);
639   param->SetAlignFilterOnlyITSTPCTracks(kFALSE);
640   param->SetAlignFilterSkipExtra(kFALSE);
641   param->SetAlignFilterMaxMatchingAngle(0.085/*5deg*/);
642   param->SetAlignFilterMinPt(0.2);          
643   param->SetAlignFilterMaxPt(1.e10);          
644   param->SetAlignFilterFillQANtuples(kTRUE);    
645
646   //******************************************************************
647
648   param->fMaxSnp = 0.95;
649
650   param->fNSigmaYLayerForRoadY = 4.;
651   param->fNSigmaRoadY = 7.5;
652   param->fNSigmaZLayerForRoadZ = 4.;
653   param->fNSigmaRoadZ = 7.5;
654
655   param->fNSigma2RoadZC = 60.; //7.75^2
656   param->fNSigma2RoadYC = 60.; //7.75^2
657   param->fNSigma2RoadZNonC = 50.; //7.07^2
658   param->fNSigma2RoadYNonC = 50.; //7.07^2
659
660   param->fMaxChi2PerCluster[0] = 11.; //7
661   param->fMaxChi2PerCluster[1] = 12.; //5
662   param->fMaxChi2PerCluster[2] = 12.; //8
663   param->fMaxChi2PerCluster[3] = 5.;  //8
664   param->fMaxChi2PerCluster[4] = 12.; //6.5
665
666   param->fMaxNormChi2NonC[0] = 7.;
667   param->fMaxNormChi2NonC[1] = 8.;
668   param->fMaxNormChi2NonC[2] = 8.;
669   param->fMaxNormChi2NonC[3] = 11.;
670   param->fMaxNormChi2NonC[4] = 14.;
671   param->fMaxNormChi2NonC[5] = 25.;
672
673   param->fMaxNormChi2C[0] = 11.;
674   param->fMaxNormChi2C[1] = 13.;
675   param->fMaxNormChi2C[2] = 15.;
676   param->fMaxNormChi2C[3] = 18.;
677   param->fMaxNormChi2C[4] = 30.;
678   param->fMaxNormChi2C[5] = 35.;
679
680   param->fMaxNormChi2NonCForHypothesis = 7.;
681   
682   param->fMaxChi2 = 35.;
683
684   param->fMaxChi2s[0] = 25.; //40   
685   param->fMaxChi2s[1] = 25.; //40   
686   param->fMaxChi2s[2] = 25.; //40   
687   param->fMaxChi2s[3] = 25.; //40   
688   param->fMaxChi2s[4] = 40.; //40   
689   param->fMaxChi2s[5] = 50.; //40
690
691   param->fMaxRoad = 6.;
692
693   // not used
694   param->fMaxChi2In = 16.;
695    
696   param->fMaxChi2sR[0] = 10.;   
697   param->fMaxChi2sR[1] = 10.;   
698   param->fMaxChi2sR[2] = 10.;   
699   param->fMaxChi2sR[3] = 10.;   
700   param->fMaxChi2sR[4] = 30.;   
701   param->fMaxChi2sR[5] = 40.;   
702
703   param->fChi2PerCluster = 9.;
704   // not used
705
706   param->fXV = 0.;
707   param->fYV = 0.;
708   param->fZV = 0.;
709   param->fSigmaXV = 0.0050;
710   param->fSigmaYV = 0.0050;
711   param->fSigmaZV = 0.0100;
712
713   param->fVertexCut = 25.;
714
715   param->fMaxDZforPrimTrk = 0.4;
716   param->fMaxDZToUseConstraint = 3.;
717
718   param->fMaxDforV0dghtrForProlongation = 30.;
719   param->fMaxDForProlongation = 10.;
720   param->fMaxDZForProlongation = 20.;
721   param->fMinPtForProlongation = 0.120;
722
723   param->fZWindowDeadZone = 2.0;
724   param->fSigmaXDeadZoneHit2 = 0.004/12.;
725   param->fSigmaZDeadZoneHit2 = 0.001/12.;
726   param->fXPassDeadZoneHits = 0.018;
727
728   return param;
729 }
730 //_____________________________________________________________________________
731 AliITSRecoParam *AliITSRecoParam::GetPlaneEffParam(Int_t i)
732 {
733   //
734   // make special reconstruction parameters for Plane Efficiency study on layer i (0,5)
735   // 
736   // if i=-1, then the evaluation for both pixel layers is tried with the tracklet method
737   //
738  if (i<-1 || i>=AliITSgeomTGeo::kNLayers) {
739     printf("AliITSRecoParam::GetPlaneEffParam: index of ITS Plane nor in the range [0,5] neither =-1\n");
740     printf("returning null pointer");
741     return NULL;
742   }
743   if(i>=0) {  // Method using tracks (remove given plane from tracking)
744     AliITSRecoParam *param;
745     param = GetLowFluxParam();
746     param->SetClusterErrorsParam(2);
747     // find independently ITS SA tracks 
748     param->SetSAUseAllClusters();
749     param->SetOuterStartLayerSA(2);
750     param->SetAllowProlongationWithEmptyRoad(kTRUE);
751     // larger seach windows for SA (in case of large misalignments)
752     param->SetFactorSAWindowSizes(2);
753
754     // Misalignment syst errors decided at ITS meeting 25.03.2010
755     // additional error due to misal (B off)
756     param->SetClusterMisalErrorY(0.0010,0.0010,0.0300,0.0300,0.0020,0.0020); // [cm]
757     param->SetClusterMisalErrorZ(0.0100,0.0100,0.0100,0.0100,0.0500,0.0500); // [cm]
758     // additional error due to misal (B on)
759     param->SetClusterMisalErrorYBOn(0.0010,0.0030,0.0500,0.0500,0.0020,0.0020); // [cm]
760     param->SetClusterMisalErrorZBOn(0.0100,0.0100,0.0100,0.0100,0.0500,0.0500); // [cm]
761     //----
762
763     // SDD configuration 
764     param->SetUseSDDCorrectionMaps(kTRUE); // changed 30.04.2010
765     param->SetUseSDDClusterSizeSelection(kTRUE);
766     param->SetMinClusterChargeSDD(30.);
767     param->SetUseUnfoldingInClusterFinderSDD(kFALSE);
768     //
769     param->SetComputePlaneEff();
770     param->SetLayerToSkip(i);
771     param->SetIPlanePlaneEff(i);
772     param->fNSigXFromBoundaryPlaneEff= 1.;
773     param->fNSigZFromBoundaryPlaneEff= 1.;
774     // optimized setting for SPD0 (i==0)
775     if (i==0) {
776       param->fMinPtPlaneEff = 0.200; // high pt particles
777       param->fMaxMissingClustersPlaneEff = 2; // at most 2 layers out of 5 without cluster
778       param->fMaxMissingClustersOutPlaneEff = 2; // at most 2 layers out of 5 external ones without cluster
779       param->fRequireClusterInOuterLayerPlaneEff = kTRUE; // cluster on SPD1 must be
780       //param->fOnlyConstraintPlaneEff = kTRUE;
781     }
782     if (i==1 ) {
783       param->fMinPtPlaneEff = 0.200; // high pt particles
784       param->fMaxMissingClustersPlaneEff = 2; // at most 2 layer out of 5 without cluster
785       param->fMaxMissingClustersOutPlaneEff = 2; // at most 2 layer out of 4 external ones without cluster
786       //param->fRequireClusterInOuterLayerPlaneEff = kTRUE; // cluster on SSD1 must be
787     }
788     if (i==2) {
789       param->fMinPtPlaneEff = 0.200; // high pt particles
790       param->fMaxMissingClustersPlaneEff = 2; // at most 2 layer out of 5 without cluster
791       param->fMaxMissingClustersOutPlaneEff = 2; // at most 2 layer out of 3 external ones without cluster
792       //param->fRequireClusterInOuterLayerPlaneEff = kTRUE;
793       //param->fOnlyConstraintPlaneEff = kTRUE;
794     }
795     if (i==3) {
796       param->fMinPtPlaneEff = 0.200; // high pt particles
797       param->fMaxMissingClustersPlaneEff = 2; // at most 2 layer out of 5 without cluster
798       param->fMaxMissingClustersOutPlaneEff = 1; // at most 1 layer out of 2 external ones without cluster
799     }
800     if (i==4) {
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 1 external ones without cluster
804       // param->fRequireClusterInOuterLayerPlaneEff = kTRUE;
805       //param->fOnlyConstraintPlaneEff = kTRUE;
806     }
807     if (i==5) {
808       param->fMinPtPlaneEff = 0.200; // high pt particles
809       param->fMaxMissingClustersPlaneEff = 2; // at most 2 layer out of 5 without cluster
810     }
811     //
812     return param;
813   }
814   else if (i==-1) { // Method using tracklets
815     AliITSRecoParam *param;
816     param = GetLowFluxParam();
817     param->SetIPlanePlaneEff(i);
818     param->SetComputePlaneEff(kTRUE,kFALSE);
819     param->SetUseTrackletsPlaneEff(kTRUE);
820     param->SetTrackleterPhiWindowL2(0.07);
821     param->SetTrackleterZetaWindowL2(0.4);
822     param->SetTrackleterPhiWindowL1(0.10);
823     param->SetTrackleterZetaWindowL1(0.6);
824     param->SetUpdateOncePerEventPlaneEff(kTRUE);
825     param->SetMinContVtxPlaneEff(3);
826     return param;
827   }
828   else {
829     AliErrorGeneral("AliITSRecoParam",Form("Unrecognised value of i %d\n",i));
830     return 0;
831   }
832 }
833
834 //_____________________________________________________________________________
835 void AliITSRecoParam::SetLayersParameters() 
836 {
837   //
838   // number of layers and layers spatial resolutions
839   //
840
841   // spatial resolutions of the detectors
842   // y: 12 12 38 38 20 20 micron
843   fSigmaY2[0]=1.44e-6;
844   fSigmaY2[1]=1.44e-6;
845   fSigmaY2[2]=1.444e-5;
846   fSigmaY2[3]=1.444e-5;
847   fSigmaY2[4]=4.0e-6;
848   fSigmaY2[5]=4.0e-6;
849   // z: 120 120 28 28 830 830 micron
850   fSigmaZ2[0]=1.44e-4;
851   fSigmaZ2[1]=1.44e-4;
852   fSigmaZ2[2]=7.84e-6;
853   fSigmaZ2[3]=7.84e-6;
854   fSigmaZ2[4]=6.889e-3;
855   fSigmaZ2[5]=6.889e-3;
856
857   return;
858 }
859 //_____________________________________________________________________________
860 void AliITSRecoParam::PrintParameters() const 
861 {
862   //
863   // print parameters
864   //
865
866   printf("=============================  AliITSRecoParam::PrintParameters ");
867   printf("============================= \n\n");
868   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
869     if(!fLayersToSkip[i]) {
870       printf("ITS Traking: using layer %d\n",i);
871     } else {
872       printf("ITS Traking: skipping layer %d\n",i);
873     }
874   }
875   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
876     if(fUseAmplitudeInfo[i]) {
877       printf("ITS Traking: use amplitude info for layer %d\n",i);
878     } else {
879       printf("ITS Traking: don't use amplitude info for layer %d\n",i);
880     }
881   }
882   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++)
883     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]);
884
885
886   Dump();
887
888   return;
889 }