///////////////////////////////////////////////////////////////////////////////
/// \class RAT::Geometry
///
/// \brief Constructs the geometry
///
/// \author Phil G Jones
/// \author Aksel Hallin -- contact person
///
/// REVISION HISTORY:\n
/// 2013-08-07: P G Jones - New file. \n
///
/// \details Constructs the geometry. All geometric factories should be
/// registered in the ConstructGeometries method of this class. This class is
/// a singleton.
///
///////////////////////////////////////////////////////////////////////////////
#ifndef __RAT_Geometry_hh__
#define __RAT_Geometry_hh__
#include
namespace RAT
{
class Geometry
{
public:
/// Singleton accessor
///
/// @return pointer to the Geometry instance
inline static Geometry* Get();
/// Construct all the geometries in table defined
///
/// Forced overlap checking should be added to check that no geometries
/// overlap, however this should be avoided as it drastically slows rat.
///
/// @param[in] table name default is GEO
/// @param[in] checkOverlaps true if overlap checking is forced
void ConstructGeometries( const std::string& table="GEO", const bool checkOverlaps=false );
private:
/// Constructs the factories and solids
Geometry();
/// Destructs the factories and solids
~Geometry();
/// Do not call
Geometry( Geometry& );
/// Do not call
void operator=( Geometry& );
};
inline Geometry*
Geometry::Get()
{
static Geometry geometry;
return &geometry;
}
} //::RAT
#endif