This class serves as a base class for constructing and manipulating detector components in OMSim. It provides a set of helper functions for creating and arranging components within a detector, as well as methods for altering the geometry, such as subtracting one component from another. The class maintains an internal list of components, allowing for operations to be performed on all components simultaneously. The placeIt
methods allow for the placement of components within a specified logical volume, either via individual positioning and rotation parameters, or via a Geant4 transformation. Furthermore, components from one OMSimDetectorComponent
instance can be integrated into another, with user-specified position, rotation, and name extension. This makes it possible to build complex geometrical structures in a modular fashion in cases where a single mother volume cannot be used.
|
virtual void | construction ()=0 |
| Abstract method you have to define in order to make a derived class 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.
|
|
|
OMSimInputData * | m_data |
| Instance of OMSimInputdata, which should be started only once.
|
|
bool | m_checkOverlaps = true |
|
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, Component > | m_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 const G4VisAttributes | m_glassVis = G4VisAttributes(G4Colour(0.7, 0.7, 0.8, 0.25)) |
|
static const G4VisAttributes | m_PMTglassVis = G4VisAttributes(G4Colour(0.7, 0.7, 0.8, 0.4)) |
|
static const G4VisAttributes | m_gelVis = G4VisAttributes(G4Colour(0.45, 0.5, 0.35, 0.2)) |
|
static const G4VisAttributes | m_gelpadVis = G4VisAttributes(G4Colour(0.45, 0.5, 0.35, 0.3)) |
|
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, 0.6, 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, 0.7, 0.0, 1)) |
|
static const G4VisAttributes | m_invisibleVis = G4VisAttributes::GetInvisible() |
|