//////////////////////////////////////////////////////////////////////// /// \class RAT::BucketConstructor /// /// \brief Class that constructs the Bucket Logical Volume using /// the bucket parameters /// /// \author Phil Jones /// \author Aksel Hallin -- contact person /// /// REVISION HISTORY:\n /// 07/09 : P.Jones - First Revision, new file. \n /// /// \details Takes the bucket parameters and constructs a bucket /// solid and places it into a logical volume /// /// //////////////////////////////////////////////////////////////////////// #ifndef __RAT_BucketConstructor__ #define __RAT_BucketConstructor__ #include #include #include class G4LogicalVolume; namespace RAT { class BucketConstructor : public ConstructorBase { public: /// Constructor for the class, needs parameters and a name BucketConstructor( const std::string &prefix, ///< Prefix string const BucketConstructorParams ¶ms ///< Parameters that define the bucket ); virtual ~BucketConstructor(){} /// Constructs the logical volume void Construct(); /// Returns the Max height above the pmt equator of the bucket G4double GetMaxHeight(); /// Returns the Max depth below the pmt equator of the bucket (note returns a -ive number) G4double GetMaxDepth(); /// Returns the radius of the bucket, 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 BucketConstructorParams fBucketParameters;///< Parameters needed to construct G4LogicalVolume* fBucketLogic;///< The completed logical volume private: /// To prevent usage BucketConstructor(); }; } //::RAT #endif