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