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