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