//////////////////////////////////////////////////////////////////////// /// \class RAT::PMTBaseConstructor /// /// \brief Class that constructs the PMT Base Logical Volume using /// the bucket parameters /// /// \author Phil Jones /// \author Aksel Hallin -- contact person /// /// REVISION HISTORY:\n /// 28/10 : P.Jones - First Revision, new file. \n /// /// \details Takes the PMT Base parameters and constructs a PMT Base /// solid and places it into a logical volume /// /// //////////////////////////////////////////////////////////////////////// #ifndef __RAT_PMTBaseConstructor__ #define __RAT_PMTBaseConstructor__ #include #include #include class G4LogicalVolume; namespace RAT { class PMTBaseConstructor : public ConstructorBase { public: /// Constructor for the class, needs parameters and a name PMTBaseConstructor( const std::string &prefix, ///< Prefix string const PMTBaseConstructorParams ¶ms ///< Parameters that define the bucket ); virtual ~PMTBaseConstructor() {} /// Constructs the logical volume void Construct(); /// Returns the Max height of the PMT Base G4double GetMaxHeight(); /// Returns the Max depth below the pmt equator of the pmt base (note returns a -ive number) G4double GetMaxDepth(); /// Returns the radius of the PMT Base, for a hex shape this is the distance of the plane that has \n /// a normal that passes through the origin (See G4Polyhedra definition). G4double GetHexRadius(); /// Returns the offset from the pmt equator (in Z) where the bucket should be placed G4double GetOffset(); /// Returns the logical volume for the bucket G4LogicalVolume* GetLogicalVolume(); protected: std::string fPrefix;///< Prefix string for naming the bucket geometry PMTBaseConstructorParams fPMTBaseParameters;///< Parameters needed to construct G4LogicalVolume* fPMTBaseLogic;///< The completed logical volume private: /// To prevent usage PMTBaseConstructor(); }; } //::RAT #endif