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