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

Public Member Functions

 mDOM (G4bool p_placeHarness=true)
 
 ~mDOM ()
 
void construction ()
 Abstract method you have to define in order to make a derived class from OMSimDetectorComponent.
 
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 ()
 
void runBeamOnFlasher (G4int pModuleIndex, G4int pLEDIndex)
 run/beamOn the specified flasher. More...
 
- 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

G4int m_NrTotalLED
 
std::vector< G4Transform3D > m_LEDTransformers
 coordinates from center of the module
 
std::vector< std::vector< G4double > > m_LEDAngFromSphere
 stores rho (mm),theta (deg),phi (deg) of each LED from the center of its corresponding spherical part. Useful to run the particles.
 
const G4double m_cylinderAngle = 2.8 * deg
 Deviation angle of cylindrical part of the pressure vessel.
 
const G4double m_glassOutRad = 176.5 * mm
 outer radius of galss cylinder (pressure vessel)
 
const G4double m_cylinderHeight = 27.5 * mm
 height of cylindrical part of glass half-vessel
 
const G4double m_glassInRad = m_glassOutRad - m_glassThick
 
- 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

G4SubtractionSolid * equatorialReflector (G4VSolid *pSupportStructure, G4Cons *pReflCone, G4double pAngle, G4String pSuffix)
 
void setPMTPositions ()
 
G4UnionSolid * pressureVessel (const G4double pOutRad, G4String pSuffix)
 
G4SubtractionSolid * substractHarnessPlug (G4VSolid *pSolid)
 
std::tuple< G4SubtractionSolid *, G4UnionSolid * > supportStructure ()
 
G4SubtractionSolid * substractFlashers (G4VSolid *lSupStructureSolid)
 
void setLEDPositions ()
 

Private Attributes

mDOMFlasherm_flashers
 
mDOMHarnessm_harness
 
G4bool m_placeHarness = true
 
G4bool m_harnessUnion = true
 
std::vector< G4ThreeVector > m_positionsPMT
 
std::vector< G4RotationMatrix > m_PMTRotations
 
std::vector< G4RotationMatrix > m_PMTRotPhi
 
std::vector< G4ThreeVector > m_reflectorPositions
 
G4double m_PMToffset
 
G4double m_refConeIdealInRad
 
const G4double m_glassThick = 13.5 * mm
 maximum Glass thickness
 
const G4double m_gelThicknessFrontPMT = 3.6 * mm
 distance between inner glass surface and tip of PMTs
 
const G4double m_gelThickness = 4.5 * mm
 distance between inner glass surface and holding structure, filled with gel
 
const G4double m_EqPMTrOffset = 2.6 * mm
 middle PMT circles are slightly further out due to m_EqPMTzOffset
 
const G4double m_EqPMTzOffset = 10.0 * mm
 z-offset of middle PMT circles w.r.t. center of glass sphere
 
const G4double m_reflectorHalfZ = 15 * mm
 half-height of reflector (before cutting to right form)
 
const G4double m_reflectorConeSheetThickness = 0.5 * mm
 aluminum sheet thickness true for all reflective cones
 
const G4double m_reflectorConeToHolder = 1.55 * mm
 horizontal distance from K??rcher's construction
 
const G4double m_thetaPolar = 33.0 * deg
 
const G4double m_thetaEquatorial = 72.0 * deg
 
const G4int m_numberPolarPMTs = 4
 
const G4int m_numberEqPMTs = 8
 
const G4int mRefConeAngle = 51
 
const G4double m_polarEquatorialPMTphiPhase = 0 * deg
 
const G4int m_totalNumberPMTs = (m_numberPolarPMTs + m_numberEqPMTs) * 2
 
const G4double m_supStructureRad = m_glassOutRad - m_glassThick - m_gelThickness
 
const G4double m_thetaEqLED = 61 * deg
 
const G4double m_thetaPolLED = 8.2 * deg
 

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()
 

Constructor & Destructor Documentation

◆ ~mDOM()

mDOM::~mDOM ( )
Todo:
  • Write documentation and parse current comments into Doxygen style

Member Function Documentation

◆ getNumberOfPMTs()

int mDOM::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 mDOM::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.

◆ runBeamOnFlasher()

void mDOM::runBeamOnFlasher ( G4int  pModuleIndex,
G4int  pLEDIndex 
)
inline

This method triggers the flasher at the given index in the specified module.

Parameters
pModuleIndexThe index of the module to be flashed (if only one mDOM placed, then 0, otherwise depending on placeIt() order)
pLEDIndexThe index of the flasher within the module.

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