#ifndef MARS_MHCalibrationChargeCam #define MARS_MHCalibrationChargeCam #ifndef ROOT_TObjArray #include #endif #ifndef MARS_MH #include "MH.h" #endif #ifndef MARS_MCamEvent #include "MCamEvent.h" #endif class MRawEvtData; class MGeomCam; class MBadPixelsCam; class MBadPixelsPix; class MCalibrationChargeCam; class MCalibrationChargePix; class MHCalibrationChargeHiGainPix; class MHCalibrationChargeLoGainPix; class MHCalibrationChargeCam : public MH, public MCamEvent { private: static const Float_t fgNumHiGainSaturationLimit; // The default number of fNumHiGainSaturationLimit static const Float_t fgNumLoGainSaturationLimit; // The default number of fNumLoGainSaturationLimit Float_t fNumHiGainSaturationLimit; // The rel. number of saturated higain FADC slices in the whole run upon which the pixel is called saturated Float_t fNumLoGainSaturationLimit; // The rel. number of saturated logain FADC slices in the whole run upon which the pixel is called saturated TObjArray *fHiGainArray; //-> Array of MHCalibrationChargePix with hists TObjArray *fLoGainArray; //-> Array of MHCalibrationChargePix with hists MHCalibrationChargeHiGainPix *fAverageHiGainInnerPix; //-> One MHCalibrationChargeHiGainPix with the average of all inner pixels MHCalibrationChargeLoGainPix *fAverageLoGainInnerPix; //-> One MHCalibrationChargeLoGainPix with the average of all inner pixels MHCalibrationChargeHiGainPix *fAverageHiGainOuterPix; //-> One MHCalibrationChargeHiGainPix with the average of all outer pixels MHCalibrationChargeLoGainPix *fAverageLoGainOuterPix; //-> One MHCalibrationChargeLoGainPix with the average of all outer pixels MCalibrationChargeCam *fCam; //! Class holding the results MRawEvtData *fRawEvt; //! Raw event data (time slices) MGeomCam *fGeom; //! MAGIC geometry MBadPixelsCam *fBadPixels; //! Bad Pixels Int_t fNumInnerPixels; Int_t fNumOuterPixels; Int_t fNumExcluded; void FinalizeHiGainHists(MHCalibrationChargeHiGainPix &hist, MCalibrationChargePix &pix, MBadPixelsPix &bad); void FinalizeLoGainHists(MHCalibrationChargeLoGainPix &hist, MCalibrationChargePix &pix, MBadPixelsPix &bad); public: MHCalibrationChargeCam(const char *name=NULL, const char *title=NULL); ~MHCalibrationChargeCam(); void SetNumHiGainSaturationLimit( const Float_t lim=fgNumHiGainSaturationLimit) { fNumHiGainSaturationLimit = lim; } void SetNumLoGainSaturationLimit( const Float_t lim=fgNumLoGainSaturationLimit) { fNumLoGainSaturationLimit = lim; } Float_t GetNumHiGainSaturationLimit() const { return fNumHiGainSaturationLimit; } Float_t GetNumLoGainSaturationLimit() const { return fNumLoGainSaturationLimit; } MHCalibrationChargeHiGainPix &operator[](UInt_t i); const MHCalibrationChargeHiGainPix &operator[](UInt_t i) const; MHCalibrationChargeLoGainPix &operator()(UInt_t i); const MHCalibrationChargeLoGainPix &operator()(UInt_t i) const; MHCalibrationChargeHiGainPix &GetAverageHiGainInnerPix() { return *fAverageHiGainInnerPix; } const MHCalibrationChargeHiGainPix &GetAverageHiGainInnerPix() const { return *fAverageHiGainInnerPix; } MHCalibrationChargeLoGainPix &GetAverageLoGainInnerPix() { return *fAverageLoGainInnerPix; } const MHCalibrationChargeLoGainPix &GetAverageLoGainInnerPix() const { return *fAverageLoGainInnerPix; } MHCalibrationChargeHiGainPix &GetAverageHiGainOuterPix() { return *fAverageHiGainOuterPix; } const MHCalibrationChargeHiGainPix &GetAverageHiGainOuterPix() const { return *fAverageHiGainOuterPix; } MHCalibrationChargeLoGainPix &GetAverageLoGainOuterPix() { return *fAverageLoGainOuterPix; } const MHCalibrationChargeLoGainPix &GetAverageLoGainOuterPix() const { return *fAverageLoGainOuterPix; } Bool_t SetupFill(const MParList *pList); Bool_t ReInit ( MParList *pList); Bool_t Fill (const MParContainer *par, const Stat_t w=1); Bool_t Finalize ( ); // Draw void Draw(const Option_t *opt); Bool_t GetPixelContent ( Double_t &val, Int_t idx, const MGeomCam &cam, Int_t type=0) const; void DrawPixelContent( Int_t num ) const; ClassDef(MHCalibrationChargeCam, 1) // Container for calibration information of the camera }; #endif