]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSRecoParam.cxx
adding arguments to AddTaskPhysicsSelection for MC and BG identification (Antonin)
[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   fESDV0Params->SetMinNormDistForbProt(2.0);
235   fESDV0Params->SetMaxPidProbPionForb(0.5);
236
237   fESDV0Params->SetMinRTPCdensity(40.);
238   fESDV0Params->SetMaxRTPCdensity0(110.);
239   fESDV0Params->SetMaxRTPCdensity10(120.);
240   fESDV0Params->SetMaxRTPCdensity20(130.);
241   fESDV0Params->SetMaxRTPCdensity30(140.);
242
243   fESDV0Params->SetMinTPCdensity(0.6);
244   fESDV0Params->SetMinTgl1(1.1);
245   fESDV0Params->SetMinTgl2(1.0);
246   fESDV0Params->SetMinchi2before0(16.);
247   fESDV0Params->SetMinchi2before1(16.);
248   fESDV0Params->SetMinchi2after0(16.);
249   fESDV0Params->SetMinchi2after1(16.);
250   fESDV0Params->SetAddchi2SharedCl(18.);
251   fESDV0Params->SetAddchi2NegCl0(25.);
252   fESDV0Params->SetAddchi2NegCl1(30.);
253   fESDV0Params->SetSigp0Par0(0.0001);
254   fESDV0Params->SetSigp0Par1(0.001);
255   fESDV0Params->SetSigp0Par2(0.1);
256   fESDV0Params->SetSigpPar0(0.5);
257   fESDV0Params->SetSigpPar1(0.6);
258   fESDV0Params->SetSigpPar2(0.4);
259   fESDV0Params->SetMaxDcaLh0(0.5);
260   fESDV0Params->SetStreamLevel(0);
261   fESDV0Params->SetChi2KF(100);
262   fESDV0Params->SetRobustChi2KF(100);
263   
264 }
265 //_____________________________________________________________________________
266 AliITSRecoParam::~AliITSRecoParam() 
267 {
268   //
269   // destructor
270   //  
271   if(fESDV0Params){
272     delete fESDV0Params;
273     fESDV0Params=NULL;
274   }
275 }
276 //_____________________________________________________________________________
277 AliITSRecoParam *AliITSRecoParam::GetHighFluxParam() 
278 {
279   //
280   // make default reconstruction  parameters for hig  flux env.
281   //
282   AliITSRecoParam *param = new AliITSRecoParam();
283   param->SetVertexerZ();
284
285   // use of bads from OCDB
286   param->SetUseBadZonesFromOCDB(kTRUE);
287   param->SetUseSingleBadChannelsFromOCDB(kFALSE);
288   // extended eta acceptance
289   param->SetExtendedEtaAcceptance(kFALSE);
290   // allow to skip layer if no cluster and no bad
291   param->SetAllowProlongationWithEmptyRoad(kFALSE);
292   // set event specie
293   param->SetEventSpecie(AliRecoParam::kHighMult);
294
295   param->fMaxSnp = 0.95;
296
297   param->fNSigmaYLayerForRoadY = 4.;
298   param->fNSigmaRoadY = 7.5;
299   param->fNSigmaZLayerForRoadZ = 4.;
300   param->fNSigmaRoadZ = 7.5;
301
302   param->fNSigma2RoadZC = 60.; //7.75^2
303   param->fNSigma2RoadYC = 60.; //7.75^2
304   param->fNSigma2RoadZNonC = 50.; //7.07^2
305   param->fNSigma2RoadYNonC = 50.; //7.07^2
306
307   param->fMaxChi2PerCluster[0] = 11.; //7
308   param->fMaxChi2PerCluster[1] = 12.; //5
309   param->fMaxChi2PerCluster[2] = 12.; //8
310   param->fMaxChi2PerCluster[3] = 5.;  //8
311   param->fMaxChi2PerCluster[4] = 12.; //6.5
312
313   param->fMaxNormChi2NonC[0] = 7.;
314   param->fMaxNormChi2NonC[1] = 8.;
315   param->fMaxNormChi2NonC[2] = 8.;
316   param->fMaxNormChi2NonC[3] = 11.;
317   param->fMaxNormChi2NonC[4] = 14.;
318   param->fMaxNormChi2NonC[5] = 25.;
319
320   param->fMaxNormChi2C[0] = 11.;
321   param->fMaxNormChi2C[1] = 13.;
322   param->fMaxNormChi2C[2] = 15.;
323   param->fMaxNormChi2C[3] = 18.;
324   param->fMaxNormChi2C[4] = 30.;
325   param->fMaxNormChi2C[5] = 35.;
326
327   param->fMaxNormChi2NonCForHypothesis = 7.;
328   
329   param->fMaxChi2 = 35.;
330
331   param->fMaxChi2s[0] = 25.; //40   
332   param->fMaxChi2s[1] = 25.; //40   
333   param->fMaxChi2s[2] = 25.; //40   
334   param->fMaxChi2s[3] = 25.; //40   
335   param->fMaxChi2s[4] = 40.; //40   
336   param->fMaxChi2s[5] = 50.; //40
337
338   param->fMaxRoad = 6.;
339
340   // not used
341   param->fMaxChi2In = 16.;
342    
343   param->fMaxChi2sR[0] = 10.;   
344   param->fMaxChi2sR[1] = 10.;   
345   param->fMaxChi2sR[2] = 10.;   
346   param->fMaxChi2sR[3] = 10.;   
347   param->fMaxChi2sR[4] = 30.;   
348   param->fMaxChi2sR[5] = 40.;   
349
350   param->fChi2PerCluster = 9.;
351   // not used
352
353   param->fXV = 0.;
354   param->fYV = 0.;
355   param->fZV = 0.;
356   param->fSigmaXV = 0.0050;
357   param->fSigmaYV = 0.0050;
358   param->fSigmaZV = 0.0100;
359
360   param->fVertexCut = 25.;
361
362   param->fMaxDZforPrimTrk = 0.4;
363   param->fMaxDZToUseConstraint = 3.;
364
365   param->fMaxDforV0dghtrForProlongation = 30.;
366   param->fMaxDForProlongation = 40.;//10.;
367   param->fMaxDZForProlongation = 60.;//20.;
368   param->fMinPtForProlongation = 0.120;
369
370   param->fZWindowDeadZone = 2.0;
371   param->fSigmaXDeadZoneHit2 = 0.004/12.;
372   param->fSigmaZDeadZoneHit2 = 0.001/12.;
373   param->fXPassDeadZoneHits = 0.018;
374
375
376   
377   return param;
378 }
379 //_____________________________________________________________________________
380 AliITSRecoParam *AliITSRecoParam::GetLowFluxParam() 
381 {
382   //
383   // make default reconstruction  parameters for low  flux env.
384   //
385   AliITSRecoParam *param = new AliITSRecoParam();
386   param->SetVertexer3DDefaults();
387
388   // full use of bads from OCDB
389   param->SetUseBadZonesFromOCDB(kTRUE);
390   param->SetUseSingleBadChannelsFromOCDB(kTRUE);
391   // extended eta acceptance
392   param->SetExtendedEtaAcceptance(kTRUE);
393   // allow to skip layer if no cluster and no bad
394   param->SetAllowProlongationWithEmptyRoad(kTRUE);
395   // set event specie
396   param->SetEventSpecie(AliRecoParam::kLowMult);
397
398   param->fMaxSnp = 0.95;
399
400   param->fNSigmaYLayerForRoadY = 4.;
401   param->fNSigmaRoadY = 7.5;
402   param->fNSigmaZLayerForRoadZ = 4.;
403   param->fNSigmaRoadZ = 7.5;
404
405   param->fNSigma2RoadZC = 60.; //7.75^2
406   param->fNSigma2RoadYC = 60.; //7.75^2
407   param->fNSigma2RoadZNonC = 50.; //7.07^2
408   param->fNSigma2RoadYNonC = 50.; //7.07^2
409
410   param->fMaxChi2PerCluster[0] = 11.; //7
411   param->fMaxChi2PerCluster[1] = 12.; //5
412   param->fMaxChi2PerCluster[2] = 12.; //8
413   param->fMaxChi2PerCluster[3] = 5.;  //8
414   param->fMaxChi2PerCluster[4] = 12.; //6.5
415
416   param->fMaxNormChi2NonC[0] = 7.;
417   param->fMaxNormChi2NonC[1] = 8.;
418   param->fMaxNormChi2NonC[2] = 8.;
419   param->fMaxNormChi2NonC[3] = 11.;
420   param->fMaxNormChi2NonC[4] = 14.;
421   param->fMaxNormChi2NonC[5] = 25.;
422
423   param->fMaxNormChi2C[0] = 11.;
424   param->fMaxNormChi2C[1] = 13.;
425   param->fMaxNormChi2C[2] = 15.;
426   param->fMaxNormChi2C[3] = 18.;
427   param->fMaxNormChi2C[4] = 30.;
428   param->fMaxNormChi2C[5] = 35.;
429
430   param->fMaxNormChi2NonCForHypothesis = 7.;
431   
432   param->fMaxChi2 = 35.;
433
434   param->fMaxChi2s[0] = 25.; //40   
435   param->fMaxChi2s[1] = 25.; //40   
436   param->fMaxChi2s[2] = 25.; //40   
437   param->fMaxChi2s[3] = 25.; //40   
438   param->fMaxChi2s[4] = 40.; //40   
439   param->fMaxChi2s[5] = 50.; //40
440
441   param->fMaxRoad = 6.;
442
443   // not used
444   param->fMaxChi2In = 16.;
445    
446   param->fMaxChi2sR[0] = 10.;   
447   param->fMaxChi2sR[1] = 10.;   
448   param->fMaxChi2sR[2] = 10.;   
449   param->fMaxChi2sR[3] = 10.;   
450   param->fMaxChi2sR[4] = 30.;   
451   param->fMaxChi2sR[5] = 40.;   
452
453   param->fChi2PerCluster = 9.;
454   // not used
455
456   param->fXV = 0.;
457   param->fYV = 0.;
458   param->fZV = 0.;
459   param->fSigmaXV = 0.0050;
460   param->fSigmaYV = 0.0050;
461   param->fSigmaZV = 0.0100;
462
463   param->fVertexCut = 25.;
464
465   param->fMaxDZforPrimTrk = 0.4;
466   param->fMaxDZToUseConstraint = 3.;
467
468   param->fMaxDforV0dghtrForProlongation = 30.;
469   param->fMaxDForProlongation = 40.;//10.;
470   param->fMaxDZForProlongation = 60.;//20.;
471   param->fMinPtForProlongation = 0.120;
472
473   param->fZWindowDeadZone = 2.0;
474   param->fSigmaXDeadZoneHit2 = 0.004/12.;
475   param->fSigmaZDeadZoneHit2 = 0.001/12.;
476   param->fXPassDeadZoneHits = 0.018;
477   param->SetNLoopsSA(20);
478   param->fMaxPhiSA = 0.07;
479   param->fMaxLambdaSA = 0.04;
480
481  
482   param->GetESDV0Params()->SetMinRTgl0(0.5);
483   param->GetESDV0Params()->SetMaxDist(1.5);
484   param->GetESDV0Params()->SetMaxDcaLh0(1.5);
485   param->GetESDV0Params()->SetMaxRBestConst(80);
486   param->GetESDV0Params()->SetMinPABestConst(0.99);
487   param->GetESDV0Params()->SetMinNormDistForbTgl0(1.);
488   param->GetESDV0Params()->SetMinNormDistForb1(2.);
489   param->GetESDV0Params()->SetMinNormDistForbProt(1.);
490   param->GetESDV0Params()->SetMaxPidProbPionForb(0.7);
491   param->GetESDV0Params()->SetLikelihood01Cut(0.3);
492   param->GetESDV0Params()->SetLikelihood1Cut(0.35);
493   param->GetESDV0Params()->SetCombinedCut(0.4);
494
495
496
497   return param;
498 }
499 //_____________________________________________________________________________
500 AliITSRecoParam *AliITSRecoParam::GetCosmicTestParam() 
501 {
502   //
503   // make default reconstruction  parameters for cosmics
504   //
505   AliITSRecoParam *param = new AliITSRecoParam();
506
507   // vertexer for cosmics
508   param->SetVertexer(2);
509
510   param->SetClusterErrorsParam(2);
511   param->SetFindV0s(kFALSE);
512   param->SetAddVirtualClustersInDeadZone(kFALSE);
513   param->SetUseAmplitudeInfo(kFALSE);
514
515   // set event specie
516   param->SetEventSpecie(AliRecoParam::kCosmic);
517
518   // full use of bads from OCDB
519   param->SetUseBadZonesFromOCDB(kTRUE);
520   param->SetUseSingleBadChannelsFromOCDB(kTRUE);
521
522   // find independently ITS SA tracks 
523   param->SetSAUseAllClusters();
524   param->SetOuterStartLayerSA(AliITSgeomTGeo::GetNLayers()-2);
525
526   //****** COSMICS 2009 (same as COSMICS 2008) *********************
527
528   // to maximize efficiency
529   param->SetAllowProlongationWithEmptyRoad();
530   param->SetMinNPointsSA(2);
531
532   // larger seach windows for SA (in case of large misalignments)
533   param->SetNLoopsSA(33);
534   param->SetFactorSAWindowSizes(20);
535
536   // additional error due to misal (B off)
537   param->SetClusterMisalErrorY(1.0,1.0,1.0,1.0,1.0,1.0); // [cm]
538   param->SetClusterMisalErrorZ(1.0,1.0,1.0,1.0,1.0,1.0); // [cm]
539   // additional error due to misal (B on)
540   param->SetClusterMisalErrorYBOn(0.0,0.0,0.1,0.1,0.1,0.1); // [cm]
541   param->SetClusterMisalErrorZBOn(0.1,0.1,0.1,0.1,0.1,0.1); // [cm]
542
543
544   // SDD configuration 
545   param->fUseSDDCorrectionMaps = kFALSE;
546   param->fUseSDDClusterSizeSelection=kTRUE;
547   param->fMinClusterChargeSDD=30.;
548   
549
550   // alignment data filter
551   param->SetAlignFilterCosmics(kTRUE);
552   param->SetAlignFilterCosmicMergeTracks(kTRUE); 
553   param->SetAlignFilterMinITSPoints(1);
554   param->SetAlignFilterMinITSPointsMerged(3);
555   param->SetAlignFilterOnlyITSSATracks(kTRUE);
556   param->SetAlignFilterOnlyITSTPCTracks(kFALSE);
557   param->SetAlignFilterSkipExtra(kFALSE);
558   param->SetAlignFilterMaxMatchingAngle(0.085/*5deg*/);
559   param->SetAlignFilterMinPt(0.2);          
560   param->SetAlignFilterMaxPt(1.e10);          
561   param->SetAlignFilterFillQANtuples(kTRUE);    
562
563   //******************************************************************
564
565   param->fMaxSnp = 0.95;
566
567   param->fNSigmaYLayerForRoadY = 4.;
568   param->fNSigmaRoadY = 7.5;
569   param->fNSigmaZLayerForRoadZ = 4.;
570   param->fNSigmaRoadZ = 7.5;
571
572   param->fNSigma2RoadZC = 60.; //7.75^2
573   param->fNSigma2RoadYC = 60.; //7.75^2
574   param->fNSigma2RoadZNonC = 50.; //7.07^2
575   param->fNSigma2RoadYNonC = 50.; //7.07^2
576
577   param->fMaxChi2PerCluster[0] = 11.; //7
578   param->fMaxChi2PerCluster[1] = 12.; //5
579   param->fMaxChi2PerCluster[2] = 12.; //8
580   param->fMaxChi2PerCluster[3] = 5.;  //8
581   param->fMaxChi2PerCluster[4] = 12.; //6.5
582
583   param->fMaxNormChi2NonC[0] = 7.;
584   param->fMaxNormChi2NonC[1] = 8.;
585   param->fMaxNormChi2NonC[2] = 8.;
586   param->fMaxNormChi2NonC[3] = 11.;
587   param->fMaxNormChi2NonC[4] = 14.;
588   param->fMaxNormChi2NonC[5] = 25.;
589
590   param->fMaxNormChi2C[0] = 11.;
591   param->fMaxNormChi2C[1] = 13.;
592   param->fMaxNormChi2C[2] = 15.;
593   param->fMaxNormChi2C[3] = 18.;
594   param->fMaxNormChi2C[4] = 30.;
595   param->fMaxNormChi2C[5] = 35.;
596
597   param->fMaxNormChi2NonCForHypothesis = 7.;
598   
599   param->fMaxChi2 = 35.;
600
601   param->fMaxChi2s[0] = 25.; //40   
602   param->fMaxChi2s[1] = 25.; //40   
603   param->fMaxChi2s[2] = 25.; //40   
604   param->fMaxChi2s[3] = 25.; //40   
605   param->fMaxChi2s[4] = 40.; //40   
606   param->fMaxChi2s[5] = 50.; //40
607
608   param->fMaxRoad = 6.;
609
610   // not used
611   param->fMaxChi2In = 16.;
612    
613   param->fMaxChi2sR[0] = 10.;   
614   param->fMaxChi2sR[1] = 10.;   
615   param->fMaxChi2sR[2] = 10.;   
616   param->fMaxChi2sR[3] = 10.;   
617   param->fMaxChi2sR[4] = 30.;   
618   param->fMaxChi2sR[5] = 40.;   
619
620   param->fChi2PerCluster = 9.;
621   // not used
622
623   param->fXV = 0.;
624   param->fYV = 0.;
625   param->fZV = 0.;
626   param->fSigmaXV = 0.0050;
627   param->fSigmaYV = 0.0050;
628   param->fSigmaZV = 0.0100;
629
630   param->fVertexCut = 25.;
631
632   param->fMaxDZforPrimTrk = 0.4;
633   param->fMaxDZToUseConstraint = 3.;
634
635   param->fMaxDforV0dghtrForProlongation = 30.;
636   param->fMaxDForProlongation = 10.;
637   param->fMaxDZForProlongation = 20.;
638   param->fMinPtForProlongation = 0.120;
639
640   param->fZWindowDeadZone = 2.0;
641   param->fSigmaXDeadZoneHit2 = 0.004/12.;
642   param->fSigmaZDeadZoneHit2 = 0.001/12.;
643   param->fXPassDeadZoneHits = 0.018;
644
645   return param;
646 }
647 //_____________________________________________________________________________
648 AliITSRecoParam *AliITSRecoParam::GetPlaneEffParam(Int_t i)
649 {
650   //
651   // make special reconstruction parameters for Plane Efficiency study on layer i (0,5)
652   // 
653   // if i=-1, then the evaluation for both pixel layers is tried with the tracklet method
654   //
655  if (i<-1 || i>=AliITSgeomTGeo::kNLayers) {
656     printf("AliITSRecoParam::GetPlaneEffParam: index of ITS Plane nor in the range [0,5] neither =-1\n");
657     printf("returning null pointer");
658     return NULL;
659   }
660   if(i>=0) {  // Method using tracks (remove given plane from tracking)
661     AliITSRecoParam *param;
662     param = GetHighFluxParam();
663     param->SetComputePlaneEff();
664     param->SetLayerToSkip(i);
665     param->SetIPlanePlaneEff(i);
666     // optimized setting for SPD0 (i==0)
667     if (i==0 || i==1) {
668       param->fMinPtPlaneEff = 0.200; // high pt particles
669       param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster
670       param->fRequireClusterInOuterLayerPlaneEff = kTRUE; // cluster on SPD1 must be
671       //param->fOnlyConstraintPlaneEff = kTRUE;
672     }
673     if (i==2 || i==3) {
674       param->fMinPtPlaneEff = 0.200; // high pt particles
675       param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster
676       param->fRequireClusterInOuterLayerPlaneEff = kTRUE;
677       //param->fOnlyConstraintPlaneEff = kTRUE;
678     }
679     if (i==4) {
680       param->fMinPtPlaneEff = 0.200; // high pt particles
681       param->fMaxMissingClustersPlaneEff = 0; // at most 1 layer out of 5 without cluster
682       param->fRequireClusterInOuterLayerPlaneEff = kTRUE;
683       //param->fOnlyConstraintPlaneEff = kTRUE;
684     }
685     if (i==5) {
686       param->fMinPtPlaneEff = 0.200; // high pt particles
687     }
688     //
689     return param;
690   }
691   else if (i==-1) { // Method using tracklets
692     AliITSRecoParam *param;
693     param = GetLowFluxParam();
694     param->SetIPlanePlaneEff(i);
695     param->SetComputePlaneEff(kTRUE,kFALSE);
696     param->SetUseTrackletsPlaneEff(kTRUE);
697     param->SetTrackleterPhiWindowL2(0.07);
698     param->SetTrackleterZetaWindowL2(0.4);
699     param->SetTrackleterPhiWindowL1(0.10);
700     param->SetTrackleterZetaWindowL1(0.6);
701     param->SetUpdateOncePerEventPlaneEff(kTRUE);
702     param->SetMinContVtxPlaneEff(3);
703     return param;
704   }
705   else {
706     AliErrorGeneral("AliITSRecoParam",Form("Unrecognised value of i %d\n",i));
707     return 0;
708   }
709 }
710 //_____________________________________________________________________________
711 void AliITSRecoParam::SetLayersParameters() 
712 {
713   //
714   // number of layers and layers spatial resolutions
715   //
716
717   // spatial resolutions of the detectors
718   // y: 12 12 38 38 20 20 micron
719   fSigmaY2[0]=1.44e-6;
720   fSigmaY2[1]=1.44e-6;
721   fSigmaY2[2]=1.444e-5;
722   fSigmaY2[3]=1.444e-5;
723   fSigmaY2[4]=4.0e-6;
724   fSigmaY2[5]=4.0e-6;
725   // z: 120 120 28 28 830 830 micron
726   fSigmaZ2[0]=1.44e-4;
727   fSigmaZ2[1]=1.44e-4;
728   fSigmaZ2[2]=7.84e-6;
729   fSigmaZ2[3]=7.84e-6;
730   fSigmaZ2[4]=6.889e-3;
731   fSigmaZ2[5]=6.889e-3;
732
733   return;
734 }
735 //_____________________________________________________________________________
736 void AliITSRecoParam::PrintParameters() const 
737 {
738   //
739   // print parameters
740   //
741
742   printf("=============================  AliITSRecoParam::PrintParameters ");
743   printf("============================= \n\n");
744   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
745     if(!fLayersToSkip[i]) {
746       printf("ITS Traking: using layer %d\n",i);
747     } else {
748       printf("ITS Traking: skipping layer %d\n",i);
749     }
750   }
751   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
752     if(fUseAmplitudeInfo[i]) {
753       printf("ITS Traking: use amplitude info for layer %d\n",i);
754     } else {
755       printf("ITS Traking: don't use amplitude info for layer %d\n",i);
756     }
757   }
758   for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++)
759     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]);
760
761
762   Dump();
763
764   return;
765 }
766