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