#ifndef __PNDDRCOPTMATABS_H__ #define __PNDDRCOPTMATABS_H__ /*! \brief Class for optical material representation. It is assumed that for all DIRC option radiator material is used which is not birefingent. */ class PndDrcOptMatAbs { protected: //! Name of surface. string m_name; //! Verbosity from 0 to 5. int m_verbosity; public: //! Empty constructor. PndDrcOptMatAbs(); /*! \brief Virtual copy constructor. \return Pointer to new allocated memory. */ virtual PndDrcOptMatAbs* clone() const = 0; /*! Copy constructor. /param Object to copy. */ PndDrcOptMatAbs(const PndDrcOptMatAbs& mat); /*! Assignment operator. /param Object to assign. */ PndDrcOptMatAbs& operator=(const PndDrcOptMatAbs& mat); //! Destructor. virtual ~PndDrcOptMatAbs(); /*! \brief Verbosity Set the verbosity. Range is 0 to 5. \verbatim 0=quiet, 1=constructors,destructors, 2=member functions, 3=functionality 4=photons 5=everything \endverbatim \param level The verbosity level */ void setVerbosity(int level){m_verbosity=level;}; /*! \brief Verbosity. \return Verbosity \sa setVerbosity() */ const int verbosity() const {return m_verbosity;}; /*! \brief Set the name of the volume. \param name The name. */ void setName(string name){m_name=name;}; /*! \brief The name of the volume. \return The name. */ string name() const {return m_name;}; /*! \brief Refraction index. \param lambda wavelength [nm] */ virtual double refIndex(const double lambda) const = 0; /*!\brief Dervative of refraction index with respect to wavelength. \param lambda wavelength [nm] */ virtual double refIndexDeriv(const double lambda) const = 0; /*! \brief Absorption flag for pathlength. When return value is true, the pathlength contains the value where absorption has occured. \param lambda The wavelength in [nm]. \param length The pathlength in [mm]. \return Absorption flag. */ virtual bool absorptionFlag(double lambda, double length) const = 0; }; #endif