///////////////////////////////////////////////////////////////////////////////
/// \class RAT::geo::SnoVessel
///
/// \brief Builds a snoVessel
///
/// \author Phil G Jones
/// \author Aksel Hallin -- contact person
///
/// REVISION HISTORY:\n
/// 2013-08-07 : P G Jones - New file. \n
///
/// \details SnoVessel solid factory. A sphere with a tube on top (along z
/// axis).
///
///////////////////////////////////////////////////////////////////////////////
#ifndef __RAT_geo_SnoVessel_hh__
#define __RAT_geo_SnoVessel_hh__
#include
#include
namespace RAT
{
namespace geo
{
class SnoVessel : public GeoSolid
{
public:
/// Construct a SnoVessel
SnoVessel() : GeoSolid( "snoVessel" ) { }
/// 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 sno-vessel
/// @return The geant4 solid for the sno-vessel
virtual G4VSolid* Construct( const std::string& name,
DBLinkPtr table ) const;
protected:
/// Build the SnoVessel shape
///
/// @param[in] name the prefix for the solid name
/// @param[in] rSphere radius of the sphere
/// @param[in] rNeck radius of the neck
/// @param[in] zNeck height of the neck
/// @return The geant4 solid for the sno-vessel
G4VSolid* ConstructSnoVessel( const std::string& name,
const double rSphere,
const double rNeck,
const double zNeck ) const;
};
} //::geo
} //::RAT
#endif