#ifndef _fevt_Pixel_h_ #define _fevt_Pixel_h_ #include #include #include #include #include namespace fevt { /*! \class Pixel \brief Fluorescence Detector Pixel event Describes the event as seen by a Pixel \author Stefano Argiro' \date Jan 29, 2003 \version $Id: Pixel.h 15865 2010-03-05 19:55:22Z munger $ \ingroup fevt **/ class Telescope; class EyeRecData; class Pixel { public: unsigned int GetId() const { return fId; } unsigned int GetTelescopeId() const { return fTelescopeId; } unsigned int GetEyeId() const { return fEyeId; } PixelSimData& GetSimData() { return *fSimData; } const PixelSimData& GetSimData() const { return *fSimData; } void MakeSimData(); bool HasSimData() const { return fSimData; } PixelRecData& GetRecData() { return *fRecData; } const PixelRecData& GetRecData() const { return *fRecData; } void MakeRecData(); bool HasRecData() const { return fRecData; } PixelTriggerData& GetTriggerData() { return *fTriggerData; } const PixelTriggerData& GetTriggerData() const { return *fTriggerData; } void MakeTriggerData(); bool HasTriggerData() const { return fTriggerData; } bool operator==(const Pixel& pixel) const; bool operator!=(const Pixel& pixel) const { return !operator==(pixel); } void SetStatus(ComponentSelector::Status status) {fStatus=status;} ComponentSelector::Status GetStatus() const {return fStatus;} /// Check if the pixel is saturated bool IsNoSaturation() const { return fSatStatus == eNoSaturation; } bool IsLowGainSaturation() const { return fSatStatus == eLowGainSat; } bool IsHighGainSaturation() const { return fSatStatus == eHighGainSat; } bool IsSaturationRecovered() const { return fSatStatus == eRecovered; } void SetNoSaturation() { fSatStatus = eNoSaturation; } void SetLowGainSaturation() { fSatStatus = eLowGainSat; } void SetHighGainSaturation() { fSatStatus = eHighGainSat; } void SetSaturationRecovered() { fSatStatus = eRecovered; } private: Pixel(const unsigned int eye, const unsigned int telescope, const unsigned int id, ComponentSelector::Status status = ComponentSelector::eHasData) : fId(id), fTelescopeId(telescope), fEyeId(eye), fStatus(status), fSatStatus(eNoSaturation) { } ~Pixel() { } void SetTelescopeId(const unsigned int id) { fTelescopeId=id; } void SetEyeId(const unsigned int id) { fEyeId=id; } unsigned int fId; unsigned int fTelescopeId; unsigned int fEyeId; utl::ShadowPtr fSimData; utl::ShadowPtr fRecData; utl::ShadowPtr fTriggerData; enum SaturationStatus { eNoSaturation = 0, eLowGainSat, eRecovered, eHighGainSat }; ComponentSelector::Status fStatus; SaturationStatus fSatStatus; friend class fevt::Telescope; friend class fevt::EyeRecData; }; } #endif // Configure (x)emacs for this file ... // Local Variables: // mode: c++ // compile-command: "make -C .. FEvent/Pixel.o -k" // End: