#ifndef TCYLINDRICALSHELL_HPP #define TCYLINDRICALSHELL_HPP // // $Id: TCylindricalShell.hpp,v 1.4 2004/04/08 20:08:55 snyder Exp $ // // File: TCylindricalShell.hpp // Purpose: Represents a thin shelled cylinder // Created: 26-APR-1999 John D. Hobbs (copied from CylindricalShell) // // $Revision: 1.4 $ // // // Include files #include #include /** A thin cylindrical shell. A {\bf TCylindricalShell} represents a thin shelled cylinder which has a given thickness (in cm) and is associated with a given {\bf Material}. In addition, a {\bf TCylindricalShell} contains a reference to a {\bf TcylindricalSurface}, which contains maintains all position / rotation information for the cylinder. */ template class TCylindricalShell; template std::ostream& operator<< (std::ostream&, const TCylindricalShell*); template std::ostream& operator<< (std::ostream&, const TCylindricalShell&); template class TCylindricalShell { //------------------ Public Methods -------------------// public: /** Constructor. Builds a {\bf TCylindricalShell} given a {\bf Pointer} of the templated class, a {\bf Material} and a thickness. The object pointed to is owned by a MaterialGeometer, and must not be deleted by the TCylindricalShell destructor. */ TCylindricalShell(T* surface, const D0Material::Material& material, const float thickness); /// Returns point to {\bf Material}. const D0Material::Material* get_Material() const; /** Returns the fraction of a radiation length. This method returns the perpendicular thickness of the material associated with this shell, in fractions of a radiation length. */ /// Returns positioning class (template class) T* get_Surface() const; float get_X0_frac() const; /// Returns perpendicular thickness of material in cm. float get_Thickness() const; /// Stream insertion operator. friend std::ostream& operator<< <> (std::ostream&, const TCylindricalShell*); /// Stream insertion operator. friend std::ostream& operator<< <> (std::ostream&, const TCylindricalShell&); //------------------ Private Data Members -------------------// private: /// Handle/Pointer to positioning reference element T* d_surface; /// The material type. const D0Material::Material d_material; /// The material thickness, in cm. const float d_thickness; }; #include #endif //TCYLINDRICALSHELL_HPP