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