Offline to FEE mapping implemented in Digits2Raw
[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"
17
18/* $Id$ */
44347160 19
20///////////////////////////////////////////////////////////////////////////////
21// //
22// Class with ITS reconstruction parameters //
23// Origin: andrea.dainese@lnl.infn.it //
24// //
25///////////////////////////////////////////////////////////////////////////////
26
27
44347160 28
29ClassImp(AliITSRecoParam)
30
e50912db 31const Int_t AliITSRecoParam::fgkLayersNotToSkip[AliITSgeomTGeo::kNLayers]={0,0,0,0,0,0};
32const Int_t AliITSRecoParam::fgkLastLayerToTrackTo=0;
33const Int_t AliITSRecoParam::fgkMaxDetectorPerLayer=1000;
34const Double_t AliITSRecoParam::fgkriw=80.0;
35const Double_t AliITSRecoParam::fgkdiw=0.0053;
36const Double_t AliITSRecoParam::fgkX0iw=30.0;
37const Double_t AliITSRecoParam::fgkrcd=61.0;
38const Double_t AliITSRecoParam::fgkdcd=0.0053;
39const Double_t AliITSRecoParam::fgkX0cd=30.0;
40const Double_t AliITSRecoParam::fgkyr=12.8;
41const Double_t AliITSRecoParam::fgkdr=0.03;
42const Double_t AliITSRecoParam::fgkzm=0.2;
43const Double_t AliITSRecoParam::fgkdm=0.40;
44const Double_t AliITSRecoParam::fgkrs=50.0;
45const Double_t AliITSRecoParam::fgkds=0.001;
46const Double_t AliITSRecoParam::fgkrInsideITSscreen=49.0;
47const Double_t AliITSRecoParam::fgkrInsideSPD1=3.7;
48const Double_t AliITSRecoParam::fgkrPipe=3.;
49const Double_t AliITSRecoParam::fgkrInsidePipe=2.7;
50const Double_t AliITSRecoParam::fgkrOutsidePipe=3.3;
51const Double_t AliITSRecoParam::fgkdPipe=0.0028;
52const Double_t AliITSRecoParam::fgkrInsideShield[2]={7.5,25.0};
53const Double_t AliITSRecoParam::fgkrOutsideShield[2]={10.5,30.0};
54const Double_t AliITSRecoParam::fgkdshield[2]={0.0097,0.0034};
55const Double_t AliITSRecoParam::fgkX0shield[2]={38.6,42.0};
56const Double_t AliITSRecoParam::fgkX0Air=21.82;
57const Double_t AliITSRecoParam::fgkX0Be=65.19;
58const Double_t AliITSRecoParam::fgkBoundaryWidth=0.2;
59const Double_t AliITSRecoParam::fgkDeltaXNeighbDets=0.5;
60const Double_t AliITSRecoParam::fgkSPDdetzlength=6.960; // 7.072-2*0.056
61const Double_t AliITSRecoParam::fgkSPDdetxlength=1.298; // 1.410-2*0.056
44347160 62
63//_____________________________________________________________________________
6518a6c5 64AliITSRecoParam::AliITSRecoParam() : AliDetectorRecoParam(),
f9119eb9 65fTracker(0),
66fITSonly(kFALSE),
67fVertexer(0),
876026b6 68fClusterFinder(0),
69fPID(0),
e50912db 70fMaxSnp(1.),
572f41f9 71fNSigmaYLayerForRoadY(0),
72fNSigmaRoadY(0),
73fNSigmaZLayerForRoadZ(0),
74fNSigmaRoadZ(0),
75fNSigma2RoadZC(0),
76fNSigma2RoadYC(0),
77fNSigma2RoadZNonC(0),
78fNSigma2RoadYNonC(0),
1c97ce2f 79fRoadMisal(0),
572f41f9 80fMaxNormChi2NonCForHypothesis(0),
81fMaxChi2(0),
82fMaxRoad(0),
83fMaxChi2In(0),
84fChi2PerCluster(0),
85fXV(0),
86fYV(0),
87fZV(0),
88fSigmaXV(0),
89fSigmaYV(0),
90fSigmaZV(0),
91fVertexCut(0),
92fMaxDZforPrimTrk(0),
93fMaxDZToUseConstraint(0),
94fMaxDforV0dghtrForProlongation(0),
95fMaxDForProlongation(0),
96fMaxDZForProlongation(0),
97fMinPtForProlongation(0),
6518a6c5 98fAddVirtualClustersInDeadZone(kFALSE),
572f41f9 99fZWindowDeadZone(0),
100fSigmaXDeadZoneHit2(0),
101fSigmaZDeadZoneHit2(0),
102fXPassDeadZoneHits(0),
6518a6c5 103fUseTGeoInTracker(3),
572f41f9 104fAllowSharedClusters(kTRUE),
e50912db 105fClusterErrorsParam(1),
4a66240a 106fComputePlaneEff(kFALSE),
5fbd4fd6 107fHistoPlaneEff(kFALSE),
0ed58a47 108fIPlanePlaneEff(0),
275a301c 109fReadPlaneEffFromOCDB(kFALSE),
0ed58a47 110fMinPtPlaneEff(0),
111fMaxMissingClustersPlaneEff(0),
112fRequireClusterInOuterLayerPlaneEff(kFALSE),
113fRequireClusterInInnerLayerPlaneEff(kFALSE),
114fOnlyConstraintPlaneEff(kFALSE),
2755f080 115fExtendedEtaAcceptance(kFALSE),
23197852 116fUseBadZonesFromOCDB(kFALSE),
117fUseSingleBadChannelsFromOCDB(kFALSE),
118fMinFractionOfBadInRoad(0),
ae00569a 119fAllowProlongationWithEmptyRoad(kFALSE),
9f9cae94 120fOuterStartLayerSA(0),
2755f080 121fFactorSAWindowSizes(1.),
c7d6d7b7 122fNLoopsSA(33),
123fMinPhiSA(0.002),
124fMaxPhiSA(0.0145),
125fMinLambdaSA(0.003),
126fMaxLambdaSA(0.008),
5a03f353 127fSAOnePointTracks(kFALSE),
128fSAUseAllClusters(kFALSE),
6518a6c5 129fFindV0s(kTRUE),
130fUseUnfoldingInClusterFinderSPD(kFALSE),
131fUseUnfoldingInClusterFinderSDD(kTRUE),
a86176e3 132fUseUnfoldingInClusterFinderSSD(kTRUE),
133fUseChargeMatchingInClusterFinderSSD(kTRUE)
44347160 134{
135 //
136 // constructor
137 //
6518a6c5 138 SetName("ITS");
139 SetTitle("ITS");
140
44347160 141 SetLayersParameters();
2755f080 142 for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) fLayersToSkip[i]=0;
6518a6c5 143 SetUseTGeoInTracker(3);
afd25725 144 SetAllowSharedClusters(kTRUE);
145 SetFindV0s(kTRUE);
6518a6c5 146 SetAddVirtualClustersInDeadZone(kFALSE);
572f41f9 147 SetUseAmplitudeInfo(kTRUE);
e50912db 148 SetClusterErrorsParam(1);
f9119eb9 149 SetClusterMisalError(0.);
44347160 150}
151//_____________________________________________________________________________
152AliITSRecoParam::~AliITSRecoParam()
153{
154 //
155 // destructor
156 //
157}
158//_____________________________________________________________________________
159AliITSRecoParam *AliITSRecoParam::GetHighFluxParam()
160{
161 //
162 // make default reconstruction parameters for hig flux env.
163 //
164 AliITSRecoParam *param = new AliITSRecoParam();
165
166 param->fMaxSnp = 0.95;
167
168 param->fNSigmaYLayerForRoadY = 4.;
169 param->fNSigmaRoadY = 7.5;
170 param->fNSigmaZLayerForRoadZ = 4.;
171 param->fNSigmaRoadZ = 7.5;
172
173 param->fNSigma2RoadZC = 60.; //7.75^2
174 param->fNSigma2RoadYC = 60.; //7.75^2
175 param->fNSigma2RoadZNonC = 50.; //7.07^2
176 param->fNSigma2RoadYNonC = 50.; //7.07^2
177
178 param->fMaxChi2PerCluster[0] = 11.; //7
179 param->fMaxChi2PerCluster[1] = 12.; //5
180 param->fMaxChi2PerCluster[2] = 12.; //8
181 param->fMaxChi2PerCluster[3] = 5.; //8
182 param->fMaxChi2PerCluster[4] = 12.; //6.5
183
184 param->fMaxNormChi2NonC[0] = 7.;
185 param->fMaxNormChi2NonC[1] = 8.;
186 param->fMaxNormChi2NonC[2] = 8.;
187 param->fMaxNormChi2NonC[3] = 11.;
188 param->fMaxNormChi2NonC[4] = 14.;
189 param->fMaxNormChi2NonC[5] = 25.;
190
191 param->fMaxNormChi2C[0] = 11.;
192 param->fMaxNormChi2C[1] = 13.;
193 param->fMaxNormChi2C[2] = 15.;
194 param->fMaxNormChi2C[3] = 18.;
195 param->fMaxNormChi2C[4] = 30.;
196 param->fMaxNormChi2C[5] = 35.;
afd25725 197
198 param->fMaxNormChi2NonCForHypothesis = 7.;
44347160 199
200 param->fMaxChi2 = 35.;
201
202 param->fMaxChi2s[0] = 25.; //40
203 param->fMaxChi2s[1] = 25.; //40
204 param->fMaxChi2s[2] = 25.; //40
205 param->fMaxChi2s[3] = 25.; //40
206 param->fMaxChi2s[4] = 40.; //40
207 param->fMaxChi2s[5] = 50.; //40
208
209 param->fMaxRoad = 6.;
210
211 // not used
212 param->fMaxChi2In = 16.;
213
214 param->fMaxChi2sR[0] = 10.;
215 param->fMaxChi2sR[1] = 10.;
216 param->fMaxChi2sR[2] = 10.;
217 param->fMaxChi2sR[3] = 10.;
218 param->fMaxChi2sR[4] = 30.;
219 param->fMaxChi2sR[5] = 40.;
220
221 param->fChi2PerCluster = 9.;
222 // not used
223
224 param->fXV = 0.;
225 param->fYV = 0.;
226 param->fZV = 0.;
227 param->fSigmaXV = 0.0050;
228 param->fSigmaYV = 0.0050;
229 param->fSigmaZV = 0.0100;
230
231 param->fVertexCut = 25.;
afd25725 232
233 param->fMaxDZforPrimTrk = 0.4;
234 param->fMaxDZToUseConstraint = 3.;
235
236 param->fMaxDforV0dghtrForProlongation = 30.;
6518a6c5 237 param->fMaxDForProlongation = 40.;//10.;
238 param->fMaxDZForProlongation = 60.;//20.;
afd25725 239 param->fMinPtForProlongation = 0.120;
240
241 param->fZWindowDeadZone = 2.0;
242 param->fSigmaXDeadZoneHit2 = 0.004/12.;
243 param->fSigmaZDeadZoneHit2 = 0.001/12.;
244 param->fXPassDeadZoneHits = 0.018;
44347160 245
246 return param;
247}
248//_____________________________________________________________________________
249AliITSRecoParam *AliITSRecoParam::GetLowFluxParam()
250{
251 //
252 // make default reconstruction parameters for low flux env.
253 //
c7d6d7b7 254 AliITSRecoParam *param = new AliITSRecoParam();
255
256 param->fMaxSnp = 0.95;
257
258 param->fNSigmaYLayerForRoadY = 4.;
259 param->fNSigmaRoadY = 7.5;
260 param->fNSigmaZLayerForRoadZ = 4.;
261 param->fNSigmaRoadZ = 7.5;
262
263 param->fNSigma2RoadZC = 60.; //7.75^2
264 param->fNSigma2RoadYC = 60.; //7.75^2
265 param->fNSigma2RoadZNonC = 50.; //7.07^2
266 param->fNSigma2RoadYNonC = 50.; //7.07^2
267
268 param->fMaxChi2PerCluster[0] = 11.; //7
269 param->fMaxChi2PerCluster[1] = 12.; //5
270 param->fMaxChi2PerCluster[2] = 12.; //8
271 param->fMaxChi2PerCluster[3] = 5.; //8
272 param->fMaxChi2PerCluster[4] = 12.; //6.5
273
274 param->fMaxNormChi2NonC[0] = 7.;
275 param->fMaxNormChi2NonC[1] = 8.;
276 param->fMaxNormChi2NonC[2] = 8.;
277 param->fMaxNormChi2NonC[3] = 11.;
278 param->fMaxNormChi2NonC[4] = 14.;
279 param->fMaxNormChi2NonC[5] = 25.;
280
281 param->fMaxNormChi2C[0] = 11.;
282 param->fMaxNormChi2C[1] = 13.;
283 param->fMaxNormChi2C[2] = 15.;
284 param->fMaxNormChi2C[3] = 18.;
285 param->fMaxNormChi2C[4] = 30.;
286 param->fMaxNormChi2C[5] = 35.;
287
288 param->fMaxNormChi2NonCForHypothesis = 7.;
289
290 param->fMaxChi2 = 35.;
291
292 param->fMaxChi2s[0] = 25.; //40
293 param->fMaxChi2s[1] = 25.; //40
294 param->fMaxChi2s[2] = 25.; //40
295 param->fMaxChi2s[3] = 25.; //40
296 param->fMaxChi2s[4] = 40.; //40
297 param->fMaxChi2s[5] = 50.; //40
298
299 param->fMaxRoad = 6.;
300
301 // not used
302 param->fMaxChi2In = 16.;
303
304 param->fMaxChi2sR[0] = 10.;
305 param->fMaxChi2sR[1] = 10.;
306 param->fMaxChi2sR[2] = 10.;
307 param->fMaxChi2sR[3] = 10.;
308 param->fMaxChi2sR[4] = 30.;
309 param->fMaxChi2sR[5] = 40.;
310
311 param->fChi2PerCluster = 9.;
312 // not used
313
314 param->fXV = 0.;
315 param->fYV = 0.;
316 param->fZV = 0.;
317 param->fSigmaXV = 0.0050;
318 param->fSigmaYV = 0.0050;
319 param->fSigmaZV = 0.0100;
320
321 param->fVertexCut = 25.;
322
323 param->fMaxDZforPrimTrk = 0.4;
324 param->fMaxDZToUseConstraint = 3.;
325
326 param->fMaxDforV0dghtrForProlongation = 30.;
327 param->fMaxDForProlongation = 40.;//10.;
328 param->fMaxDZForProlongation = 60.;//20.;
329 param->fMinPtForProlongation = 0.120;
330
331 param->fZWindowDeadZone = 2.0;
332 param->fSigmaXDeadZoneHit2 = 0.004/12.;
333 param->fSigmaZDeadZoneHit2 = 0.001/12.;
334 param->fXPassDeadZoneHits = 0.018;
335 param->SetNLoopsSA(10);
336
337 return param;
44347160 338}
339//_____________________________________________________________________________
340AliITSRecoParam *AliITSRecoParam::GetCosmicTestParam()
341{
342 //
343 // make default reconstruction parameters for cosmics
344 //
e340bb86 345 AliITSRecoParam *param = new AliITSRecoParam();
346
f9119eb9 347 // vertexer for cosmics
348 param->SetVertexer(2);
349
9f9cae94 350 // find independently ITS SA tracks
351 param->SetSAUseAllClusters();
352 param->SetOuterStartLayerSA(AliITSgeomTGeo::GetNLayers()-2);
f9119eb9 353
2755f080 354 // larger seach windows for SA (in case of large misalignments)
355 param->SetFactorSAWindowSizes(3.);
e340bb86 356
357 param->fMaxSnp = 0.95;
358
359 param->fNSigmaYLayerForRoadY = 4.;
360 param->fNSigmaRoadY = 7.5;
361 param->fNSigmaZLayerForRoadZ = 4.;
362 param->fNSigmaRoadZ = 7.5;
363
364 param->fNSigma2RoadZC = 60.; //7.75^2
365 param->fNSigma2RoadYC = 60.; //7.75^2
366 param->fNSigma2RoadZNonC = 50.; //7.07^2
367 param->fNSigma2RoadYNonC = 50.; //7.07^2
368
369 param->fMaxChi2PerCluster[0] = 11.; //7
370 param->fMaxChi2PerCluster[1] = 12.; //5
371 param->fMaxChi2PerCluster[2] = 12.; //8
372 param->fMaxChi2PerCluster[3] = 5.; //8
373 param->fMaxChi2PerCluster[4] = 12.; //6.5
374
375 param->fMaxNormChi2NonC[0] = 7.;
376 param->fMaxNormChi2NonC[1] = 8.;
377 param->fMaxNormChi2NonC[2] = 8.;
378 param->fMaxNormChi2NonC[3] = 11.;
379 param->fMaxNormChi2NonC[4] = 14.;
380 param->fMaxNormChi2NonC[5] = 25.;
381
382 param->fMaxNormChi2C[0] = 11.;
383 param->fMaxNormChi2C[1] = 13.;
384 param->fMaxNormChi2C[2] = 15.;
385 param->fMaxNormChi2C[3] = 18.;
386 param->fMaxNormChi2C[4] = 30.;
387 param->fMaxNormChi2C[5] = 35.;
388
389 param->fMaxNormChi2NonCForHypothesis = 7.;
390
391 param->fMaxChi2 = 35.;
392
393 param->fMaxChi2s[0] = 25.; //40
394 param->fMaxChi2s[1] = 25.; //40
395 param->fMaxChi2s[2] = 25.; //40
396 param->fMaxChi2s[3] = 25.; //40
397 param->fMaxChi2s[4] = 40.; //40
398 param->fMaxChi2s[5] = 50.; //40
399
400 param->fMaxRoad = 6.;
401
402 // not used
403 param->fMaxChi2In = 16.;
404
405 param->fMaxChi2sR[0] = 10.;
406 param->fMaxChi2sR[1] = 10.;
407 param->fMaxChi2sR[2] = 10.;
408 param->fMaxChi2sR[3] = 10.;
409 param->fMaxChi2sR[4] = 30.;
410 param->fMaxChi2sR[5] = 40.;
411
412 param->fChi2PerCluster = 9.;
413 // not used
414
415 param->fXV = 0.;
416 param->fYV = 0.;
417 param->fZV = 0.;
418 param->fSigmaXV = 0.0050;
419 param->fSigmaYV = 0.0050;
420 param->fSigmaZV = 0.0100;
421
422 param->fVertexCut = 25.;
423
424 param->fMaxDZforPrimTrk = 0.4;
425 param->fMaxDZToUseConstraint = 3.;
426
427 param->fMaxDforV0dghtrForProlongation = 30.;
428 param->fMaxDForProlongation = 10.;
429 param->fMaxDZForProlongation = 20.;
430 param->fMinPtForProlongation = 0.120;
431
432 param->fZWindowDeadZone = 2.0;
433 param->fSigmaXDeadZoneHit2 = 0.004/12.;
434 param->fSigmaZDeadZoneHit2 = 0.001/12.;
435 param->fXPassDeadZoneHits = 0.018;
436
437
438 return param;
44347160 439}
440//_____________________________________________________________________________
ae00569a 441AliITSRecoParam *AliITSRecoParam::GetPlaneEffParam(Int_t i)
442{
443 //
444 // make special reconstruction parameters for Plane Efficiency study on layer i
445 //
0ed58a47 446 if (i<0 || i>=AliITSgeomTGeo::kNLayers) {
447 printf("AliITSRecoParam::GetPlaneEffParam: index of ITS Plane not in the range [0,5]\n");
448 printf("returning null pointer");
449 return NULL;
450 }
ae00569a 451 AliITSRecoParam *param;
452 param = GetHighFluxParam();
453 param->SetComputePlaneEff();
454 param->SetLayerToSkip(i);
0ed58a47 455 param->SetIPlanePlaneEff(i);
456 // optimized setting for SPD0 (i==0)
457 if (i==0 || i==1) {
458 param->fMinPtPlaneEff = 0.200; // high pt particles
459 param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster
460 param->fRequireClusterInOuterLayerPlaneEff = kTRUE; // cluster on SPD1 must be
461 //param->fOnlyConstraintPlaneEff = kTRUE;
462 }
463 if (i==2 || i==3) {
464 param->fMinPtPlaneEff = 0.200; // high pt particles
465 param->fMaxMissingClustersPlaneEff = 1; // at most 1 layer out of 5 without cluster
466 param->fRequireClusterInOuterLayerPlaneEff = kTRUE;
467 //param->fOnlyConstraintPlaneEff = kTRUE;
468 }
469 if (i==4) {
470 param->fMinPtPlaneEff = 0.200; // high pt particles
471 param->fMaxMissingClustersPlaneEff = 0; // at most 1 layer out of 5 without cluster
472 param->fRequireClusterInOuterLayerPlaneEff = kTRUE;
473 //param->fOnlyConstraintPlaneEff = kTRUE;
474 }
475 if (i==5) {
476 param->fMinPtPlaneEff = 0.200; // high pt particles
477 }
478 //
ae00569a 479 return param;
480}
481//_____________________________________________________________________________
44347160 482void AliITSRecoParam::SetLayersParameters()
483{
484 //
485 // number of layers and layers spatial resolutions
486 //
487
488 // spatial resolutions of the detectors
489 // y: 12 12 38 38 20 20 micron
490 fSigmaY2[0]=1.44e-6;
491 fSigmaY2[1]=1.44e-6;
492 fSigmaY2[2]=1.444e-5;
493 fSigmaY2[3]=1.444e-5;
494 fSigmaY2[4]=4.0e-6;
495 fSigmaY2[5]=4.0e-6;
496 // z: 120 120 28 28 830 830 micron
497 fSigmaZ2[0]=1.44e-4;
498 fSigmaZ2[1]=1.44e-4;
499 fSigmaZ2[2]=7.84e-6;
500 fSigmaZ2[3]=7.84e-6;
501 fSigmaZ2[4]=6.889e-3;
502 fSigmaZ2[5]=6.889e-3;
503
504 return;
505}
ed446fa3 506//_____________________________________________________________________________
507void AliITSRecoParam::PrintParameters() const
508{
509 //
510 // print parameters
511 //
512
513 printf("============================= AliITSRecoParam::PrintParameters ");
f9119eb9 514 printf("============================= \n\n");
ed446fa3 515 for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
516 if(!fLayersToSkip[i]) {
517 printf("ITS Traking: using layer %d\n",i);
518 } else {
519 printf("ITS Traking: skipping layer %d\n",i);
520 }
521 }
522 for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++) {
523 if(fUseAmplitudeInfo[i]) {
524 printf("ITS Traking: use amplitude info for layer %d\n",i);
525 } else {
526 printf("ITS Traking: don't use amplitude info for layer %d\n",i);
527 }
528 }
529 for(Int_t i=0; i<AliITSgeomTGeo::kNLayers; i++)
f9119eb9 530 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 531
532
533 Dump();
534
535 return;
536}