Changing once more (hopefully we get it correct this time...) the logic to trig the...
[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 fXV(0), 
95 fYV(0),
96 fZV(0),
97 fSigmaXV(0),
98 fSigmaYV(0),
99 fSigmaZV(0),
100 fVertexCut(0),
101 fMaxDZforPrimTrk(0),
102 fMaxDZToUseConstraint(0), 
103 fMaxDforV0dghtrForProlongation(0),
104 fMaxDForProlongation(0),
105 fMaxDZForProlongation(0),
106 fMinPtForProlongation(0),
107 fAddVirtualClustersInDeadZone(kFALSE),
108 fZWindowDeadZone(0),
109 fSigmaXDeadZoneHit2(0),
110 fSigmaZDeadZoneHit2(0),
111 fXPassDeadZoneHits(0),
112 fSkipSubdetsNotInTriggerCluster(kTRUE),
113 fUseTGeoInTracker(3),
114 fStepSizeTGeo(5.),
115 fAllowSharedClusters(kTRUE),
116 fClusterErrorsParam(1),
117 fComputePlaneEff(kFALSE),
118 fHistoPlaneEff(kFALSE),
119 fUseTrackletsPlaneEff(kFALSE),
120 fMCTrackletsPlaneEff(kFALSE),
121 fBkgTrackletsPlaneEff(kFALSE),
122 fTrackleterPhiWindowL1(0.10),
123 fTrackleterPhiWindowL2(0.07),
124 fTrackleterZetaWindowL1(0.6),
125 fTrackleterZetaWindowL2(0.4),
126 fUpdateOncePerEventPlaneEff(kTRUE),
127 fMinContVtxPlaneEff(3),
128 fIPlanePlaneEff(0),
129 fReadPlaneEffFromOCDB(kFALSE),
130 fMinPtPlaneEff(0),
131 fMaxMissingClustersPlaneEff(0),
132 fRequireClusterInOuterLayerPlaneEff(kFALSE),
133 fRequireClusterInInnerLayerPlaneEff(kFALSE),
134 fOnlyConstraintPlaneEff(kFALSE),
135 fExtendedEtaAcceptance(kFALSE),
136 fUseBadZonesFromOCDB(kTRUE),
137 fUseSingleBadChannelsFromOCDB(kFALSE),
138 fMinFractionOfBadInRoad(0),
139 fAllowProlongationWithEmptyRoad(kFALSE),
140 fInwardFlagSA(kFALSE),
141 fOuterStartLayerSA(2),
142 fInnerStartLayerSA(3),
143 fMinNPointsSA(3),
144 fFactorSAWindowSizes(1.),
145 fNLoopsSA(33),
146 fMinPhiSA(0.002),
147 fMaxPhiSA(0.0145),
148 fMinLambdaSA(0.003),
149 fMaxLambdaSA(0.008),
150 fMinClusterChargeSA(0.),
151 fSAOnePointTracks(kFALSE),
152 fSAUseAllClusters(kFALSE),
153 fFindV0s(kTRUE),
154 fStoreLikeSignV0s(kFALSE),
155 fUseUnfoldingInClusterFinderSPD(kFALSE),
156 fUseUnfoldingInClusterFinderSDD(kTRUE),
157 fUseUnfoldingInClusterFinderSSD(kFALSE),
158 fUseBadChannelsInClusterFinderSSD(kFALSE),
159 fUseSDDCorrectionMaps(kTRUE),
160 fUseSDDClusterSizeSelection(kFALSE),
161 fMinClusterChargeSDD(0.),
162 fUseChargeMatchingInClusterFinderSSD(kTRUE),
163 fTrackleterPhiWindow(0.08),
164 fTrackleterThetaWindow(0.025),
165 fTrackleterPhiShift(0.0045),
166 fTrackleterRemoveClustersFromOverlaps(kFALSE),
167 fTrackleterPhiOverlapCut(0.005),
168 fTrackleterZetaOverlapCut(0.05),
169 fUseCosmicRunShiftsSSD(kFALSE),
170 fSPDRemoveNoisyFlag(kTRUE),
171 fSPDRemoveDeadFlag(kTRUE),
172 fVertexerFastSmearX(0.005),
173 fVertexerFastSmearY(0.005),
174 fVertexerFastSmearZ(0.01),
175 fAlignFilterCosmics(kFALSE),
176 fAlignFilterCosmicMergeTracks(kTRUE),
177 fAlignFilterMinITSPoints(4),
178 fAlignFilterMinITSPointsMerged(4),
179 fAlignFilterOnlyITSSATracks(kTRUE),
180 fAlignFilterOnlyITSTPCTracks(kFALSE),
181 fAlignFilterSkipExtra(kFALSE),
182 fAlignFilterMaxMatchingAngle(0.085),
183 fAlignFilterMinAngleWrtModulePlanes(0.52),
184 fAlignFilterMinPt(0.),
185 fAlignFilterMaxPt(1.e10),
186 fAlignFilterFillQANtuples(kTRUE),
187 fESDV0Params(NULL)
188 {
189   //
190   // constructor
191   //
192   SetName("ITS");
193   SetTitle("ITS");
194
195   SetLayersParameters();
196   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) fLayersToSkip[i]=0;
197   SetUseTGeoInTracker(3);
198   SetStepSizeTGeo(5.);
199   SetAllowSharedClusters(kTRUE);
200   SetFindV0s(kTRUE);
201   SetAddVirtualClustersInDeadZone(kFALSE);
202   SetUseAmplitudeInfo(kTRUE);
203   SetClusterErrorsParam(1);
204   SetClusterMisalError(0.);
205   SetClusterMisalErrorBOn(0.);
206   SetVertexer3DDefaults();
207
208   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) fAlignFilterUseLayer[i]=kTRUE;
209   fESDV0Params = new AliESDV0Params();
210   
211   fESDV0Params->SetMaxDist0(0.1);
212   fESDV0Params->SetMaxDist1(0.1);
213   fESDV0Params->SetMaxDist(1.);
214   fESDV0Params->SetMinPointAngle(0.85);
215   fESDV0Params->SetMinPointAngle2(0.99);
216   fESDV0Params->SetMinR(0.5);
217   fESDV0Params->SetMaxR(220.);
218   fESDV0Params->SetMinPABestConst(0.9999);
219   fESDV0Params->SetMaxRBestConst(10.);
220   fESDV0Params->SetCausality0Cut(0.19);
221   fESDV0Params->SetLikelihood01Cut(0.45);
222   fESDV0Params->SetLikelihood1Cut(0.5);  
223   fESDV0Params->SetCombinedCut(0.55);
224   fESDV0Params->SetMinClFullTrk(5.0);
225   fESDV0Params->SetMinTgl0(1.05);
226   fESDV0Params->SetMinRTgl0(40.0);
227
228   fESDV0Params->SetMinNormDistForbTgl0(3.0);
229   fESDV0Params->SetMinClForb0(4.5);
230   fESDV0Params->SetMinNormDistForb1(3.0);
231   fESDV0Params->SetMinNormDistForb2(2.0);
232   fESDV0Params->SetMinNormDistForb3(1.0);
233   fESDV0Params->SetMinNormDistForb4(4.0);
234   fESDV0Params->SetMinNormDistForb5(5.0);
235   fESDV0Params->SetMinNormDistForbProt(2.0);
236   fESDV0Params->SetMaxPidProbPionForb(0.5);
237
238   fESDV0Params->SetMinRTPCdensity(40.);
239   fESDV0Params->SetMaxRTPCdensity0(110.);
240   fESDV0Params->SetMaxRTPCdensity10(120.);
241   fESDV0Params->SetMaxRTPCdensity20(130.);
242   fESDV0Params->SetMaxRTPCdensity30(140.);
243
244   fESDV0Params->SetMinTPCdensity(0.6);
245   fESDV0Params->SetMinTgl1(1.1);
246   fESDV0Params->SetMinTgl2(1.0);
247   fESDV0Params->SetMinchi2before0(16.);
248   fESDV0Params->SetMinchi2before1(16.);
249   fESDV0Params->SetMinchi2after0(16.);
250   fESDV0Params->SetMinchi2after1(16.);
251   fESDV0Params->SetAddchi2SharedCl(18.);
252   fESDV0Params->SetAddchi2NegCl0(25.);
253   fESDV0Params->SetAddchi2NegCl1(30.);
254   fESDV0Params->SetSigp0Par0(0.0001);
255   fESDV0Params->SetSigp0Par1(0.001);
256   fESDV0Params->SetSigp0Par2(0.1);
257   fESDV0Params->SetSigpPar0(0.5);
258   fESDV0Params->SetSigpPar1(0.6);
259   fESDV0Params->SetSigpPar2(0.4);
260   fESDV0Params->SetMaxDcaLh0(0.5);
261   fESDV0Params->SetStreamLevel(0);
262   fESDV0Params->SetChi2KF(100);
263   fESDV0Params->SetRobustChi2KF(100);
264   
265 }
266 //_____________________________________________________________________________
267 AliITSRecoParam::~AliITSRecoParam() 
268 {
269   //
270   // destructor
271   //  
272   if(fESDV0Params){
273     delete fESDV0Params;
274     fESDV0Params=NULL;
275   }
276 }
277 //_____________________________________________________________________________
278 AliITSRecoParam *AliITSRecoParam::GetHighFluxParam() 
279 {
280   //
281   // make default reconstruction  parameters for hig  flux env.
282   //
283   AliITSRecoParam *param = new AliITSRecoParam();
284   param->SetVertexerZ();
285
286   // use of bads from OCDB
287   param->SetUseBadZonesFromOCDB(kTRUE);
288   param->SetUseSingleBadChannelsFromOCDB(kFALSE);
289   // extended eta acceptance
290   param->SetExtendedEtaAcceptance(kFALSE);
291   // allow to skip layer if no cluster and no bad
292   param->SetAllowProlongationWithEmptyRoad(kFALSE);
293   // set event specie
294   param->SetEventSpecie(AliRecoParam::kHighMult);
295
296   param->fMaxSnp = 0.95;
297
298   param->fNSigmaYLayerForRoadY = 4.;
299   param->fNSigmaRoadY = 7.5;
300   param->fNSigmaZLayerForRoadZ = 4.;
301   param->fNSigmaRoadZ = 7.5;
302
303   param->fNSigma2RoadZC = 60.; //7.75^2
304   param->fNSigma2RoadYC = 60.; //7.75^2
305   param->fNSigma2RoadZNonC = 50.; //7.07^2
306   param->fNSigma2RoadYNonC = 50.; //7.07^2
307
308   param->fMaxChi2PerCluster[0] = 11.; //7
309   param->fMaxChi2PerCluster[1] = 12.; //5
310   param->fMaxChi2PerCluster[2] = 12.; //8
311   param->fMaxChi2PerCluster[3] = 5.;  //8
312   param->fMaxChi2PerCluster[4] = 12.; //6.5
313
314   param->fMaxNormChi2NonC[0] = 7.;
315   param->fMaxNormChi2NonC[1] = 8.;
316   param->fMaxNormChi2NonC[2] = 8.;
317   param->fMaxNormChi2NonC[3] = 11.;
318   param->fMaxNormChi2NonC[4] = 14.;
319   param->fMaxNormChi2NonC[5] = 25.;
320
321   param->fMaxNormChi2C[0] = 11.;
322   param->fMaxNormChi2C[1] = 13.;
323   param->fMaxNormChi2C[2] = 15.;
324   param->fMaxNormChi2C[3] = 18.;
325   param->fMaxNormChi2C[4] = 30.;
326   param->fMaxNormChi2C[5] = 35.;
327
328   param->fMaxNormChi2NonCForHypothesis = 7.;
329   
330   param->fMaxChi2 = 35.;
331
332   param->fMaxChi2s[0] = 25.; //40   
333   param->fMaxChi2s[1] = 25.; //40   
334   param->fMaxChi2s[2] = 25.; //40   
335   param->fMaxChi2s[3] = 25.; //40   
336   param->fMaxChi2s[4] = 40.; //40   
337   param->fMaxChi2s[5] = 50.; //40
338
339   param->fMaxRoad = 6.;
340
341   // not used
342   param->fMaxChi2In = 16.;
343    
344   param->fMaxChi2sR[0] = 10.;   
345   param->fMaxChi2sR[1] = 10.;   
346   param->fMaxChi2sR[2] = 10.;   
347   param->fMaxChi2sR[3] = 10.;   
348   param->fMaxChi2sR[4] = 30.;   
349   param->fMaxChi2sR[5] = 40.;   
350
351   param->fChi2PerCluster = 9.;
352   // not used
353
354   param->fXV = 0.;
355   param->fYV = 0.;
356   param->fZV = 0.;
357   param->fSigmaXV = 0.0050;
358   param->fSigmaYV = 0.0050;
359   param->fSigmaZV = 0.0100;
360
361   param->fVertexCut = 25.;
362
363   param->fMaxDZforPrimTrk = 0.4;
364   param->fMaxDZToUseConstraint = 3.;
365
366   param->fMaxDforV0dghtrForProlongation = 30.;
367   param->fMaxDForProlongation = 40.;//10.;
368   param->fMaxDZForProlongation = 60.;//20.;
369   param->fMinPtForProlongation = 0.120;
370
371   param->fZWindowDeadZone = 2.0;
372   param->fSigmaXDeadZoneHit2 = 0.004/12.;
373   param->fSigmaZDeadZoneHit2 = 0.001/12.;
374   param->fXPassDeadZoneHits = 0.018;
375
376
377   
378   return param;
379 }
380 //_____________________________________________________________________________
381 AliITSRecoParam *AliITSRecoParam::GetLowFluxParam() 
382 {
383   //
384   // make default reconstruction  parameters for low  flux env.
385   //
386   AliITSRecoParam *param = new AliITSRecoParam();
387   param->SetVertexer3DDefaults();
388
389   // full use of bads from OCDB
390   param->SetUseBadZonesFromOCDB(kTRUE);
391   param->SetUseSingleBadChannelsFromOCDB(kTRUE);
392   // extended eta acceptance
393   param->SetExtendedEtaAcceptance(kTRUE);
394   // allow to skip layer if no cluster and no bad
395   param->SetAllowProlongationWithEmptyRoad(kTRUE);
396   // set event specie
397   param->SetEventSpecie(AliRecoParam::kLowMult);
398
399   param->fMaxSnp = 0.95;
400
401   param->fNSigmaYLayerForRoadY = 4.;
402   param->fNSigmaRoadY = 7.5;
403   param->fNSigmaZLayerForRoadZ = 4.;
404   param->fNSigmaRoadZ = 7.5;
405
406   param->fNSigma2RoadZC = 60.; //7.75^2
407   param->fNSigma2RoadYC = 60.; //7.75^2
408   param->fNSigma2RoadZNonC = 50.; //7.07^2
409   param->fNSigma2RoadYNonC = 50.; //7.07^2
410
411   param->fMaxChi2PerCluster[0] = 11.; //7
412   param->fMaxChi2PerCluster[1] = 12.; //5
413   param->fMaxChi2PerCluster[2] = 12.; //8
414   param->fMaxChi2PerCluster[3] = 5.;  //8
415   param->fMaxChi2PerCluster[4] = 12.; //6.5
416
417   param->fMaxNormChi2NonC[0] = 7.;
418   param->fMaxNormChi2NonC[1] = 8.;
419   param->fMaxNormChi2NonC[2] = 8.;
420   param->fMaxNormChi2NonC[3] = 11.;
421   param->fMaxNormChi2NonC[4] = 14.;
422   param->fMaxNormChi2NonC[5] = 25.;
423
424   param->fMaxNormChi2C[0] = 11.;
425   param->fMaxNormChi2C[1] = 13.;
426   param->fMaxNormChi2C[2] = 15.;
427   param->fMaxNormChi2C[3] = 18.;
428   param->fMaxNormChi2C[4] = 30.;
429   param->fMaxNormChi2C[5] = 35.;
430
431   param->fMaxNormChi2NonCForHypothesis = 7.;
432   
433   param->fMaxChi2 = 35.;
434
435   param->fMaxChi2s[0] = 25.; //40   
436   param->fMaxChi2s[1] = 25.; //40   
437   param->fMaxChi2s[2] = 25.; //40   
438   param->fMaxChi2s[3] = 25.; //40   
439   param->fMaxChi2s[4] = 40.; //40   
440   param->fMaxChi2s[5] = 50.; //40
441
442   param->fMaxRoad = 6.;
443
444   // not used
445   param->fMaxChi2In = 16.;
446    
447   param->fMaxChi2sR[0] = 10.;   
448   param->fMaxChi2sR[1] = 10.;   
449   param->fMaxChi2sR[2] = 10.;   
450   param->fMaxChi2sR[3] = 10.;   
451   param->fMaxChi2sR[4] = 30.;   
452   param->fMaxChi2sR[5] = 40.;   
453
454   param->fChi2PerCluster = 9.;
455   // not used
456
457   param->fXV = 0.;
458   param->fYV = 0.;
459   param->fZV = 0.;
460   param->fSigmaXV = 0.0050;
461   param->fSigmaYV = 0.0050;
462   param->fSigmaZV = 0.0100;
463
464   param->fVertexCut = 25.;
465
466   param->fMaxDZforPrimTrk = 0.4;
467   param->fMaxDZToUseConstraint = 3.;
468
469   param->fMaxDforV0dghtrForProlongation = 30.;
470   param->fMaxDForProlongation = 40.;//10.;
471   param->fMaxDZForProlongation = 60.;//20.;
472   param->fMinPtForProlongation = 0.120;
473
474   param->fZWindowDeadZone = 2.0;
475   param->fSigmaXDeadZoneHit2 = 0.004/12.;
476   param->fSigmaZDeadZoneHit2 = 0.001/12.;
477   param->fXPassDeadZoneHits = 0.018;
478   param->SetNLoopsSA(20);
479   param->fMaxPhiSA = 0.07;
480   param->fMaxLambdaSA = 0.04;
481
482  
483   param->GetESDV0Params()->SetMinRTgl0(0.5);
484   param->GetESDV0Params()->SetMaxDist(1.5);
485   param->GetESDV0Params()->SetMaxDcaLh0(1.5);
486   param->GetESDV0Params()->SetMaxRBestConst(80);
487   param->GetESDV0Params()->SetMinPABestConst(0.99);
488   param->GetESDV0Params()->SetMinNormDistForbTgl0(1.);
489   param->GetESDV0Params()->SetMinNormDistForb1(2.);
490   param->GetESDV0Params()->SetMinNormDistForbProt(1.);
491   param->GetESDV0Params()->SetMaxPidProbPionForb(0.7);
492   param->GetESDV0Params()->SetLikelihood01Cut(0.3);
493   param->GetESDV0Params()->SetLikelihood1Cut(0.35);
494   param->GetESDV0Params()->SetCombinedCut(0.4);
495
496
497
498   return param;
499 }
500 //_____________________________________________________________________________
501 AliITSRecoParam *AliITSRecoParam::GetCosmicTestParam() 
502 {
503   //
504   // make default reconstruction  parameters for cosmics
505   //
506   AliITSRecoParam *param = new AliITSRecoParam();
507
508   // vertexer for cosmics
509   param->SetVertexer(2);
510
511   param->SetClusterErrorsParam(2);
512   param->SetFindV0s(kFALSE);
513   param->SetAddVirtualClustersInDeadZone(kFALSE);
514   param->SetUseAmplitudeInfo(kFALSE);
515
516   // set event specie
517   param->SetEventSpecie(AliRecoParam::kCosmic);
518
519   // full use of bads from OCDB
520   param->SetUseBadZonesFromOCDB(kTRUE);
521   param->SetUseSingleBadChannelsFromOCDB(kTRUE);
522
523   // find independently ITS SA tracks 
524   param->SetSAUseAllClusters();
525   param->SetOuterStartLayerSA(AliITSgeomTGeo::GetNLayers()-2);
526
527   //****** COSMICS 2009 (same as COSMICS 2008) *********************
528
529   // to maximize efficiency
530   param->SetAllowProlongationWithEmptyRoad();
531   param->SetMinNPointsSA(2);
532
533   // larger seach windows for SA (in case of large misalignments)
534   param->SetNLoopsSA(33);
535   param->SetFactorSAWindowSizes(20);
536
537   // additional error due to misal (B off)
538   param->SetClusterMisalErrorY(1.0,1.0,1.0,1.0,1.0,1.0); // [cm]
539   param->SetClusterMisalErrorZ(1.0,1.0,1.0,1.0,1.0,1.0); // [cm]
540   // additional error due to misal (B on)
541   param->SetClusterMisalErrorYBOn(0.0,0.0,0.1,0.1,0.1,0.1); // [cm]
542   param->SetClusterMisalErrorZBOn(0.1,0.1,0.1,0.1,0.1,0.1); // [cm]
543
544
545   // SDD configuration 
546   param->fUseSDDCorrectionMaps = kFALSE;
547   param->fUseSDDClusterSizeSelection=kTRUE;
548   param->fMinClusterChargeSDD=30.;
549   
550
551   // alignment data filter
552   param->SetAlignFilterCosmics(kTRUE);
553   param->SetAlignFilterCosmicMergeTracks(kTRUE); 
554   param->SetAlignFilterMinITSPoints(1);
555   param->SetAlignFilterMinITSPointsMerged(3);
556   param->SetAlignFilterOnlyITSSATracks(kTRUE);
557   param->SetAlignFilterOnlyITSTPCTracks(kFALSE);
558   param->SetAlignFilterSkipExtra(kFALSE);
559   param->SetAlignFilterMaxMatchingAngle(0.085/*5deg*/);
560   param->SetAlignFilterMinPt(0.2);          
561   param->SetAlignFilterMaxPt(1.e10);          
562   param->SetAlignFilterFillQANtuples(kTRUE);    
563
564   //******************************************************************
565
566   param->fMaxSnp = 0.95;
567
568   param->fNSigmaYLayerForRoadY = 4.;
569   param->fNSigmaRoadY = 7.5;
570   param->fNSigmaZLayerForRoadZ = 4.;
571   param->fNSigmaRoadZ = 7.5;
572
573   param->fNSigma2RoadZC = 60.; //7.75^2
574   param->fNSigma2RoadYC = 60.; //7.75^2
575   param->fNSigma2RoadZNonC = 50.; //7.07^2
576   param->fNSigma2RoadYNonC = 50.; //7.07^2
577
578   param->fMaxChi2PerCluster[0] = 11.; //7
579   param->fMaxChi2PerCluster[1] = 12.; //5
580   param->fMaxChi2PerCluster[2] = 12.; //8
581   param->fMaxChi2PerCluster[3] = 5.;  //8
582   param->fMaxChi2PerCluster[4] = 12.; //6.5
583
584   param->fMaxNormChi2NonC[0] = 7.;
585   param->fMaxNormChi2NonC[1] = 8.;
586   param->fMaxNormChi2NonC[2] = 8.;
587   param->fMaxNormChi2NonC[3] = 11.;
588   param->fMaxNormChi2NonC[4] = 14.;
589   param->fMaxNormChi2NonC[5] = 25.;
590
591   param->fMaxNormChi2C[0] = 11.;
592   param->fMaxNormChi2C[1] = 13.;
593   param->fMaxNormChi2C[2] = 15.;
594   param->fMaxNormChi2C[3] = 18.;
595   param->fMaxNormChi2C[4] = 30.;
596   param->fMaxNormChi2C[5] = 35.;
597
598   param->fMaxNormChi2NonCForHypothesis = 7.;
599   
600   param->fMaxChi2 = 35.;
601
602   param->fMaxChi2s[0] = 25.; //40   
603   param->fMaxChi2s[1] = 25.; //40   
604   param->fMaxChi2s[2] = 25.; //40   
605   param->fMaxChi2s[3] = 25.; //40   
606   param->fMaxChi2s[4] = 40.; //40   
607   param->fMaxChi2s[5] = 50.; //40
608
609   param->fMaxRoad = 6.;
610
611   // not used
612   param->fMaxChi2In = 16.;
613    
614   param->fMaxChi2sR[0] = 10.;   
615   param->fMaxChi2sR[1] = 10.;   
616   param->fMaxChi2sR[2] = 10.;   
617   param->fMaxChi2sR[3] = 10.;   
618   param->fMaxChi2sR[4] = 30.;   
619   param->fMaxChi2sR[5] = 40.;   
620
621   param->fChi2PerCluster = 9.;
622   // not used
623
624   param->fXV = 0.;
625   param->fYV = 0.;
626   param->fZV = 0.;
627   param->fSigmaXV = 0.0050;
628   param->fSigmaYV = 0.0050;
629   param->fSigmaZV = 0.0100;
630
631   param->fVertexCut = 25.;
632
633   param->fMaxDZforPrimTrk = 0.4;
634   param->fMaxDZToUseConstraint = 3.;
635
636   param->fMaxDforV0dghtrForProlongation = 30.;
637   param->fMaxDForProlongation = 10.;
638   param->fMaxDZForProlongation = 20.;
639   param->fMinPtForProlongation = 0.120;
640
641   param->fZWindowDeadZone = 2.0;
642   param->fSigmaXDeadZoneHit2 = 0.004/12.;
643   param->fSigmaZDeadZoneHit2 = 0.001/12.;
644   param->fXPassDeadZoneHits = 0.018;
645
646   return param;
647 }
648 //_____________________________________________________________________________
649 AliITSRecoParam *AliITSRecoParam::GetPlaneEffParam(Int_t i)
650 {
651   //
652   // make special reconstruction parameters for Plane Efficiency study on layer i (0,5)
653   // 
654   // if i=-1, then the evaluation for both pixel layers is tried with the tracklet method
655   //
656  if (i<-1 || i>=AliITSgeomTGeo::kNLayers) {
657     printf("AliITSRecoParam::GetPlaneEffParam: index of ITS Plane nor in the range [0,5] neither =-1\n");
658     printf("returning null pointer");
659     return NULL;
660   }
661   if(i>=0) {  // Method using tracks (remove given plane from tracking)
662     AliITSRecoParam *param;
663     param = GetHighFluxParam();
664     param->SetComputePlaneEff();
665     param->SetLayerToSkip(i);
666     param->SetIPlanePlaneEff(i);
667     // optimized setting for SPD0 (i==0)
668     if (i==0 || i==1) {
669       param->fMinPtPlaneEff = 0.200; // high pt particles
670       param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster
671       param->fRequireClusterInOuterLayerPlaneEff = kTRUE; // cluster on SPD1 must be
672       //param->fOnlyConstraintPlaneEff = kTRUE;
673     }
674     if (i==2 || i==3) {
675       param->fMinPtPlaneEff = 0.200; // high pt particles
676       param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster
677       param->fRequireClusterInOuterLayerPlaneEff = kTRUE;
678       //param->fOnlyConstraintPlaneEff = kTRUE;
679     }
680     if (i==4) {
681       param->fMinPtPlaneEff = 0.200; // high pt particles
682       param->fMaxMissingClustersPlaneEff = 0; // at most 1 layer out of 5 without cluster
683       param->fRequireClusterInOuterLayerPlaneEff = kTRUE;
684       //param->fOnlyConstraintPlaneEff = kTRUE;
685     }
686     if (i==5) {
687       param->fMinPtPlaneEff = 0.200; // high pt particles
688     }
689     //
690     return param;
691   }
692   else if (i==-1) { // Method using tracklets
693     AliITSRecoParam *param;
694     param = GetLowFluxParam();
695     param->SetIPlanePlaneEff(i);
696     param->SetComputePlaneEff(kTRUE,kFALSE);
697     param->SetUseTrackletsPlaneEff(kTRUE);
698     param->SetTrackleterPhiWindowL2(0.07);
699     param->SetTrackleterZetaWindowL2(0.4);
700     param->SetTrackleterPhiWindowL1(0.10);
701     param->SetTrackleterZetaWindowL1(0.6);
702     param->SetUpdateOncePerEventPlaneEff(kTRUE);
703     param->SetMinContVtxPlaneEff(3);
704     return param;
705   }
706   else {
707     AliErrorGeneral("AliITSRecoParam",Form("Unrecognised value of i %d\n",i));
708     return 0;
709   }
710 }
711 //_____________________________________________________________________________
712 void AliITSRecoParam::SetLayersParameters() 
713 {
714   //
715   // number of layers and layers spatial resolutions
716   //
717
718   // spatial resolutions of the detectors
719   // y: 12 12 38 38 20 20 micron
720   fSigmaY2[0]=1.44e-6;
721   fSigmaY2[1]=1.44e-6;
722   fSigmaY2[2]=1.444e-5;
723   fSigmaY2[3]=1.444e-5;
724   fSigmaY2[4]=4.0e-6;
725   fSigmaY2[5]=4.0e-6;
726   // z: 120 120 28 28 830 830 micron
727   fSigmaZ2[0]=1.44e-4;
728   fSigmaZ2[1]=1.44e-4;
729   fSigmaZ2[2]=7.84e-6;
730   fSigmaZ2[3]=7.84e-6;
731   fSigmaZ2[4]=6.889e-3;
732   fSigmaZ2[5]=6.889e-3;
733
734   return;
735 }
736 //_____________________________________________________________________________
737 void AliITSRecoParam::PrintParameters() const 
738 {
739   //
740   // print parameters
741   //
742
743   printf("=============================  AliITSRecoParam::PrintParameters ");
744   printf("============================= \n\n");
745   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
746     if(!fLayersToSkip[i]) {
747       printf("ITS Traking: using layer %d\n",i);
748     } else {
749       printf("ITS Traking: skipping layer %d\n",i);
750     }
751   }
752   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
753     if(fUseAmplitudeInfo[i]) {
754       printf("ITS Traking: use amplitude info for layer %d\n",i);
755     } else {
756       printf("ITS Traking: don't use amplitude info for layer %d\n",i);
757     }
758   }
759   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++)
760     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]);
761
762
763   Dump();
764
765   return;
766 }
767