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