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