#ifndef SPHERICALSHELL_HPP #define SPHERICALSHELL_HPP // SphericalShell.hpp // Dennis Shpakov #include #include "geometry_system/management/HandleSystem.hpp" #include "material/Material.hpp" //namespace dgs { // class SphericalSurface; //} template class SphericalShell { public: // constructor: SphericalShell( dgs::Handle surface, const D0Material::Material& material, const float thickness ): _surface( surface ), _material( material ), _thickness( thickness ) {} // accessors: const D0Material::Material& material() const { return _material; } dgs::Handle surface() const { return _surface; } float X0_frac() const { return _thickness / _material.getX0_cm(); } float thickness() const { return _thickness; } // output: /* friend std::ostream& operator << ( std::ostream& out, const SphericalShell& shell ) { out << "SphericalShell: " << shell.surface() << "," << std::endl << " "; out << shell.material() << "," << std::endl << " thickness = "; out << shell.thickness() << " cm"; return out; } */ private: // Handle to SphericalSurface: dgs::Handle _surface; // The material type: const D0Material::Material _material; // The material thickness, in cm: const float _thickness; }; #endif