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