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