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

Public Member Functions

 LOM18 (G4bool pPlaceHarness=false)
 
void construction ()
 
double getPressureVesselWeight ()
 Virtual method to get the weight of the pressure vessel. More...
 
int getNumberOfPMTs ()
 Virtual method to get the number of PMTs in the optical module. More...
 
G4String getName ()
 
- Public Member Functions inherited from OMSimOpticalModule
 OMSimOpticalModule (OMSimPMTConstruction *pPMTManager)
 
void configureSensitiveVolume (OMSimDetectorConstruction *pDetConst)
 
OMSimPMTConstructiongetPMTmanager ()
 
- 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...
 

Public Attributes

G4double m_cylinderAngle = 1.5*deg
 
G4double m_glassOutRad
 
- Public Attributes inherited from OMSimOpticalModule
G4int m_index
 
- 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
 

Private Member Functions

G4Polycone * createLOM18OuterSolid ()
 
G4Polycone * createLOM18InnerSolid ()
 
void appendEquatorBand ()
 
void placeCADSupportStructure (G4LogicalVolume *lInnerVolumeLogical)
 
void placeCADPenetrator (G4LogicalVolume *lInnerVolumeLogical)
 
void setPMTPositions ()
 
void createGelpadLogicalVolumes (G4Polycone *lGelSolid)
 
void placePMTs (G4LogicalVolume *lInnerVolumeLogical)
 
void placeGelpads (G4LogicalVolume *lInnerVolumeLogical)
 

Private Attributes

G4bool m_placeHarness = true
 
G4bool m_harnessUnion = true
 
std::vector< G4ThreeVector > m_positionsPMT
 
std::vector< G4ThreeVector > m_positionsGelpad
 
std::vector< G4double > m_thetaPMT
 
std::vector< G4double > m_phiPMT
 
G4double m_totalLenght
 
G4double m_outRad
 
G4double m_spherePosY
 
G4double m_ellipsePosY
 
G4double m_ellipseZaxis
 
std::stringstream m_conv
 
std::stringstream m_converter2
 
std::vector< G4LogicalVolume * > m_gelPadLogical
 
G4double m_GlassEquatorWidth = 159*mm
 
G4double m_GlassPoleLength = 270*mm
 
G4double m_GlassThickPole = 12.5*mm
 
G4double m_GlassThickEquator = 16.5*mm
 
G4double m_thetaCenter = 48.0*deg
 
G4double m_thetaEquatorial = 60.0*deg
 
G4int m_numberPolarPMTs = 1
 
G4int m_NrCenterPMTs = 4
 
G4int m_NrEquatorialPMTs = 4
 
G4double m_EqPMTPhiPhase = 45.0*deg
 
G4double m_polarPadOpeningAngle = 30.0*deg
 
G4double m_centerPadOpeningAngle = 10.0*deg
 
G4double m_equatorialPadOpeningAngle = 5.0*deg
 
G4double m_GelThicknessFrontPolarPMT = 3.5*mm
 
G4double m_gelThicknessFrontCenterPMT = 12.93*mm
 
G4double m_gelThicknessFrontEquatorialPMT = 14.52*mm
 
G4int m_numberPMTsPerHalf = m_numberPolarPMTs + m_NrCenterPMTs + m_NrEquatorialPMTs
 
G4int m_totalNumberPMTs = (m_numberPolarPMTs + m_NrCenterPMTs + m_NrEquatorialPMTs) * 2
 
G4double m_PMToffset
 
G4double m_maxPMTRadius
 

Additional Inherited Members

- Protected Attributes inherited from OMSimOpticalModule
OMSimPMTConstructionm_managerPMT
 
- 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

◆ construction()

void LOM18::construction ( )
virtual

Placement function which appends all components into an OMSimDetectorComponent to be constructed in DetectorConstruction

Implements OMSimDetectorComponent.

◆ createGelpadLogicalVolumes()

void LOM18::createGelpadLogicalVolumes ( G4Polycone *  p_gelSolid)
private

Creation of LogicalVolume of gel pads

Parameters
p_gelSolidSolid inner module volume. IntersectionSolid with PMT cones is filled with gel

◆ createLOM18InnerSolid()

G4Polycone * LOM18::createLOM18InnerSolid ( )
private

Creation of inner module volume based on pressure vessel technical drawing... stolen drom doumeki as of yet

Returns
SolidVolume of inner module volume

◆ createLOM18OuterSolid()

G4Polycone * LOM18::createLOM18OuterSolid ( )
private

Creation of outer module volume based on pressure vessel technical drawing... stolen drom doumeki as of yet

Returns
SolidVolume of inner module volume

◆ getNumberOfPMTs()

int LOM18::getNumberOfPMTs ( )
inlinevirtual

This method should be overridden in derived classes to provide the number of PMTs in the specific optical module.

Returns
Number of PMTs in the optical module.

Implements OMSimOpticalModule.

◆ getPressureVesselWeight()

double LOM18::getPressureVesselWeight ( )
inlinevirtual

This method should be overridden in derived classes to provide the weight of the pressure vessel for the specific optical module.

Returns
Weight of the pressure vessel.

Implements OMSimOpticalModule.

◆ placeCADPenetrator()

void LOM18::placeCADPenetrator ( G4LogicalVolume *  innerVolumeLogical)
private

Imports inner Penetrator of module from CAD file and places them as an absorber (non optical compenents only since the tesselation is strong!)

◆ placeCADSupportStructure()

void LOM18::placeCADSupportStructure ( G4LogicalVolume *  p_innerVolume)
private

Imports inner components of module from CAD file and places them as an absorber (non optical compenents only since the tesselation is strong!)

◆ placeGelpads()

void LOM18::placeGelpads ( G4LogicalVolume *  p_innerVolumeLogical)
private

Placement of gel pads

Parameters
p_innerVolumeLogicalLogicalVolume of inner module volume in which the gel pads are placed.

◆ placePMTs()

void LOM18::placePMTs ( G4LogicalVolume *  p_innerVolumeLogical)
private

Placement of PMTs

Parameters
p_innerVolumeLogicalLogicalVolume of inner module volume in which the PMTs are placed.

◆ setPMTPositions()

void LOM18::setPMTPositions ( )
private

Saves postition and angles of PMTs into arrays to be used in other functions.


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