////////////////////////////////////////////////////////////////////////
/// \class RAT::PMTConstructorParams
///
/// \brief The struct of parameters needed to construct a pmt
///
/// \author Phil Jones
/// \author Aksel Hallin -- contact person
///
/// REVISION HISTORY:\n
/// 07/09 : P.Jones - First Revision, new file. \n
/// 08/10 : P.Jones - New constructor. \n
/// 03/12 : P.Jones - Different PMT shapes now possible. \n
///
/// \details Stores the necessary parameters for a pmt
///
///
////////////////////////////////////////////////////////////////////////
#ifndef __RAT_PMTConsrtuctorParams__
#define __RAT_PMTConsrtuctorParams__
#include
#include
class G4Material;
class G4OpticalSurface;
class G4VisAttributes;
namespace RAT
{
class PMTConstructorParams
{
public:
/// Define the shape type of the PMT
enum EShape { eTorus, eCuboid, eCylindrical };
/// Construct by specifying a PMT type
PMTConstructorParams( const std::string& pmtType,
G4VisAttributes* visAttributes );
virtual ~PMTConstructorParams() {}
/// Construct the parameters
void Construct();
std::vector fEdgeZCoord; ///< Z co-ords from the PMT equator of the PMT edge (array size n+1)
std::vector fEdgeRhoCoord; ///< Rho (radius) co-ords from the PMT equator of the PMT edge (array size n+1)
std::vector fOriginZCoord; ///< Z co-ord origins of sphere that interpolates between edge points (array size n)
// Alternatively if not torus shaped, cube
double fXWidth; ///< Width in x dimension
double fYWidth; ///< Width in y dimension
double fHeight; ///< Height
// Alternatively if not cube shape, cylindrical
double fRadius; ///< Cylindrical radius
// Other parameters
EShape fShape; ///< Defines the shape type of the pmt
std::string fPMTType; ///< String that defines the PMT type in the db
std::string fModelType; ///< Name of the Model, default is PMTOpticalModel
std::string fModelParams; ///< The Model Parameter set, e.g. Optics0
double fGlassThickness; ///< Thickness of glass
double fDynodeRadius; ///< Radius of the dynode stack
double fDynodeTopZCoord; ///< Z co-ord of the Dynode top
double fPCMirrorOverlapTop; ///< Top Z co-ord of the overlap region
double fPCMirrorOverlapBottom; ///< Bottom Z co-ord of the overlap region
G4Material* fGlassMaterial; ///< PMT Glass material
G4Material* fVacuumMaterial; ///< PMT Vacuum material
G4Material* fDynodeMaterial; ///< PMT Dynode material
G4OpticalSurface* fPhotocathodeSurface; ///< PMT Photocathode material/surface
G4OpticalSurface* fMirrorSurface; ///< PMT Mirror material/surface
G4VisAttributes* fVisAttributes; ///< Visualisation attributes
private:
PMTConstructorParams();
};
} //::RAT
#endif