#ifndef __PNDDRCOPTVOL_H__ #define __PNDDRCOPTVOL_H__ /*! \brief Representation of an optical volume. The volume consists out of surfaces. */ class PndDrcOptVol : public PndDrcOptDev { protected: //! Optical material. PndDrcOptMatAbs* m_optMat; private: /*! \brief Auxiliary function for assignment operator and copy constructor.. \param d The object to copy. */ void copy(const PndDrcOptVol& d); public: //! Constructor. PndDrcOptVol(); //! Destructor. virtual ~PndDrcOptVol(); /*! \brief Virtual copy constructor. \return Pointer to new allocated memory. */ PndDrcOptVol* clone() const; /*! \brief Copy constructor. \param d The object to copy. */ PndDrcOptVol(const PndDrcOptVol& d); /*! \brief Assignment operator. \param d The object to assign. */ PndDrcOptVol& operator=(const PndDrcOptVol& d); // implements pure virtual base class void propagate(PndDrcPhoton& ph); bool radiator() const {return true;}; //void transform(const TVector3& shift,const TRotation& rot); /*! \brief Set optical material. \param mat The material. */ void setOptMaterial(const PndDrcOptMatAbs& mat); /*! \brief Optical material. \return Pointer to material. */ PndDrcOptMatAbs& optMaterial() const { return *m_optMat; }; }; #endif