/////////////////////////////////////////////////////////////////////////////// /// \class RAT::geo::HoldUpRope /// /// \brief Builds a holdUpRope /// /// \author Phil G Jones /// \author Aksel Hallin -- contact person /// /// REVISION HISTORY:\n /// 2013-09-25 : P G Jones - New file. \n /// /// \details HoldUpRope solid factory. /// /////////////////////////////////////////////////////////////////////////////// #ifndef __RAT_geo_HoldUpRope_hh__ #define __RAT_geo_HoldUpRope_hh__ #include #include namespace RAT { namespace geo { class HoldUpRope : public GeoSolid { public: /// Construct a HoldUpRope, call the factory holdUpRope HoldUpRope() : GeoSolid( "holdUpRope" ) { } /// 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 hold up rope /// @return The geant4 solid for the hold up rope virtual G4VSolid* Construct( const std::string& name, DBLinkPtr table ) const; protected: /// Build the HoldUpRope shape /// /// @param[in] name the prefix for the solid name /// @param[in] rRope radius of the rope /// @param[in] rTorus radius of the curved loop /// @param[in] zRope length of the rope in z /// @return The geant4 solid for the hold up rope G4VSolid* ConstructHoldUpRope( const std::string& name, const double rRope, const double rTorus, const double zRope ) const; }; } //::geo } //::RAT #endif