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