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