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