#ifndef _fdet_Diaphragm_h_ #define _fdet_Diaphragm_h__ /** \file \brief Description of the diaphragm. \author L. Prado Jr \version $Id: Diaphragm.h 17304 2010-07-09 09:36:19Z smueller $ \date 27 Jan 2005 */ #include namespace utl { class TabulatedFunction; class TimeStamp; } namespace fdet { class Telescope; /** \class Diaphragm \brief Description of the diaphragm. \author L. Prado Jr \version $Id: Diaphragm.h 17304 2010-07-09 09:36:19Z smueller $ \date 27 Jan 2005 \ingroup fdet */ class Diaphragm { public: unsigned int GetEyeId() const { return fEyeId; } unsigned int GetTelescopeId() const { return fTelescopeId; } /// Radius of the diaphragm double GetRadius() const; double GetArea() const; bool HasCorrectorRing() const; void Update(); private: template inline const T& GetDiaphragmData(T*& requestedData, const std::string& property, const std::string& component, const std::string& errorMsg) const; template inline void GetDiaphragmData(T& requestedData, const std::string& property, const std::string& component, const std::string& errorMsg) const; private: unsigned int fEyeId; unsigned int fTelescopeId; std::string fPhysicalEyeIdString; std::string fPhysicalTelescopeIdString; Diaphragm(const unsigned int eyeId, const unsigned int telId, const std::string& physEyeIdString, const std::string& physTelIdString); Diaphragm(const Diaphragm&); Diaphragm& operator=(const Diaphragm&); ~Diaphragm(); // Quantity filled by lazy evaluation // ------------------------------------ mutable double* fRadius; mutable double* fArea; mutable utl::TimeStamp* fCorrectorRingCommissionTime; friend class Telescope; }; } #endif // Configure (x)emacs for this file ... // Local Variables: // mode: c++ // compile-command: "make -C .. FDetector/Diaphragm.o -k" // End: