- Disentangle masks effect from trigger chamber efficiency estimation.
[u/mrichter/AliRoot.git] / MUON / AliMUONDigitCalibrator.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice                               */
3
4 // $Id$
5
6 /// \ingroup rec
7 /// \class AliMUONDigitCalibrator
8 /// \brief Class to calibrate the digits
9 /// 
10 //  Author Laurent Aphecetche
11
12 #ifndef ALIMUONDIGITCALIBRATOR_H
13 #define ALIMUONDIGITCALIBRATOR_H
14
15 #ifndef ROOT_TObject
16 #include "TObject.h"
17 #endif
18
19 class AliMUONCalibrationData;
20 class AliMUONLogger;
21 class AliMUONVStore;
22 class AliMUONVDigitStore;
23 class AliMUONVDigit;
24 class AliMUONPadStatusMaker;
25 class AliMUONPadStatusMapMaker;
26 class AliMUONRecoParam;
27 class TExMap;
28
29 class AliMUONDigitCalibrator : public TObject
30 {
31 public:
32
33   AliMUONDigitCalibrator(Int_t runNumber, const char* calibMode="NOGAIN");
34   
35   AliMUONDigitCalibrator(const AliMUONCalibrationData& calib, 
36                          const AliMUONRecoParam* recoParams,
37                          const char* calibMode="NOGAIN");
38   
39   AliMUONDigitCalibrator(const AliMUONCalibrationData& calib, 
40                          const char* calibMode="NOGAIN");
41   
42   virtual ~AliMUONDigitCalibrator();
43   
44   virtual void Calibrate(AliMUONVDigitStore& digitStore);
45
46   Bool_t IsValidDigit(Int_t detElemId, Int_t manuId, Int_t manuChannel, 
47                       Int_t* statusMap=0x0) const;
48
49   Float_t CalibrateDigit(Int_t detElemId, Int_t manuId, Int_t manuChannel,
50                          Float_t adc, Float_t nsigmas=-1, 
51                          Bool_t* isSaturated=0x0) const;
52                      
53   Int_t PadStatus(Int_t detElemId, Int_t manuId, Int_t manuChannel) const;
54
55   Int_t StatusMap(Int_t detElemId, Int_t manuId, Int_t manuChannel) const;
56
57 private:    
58   
59   /// Not implemented
60   AliMUONDigitCalibrator(const AliMUONDigitCalibrator& other);
61   /// Not implemented
62   AliMUONDigitCalibrator& operator=(const AliMUONDigitCalibrator& other);
63   
64   void Ctor(const char* calibMode,
65             const AliMUONCalibrationData& calib,
66             const AliMUONRecoParam* recoParams,
67             Bool_t deferredInitialization=kTRUE);
68   
69 private:
70         AliMUONLogger* fLogger; //!< to log repeated messages
71         AliMUONPadStatusMaker* fStatusMaker; //!< to build pad statuses
72         AliMUONPadStatusMapMaker* fStatusMapMaker; //!< to build status map
73         AliMUONVStore* fPedestals; //!< pedestal values
74         AliMUONVStore* fGains; //!< gain values
75         Int_t fApplyGains; //!< whether we should apply gains or not, capa or not...
76         AliMUONVStore* fCapacitances; //!< capa values
77         Double_t fNumberOfBadPads; //!< # of times we've rejected a bad pad
78         Double_t fNumberOfPads; //!< # of pads we've seen
79         Double_t fChargeSigmaCut; //!< number of sigmas to cut on
80   UInt_t fMask; //!< mask used to cut bad channels
81   
82         static const Int_t fgkNoGain; //!< do not apply gain calib at all
83         static const Int_t fgkGainConstantCapa; //!< apply gain (from OCDB) with constant capa
84         static const Int_t fgkGain; //!< apply gain and capa (from OCDB)
85         static const Int_t fgkInjectionGain; //!< apply injection gain (from OCDB)
86         
87   ClassDef(AliMUONDigitCalibrator,10) // Calibrate raw digit
88 };
89
90 #endif