/////////////////////////////////////////////////////////////////////////////// /// \class RAT::geo::BellyGroove /// /// \brief Builds a belly plate /// /// \author Phil G Jones /// \author Aksel Hallin -- contact person /// /// REVISION HISTORY:\n /// 2014-02-21 : P G Jones - New file. \n /// /// \details Builds a belly groove solid at the origin. /////////////////////////////////////////////////////////////////////////////// #ifndef __RAT_geo_BellyGroove_hh__ #define __RAT_geo_BellyGroove_hh__ #include #include namespace RAT { namespace geo { class BellyGroove : public GeoSolid { public: /// Construct a BellyGroove, set the factory name to bellyGroove BellyGroove() : GeoSolid( "bellyGroove" ) { } /// 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 groove /// /// @param[in] name the prefix for the solid name /// @param[in] rGrooveX x half-width of the groove /// @param[in] rGrooveY y half-width of the groove /// @param[in] rTorus radius of the torus groove section /// @param[in] grooveHeight z height of the groove /// @param[in] openingX x width of the opening /// @param[in] openingY y width of the opening /// @param[in] offset offset between the groove and plate /// @return the geant4 solid G4VSolid* ConstructBellyGroove( const std::string& name, const double rGrooveX, const double rGrooveY, const double rTorus, const double grooveHeight, const double openingX, const double openingY, const double offset ) const; }; } //::geo } //::RAT #endif