///////////////////////////////////////////////////////////////////////////////
/// \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