///////////////////////////////////////////////////////////////////////////////
/// \class RAT::geo::BellyPlate
///
/// \brief Builds a belly plate
///
/// \author Phil G Jones
/// \author Aksel Hallin -- contact person
///
/// REVISION HISTORY:\n
/// 2013-03-31 : P G Jones - New file. \n
///
/// \details Builds a belly plate solid at the origin, to the RAT/P. Gorel
/// model. This model is different to the model used in SNOMAN, see
/// RAT::geo::SNOMANBellyPlate.
///////////////////////////////////////////////////////////////////////////////
#ifndef __RAT_geo_BellyPlate_hh__
#define __RAT_geo_BellyPlate_hh__
#include
#include
namespace RAT
{
namespace geo
{
class BellyPlate : public GeoSolid
{
public:
/// Construct a BellyPlate, set the factory name to bellyPlate
BellyPlate() : GeoSolid( "bellyPlate" ) { }
/// 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] halfHeight of the polycone
/// @param[in] rPolyNominal radius at the top and base (z) of the polycone
/// @param[in] rPolyInner inner-radius at the middle (z) of the polycone
/// @param[in] rPolyOuter outer-radius at the middle (z) of the polycone
/// @param[in] rSphereInner sphere tile inner
/// @param[in] rSphereOuter sphere tile outer
/// @param[in] offset of the solid (as intersected) from the origin
/// @return the geant4 solid
G4VSolid* ConstructBellyPlate( const std::string& name,
const double halfHeight,
const double rPolyNominal,
const double rPolyInner,
const double rPolyOuter,
const double rSphereInner,
const double rSphereOuter,
const double offset ) const;
};
} //::geo
} //::RAT
#endif