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