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