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