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