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