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