OMSim
Geant4 for IceCube optical module studies
Loading...
Searching...
No Matches
DEGG Class Reference

Construction of the DEGG detector geometry. More...

Inheritance diagram for DEGG:
[legend]
Collaboration diagram for DEGG:
[legend]

Detailed Description

The DEGG class is responsible for constructing the D-Egg detector geometry. It creates the pressure vessel, the inner volume, and places the PMTs inside the logical volume of the gel. The class is derived from the OMSimDetectorComponent base class.

Public Member Functions

 DEGG (G4bool p_placeHarness=true)
 
void construction ()
 Construction of the whole DEGG. If you want to change any component, you have to change it at the specific function.
 
double getPressureVesselWeight ()
 Virtual method to get the weight of the pressure vessel.
 
int getNumberOfPMTs ()
 Virtual method to get the number of PMTs in the optical module.
 
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.
 
G4bool checkIfExists (G4String pName)
 Check if a component with a certain name exists in the Components map.
 
Component getComponent (G4String pName)
 Retrieves a specified component from the Components map.
 
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.
 
void integrateDetectorComponent (OMSimDetectorComponent *pToIntegrate, G4ThreeVector pPosition, G4RotationMatrix pRotation, G4String pNameExtension)
 Integrates the components of another OMSimDetectorComponent instance.
 
void deleteComponent (G4String pName)
 Deletes a specified component from the Components map.
 
void placeIt (G4ThreeVector pPosition, G4RotationMatrix pRotation, G4LogicalVolume *&pMother, G4String pNameExtension="")
 Placement of the DetectorComponent. Each Component is placed in the same mother.
 
void placeIt (G4Transform3D pTrans, G4LogicalVolume *&pMother, G4String pNameExtension="")
 Places the components in a specified mother volume using a provided transformation.
 
G4SubtractionSolid * substractToVolume (G4VSolid *pInputVolume, G4ThreeVector pSubstractionPos, G4RotationMatrix pSubstractionRot, G4String pNewVolumeName)
 Subtracts components from a given solid volume using position and rotation.
 
G4SubtractionSolid * substractToVolume (G4VSolid *pInputVolume, G4Transform3D pTrans, G4String pNewVolumeName)
 Subtracts components from a given solid volume.
 

Private Member Functions

void appendPMTs ()
 
void placePMTs (G4LogicalVolume *lInnerVolumeLogical)
 
void appendInternalComponentsFromCAD ()
 
void appendPressureVesselFromCAD ()
 
G4VSolid * createEggSolid (G4int p_segments_1, G4double pSphereRmax, G4double pSpheredTheta, G4double pSphereTransformZ, G4double pTorus1R, G4double pCenterOfTorus1R, G4int pSegments_2, G4double pTorus2R, G4double pCenterOfTorus2R, G4double pCenterOfTorus2_z, G4double pTorus2_Zmin, G4double pTorus2_Zmax, G4double pTorus2_Z0, G4double pTorus1TransformZ)
 Creates the solid shape for the DEGG pressure vessel.
 

Private Attributes

DEggHarnessm_harness
 
std::stringstream m_converter
 

Additional Inherited Members

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

◆ DEGG()

DEGG::DEGG ( G4bool  pPlaceHarness = true)
Todo:
  • I am not sure if the harness is correctly implemented!
  • Clean up the code.
  • Subtract CAD penetrator from the vessel.
  • Investigate why the gel does not reach the photocathode edge. (Should the photocathode edge end earlier? Gel, Vessel, and PMT shape are correct.)

Member Function Documentation

◆ construction()

void DEGG::construction ( )
virtual

◆ createEggSolid()

G4VSolid * DEGG::createEggSolid ( G4int  p_segments1,
G4double  p_sphereRmax,
G4double  p_spheredTheta,
G4double  p_sphereTransformZ,
G4double  p_torus1R,
G4double  p_centreOfTorus1R,
G4int  p_segments2,
G4double  p_torus2R,
G4double  p_centreOfTorus2R,
G4double  p_centreOfTorus2z,
G4double  p_torus2Zmin,
G4double  p_torus2Zmax,
G4double  p_torus2Z0,
G4double  p_torus1TransformZ 
)
private
Parameters
p_segments1Number of segments for the G4Sphere representing the outer glass.
p_sphereRmaxOuter radius of the G4Sphere representing the outer glass.
p_spheredThetaDelta theta angle of the G4Sphere segment.
p_sphereTransformZShift of the G4Sphere in the z-direction.
p_torus1RRadius of the small spindle torus sphere.
p_centreOfTorus1RDistance from the center of torus 1 to the z-axis.
p_segments2Number of segments for the large spindle torus sphere.
p_torus2RRadius of the large spindle torus sphere.
p_centreOfTorus2RDistance from the center of torus 2 to the z-axis (signed).
p_centreOfTorus2zDistance from the center of torus 2 to the z-axis (signed).
p_torus2ZminMinimum z shift from z=0 in the positive z direction.
p_torus2ZmaxMaximum z shift from z=0 in the positive z direction.
p_torus2Z0G4double.
p_torus1TransformZG4double.
Returns
The outer or inner shape of the glass vessel as a G4VSolid.

◆ getName()

G4String DEGG::getName ( )
inlinevirtual

Implements OMSimOpticalModule.

◆ getNumberOfPMTs()

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


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