OMSim
Geant4 for IceCube optical module studies
OMSimPMTConstruction Class Reference
Inheritance diagram for OMSimPMTConstruction:
[legend]
Collaboration diagram for OMSimPMTConstruction:
[legend]

Public Member Functions

void construction ()
 Constructs the PMT solid with all its components.
 
void configureSensitiveVolume (OMSimDetectorConstruction *pDetConst, G4String pName)
 
G4double getDistancePMTCenterToTip ()
 
G4double getMaxPMTRadius ()
 
G4VSolid * getPMTSolid ()
 
G4LogicalVolume * getLogicalVolume ()
 
G4LogicalVolume * getPhotocathodeLV ()
 
double getPMTGlassWeight ()
 
void placeIt (G4ThreeVector pPosition, G4RotationMatrix pRotation, G4LogicalVolume *&pMother, G4String pNameExtension="")
 
void placeIt (G4Transform3D pTrans, G4LogicalVolume *&pMother, G4String pNameExtension="")
 
void selectPMT (G4String pPMTtoSelect)
 
void includeHAcoating ()
 
- Public Member Functions inherited from OMSimDetectorComponent
void appendComponent (G4VSolid *pSolid, G4LogicalVolume *pLogical, G4ThreeVector pVector, G4RotationMatrix pRotation, G4String pName)
 Append component to Components vector. More...
 
G4bool checkIfExists (G4String pName)
 Check if a component with a certain name exists in the Components map. More...
 
Component getComponent (G4String pName)
 Retrieves a specified component from the Components map. More...
 
G4Transform3D getNewPosition (G4ThreeVector pPosition, G4RotationMatrix pRotation, G4ThreeVector pObjectPosition, G4RotationMatrix pObjectRotation)
 Computes a new position for a sub-component, based on a given global position and rotation. More...
 
void integrateDetectorComponent (OMSimDetectorComponent *pToIntegrate, G4ThreeVector pPosition, G4RotationMatrix pRotation, G4String pNameExtension)
 Integrates the components of another OMSimDetectorComponent instance. More...
 
void deleteComponent (G4String pName)
 Deletes a specified component from the Components map. More...
 
void placeIt (G4ThreeVector pPosition, G4RotationMatrix pRotation, G4LogicalVolume *&pMother, G4String pNameExtension="")
 Placement of the DetectorComponent. Each Component is placed in the same mother. More...
 
void placeIt (G4Transform3D pTrans, G4LogicalVolume *&pMother, G4String pNameExtension="")
 Places the components in a specified mother volume using a provided transformation. More...
 
G4SubtractionSolid * substractToVolume (G4VSolid *pInputVolume, G4ThreeVector pSubstractionPos, G4RotationMatrix pSubstractionRot, G4String pNewVolumeName)
 Subtracts components from a given solid volume using position and rotation. More...
 
G4SubtractionSolid * substractToVolume (G4VSolid *pInputVolume, G4Transform3D pTrans, G4String pNewVolumeName)
 Subtracts components from a given solid volume. More...
 

Private Member Functions

std::tuple< G4VSolid *, G4VSolid * > getBulbSolid (G4String pSide)
 
std::tuple< G4VSolid *, G4VSolid * > simpleBulbConstruction (G4String pSide)
 
std::tuple< G4VSolid *, G4VSolid * > fullBulbConstruction (G4String pSide)
 
G4VSolid * frontalBulbConstruction (G4String pSide)
 
void readGlobalParameters (G4String pSide)
 Reads the parameter table and assigns the value and dimension of member variables.
 
G4VSolid * sphereEllipsePhotocathode (G4String p_side)
 
G4VSolid * doubleEllipsePhotocathode (G4String pSide)
 
G4VSolid * ellipsePhotocathode (G4String p_side)
 
void constructHAcoating ()
 
void constructCathodeBackshield (G4LogicalVolume *pPMTIinner)
 
void constructCADdynodeSystem (G4LogicalVolume *p_mother)
 
OMSimPMTResponsegetPMTResponseInstance ()
 Creates and configures an instance of OMSimPMTResponse based on PMT model selected.
 

Private Attributes

G4LogicalVolume * m_photocathodeLV
 
G4String m_selectedPMT
 
G4bool m_dynodeSystem = false
 
G4bool m_internalReflections = false
 
G4bool m_HACoatingBool = false
 
G4bool m_constructionFinished = false
 
G4double m_centreToTipDistance
 
G4bool m_simpleBulb = false
 
G4double m_missingTubeLength
 
G4PVPlacement * m_vacuumBackPhysical
 
G4PVPlacement * m_photocathodeRegionVacuumPhysical
 
G4OpticalSurface * m_photocathodeOpticalSurface
 
bool m_checkOverlaps
 
G4double m_totalLenght
 
G4double m_tubeWidth
 
G4double m_outRad
 
G4double m_ellipseXYaxis
 
G4double m_ellipseZaxis
 
G4double m_sphereEllipseTransition_r
 
G4double m_spherePosY
 
G4double m_ellipsePosY
 

Additional Inherited Members

- Public Attributes inherited from OMSimDetectorComponent
OMSimInputDatam_data
 Instance of OMSimInputdata, which should be started only once.
 
bool m_checkOverlaps = false
 
std::vector< G4ThreeVector > m_placedPositions
 store the positions each time the components are placed
 
std::vector< G4RotationMatrix > m_placedOrientations
 store the orientations each time the components are placed
 
std::vector< G4Transform3D > m_placedTranslations
 store the translation each time the components are placed
 
std::map< G4String, Componentm_components
 dictionary with each component
 
std::map< G4String, G4PVPlacement * > m_lastPhysicals
 dictionary with the (last) G4PVPlacement of each component mComponents produced after calling placeIt
 
- Static Protected Attributes inherited from OMSimDetectorComponent
static const G4VisAttributes m_glassVis = G4VisAttributes(G4Colour(0.7, 0.7, 0.8, 0.25))
 
static const G4VisAttributes m_gelVis = G4VisAttributes(G4Colour(0.45, 0.5, 0.35, 0.2))
 
static const G4VisAttributes m_steelVis = G4VisAttributes(G4Colour(0.6, 0.6, 0.7, 1.0))
 
static const G4VisAttributes m_aluVis = G4VisAttributes(G4Colour(0.8, 0.8, 0.9, 1.0))
 
static const G4VisAttributes m_whiteVis = G4VisAttributes(G4Colour(1, 1, 1, 1.0))
 
static const G4VisAttributes m_absorberSemiTransparentVis = G4VisAttributes(G4Colour(0.2, 0.2, 0.2, 0.5))
 
static const G4VisAttributes m_absorberVis = G4VisAttributes(G4Colour(0.2, 0.2, 0.2, 1.0))
 
static const G4VisAttributes m_boardVis = G4VisAttributes(G4Colour(0, 1, 0, 1))
 
static const G4VisAttributes m_blueVis = G4VisAttributes(G4Colour(0, 0, 1, 1))
 
static const G4VisAttributes m_airVis = G4VisAttributes(G4Colour(0.7, 0.7, 0.8, 0.2))
 
static const G4VisAttributes m_airVis2 = G4VisAttributes(G4Colour(0.0, 0, 1., 0.5))
 
static const G4VisAttributes m_redVis = G4VisAttributes(G4Colour(1.0, 0.0, 0.0, 1))
 
static const G4VisAttributes m_blackVis = G4VisAttributes(G4Colour(0.0, 0.0, 0.0, 1.0))
 
static const G4VisAttributes m_LEDvis = G4VisAttributes(G4Colour(0.2, 0.6, 0.8, 0.5))
 
static const G4VisAttributes m_photocathodeVis = G4VisAttributes(G4Colour(1.0, 1.0, 0.0, 0.1))
 
static const G4VisAttributes m_invisibleVis = G4VisAttributes::GetInvisible()
 

Member Function Documentation

◆ constructCADdynodeSystem()

void OMSimPMTConstruction::constructCADdynodeSystem ( G4LogicalVolume *  p_mother)
private

Construction & placement of the dynode system entrance for internal reflections. Currently only geometry for Hamamatsu R15458.

Parameters
p_motherLogicalVolume of the mother, where the dynode system entrance is placed (vacuum volume)

◆ constructCathodeBackshield()

void OMSimPMTConstruction::constructCathodeBackshield ( G4LogicalVolume *  p_PMTinner)
private

Creates and positions a thin disk behind the photocathode volume in order to shield photons coming from behind the PMT. Only used when internal reflections are turned off.

◆ doubleEllipsePhotocathode()

G4VSolid * OMSimPMTConstruction::doubleEllipsePhotocathode ( G4String  p_side)
private

Construction of the frontal part of the PMT following the fits of the technical drawings. PMTs constructed with doubleEllipsePhotocathode were fitted with two ellipses.

Returns
bulbSolid the frontal solid of the PMT

◆ ellipsePhotocathode()

G4VSolid * OMSimPMTConstruction::ellipsePhotocathode ( G4String  p_side)
private

Construction of the frontal part of the PMT following the fits of the technical drawings. PMTs constructed with ellipsePhotocathode were fitted with an ellipse.

Returns
bulbSolid the frontal solid of the PMT

◆ fullBulbConstruction()

std::tuple< G4VSolid *, G4VSolid * > OMSimPMTConstruction::fullBulbConstruction ( G4String  p_side)
private

Construction of the basic shape of the PMT for a full paramterised PMT. This is needed if internal reflections are simulated.

Returns
tuple of G4UnionSolid (the outer shape) and G4SubtractionSolid (the photocathode volume part)

◆ getBulbSolid()

std::tuple< G4VSolid *, G4VSolid * > OMSimPMTConstruction::getBulbSolid ( G4String  p_side)
private

The basic shape of the PMT is constructed twice, once for the external solid and once for the internal. A subtraction of these two shapes would yield the glass envelope of the PMT. The function calls either simpleBulbConstruction or fullBulbConstruction, depending on the data provided and simulation type. In case only the frontal curvate of the photocathode has to be well constructed, it calls simpleBulbConstruction. fullBulbConstruction constructs the neck of the PMT precisely, but it needs to have the fit data of the PMT type and is only needed if internal reflections are simulated.

See also
simpleBulbConstruction
fullBulbConstruction

◆ getDistancePMTCenterToTip()

G4double OMSimPMTConstruction::getDistancePMTCenterToTip ( )
Returns
G4double the distance between the 0.0 position of the PMT solid volume and the plane normal to the PMT frontal tip.

◆ getLogicalVolume()

G4LogicalVolume * OMSimPMTConstruction::getLogicalVolume ( )
Returns
the bulb glass logical volume (PMT mother).

◆ getMaxPMTRadius()

G4double OMSimPMTConstruction::getMaxPMTRadius ( )
Returns
G4double the maximal radius of the frontal part of the PMT.

◆ getPMTSolid()

G4VSolid * OMSimPMTConstruction::getPMTSolid ( )
Returns
the solid of the constructed PMT.

◆ placeIt() [1/2]

void OMSimPMTConstruction::placeIt ( G4ThreeVector  p_position,
G4RotationMatrix  p_rotation,
G4LogicalVolume *&  p_mother,
G4String  p_nameExtension = "" 
)

Placement of the PMT and definition of LogicalBorderSurfaces in case internal reflections are needed.

Parameters
p_positionG4ThreeVector with position of the module (as in G4PVPlacement())
p_rotationG4RotationMatrix with rotation of the module (as in G4PVPlacement())
p_motherG4LogicalVolume where the module is going to be placed (as in G4PVPlacement())
p_nameExtensionG4String name of the physical volume. You should not have two physicals with the same name

◆ placeIt() [2/2]

void OMSimPMTConstruction::placeIt ( G4Transform3D  p_transform,
G4LogicalVolume *&  p_mother,
G4String  p_nameExtension = "" 
)
See also
PMT::placeIt
Parameters
p_transformG4Transform3D with position & rotation of PMT

◆ selectPMT()

void OMSimPMTConstruction::selectPMT ( G4String  p_selectedPMT)

Select PMT model to use and assigns mPMT class.

Parameters
p_selectedPMTstring with the name of the PMT model

◆ simpleBulbConstruction()

std::tuple< G4VSolid *, G4VSolid * > OMSimPMTConstruction::simpleBulbConstruction ( G4String  p_side)
private

Construction of the basic shape of the PMT.

Returns
tuple of G4UnionSolid (the outer shape) and G4SubtractionSolid (the photocathode volume part)

◆ sphereEllipsePhotocathode()

G4VSolid * OMSimPMTConstruction::sphereEllipsePhotocathode ( G4String  p_side)
private

Construction of the frontal part of the PMT following the fits of the technical drawings. PMTs constructed with sphereEllipsePhotocathode were fitted with a sphere and an ellipse.

Returns
bulbSolid the frontal solid of the PMT

The documentation for this class was generated from the following files: