X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONDigitCalibrator.h;h=d55b09902dbd0be120c91eeb83dc00340042e22f;hb=7a54a755a165eb1e48a20181468458ffd837d9c0;hp=d0a5fda3f97d2439c1c73e117190c263f4ae1025;hpb=d99769c3a15888ec83dd9d04909831b47a877527;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONDigitCalibrator.h b/MUON/AliMUONDigitCalibrator.h index d0a5fda3f97..d55b09902db 100644 --- a/MUON/AliMUONDigitCalibrator.h +++ b/MUON/AliMUONDigitCalibrator.h @@ -7,31 +7,84 @@ /// \class AliMUONDigitCalibrator /// \brief Class to calibrate the digits /// -/// \author Laurent Aphecetche +// Author Laurent Aphecetche -#ifndef AliMUONDigitCalibrator_H -#define AliMUONDigitCalibrator_H +#ifndef ALIMUONDIGITCALIBRATOR_H +#define ALIMUONDIGITCALIBRATOR_H -#ifndef ROOT_TTask -#include "TTask.h" +#ifndef ROOT_TObject +#include "TObject.h" #endif class AliMUONCalibrationData; -class AliMUONData; +class AliMUONLogger; +class AliMUONVStore; +class AliMUONVDigitStore; +class AliMUONVDigit; +class AliMUONPadStatusMaker; +class AliMUONPadStatusMapMaker; +class AliMUONRecoParam; +class TExMap; -class AliMUONDigitCalibrator : public TTask +class AliMUONDigitCalibrator : public TObject { public: - AliMUONDigitCalibrator(AliMUONData* data, AliMUONCalibrationData* calib); - virtual ~AliMUONDigitCalibrator(); + + AliMUONDigitCalibrator(Int_t runNumber, const char* calibMode="NOGAIN"); + + AliMUONDigitCalibrator(const AliMUONCalibrationData& calib, + const AliMUONRecoParam* recoParams, + const char* calibMode="NOGAIN"); - virtual void Exec(Option_t*); + AliMUONDigitCalibrator(const AliMUONCalibrationData& calib, + const char* calibMode="NOGAIN"); + virtual ~AliMUONDigitCalibrator(); + + virtual void Calibrate(AliMUONVDigitStore& digitStore); + + Bool_t IsValidDigit(Int_t detElemId, Int_t manuId, Int_t manuChannel, + Int_t* statusMap=0x0) const; + + Float_t CalibrateDigit(Int_t detElemId, Int_t manuId, Int_t manuChannel, + Float_t adc, Float_t nsigmas=-1, + Bool_t* isSaturated=0x0) const; + + Int_t PadStatus(Int_t detElemId, Int_t manuId, Int_t manuChannel) const; + + Int_t StatusMap(Int_t detElemId, Int_t manuId, Int_t manuChannel) const; + private: - AliMUONData* fData; //! - AliMUONCalibrationData* fCalibrationData; //! - ClassDef(AliMUONDigitCalibrator,1) // Subtract pedestal from digit charge. + /// Not implemented + AliMUONDigitCalibrator(const AliMUONDigitCalibrator& other); + /// Not implemented + AliMUONDigitCalibrator& operator=(const AliMUONDigitCalibrator& other); + + void Ctor(const char* calibMode, + const AliMUONCalibrationData& calib, + const AliMUONRecoParam* recoParams, + Bool_t deferredInitialization=kTRUE); + +private: + AliMUONLogger* fLogger; //!< to log repeated messages + AliMUONPadStatusMaker* fStatusMaker; //!< to build pad statuses + AliMUONPadStatusMapMaker* fStatusMapMaker; //!< to build status map + AliMUONVStore* fPedestals; //!< pedestal values + AliMUONVStore* fGains; //!< gain values + Int_t fApplyGains; //!< whether we should apply gains or not, capa or not... + AliMUONVStore* fCapacitances; //!< capa values + Double_t fNumberOfBadPads; //!< # of times we've rejected a bad pad + Double_t fNumberOfPads; //!< # of pads we've seen + Double_t fChargeSigmaCut; //!< number of sigmas to cut on + UInt_t fMask; //!< mask used to cut bad channels + + static const Int_t fgkNoGain; //!< do not apply gain calib at all + static const Int_t fgkGainConstantCapa; //!< apply gain (from OCDB) with constant capa + static const Int_t fgkGain; //!< apply gain and capa (from OCDB) + static const Int_t fgkInjectionGain; //!< apply injection gain (from OCDB) + + ClassDef(AliMUONDigitCalibrator,10) // Calibrate raw digit }; #endif