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