The description of changes:
[u/mrichter/AliRoot.git] / MUON / AliMUONRecoParam.cxx
CommitLineData
3304fa09 1/**************************************************************************
2* Copyright(c) 1998-2007, 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
bf4d93eb 16// $Id$
3304fa09 17
18//-----------------------------------------------------------------------------
19/// \class AliMUONRecoParam
20///
21/// Class with MUON reconstruction parameters
22///
23/// \author Philippe Pillot
24//-----------------------------------------------------------------------------
25
26
27
28#include "AliMUONRecoParam.h"
ad3c6eda 29#include "AliMUONPadStatusMaker.h"
3304fa09 30
ad3c6eda 31#include "AliRecoParam.h"
3304fa09 32#include "AliLog.h"
33
34#include <Riostream.h>
35
36ClassImp(AliMUONRecoParam)
37
38
39//_____________________________________________________________________________
40AliMUONRecoParam::AliMUONRecoParam()
15d30ed4 41: AliDetectorRecoParam(),
3304fa09 42 fClusteringMode("MLEM"),
43 fTrackingMode("KALMAN"),
44 fMinBendingMomentum(0.),
45 fMaxBendingMomentum(0.),
9bf6860b 46 fMaxNonBendingSlope(0.),
9f093251 47 fMaxBendingSlope(0.),
3304fa09 48 fNonBendingVertexDispersion(0.),
49 fBendingVertexDispersion(0.),
50 fMaxNonBendingDistanceToTrack(0.),
51 fMaxBendingDistanceToTrack(0.),
52 fSigmaCutForTracking(0.),
53 fSigmaCutForImprovement(0.),
fda59e58 54 fSigmaCutForTrigger(0.),
b5270f21 55 fStripCutForTrigger(0.),
56 fMaxStripAreaForTrigger(0.),
3304fa09 57 fMaxNormChi2MatchTrigger(0.),
0a18ba02 58 fPercentOfFullClusterInESD(10.),
38bcf0ef 59 fCombinedClusterTrackReco(kFALSE),
3304fa09 60 fTrackAllTracks(kFALSE),
61 fRecoverTracks(kFALSE),
62 fMakeTrackCandidatesFast(kFALSE),
9bf6860b 63 fMakeMoreTrackCandidates(kFALSE),
3304fa09 64 fComplementTracks(kFALSE),
65 fImproveTracks(kFALSE),
0a18ba02 66 fUseSmoother(kFALSE),
de98fdc9 67 fSaveFullClusterInESD(kTRUE),
9bf6860b 68 fCalibrationMode("NOGAIN"),
004a9ccd 69 fBypassSt45(0),
170f4046 70 fPadGoodnessMask(0),
c59f70b9 71 fChargeSigmaCut(4.0),
89c8d66d 72 fRemoveConnectedTracksInSt12(kFALSE),
73 fMaxTriggerTracks(0),
6b191dea 74 fMaxTrackCandidates(0),
ece56eb9 75 fSelectTrackOnSlope(kFALSE),
76 fMissingPadFractionLimit(0),
77 fFractionOfBuspatchOutsideOccupancyLimit(0)
3304fa09 78{
79 /// Constructor
80
ad3c6eda 81 SetNameTitle("Dummy","Dummy");
c6e702f8 82 for (Int_t iCh = 0; iCh < 10; iCh++) {
83 fUseChamber[iCh] = kTRUE;
84 fDefaultNonBendingReso[iCh] = 0.;
85 fDefaultBendingReso[iCh] = 0.;
86 }
87 for (Int_t iSt = 0; iSt < 5; iSt++) fRequestStation[iSt] = kTRUE;
ad3c6eda 88 SetDefaultLimits();
3304fa09 89}
90
91//_____________________________________________________________________________
92AliMUONRecoParam::~AliMUONRecoParam()
93{
94 /// Destructor
95}
96
004a9ccd 97//_____________________________________________________________________________
98void
99AliMUONRecoParam::BypassSt45(Bool_t st4, Bool_t st5)
100{
101 /// Set the bypass status
102
103 if ( st4 && st5 ) fBypassSt45 = 45;
104 else if ( st4 ) fBypassSt45 = 4;
105 else if ( st5 ) fBypassSt45 = 5;
106 else fBypassSt45 = 0;
107}
108
9bf6860b 109//_____________________________________________________________________________
110Option_t*
111AliMUONRecoParam::GetCalibrationMode() const
112{
113 /// Return the calibration mode. Can be :
114 /// NOGAIN : only do pedestal subtraction
115 /// GAIN : do pedestal subtraction, and apply gain correction, but with a
116 /// single capacitance value for all channels
66cdf5b3 117 /// INJECTIONGAIN : as GAIN, but with gain values taken as EMELEC factory values
9bf6860b 118 /// GAINCONSTANTCAPA : as GAIN, but with a channel-dependent capacitance value
119
120 return fCalibrationMode.Data();
121}
122
3304fa09 123//_____________________________________________________________________________
124AliMUONRecoParam *AliMUONRecoParam::GetLowFluxParam()
125{
126 /// Return default reconstruction parameters for low flux environment
127
128 AliMUONRecoParam *param = new AliMUONRecoParam();
129 param->SetLowFluxParam();
130
131 return param;
132}
133
134//_____________________________________________________________________________
135AliMUONRecoParam *AliMUONRecoParam::GetHighFluxParam()
136{
137 /// Return default reconstruction parameters for high flux environment
138
139 AliMUONRecoParam *param = new AliMUONRecoParam();
140 param->SetHighFluxParam();
141
142 return param;
143}
144
0e894e58 145//_____________________________________________________________________________
146AliMUONRecoParam *AliMUONRecoParam::GetCosmicParam()
147{
148 /// Return default reconstruction parameters for high flux environment
149
150 AliMUONRecoParam *param = new AliMUONRecoParam();
151 param->SetCosmicParam();
152
153 return param;
154}
155
c6e702f8 156//_____________________________________________________________________________
157AliMUONRecoParam *AliMUONRecoParam::GetCalibrationParam()
158{
159 /// Return default (dummy) reconstruction parameters for calibration environment
160
161 AliMUONRecoParam *param = new AliMUONRecoParam();
162 param->SetCalibrationParam();
163
164 return param;
165}
166
167
3304fa09 168//_____________________________________________________________________________
169void AliMUONRecoParam::SetLowFluxParam()
170{
171 /// Set reconstruction parameters for low flux environment
172
ad3c6eda 173 SetNameTitle("Low Flux","Low Flux");
174 SetEventSpecie(AliRecoParam::kLowMult);
e8ec0154 175 fMinBendingMomentum = 0.8;
176 fMaxBendingMomentum = 1.e10;
9bf6860b 177 fMaxNonBendingSlope = 0.3;
9f093251 178 fMaxBendingSlope = 0.4;
6b191dea 179 fSelectTrackOnSlope = kFALSE;
180 fNonBendingVertexDispersion = 70.;
181 fBendingVertexDispersion = 70.;
9bf6860b 182 fMaxNonBendingDistanceToTrack = 1.;
183 fMaxBendingDistanceToTrack = 1.;
3304fa09 184 fSigmaCutForTracking = 6.;
185 fSigmaCutForImprovement = 5.;
bdfb6eef 186 fSigmaCutForTrigger = 4.;
b5270f21 187 fStripCutForTrigger = 1.;
188 fMaxStripAreaForTrigger = 3.;
bdfb6eef 189 fMaxNormChi2MatchTrigger = fSigmaCutForTrigger * fSigmaCutForTrigger;
6cac085d 190 fCombinedClusterTrackReco = kFALSE;
3304fa09 191 fTrackAllTracks = kTRUE;
192 fRecoverTracks = kTRUE;
193 fMakeTrackCandidatesFast = kFALSE;
9bf6860b 194 fMakeMoreTrackCandidates = kFALSE;
3304fa09 195 fComplementTracks = kTRUE;
196 fImproveTracks = kTRUE;
5c15a68b 197 fRemoveConnectedTracksInSt12 = kFALSE;
3304fa09 198 fUseSmoother = kTRUE;
35be7ed7 199 for (Int_t iCh = 0; iCh < 10; iCh++) {
200 fUseChamber[iCh] = kTRUE;
201 fDefaultNonBendingReso[iCh] = 0.144;
202 fDefaultBendingReso[iCh] = 0.01;
203 }
9bf6860b 204 for (Int_t iSt = 0; iSt < 5; iSt++) fRequestStation[iSt] = kTRUE;
004a9ccd 205 fBypassSt45 = 0;
89c8d66d 206 fMaxTriggerTracks = 100;
ece56eb9 207 fMaxTrackCandidates = 10000;
3304fa09 208}
209
210//_____________________________________________________________________________
211void AliMUONRecoParam::SetHighFluxParam()
212{
213 /// Set reconstruction parameters for high flux environment
214
ad3c6eda 215 SetNameTitle("High Flux","High Flux");
216 SetEventSpecie(AliRecoParam::kHighMult);
e8ec0154 217 fMinBendingMomentum = 0.8;
218 fMaxBendingMomentum = 1.e10;
9bf6860b 219 fMaxNonBendingSlope = 0.3;
9f093251 220 fMaxBendingSlope = 0.4;
6b191dea 221 fSelectTrackOnSlope = kFALSE;
222 fNonBendingVertexDispersion = 70.;
223 fBendingVertexDispersion = 70.;
9bf6860b 224 fMaxNonBendingDistanceToTrack = 1.;
225 fMaxBendingDistanceToTrack = 1.;
3304fa09 226 fSigmaCutForTracking = 6.;
227 fSigmaCutForImprovement = 5.;
bdfb6eef 228 fSigmaCutForTrigger = 4.;
b5270f21 229 fStripCutForTrigger = 1.;
230 fMaxStripAreaForTrigger = 3.;
bdfb6eef 231 fMaxNormChi2MatchTrigger = fSigmaCutForTrigger * fSigmaCutForTrigger;
6cac085d 232 fCombinedClusterTrackReco = kFALSE;
3304fa09 233 fTrackAllTracks = kTRUE;
234 fRecoverTracks = kTRUE;
235 fMakeTrackCandidatesFast = kFALSE;
9bf6860b 236 fMakeMoreTrackCandidates = kFALSE;
3304fa09 237 fComplementTracks = kTRUE;
238 fImproveTracks = kTRUE;
c59f70b9 239 fRemoveConnectedTracksInSt12 = kFALSE;
3304fa09 240 fUseSmoother = kTRUE;
35be7ed7 241 for (Int_t iCh = 0; iCh < 10; iCh++) {
242 fUseChamber[iCh] = kTRUE;
243 fDefaultNonBendingReso[iCh] = 0.144;
244 fDefaultBendingReso[iCh] = 0.01;
245 }
9bf6860b 246 for (Int_t iSt = 0; iSt < 5; iSt++) fRequestStation[iSt] = kTRUE;
004a9ccd 247 fBypassSt45 = 0;
89c8d66d 248 fMaxTriggerTracks = 100;
249 fMaxTrackCandidates = 10000;
3304fa09 250
251}
252
0e894e58 253//_____________________________________________________________________________
254void AliMUONRecoParam::SetCosmicParam()
255{
256 /// Set reconstruction parameters for high flux environment
257
ad3c6eda 258 SetNameTitle("Cosmic","Cosmic");
259 SetEventSpecie(AliRecoParam::kCosmic);
e8ec0154 260 fMinBendingMomentum = 0.8;
261 fMaxBendingMomentum = 1.e10;
262 fMaxNonBendingSlope = 0.3;
263 fMaxBendingSlope = 0.4;
6b191dea 264 fSelectTrackOnSlope = kTRUE;
e8ec0154 265 fNonBendingVertexDispersion = 170.;
266 fBendingVertexDispersion = 170.;
6b191dea 267 fMaxNonBendingDistanceToTrack = 1.;
268 fMaxBendingDistanceToTrack = 1.;
89c8d66d 269 fSigmaCutForTracking = 7.;
6dbd970f 270 fSigmaCutForImprovement = 6.;
bdfb6eef 271 fSigmaCutForTrigger = 4.;
54355f2c 272 fStripCutForTrigger = 1.5;
273 fMaxStripAreaForTrigger = 3.;
bdfb6eef 274 fMaxNormChi2MatchTrigger = fSigmaCutForTrigger * fSigmaCutForTrigger;
0e894e58 275 fPercentOfFullClusterInESD = 100.;
276 fCombinedClusterTrackReco = kFALSE;
277 fTrackAllTracks = kTRUE;
278 fRecoverTracks = kTRUE;
279 fMakeTrackCandidatesFast = kFALSE;
280 fMakeMoreTrackCandidates = kFALSE;
281 fComplementTracks = kTRUE;
282 fImproveTracks = kTRUE;
c59f70b9 283 fRemoveConnectedTracksInSt12 = kTRUE;
0e894e58 284 fUseSmoother = kTRUE;
285 fSaveFullClusterInESD = kTRUE;
35be7ed7 286 for (Int_t iCh = 0; iCh < 10; iCh++) {
287 fUseChamber[iCh] = kTRUE;
e8ec0154 288 fDefaultNonBendingReso[iCh] = 0.4;
289 fDefaultBendingReso[iCh] = 0.4;
35be7ed7 290 }
e8ec0154 291 fRequestStation[0] = kTRUE;
292 fRequestStation[1] = kTRUE;
293 fRequestStation[2] = kTRUE;
6dbd970f 294 fRequestStation[3] = kTRUE;
295 fRequestStation[4] = kTRUE;
004a9ccd 296 fBypassSt45 = 0;
7eafe398 297 fPadGoodnessMask = 0x400BE80; // Ped Mean is Zero | Ped Mean Too Low | Ped Mean Too High | Ped Sigma Too Low | Ped Sigma Too High | Ped is missing | HV is missing | manu occupancy too high
89c8d66d 298 fMaxTriggerTracks = 100;
299 fMaxTrackCandidates = 10000;
6dbd970f 300 SetPedMeanLimits(20, 700);
301 SetManuOccupancyLimits(-1.,0.01); // reject manu above occ=1%
ece56eb9 302
303 SetBuspatchOccupancyLimits(-1,0.01);
304 SetMissingPadFractionLimit(0.1); // 10 %
305 SetFractionOfBuspatchOutsideOccupancyLimit(0.05); // 5 %
0e894e58 306}
307
c6e702f8 308
309//_____________________________________________________________________________
310void AliMUONRecoParam::SetCalibrationParam()
311{
312 /// Set (dummy) reconstruction parameters for calibration environment
313
314 SetNameTitle("Calibration","Calibration");
315 SetEventSpecie(AliRecoParam::kCalib);
316
317 fPedMeanLimits[0] = 5000;
318 fPedMeanLimits[1] = 0;
319
320 fPadGoodnessMask = 0x8C00; // Pedestal is missing | is too low | too high
321
322}
323
c59f70b9 324//_____________________________________________________________________________
325UInt_t
326AliMUONRecoParam::RequestedStationMask() const
327{
328 /// Get the mask of the requested station, i.e. an integer where
329 /// bit n is set to one if the station n was requested
330
331 UInt_t m(0);
332
333 for ( Int_t i = 0; i < 5; ++i )
334 {
335 if ( RequestStation(i) ) m |= ( 1 << i );
336 }
337 return m;
338}
339
3304fa09 340//_____________________________________________________________________________
341void AliMUONRecoParam::Print(Option_t *option) const
342{
343 /// print reconstruction parameters
344 /// if option = FULL then print also unused parameters
345
4348af6f 346 cout<<endl<<"\t------MUON Reconstruction parameters ("<<GetName()<<")------"<<endl;
ad3c6eda 347
348 if (IsDefault()) cout<<"\t\t*** Parameters used by default ***"<<endl;
3304fa09 349
de98fdc9 350 cout<<Form("Calibration mode = %s",fCalibrationMode.Data())<<endl;
3304fa09 351 cout<<Form("Clustering mode = %s",fClusteringMode.Data())<<endl;
3304fa09 352 cout<<Form("Tracking mode = %s",fTrackingMode.Data())<<endl;
9bf6860b 353
004a9ccd 354 TString bypass;
355
356 if ( BypassSt45() )
357 {
358 bypass = "stations 4 and 5";
359 }
360 else if ( BypassSt4() )
361 {
362 bypass = "station 4";
363 }
364 else if ( BypassSt5() )
365 {
366 bypass = "station 5";
367 }
368
369 if (bypass.Length()) cout << "Will bypass " << bypass.Data() << " (replacing real clusters by generated ones from trigger tracks)" << endl;
3304fa09 370
15d30ed4 371 if (fCombinedClusterTrackReco) cout<<"Combined cluster/track reconstruction: ON"<<endl;
372 else cout<<"Combined cluster/track reconstruction: OFF"<<endl;
38bcf0ef 373
0a18ba02 374 if (fSaveFullClusterInESD) cout<<Form("Save all cluster info in ESD for %5.2f %% of events",fPercentOfFullClusterInESD)<<endl;
375 else cout<<"Save partial cluster info in ESD"<<endl;
9bdbee64 376
6b191dea 377 cout<<"Selection of track candidates:"<<endl;
378 if (fSelectTrackOnSlope) cout<<Form("\t- Non-bending slope < %5.2f",fMaxNonBendingSlope)<<endl;
379 else cout<<"\t- Impact parameter < 3 * vertex dispersion in the non-bending direction"<<endl;
380 cout<<Form("\t- if B!=0: Bending momentum > %5.2f",fMinBendingMomentum)<<endl;
381 if (fSelectTrackOnSlope) cout<<Form("\t if B==0: Bending slope < %5.2f",fMaxBendingSlope)<<endl;
382 else cout<<"\t if B==0: Impact parameter < 3 * vertex dispersion in the bending direction"<<endl;
9f093251 383
6b191dea 384 cout<<Form("Vertex dispersion (used to estimate initial bending momentum resolution) = (%5.2f,%5.2f)",fNonBendingVertexDispersion,fBendingVertexDispersion)<<endl;
3304fa09 385
386 cout<<Form("Maximum distance to track = (%5.2f,%5.2f)",fMaxNonBendingDistanceToTrack,fMaxBendingDistanceToTrack)<<endl;
387
388 cout<<Form("Sigma cut for tracking = %5.2f",fSigmaCutForTracking)<<endl;
fda59e58 389
390 cout<<Form("Sigma cut for trigger hit pattern = %5.2f",fSigmaCutForTrigger)<<endl;
b5270f21 391
392 cout<<Form("Cut in strips for trigger chamber efficiency = %5.2f",fStripCutForTrigger)<<endl;
393
394 cout<<Form("Max search area in strips for trigger chamber efficiency = %5.2f",fMaxStripAreaForTrigger)<<endl;
395
3304fa09 396 if (fTrackAllTracks) cout<<"Track all the possible candidates"<<endl;
397 else cout<<"Track only the best candidates"<<endl;
398
399 if (strstr(option,"FULL")) {
400 cout<<"Make track candidates assuming linear propagation between stations 4 and 5: ";
401 if (fMakeTrackCandidatesFast) cout<<"ON"<<endl;
402 else cout<<"OFF"<<endl;
403 } else if (fMakeTrackCandidatesFast)
404 cout<<"Make track candidates assuming linear propagation between stations 4 and 5"<<endl;
405
9bf6860b 406 if (strstr(option,"FULL")) {
407 cout<<"Make track candidates starting from 1 cluster in each of the stations 4 and 5: ";
408 if (fMakeMoreTrackCandidates) cout<<"ON"<<endl;
409 else cout<<"OFF"<<endl;
410 } else if (fMakeMoreTrackCandidates)
411 cout<<"Make track candidates starting from 1 cluster in each of the stations 4 and 5"<<endl;
412
3304fa09 413 if (strstr(option,"FULL")) {
414 cout<<"Try to recover tracks getting lost during tracking: ";
415 if (fRecoverTracks) cout<<"ON"<<endl;
416 else cout<<"OFF"<<endl;
417 } else if (fRecoverTracks)
418 cout<<"Try to recover tracks getting lost during tracking"<<endl;
419
420 if (strstr(option,"FULL")) {
421 cout<<"Try to complete the reconstructed tracks by adding missing clusters: ";
422 if (fComplementTracks) cout<<"ON"<<endl;
423 else cout<<"OFF"<<endl;
424 } else if (fComplementTracks)
425 cout<<"Try to complete the reconstructed tracks by adding missing clusters"<<endl;
426
427 if (strstr(option,"FULL")) {
428 cout<<"Try to improve the reconstructed tracks by removing bad clusters: ";
429 if (fImproveTracks) cout<<Form("ON (sigma cut = %5.2f)",fSigmaCutForImprovement)<<endl;
430 else cout<<"OFF"<<endl;
431 } else if (fImproveTracks)
432 cout<<Form("Try to improve the reconstructed tracks by removing bad clusters (sigma cut = %5.2f)",fSigmaCutForImprovement)<<endl;
433
c59f70b9 434 if (fRemoveConnectedTracksInSt12) cout<<"Remove tracks sharing one cluster or more in any station"<<endl;
435 else cout<<"Remove tracks sharing one cluster or more in stations 3, 4 and 5"<<endl;
436
3304fa09 437 if (strstr(option,"FULL")) {
438 cout<<"Use smoother to compute final track parameters, etc, at each cluster (used for Kalman tracking only): ";
439 if (fUseSmoother) cout<<"ON"<<endl;
440 else cout<<"OFF"<<endl;
441 } else if (fUseSmoother)
442 cout<<"Use smoother to compute final track parameters, etc, at each cluster"<<endl;
443
444 cout<<Form("Maximum normalized chi2 of tracking/trigger track matching = %5.2f",fMaxNormChi2MatchTrigger)<<endl;
445
9bf6860b 446 Bool_t discardedCh = kFALSE;
447 Int_t ch = 0;
448 do {
449 if (!UseChamber(ch)) {
450 if (!discardedCh) {
451 cout<<"Discarded chambers(1..): "<<ch+1;
452 discardedCh = kTRUE;
453 }
454 else cout<<" "<<ch+1;
455 }
456 } while (++ch < 10);
457 if (discardedCh) cout<<endl;
458
459 Bool_t discardedSt = kFALSE;
460 Int_t st = 0;
461 do {
462 if (!RequestStation(st)) {
463 if (!discardedSt) {
464 cout<<"Not requested stations(1..): "<<st+1;
465 discardedSt = kTRUE;
466 }
467 else cout<<" "<<st+1;
468 }
469 } while (++st < 5);
470 if (discardedSt) cout<<endl;
471
35be7ed7 472 cout << Form("Pad goodness policy mask is 0x%x",PadGoodnessMask()) << endl;
473 cout << "Which means we reject pads having the condition = " <<
474 AliMUONPadStatusMaker::AsCondition(PadGoodnessMask()).Data() << endl;
475
476 cout << "The pad limits we are using are :" << endl;
477
478 cout << Form("%5.0f <= HVSt12 <= %5.0f Volts",HVSt12LowLimit(),HVSt12HighLimit()) << endl;
479 cout << Form("%5.0f <= HVSt345 <= %5.0f Volts",HVSt345LowLimit(),HVSt345HighLimit()) << endl;
480 cout << Form("%7.2f <= Pedestal mean <= %7.2f",PedMeanLowLimit(),PedMeanHighLimit()) << endl;
481 cout << Form("%7.2f <= Pedestal sigma <= %7.2f",PedSigmaLowLimit(),PedSigmaHighLimit()) << endl;
482 cout << Form("%e <= Gain linear term <= %e",GainA1LowLimit(),GainA1HighLimit()) << endl;
483 cout << Form("%e <= Gain quadratic term <= %e",GainA2LowLimit(),GainA2HighLimit()) << endl;
484 cout << Form("%5.0f <= Gain threshold term <= %5.0f",GainThresLowLimit(),GainThresHighLimit()) << endl;
7eafe398 485
170f4046 486 cout << Form("And we cut on charge >= %7.2f x ( pedestal sigma ) ",ChargeSigmaCut()) << endl;
487
7eafe398 488 cout << "Occupancy limits are :" << endl;
489
ece56eb9 490 cout << Form("%e <= Manu occupancy < %7.2f",ManuOccupancyLowLimit(),ManuOccupancyHighLimit()) << endl;
491 cout << Form("%e <= Buspatch occupancy < %7.2f",BuspatchOccupancyLowLimit(),BuspatchOccupancyHighLimit()) << endl;
492 cout << Form("%e <= DE occupancy < %7.2f",DEOccupancyLowLimit(),DEOccupancyHighLimit()) << endl;
493
494 cout << "'QAChecker' limits" << endl;
495 cout << Form("MissingPadFractionLimit = %5.2f %%",MissingPadFractionLimit()*100.0) << endl;
496 cout << Form("FractionOfBuspatchOutsideOccupancyLimit = %5.2f %%",FractionOfBuspatchOutsideOccupancyLimit()*100.0) << endl;
7eafe398 497
35be7ed7 498 cout << "chamber non bending resolution = |";
499 for (Int_t iCh = 0; iCh < 10; iCh++) cout << Form(" %6.3f |",fDefaultNonBendingReso[iCh]);
500 cout << endl;
501 cout << "chamber bending resolution = |";
502 for (Int_t iCh = 0; iCh < 10; iCh++) cout << Form(" %6.3f |",fDefaultBendingReso[iCh]);
503 cout << endl;
89c8d66d 504 cout<<Form("maximum number of trigger tracks above which the tracking is cancelled = %d",fMaxTriggerTracks)<<endl;
aa2b81a1 505 cout<<Form("maximum number of track candidates above which the tracking is abandonned = %d",fMaxTrackCandidates)<<endl;
35be7ed7 506
4348af6f 507 cout<<"\t-----------------------------------------------------"<<endl<<endl;
3304fa09 508
509}
510
004a9ccd 511//_____________________________________________________________________________
512void
513AliMUONRecoParam::SetDefaultLimits()
514{
515 /// Set the default limits and pad goodness policy
516
517 fHVSt12Limits[0]=1500;
518 fHVSt12Limits[1]=2000;
519
520 fHVSt345Limits[0]=1500;
521 fHVSt345Limits[1]=2000;
522
6dbd970f 523 fPedMeanLimits[0] = 20;
004a9ccd 524 fPedMeanLimits[1] = 1024;
525
89c8d66d 526 fPedSigmaLimits[0] = 0.6;
004a9ccd 527 fPedSigmaLimits[1] = 100;
528
529 fGainA1Limits[0] = 0.1;
530 fGainA1Limits[1] = 10;
531
532 fGainA2Limits[0] = -1E30;
533 fGainA2Limits[1] = 1E30;
534
535 fGainThresLimits[0] = 0;
536 fGainThresLimits[1] = 4095;
537
7eafe398 538 fPadGoodnessMask = 0x8080; // Ped is missing | HV is missing
539
540 fManuOccupancyLimits[0] = -1.0;
541 fManuOccupancyLimits[1] = 1.0;
542
ece56eb9 543 fBuspatchOccupancyLimits[0] = 1E-6;
7eafe398 544 fBuspatchOccupancyLimits[1] = 1.0;
545
546 fDEOccupancyLimits[0] = -1.0;
547 fDEOccupancyLimits[1] = 1.0;
2b8a1212 548
170f4046 549 fChargeSigmaCut = 4.0;
ece56eb9 550
551 fMissingPadFractionLimit = 0.1; // 10 %
552 fFractionOfBuspatchOutsideOccupancyLimit = 0.05; // 5 %
553
004a9ccd 554}
555