Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-10-20 08:45:49

0001 /**
0002  * @file SensorIdentifier.h
0003  * Application-provided sensor identities used during geometry translation.
0004  */
0005 #pragma once
0006 
0007 class G4VPhysicalVolume;
0008 
0009 namespace simphony
0010 {
0011 /**
0012  * Identifies sensors in a Geant4 geometry.
0013  *
0014  * Supply an implementation through GeometryOptions::sensor_identifier. The
0015  * runtime borrows it for its process lifetime. Return -1 for volumes without
0016  * sensors and a unique non-negative identity for each sensor.
0017  */
0018 struct SensorIdentifier
0019 {
0020     virtual ~SensorIdentifier() = default;
0021 
0022     /** Sets the diagnostic verbosity requested by the geometry translator. */
0023     virtual void setLevel(int level) = 0;
0024 
0025     /**
0026      * Identifies a sensor in the non-instanced remainder of the geometry.
0027      *
0028      * @param volume volume being inspected.
0029      * @param parent parent volume, or nullptr at the world.
0030      */
0031     virtual int getGlobalIdentity(
0032         const G4VPhysicalVolume* volume, const G4VPhysicalVolume* parent) = 0;
0033 
0034     /**
0035      * Identifies the sensor within a factorized instance subtree.
0036      *
0037      * @param outer_volume outer volume of the instance. At most one sensor
0038      * identity per instance is supported.
0039      */
0040     virtual int getInstanceIdentity(const G4VPhysicalVolume* outer_volume) const = 0;
0041 };
0042 } // namespace simphony