/////////////////////////////////////////////////////////////////////////////// /// \class RAT::geo::AVPipe /// /// \brief Builds an acrylic vessel pipe /// /// \author Phil G Jones /// \author Aksel Hallin -- contact person /// /// REVISION HISTORY:\n /// 2013-11-27 : P G Jones - New file. \n /// /// \details Builds an acrylic vessel pipe solid, expects the solid ratdb /// table to contain 'kink' points in the pipe. /////////////////////////////////////////////////////////////////////////////// #ifndef __RAT_geo_AVPipe_hh__ #define __RAT_geo_AVPipe_hh__ #include #include #include namespace RAT { namespace geo { class AVPipe : public GeoSolid { public: /// Construct the AVPipe, call this factory avPipe AVPipe() : GeoSolid( "avPipe" ) { } /// 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 pipe /// @return The geant4 solid for the pipe virtual G4VSolid* Construct( const std::string& name, DBLinkPtr table ) const; protected: /// Construct a segment of the pipe between start and end /// /// @param[in] name the prefix for the solid name /// @param[in] start is the segment start position /// @param[in] end is the segment end position /// @param[in] rMin is the inner radius /// @param[in] rMax is the outer radius G4VSolid* ConstructPipe( const std::string& name, const G4ThreeVector start, const G4ThreeVector end, const double rMin, const double rMax ) const; }; } //::geo } //::RAT #endif