/////////////////////////////////////////////////////////////////////////////// /// \class RAT::geo::SNOMANBellyPlate /// /// \brief Builds a SNOMAN belly plate /// /// \author Phil G Jones /// \author Aksel Hallin -- contact person /// /// REVISION HISTORY:\n /// 2013-08-07 : P G Jones - New file. \n /// /// \details Builds a belly plate solid at the origin, to the SNOMAN model. /// The SNOMAN model differs from the RAT model, see RAT::geo::BellyPlate. /// /////////////////////////////////////////////////////////////////////////////// #ifndef __RAT_geo_SNOMANBellyPlate_hh__ #define __RAT_geo_SNOMANBellyPlate_hh__ #include #include namespace RAT { namespace geo { class SNOMANBellyPlate : public GeoSolid { public: /// Construct a SNOMANBellyPlate, set the factory name to bellyPlate SNOMANBellyPlate() : GeoSolid( "snomanBellyPlate" ) { } /// Return the solid shape, as defined in the table /// /// @param[in] name the prefix for the solid name /// @param[in] table is the ratdb table defining the belly plate /// @return The geant4 solid for the belly plate virtual G4VSolid* Construct( const std::string& name, DBLinkPtr table ) const; protected: /// Construct a belly plate /// /// @param[in] name the prefix for the solid name /// @param[in] octahedronBase the half length of the base /// @param[in] octahedronHeight the half height of the octahedron /// @param[in] thickness thickness of the spherical tile /// @param[in] rSphere radius of the spherical tile (at centre) /// @param[in] arc length in radians of the spherical tile /// @param[in] rOctahedron offset of the octahedron from origin in the spherical tile coord system /// @return the geant4 solid G4VSolid* ConstructBellyPlate( const std::string& name, const double octahedronBase, const double octahedronHeight, const double thickness, const double rSphere, const double arc, const double rOctahedron ) const; }; } //::geo } //::RAT #endif