//////////////////////////////////////////////////////////////////////// /// \class RAT::ConstructorBase /// /// \brief Base class for all PMT objects /// /// \author Phil Jones /// \author Aksel Hallin -- contact person /// /// REVISION HISTORY:\n /// 16/11 : P.Jones - First Revision, new file. \n /// /// \details Abstract base class for PMT objects /// /// //////////////////////////////////////////////////////////////////////// #ifndef __RAT_ConstructorBase__ #define __RAT_ConstructorBase__ #include #include class G4LogicalVolume; class G4Material; namespace RAT { namespace PMTGeo { extern const double kFaceGap;// The gap to prevent overlap } class ConstructorBase { public: virtual ~ConstructorBase() {} /// Returns the logical volume for the bucket virtual G4LogicalVolume* GetLogicalVolume() = 0; // Returns the top in z co-ord relative to PMT equator virtual G4double GetMaxHeight() = 0; /// Returns the bottom in z co-ord relative to PMT equator virtual G4double GetMaxDepth() = 0; /// Returns the radius of the concentrator, for a hex shape this is the distance of the plane that has \n /// a normal that passes through the origin (See G4Polyhedra definition). virtual G4double GetHexRadius() = 0; }; } //::RAT #endif