/////////////////////////////////////////////////////////////////////////////// /// \class RAT::geo::HoldDownRope /// /// \brief Builds a holdDownRope /// /// \author Phil G Jones /// \author Aksel Hallin -- contact person /// /// REVISION HISTORY:\n /// 2013-11-21 : P G Jones - New file. \n /// /// \details HoldDownRope solid factory. /// /////////////////////////////////////////////////////////////////////////////// #ifndef __RAT_geo_HoldDownRope_hh__ #define __RAT_geo_HoldDownRope_hh__ #include #include namespace RAT { namespace geo { class HoldDownRope : public GeoSolid { public: /// Construct a HoldDownRope, name the factory holdDownRope HoldDownRope() : GeoSolid( "holdDownRope" ) { } /// 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 down rope /// @return The geant4 solid for the hold down rope virtual G4VSolid* Construct( const std::string& name, DBLinkPtr table ) const; protected: /// Build the HoldDownRope shape /// /// The points correspond to the locus of going from the base on one side /// to the base on another. The sling is the equivalent of a knot point /// on another rope. /// /// @param[in] name the prefix for the solid name /// @param[in] base1 the start anchor point /// @param[in] equator1 first point where rope meets av equator /// @param[in] knot1 first point where the rope is knotted to the sling /// @param[in] knot2 second point (opposite side) where rope knotes with the sling /// @param[in] equator2 second point where the rope meets av equator /// @param[in] base2 the end anchor point /// @param[in] sling the position of the far end of the sling /// @param[in] radialThickness rope thickness /// @param[in] avRadius radius of the av the rope passed over /// @return The geant4 solid for the hold down rope G4VSolid* ConstructHoldDownRope( const std::string& name, const G4ThreeVector base1, const G4ThreeVector equator1, const G4ThreeVector knot1, const G4ThreeVector knot2, const G4ThreeVector equator2, const G4ThreeVector base2, const G4ThreeVector sling, const double radialThickness, const double avRadius ) const; }; } //::geo } //::RAT #endif