DD4hep  1.30.0
Detector Description Toolkit for High Energy Physics
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
dd4hep::sim::Geant4Sensitive Class Reference

The base class for Geant4 sensitive detector actions implemented by users. More...

#include <Geant4SensDetAction.h>

Inheritance diagram for dd4hep::sim::Geant4Sensitive:
dd4hep::sim::Geant4Action dd4hep::sim::Geant4EscapeCounter dd4hep::sim::Geant4SensitiveAction< T > dd4hep::sim::Test::Geant4TestSensitive Tests::Geant4SensitiveAction< T >

Public Types

enum  HitCreationFlags { SIMPLE_MODE = 0, MEDIUM_MODE = 1<<0, DETAILED_MODE = 1<<1 }
 

Public Member Functions

 Geant4Sensitive (Geant4Context *context, const std::string &name, DetElement det, Detector &description)
 Constructor. The sensitive detector element is identified by the detector name. More...
 
virtual ~Geant4Sensitive ()
 Standard destructor. More...
 
Geant4ActionSDdetector () const
 Access to the sensitive detector object. More...
 
void setDetector (Geant4ActionSD *sens_det)
 Access to the sensitive detector object. More...
 
int hitCreationMode () const
 Property access to the hit creation mode. More...
 
std::string detectorName () const
 G4VSensitiveDetector internals: Access to the detector name. More...
 
std::string path () const
 G4VSensitiveDetector internals: Access to the detector path name. More...
 
std::string fullPath () const
 G4VSensitiveDetector internals: Access to the detector path name. More...
 
bool isActive () const
 G4VSensitiveDetector internals: Is the detector active? More...
 
SensitiveDetector sensitiveDetector () const
 Access the dd4hep sensitive detector. More...
 
G4VReadOutGeometry * readoutGeometry () const
 Access to the readout geometry of the sensitive detector. More...
 
DetectordetectorDescription () const
 Access the detector desciption object. More...
 
void mark (const G4Track *track) const
 Mark the track to be kept for MC truth propagation during hit processing. More...
 
void mark (const G4Step *step) const
 Mark the track of this step to be kept for MC truth propagation during hit processing. More...
 
Geant4SensDetActionSequencesequence () const
 Access to the hosting sequence. More...
 
void adopt (Geant4Filter *filter)
 Add an actor responding to all callbacks. Sequence takes ownership. More...
 
void adopt_front (Geant4Filter *filter)
 Add an actor responding to all callbacks to the sequence front. Sequence takes ownership. More...
 
void adoptFilter (Geant4Action *filter)
 Add an actor responding to all callbacks. Sequence takes ownership. More...
 
void adoptFilter_front (Geant4Action *filter)
 Add an actor responding to all callbacks to the sequence front. Sequence takes ownership. More...
 
bool accept (const G4Step *step) const
 Callback before hit processing starts. Invoke all filters. More...
 
bool accept (const Geant4FastSimSpot *step) const
 GFLASH/FastSim interface: Callback before hit processing starts. Invoke all filters. More...
 
template<typename TYPE >
std::size_t defineCollection (const std::string &coll_name)
 Initialize the usage of a single hit collection. Returns the collection ID. More...
 
const std::string & hitCollectionName (std::size_t which) const
 Access HitCollection container names. More...
 
Geant4HitCollectioncollection (std::size_t which)
 Retrieve the hits collection associated with this detector by its serial number. More...
 
Geant4HitCollectioncollectionByID (std::size_t id)
 Retrieve the hits collection associated with this detector by its collection identifier. More...
 
virtual void defineCollections ()
 Define collections created by this sensitivie action object. More...
 
virtual void begin (G4HCofThisEvent *hce)
 G4VSensitiveDetector interface: Method invoked at the begining of each event. More...
 
virtual void end (G4HCofThisEvent *hce)
 G4VSensitiveDetector interface: Method invoked at the end of each event. More...
 
virtual void clear (G4HCofThisEvent *hce)
 G4VSensitiveDetector interface: Method invoked if the event was aborted. More...
 
long long int volumeID (const G4Step *step)
 Returns the volumeID of the sensitive volume corresponding to the step. More...
 
long long int volumeID (const G4VTouchable *touchable)
 Returns the volumeID of the sensitive volume corresponding to the G4VTouchable. More...
 
long long int cellID (const G4Step *step)
 Returns the cellID of the sensitive volume corresponding to the step. More...
 
long long int cellID (const G4VTouchable *touchable, const G4ThreeVector &global)
 Returns the cellID of the sensitive volume corresponding to the G4VTouchable. More...
 
virtual bool process (const G4Step *step, G4TouchableHistory *history)
 G4VSensitiveDetector interface: Method for generating hit(s) using the information of G4Step object. More...
 
virtual bool processFastSim (const Geant4FastSimSpot *spot, G4TouchableHistory *history)
 GFLASH/FastSim interface: Method for generating hit(s) using the information of the fast simulation spot object. More...
 
- Public Member Functions inherited from dd4hep::sim::Geant4Action
 Geant4Action (Geant4Context *context, const std::string &nam)
 Standard constructor. More...
 
long addRef ()
 Increase reference count. More...
 
long release ()
 Decrease reference count. Implicit destruction. More...
 
Geant4Contextcontext () const
 Access the context. More...
 
virtual void updateContext (Geant4Context *ctxt)
 Set or update client context. More...
 
virtual void configureFiber (Geant4Context *thread_context)
 Set or update client for the use in a new thread fiber. More...
 
const std::string & name () const
 Access name of the action. More...
 
const char * c_name () const
 Access name of the action. More...
 
void setName (const std::string &new_name)
 Set the object name. More...
 
PropertyManagerproperties ()
 Access to the properties of the object. More...
 
PrintLevel outputLevel () const
 Access the output level. More...
 
PrintLevel setOutputLevel (PrintLevel new_level)
 Set the output level; returns previous value. More...
 
Geant4UIMessengercontrol () const
 Access to the UI messenger. More...
 
virtual void enableUI ()
 Enable and install UI messenger. More...
 
template<typename T >
Geant4ActiondeclareProperty (const std::string &nam, T &val)
 Declare property. More...
 
template<typename T >
Geant4ActiondeclareProperty (const char *nam, T &val)
 Declare property. More...
 
bool hasProperty (const std::string &name) const
 Check property for existence. More...
 
Propertyproperty (const std::string &name)
 Access single property. More...
 
virtual void installMessengers ()
 Install property control messenger if wanted. More...
 
virtual void installCommandMessenger ()
 Install command control messenger if wanted. More...
 
virtual void installPropertyMessenger ()
 Install property control messenger if wanted. More...
 
void print (const char *fmt,...) const
 Support for messages with variable output level using output level. More...
 
void printM1 (const char *fmt,...) const
 Support for messages with variable output level using output level-1. More...
 
void printM2 (const char *fmt,...) const
 Support for messages with variable output level using output level-2. More...
 
void printP1 (const char *fmt,...) const
 Support for messages with variable output level using output level+1. More...
 
void printP2 (const char *fmt,...) const
 Support for messages with variable output level using output level+2. More...
 
void always (const char *fmt,...) const
 Support of always printed messages. More...
 
void debug (const char *fmt,...) const
 Support of debug messages. More...
 
void info (const char *fmt,...) const
 Support of info messages. More...
 
void warning (const char *fmt,...) const
 Support of warning messages. More...
 
void error (const char *fmt,...) const
 Support of error messages. More...
 
bool return_error (bool return_value, const char *fmt,...) const
 Action to support error messages. More...
 
void fatal (const char *fmt,...) const
 Support of fatal messages. Throws exception. More...
 
void except (const char *fmt,...) const
 Support of exceptions: Print fatal message and throw runtime_error. More...
 
void abortRun (const std::string &exception, const char *fmt,...) const
 Abort Geant4 Run by throwing a G4Exception with type RunMustBeAborted. More...
 
Geant4RunActionSequencerunAction () const
 Access to the main run action sequence from the kernel object. More...
 
Geant4EventActionSequenceeventAction () const
 Access to the main event action sequence from the kernel object. More...
 
Geant4SteppingActionSequencesteppingAction () const
 Access to the main stepping action sequence from the kernel object. More...
 
Geant4TrackingActionSequencetrackingAction () const
 Access to the main tracking action sequence from the kernel object. More...
 
Geant4StackingActionSequencestackingAction () const
 Access to the main stacking action sequence from the kernel object. More...
 
Geant4GeneratorActionSequencegeneratorAction () const
 Access to the main generator action sequence from the kernel object. More...
 

Protected Member Functions

 DDG4_DEFINE_ACTION_CONSTRUCTORS (Geant4Sensitive)
 Define standard assignments and constructors. More...
 
- Protected Member Functions inherited from dd4hep::sim::Geant4Action
 DDG4_DEFINE_ACTION_CONSTRUCTORS (Geant4Action)
 Define standard assignments and constructors. More...
 
virtual ~Geant4Action ()
 Default destructor. More...
 

Protected Attributes

int m_hitCreationMode = 0
 Property: Hit creation mode. Maybe one of the enum HitCreationFlags. More...
 
Detectorm_detDesc
 Reference to the detector description object. More...
 
DetElement m_detector { }
 Reference to the detector element describing this sensitive element. More...
 
SensitiveDetector m_sensitive { }
 Reference to the sensitive detector element. More...
 
Readout m_readout { }
 Reference to the readout structure. More...
 
Segmentation m_segmentation { }
 Reference to segmentation. More...
 
Actors< Geant4Filterm_filters
 The list of sensitive detector filter objects. More...
 
- Protected Attributes inherited from dd4hep::sim::Geant4Action
Geant4Contextm_context { nullptr }
 Reference to the Geant4 context. More...
 
Geant4UIMessengerm_control { nullptr }
 Control directory of this action. More...
 
int m_outputLevel { 3 }
 Default property: Output level. More...
 
bool m_needsControl { false }
 Default property: Flag to create control instance. More...
 
std::string m_name { }
 Action name. More...
 
PropertyManager m_properties { }
 Property pool. More...
 
long m_refCount { 1 }
 Reference count. Initial value: 1. More...
 

Private Attributes

Geant4ActionSDm_sensitiveDetector { nullptr }
 Reference to G4 sensitive detector. More...
 
Geant4SensDetActionSequencem_sequence { nullptr }
 Reference to the containing action sequence. More...
 

Detailed Description

The base class for Geant4 sensitive detector actions implemented by users.

Author
M.Frank
Version
1.0

Definition at line 121 of file Geant4SensDetAction.h.

Member Enumeration Documentation

◆ HitCreationFlags

Enumerator
SIMPLE_MODE 
MEDIUM_MODE 
DETAILED_MODE 

Definition at line 123 of file Geant4SensDetAction.h.

Constructor & Destructor Documentation

◆ Geant4Sensitive()

Geant4Sensitive::Geant4Sensitive ( Geant4Context context,
const std::string &  name,
DetElement  det,
Detector description 
)

Constructor. The sensitive detector element is identified by the detector name.

Constructor. The detector element is identified by the name.

Definition at line 98 of file Geant4SensDetAction.cpp.

◆ ~Geant4Sensitive()

Geant4Sensitive::~Geant4Sensitive ( )
virtual

Standard destructor.

Definition at line 113 of file Geant4SensDetAction.cpp.

Member Function Documentation

◆ accept() [1/2]

bool Geant4Sensitive::accept ( const G4Step *  step) const

Callback before hit processing starts. Invoke all filters.

Return false if any filter returns false

Definition at line 152 of file Geant4SensDetAction.cpp.

◆ accept() [2/2]

bool Geant4Sensitive::accept ( const Geant4FastSimSpot step) const

GFLASH/FastSim interface: Callback before hit processing starts. Invoke all filters.

Return false if any filter returns false

Definition at line 159 of file Geant4SensDetAction.cpp.

◆ adopt()

void Geant4Sensitive::adopt ( Geant4Filter filter)

Add an actor responding to all callbacks. Sequence takes ownership.

Definition at line 126 of file Geant4SensDetAction.cpp.

◆ adopt_front()

void Geant4Sensitive::adopt_front ( Geant4Filter filter)

Add an actor responding to all callbacks to the sequence front. Sequence takes ownership.

Add an actor responding to all callbacks. Sequence takes ownership.

Definition at line 142 of file Geant4SensDetAction.cpp.

◆ adoptFilter()

void Geant4Sensitive::adoptFilter ( Geant4Action filter)

Add an actor responding to all callbacks. Sequence takes ownership.

Definition at line 120 of file Geant4SensDetAction.cpp.

◆ adoptFilter_front()

void Geant4Sensitive::adoptFilter_front ( Geant4Action filter)

Add an actor responding to all callbacks to the sequence front. Sequence takes ownership.

Add an actor responding to all callbacks. Sequence takes ownership.

Definition at line 136 of file Geant4SensDetAction.cpp.

◆ begin()

void Geant4Sensitive::begin ( G4HCofThisEvent *  hce)
virtual

G4VSensitiveDetector interface: Method invoked at the begining of each event.

Method invoked at the begining of each event.

The hits collection(s) created by this sensitive detector must be set to the G4HCofThisEvent object at one of these two methods.

Reimplemented in Tests::Geant4SensitiveAction< T >, dd4hep::sim::Geant4SensitiveAction< T >, dd4hep::sim::Test::Geant4TestSensitive, and dd4hep::sim::Geant4SensitiveAction< T >.

Definition at line 210 of file Geant4SensDetAction.cpp.

◆ cellID() [1/2]

long long int Geant4Sensitive::cellID ( const G4Step *  step)

Returns the cellID of the sensitive volume corresponding to the step.

Returns the cellID(volumeID+local coordinate encoding) of the sensitive volume corresponding to the step.

The CellID is the VolumeID + the local coordinates of the sensitive area. Calculated by combining the VolIDS of the complete geometry path (Geant4TouchableHistory) from the current sensitive volume to the world volume

Definition at line 260 of file Geant4SensDetAction.cpp.

◆ cellID() [2/2]

long long int Geant4Sensitive::cellID ( const G4VTouchable *  touchable,
const G4ThreeVector &  global 
)

Returns the cellID of the sensitive volume corresponding to the G4VTouchable.

Returns the cellID(volumeID+local coordinate encoding) of the sensitive volume corresponding to the touchable history.

The CellID is the VolumeID + the local coordinates of the sensitive area. Calculated by combining the VolIDS of the complete geometry path (Geant4TouchableHistory) from the current sensitive volume to the world volume

Definition at line 291 of file Geant4SensDetAction.cpp.

◆ clear()

void Geant4Sensitive::clear ( G4HCofThisEvent *  hce)
virtual

G4VSensitiveDetector interface: Method invoked if the event was aborted.

Method is invoked if the event abortion is occured.

Hits collections created but not being set to G4HCofThisEvent at the event should be deleted. Collection(s) which have already set to G4HCofThisEvent will be deleted automatically.

Reimplemented in Tests::Geant4SensitiveAction< T >, dd4hep::sim::Geant4SensitiveAction< T >, dd4hep::sim::Geant4SensitiveAction< T >, and dd4hep::sim::Geant4SensitiveAction< T >.

Definition at line 229 of file Geant4SensDetAction.cpp.

◆ collection()

Geant4HitCollection * Geant4Sensitive::collection ( std::size_t  which)

Retrieve the hits collection associated with this detector by its serial number.

Definition at line 196 of file Geant4SensDetAction.cpp.

◆ collectionByID()

Geant4HitCollection * Geant4Sensitive::collectionByID ( std::size_t  id)

Retrieve the hits collection associated with this detector by its collection identifier.

Definition at line 201 of file Geant4SensDetAction.cpp.

◆ DDG4_DEFINE_ACTION_CONSTRUCTORS()

dd4hep::sim::Geant4Sensitive::DDG4_DEFINE_ACTION_CONSTRUCTORS ( Geant4Sensitive  )
protected

Define standard assignments and constructors.

◆ defineCollection()

template<typename TYPE >
std::size_t dd4hep::sim::Geant4Sensitive::defineCollection ( const std::string &  coll_name)
inline

Initialize the usage of a single hit collection. Returns the collection ID.

Definition at line 496 of file Geant4SensDetAction.h.

◆ defineCollections()

void Geant4Sensitive::defineCollections ( )
virtual

◆ detector()

Geant4ActionSD & Geant4Sensitive::detector ( ) const

Access to the sensitive detector object.

Definition at line 171 of file Geant4SensDetAction.cpp.

◆ detectorDescription()

dd4hep::Detector & Geant4Sensitive::detectorDescription ( ) const

Access the detector desciption object.

Definition at line 186 of file Geant4SensDetAction.cpp.

◆ detectorName()

std::string dd4hep::sim::Geant4Sensitive::detectorName ( ) const
inline

G4VSensitiveDetector internals: Access to the detector name.

Definition at line 178 of file Geant4SensDetAction.h.

◆ end()

void Geant4Sensitive::end ( G4HCofThisEvent *  hce)
virtual

G4VSensitiveDetector interface: Method invoked at the end of each event.

Method invoked at the end of each event.

Reimplemented in Tests::Geant4SensitiveAction< T >, dd4hep::sim::Geant4SensitiveAction< T >, dd4hep::sim::Test::Geant4TestSensitive, and dd4hep::sim::Geant4SensitiveAction< T >.

Definition at line 214 of file Geant4SensDetAction.cpp.

◆ fullPath()

std::string dd4hep::sim::Geant4Sensitive::fullPath ( ) const
inline

G4VSensitiveDetector internals: Access to the detector path name.

Definition at line 188 of file Geant4SensDetAction.h.

◆ hitCollectionName()

const std::string & Geant4Sensitive::hitCollectionName ( std::size_t  which) const

Access HitCollection container names.

Definition at line 191 of file Geant4SensDetAction.cpp.

◆ hitCreationMode()

int dd4hep::sim::Geant4Sensitive::hitCreationMode ( ) const
inline

Property access to the hit creation mode.

Definition at line 173 of file Geant4SensDetAction.h.

◆ isActive()

bool dd4hep::sim::Geant4Sensitive::isActive ( ) const
inline

G4VSensitiveDetector internals: Is the detector active?

Definition at line 193 of file Geant4SensDetAction.h.

◆ mark() [1/2]

void Geant4Sensitive::mark ( const G4Step *  step) const

Mark the track of this step to be kept for MC truth propagation during hit processing.

Definition at line 239 of file Geant4SensDetAction.cpp.

◆ mark() [2/2]

void Geant4Sensitive::mark ( const G4Track *  track) const

Mark the track to be kept for MC truth propagation during hit processing.

Definition at line 233 of file Geant4SensDetAction.cpp.

◆ path()

std::string dd4hep::sim::Geant4Sensitive::path ( ) const
inline

G4VSensitiveDetector internals: Access to the detector path name.

Definition at line 183 of file Geant4SensDetAction.h.

◆ process()

bool Geant4Sensitive::process ( const G4Step *  step,
G4TouchableHistory *  history 
)
virtual

◆ processFastSim()

bool Geant4Sensitive::processFastSim ( const Geant4FastSimSpot spot,
G4TouchableHistory *  history 
)
virtual

GFLASH/FastSim interface: Method for generating hit(s) using the information of the fast simulation spot object.

GFLASH/FastSim interface: Method for generating hit(s) using the information of the Geant4FastSimSpot object.

The default implementation throws an exception that the GFLASH/FastSim interface is not implemented.

Reimplemented in Tests::Geant4SensitiveAction< T >, dd4hep::sim::Geant4SensitiveAction< T >, dd4hep::sim::Geant4SensitiveAction< T >, dd4hep::sim::Geant4SensitiveAction< T >, dd4hep::sim::Geant4SensitiveAction< T >, dd4hep::sim::Geant4SensitiveAction< T >, dd4hep::sim::Geant4SensitiveAction< T >, dd4hep::sim::Geant4SensitiveAction< T >, dd4hep::sim::Geant4SensitiveAction< T >, and dd4hep::sim::Geant4SensitiveAction< T >.

Definition at line 223 of file Geant4SensDetAction.cpp.

◆ readoutGeometry()

G4VReadOutGeometry* dd4hep::sim::Geant4Sensitive::readoutGeometry ( ) const
inline

Access to the readout geometry of the sensitive detector.

Definition at line 203 of file Geant4SensDetAction.h.

◆ sensitiveDetector()

SensitiveDetector dd4hep::sim::Geant4Sensitive::sensitiveDetector ( ) const
inline

Access the dd4hep sensitive detector.

Definition at line 198 of file Geant4SensDetAction.h.

◆ sequence()

Geant4SensDetActionSequence & Geant4Sensitive::sequence ( ) const

Access to the hosting sequence.

Definition at line 181 of file Geant4SensDetAction.cpp.

◆ setDetector()

void Geant4Sensitive::setDetector ( Geant4ActionSD sens_det)

Access to the sensitive detector object.

Definition at line 166 of file Geant4SensDetAction.cpp.

◆ volumeID() [1/2]

long long int Geant4Sensitive::volumeID ( const G4Step *  step)

Returns the volumeID of the sensitive volume corresponding to the step.

Combining the VolIDS of the complete geometry path (Geant4TouchableHistory) from the current sensitive volume to the world volume

Definition at line 245 of file Geant4SensDetAction.cpp.

◆ volumeID() [2/2]

long long int Geant4Sensitive::volumeID ( const G4VTouchable *  touchable)

Returns the volumeID of the sensitive volume corresponding to the G4VTouchable.

Returns the volumeID of the sensitive volume corresponding to the touchable history.

Combining the VolIDS of the complete geometry path (Geant4TouchableHistory) from the current sensitive volume to the world volume

Definition at line 253 of file Geant4SensDetAction.cpp.

Member Data Documentation

◆ m_detDesc

Detector& dd4hep::sim::Geant4Sensitive::m_detDesc
protected

Reference to the detector description object.

Definition at line 143 of file Geant4SensDetAction.h.

◆ m_detector

DetElement dd4hep::sim::Geant4Sensitive::m_detector { }
protected

Reference to the detector element describing this sensitive element.

Definition at line 146 of file Geant4SensDetAction.h.

◆ m_filters

Actors<Geant4Filter> dd4hep::sim::Geant4Sensitive::m_filters
protected

The list of sensitive detector filter objects.

Definition at line 154 of file Geant4SensDetAction.h.

◆ m_hitCreationMode

int dd4hep::sim::Geant4Sensitive::m_hitCreationMode = 0
protected

Property: Hit creation mode. Maybe one of the enum HitCreationFlags.

Definition at line 137 of file Geant4SensDetAction.h.

◆ m_readout

Readout dd4hep::sim::Geant4Sensitive::m_readout { }
protected

Reference to the readout structure.

Definition at line 150 of file Geant4SensDetAction.h.

◆ m_segmentation

Segmentation dd4hep::sim::Geant4Sensitive::m_segmentation { }
protected

Reference to segmentation.

Definition at line 152 of file Geant4SensDetAction.h.

◆ m_sensitive

SensitiveDetector dd4hep::sim::Geant4Sensitive::m_sensitive { }
protected

Reference to the sensitive detector element.

Definition at line 148 of file Geant4SensDetAction.h.

◆ m_sensitiveDetector

Geant4ActionSD* dd4hep::sim::Geant4Sensitive::m_sensitiveDetector { nullptr }
private

Reference to G4 sensitive detector.

Definition at line 131 of file Geant4SensDetAction.h.

◆ m_sequence

Geant4SensDetActionSequence* dd4hep::sim::Geant4Sensitive::m_sequence { nullptr }
private

Reference to the containing action sequence.

Definition at line 133 of file Geant4SensDetAction.h.


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