////////////////////////////////////////////////////////////////////////
/// \class RAT::ConcentratorConstructorParams
///
/// \brief The struct of parameters needed to construct a concentrator
///
/// \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
/// 01/11 : P.Jones - Added data input option \n
///
/// \details Stores the necessary parameters for a concentrator
///
///
////////////////////////////////////////////////////////////////////////
#ifndef __RAT_ConcentratorConsrtuctorParams__
#define __RAT_ConcentratorConsrtuctorParams__
#include
#include
class G4Material;
class G4OpticalSurface;
class G4VisAttributes;
namespace RAT
{
class ConcentratorConstructorParams
{
public:
enum EConcDefinition { eSNOMAN, eRAT };
ConcentratorConstructorParams( const std::string& concType,
G4Material* motherMaterial,
G4VisAttributes* visAttributes );
virtual ~ConcentratorConstructorParams() {}
std::string fConcType; ///< String that defines the concentrator type in the db
std::string fModelType; ///< Name of the Model, default is ConcentratorOpticalModel
std::string fModelParams; ///< The Model Parameter set, e.g. Optics0
double fUpperRadius; ///< Radius of concentrator water adjacent face
double fLowerRadius; ///< Radius of concentrator pmt adjacent face
double fA; ///< As defined in Michael Lay thesis, Torus cross section ellipse minor axis
double fB; ///< As defined in Michael Lay thesis, Torus cross section ellipse major axis
double fD; ///< As defined in Michael Lay thesis, Radius of torus
std::vector fZCoord; ///< If not using a fit (A, B, D) then measured position
std::vector fRhoCoord; ///< If not using a fit (A, B, D) then measured position
double fOffset; ///< Concentrator offset in z from pmt equator
int fNumPetals; ///< Number of Petals
double fPetalThickness; ///< Thickness of the petal
double fPlasticThickness; ///< Thickness of the plastic
double fLipZCoord; ///< The lip middle Z coord, lip is edge is above and below.
double fLipOuterRadius; ///< The outer radius of the lip, inner radius is that of the plastic
G4Material* fBulkMaterial; ///< Concentrator Bulk (Plastic) material
G4Material* fPetalMaterial; ///< Concentrator Bulk (Petal) material
G4Material* fMotherMaterial; ///< Material of the volume the petal is placed into
G4OpticalSurface* fReflectiveSurface; ///< Reflective surface for petals
G4VisAttributes* fVisAttributes; ///< Visualisation attributes
EConcDefinition fConcDefinition; ///< Does concentrator use RAT or SNOMAN definition
private:
ConcentratorConstructorParams();
};
} //::RAT
#endif