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