////////////////////////////////////////////////////////////////////////
/// \class RAT::GeoPMTFactory
///
/// \brief The Factory that constructs and positions pmts in the detector
///
/// \author Phil Jones
/// \author Aksel Hallin -- contact person
///
/// REVISION HISTORY:\n
/// 07/09 : P.Jones - First Revision, new file. \n
///
/// \details Calls the relevant functions to build a pmt, once built \n
/// it will position the pmt in the detector
///
///
////////////////////////////////////////////////////////////////////////
#ifndef __RAT_GeoPMTFactory__
#define __RAT_GeoPMTFactory__
#include
#include
class G4VPhysicalVolume;
class G4LogicalVolume;
namespace RAT {
class EnvelopeConstructor;
class GeoPMTFactory : public GeoFactory, public GeoPMTFactoryBase
{
public:
/// Constructor, registers this as a factory
GeoPMTFactory() : GeoFactory("pmtbuilder") {};
virtual ~GeoPMTFactory() {}
/// The Function that constructs all the PMTs in the volume this factory is set for
///
/// @param[in] table defines the volume
/// @param[in] checkOverlaps when placing
virtual void Construct( DBLinkPtr table,
const bool checkOverlaps );
protected:
/// Place the PMTs in the detector
///
/// @param[in] table defines the volume
/// @param[in] checkOverlaps when placing
void PlacePMTs( DBLinkPtr table,
const bool checkOverlaps );
};
} // namespace RAT
#endif