/////////////////////////////////////////////////////////////////////////////// /// \class RAT::geo::InternalRope /// /// \brief Builds an interal/calibration rope /// /// \author Phil G Jones /// \author Aksel Hallin -- contact person /// /// REVISION HISTORY:\n /// 2013-11-25 : P G Jones - New file. \n /// /// \details Internal Rope or calibration ropesolid factory. /// /////////////////////////////////////////////////////////////////////////////// #ifndef __RAT_geo_InternalRope_hh__ #define __RAT_geo_InternalRope_hh__ #include #include namespace RAT { namespace geo { class InternalRope : public GeoSolid { public: /// Construct an InternalRope, name the factory internalRope InternalRope() : GeoSolid( "internalRope" ) { } /// 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 internal rope /// @return The geant4 solid for the internal rope virtual G4VSolid* Construct( const std::string& name, DBLinkPtr table ) const; protected: /// Construct a segment of the rope /// /// @param[in] name the prefix for the solid name /// @param[in] start segment start position /// @param[in] end segment end position /// @param[in] radius rope radius /// @return The geant4 solid for the internal rope G4VSolid* ConstructRope( const std::string& name, const G4ThreeVector start, const G4ThreeVector end, const double radius ) const; }; } //::geo } //::RAT #endif