///////////////////////////////////////////////////////////////////////////////
/// \class RAT::geo::SNOMANBellyPlate
///
/// \brief Builds a SNOMAN belly plate
///
/// \author Phil G Jones
/// \author Aksel Hallin -- contact person
///
/// REVISION HISTORY:\n
/// 2013-08-07 : P G Jones - New file. \n
///
/// \details Builds a belly plate solid at the origin, to the SNOMAN model.
/// The SNOMAN model differs from the RAT model, see RAT::geo::BellyPlate.
///
///////////////////////////////////////////////////////////////////////////////
#ifndef __RAT_geo_SNOMANBellyPlate_hh__
#define __RAT_geo_SNOMANBellyPlate_hh__
#include
#include
namespace RAT
{
namespace geo
{
class SNOMANBellyPlate : public GeoSolid
{
public:
/// Construct a SNOMANBellyPlate, set the factory name to bellyPlate
SNOMANBellyPlate() : GeoSolid( "snomanBellyPlate" ) { }
/// 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 belly plate
/// @return The geant4 solid for the belly plate
virtual G4VSolid* Construct( const std::string& name,
DBLinkPtr table ) const;
protected:
/// Construct a belly plate
///
/// @param[in] name the prefix for the solid name
/// @param[in] octahedronBase the half length of the base
/// @param[in] octahedronHeight the half height of the octahedron
/// @param[in] thickness thickness of the spherical tile
/// @param[in] rSphere radius of the spherical tile (at centre)
/// @param[in] arc length in radians of the spherical tile
/// @param[in] rOctahedron offset of the octahedron from origin in the spherical tile coord system
/// @return the geant4 solid
G4VSolid* ConstructBellyPlate( const std::string& name,
const double octahedronBase,
const double octahedronHeight,
const double thickness,
const double rSphere,
const double arc,
const double rOctahedron ) const;
};
} //::geo
} //::RAT
#endif