ATLAS Offline Software
|
Common base class for tools that create and manage Geant4 sensitive detectors. More...
#include <SensitiveDetectorBase.h>
Inherits extends< AthAlgTool, ISensitiveDetector >.
Inherited by AFP_SensitiveDetectorTool, AFP_SiDSensitiveDetectorTool, AFP_TDSensitiveDetectorTool, ALFA_SensitiveDetectorTool, BCMSensorSDTool, BLMSensorSDTool, CaloCellContainerSDTool, CSCSensitiveDetectorCosmicsTool, CSCSensitiveDetectorTool, FCS_Param::FCS_StepInfoSDTool, GenericMuonSensitiveDetectorTool, HGTDSensorSDTool, LArG4::CalibSDTool, LArG4::SimpleSDTool, LArG4H6BeamSDTool, LArG4H6WarmTCSDTool, LArG4SDTool, LArG4TBECBeamChSDTool, LUCID_SensitiveDetectorTool, MDTSensitiveDetectorCosmicsTool, MDTSensitiveDetectorTool, MicromegasSensitiveDetectorTool, MinBiasScintillatorSDTool, MuonG4R4::MdtSensitiveDetectorTool, MuonG4R4::MmSensitiveDetectorTool, MuonG4R4::RpcSensitiveDetectorTool, MuonG4R4::sTgcSensitiveDetectorTool, MuonG4R4::TgcSensitiveDetectorTool, MuonWallSDTool, PixelSensorSDTool, RPCSensitiveDetectorCosmicsTool, RPCSensitiveDetectorTool, SctSensor_CTBTool, SctSensorSDTool, sTGCSensitiveDetectorTool, TGCSensitiveDetectorCosmicsTool, TGCSensitiveDetectorTool, TileGeoG4CalibSDTool, TileGeoG4SDTool, TrackFastSimSDTool, TrackRecorderSDTool, TRTSensitiveDetectorTool, ZDC_FiberSDTool, and ZDC_G4CalibSDTool.
Public Member Functions | |
SensitiveDetectorBase (const std::string &type, const std::string &name, const IInterface *parent) | |
Standard constructor. More... | |
virtual | ~SensitiveDetectorBase () |
Empty virtual destructor. More... | |
StatusCode | initializeSD () override |
Setup an SD in the current thread. More... | |
virtual StatusCode | SetupEvent () override |
Beginning of an athena event. More... | |
virtual StatusCode | Gather () override |
End of an athena event. More... | |
Protected Member Functions | |
StatusCode | assignSD (G4VSensitiveDetector *sd, const std::vector< std::string > &volumes) const |
Assign SD to a list of volumes. More... | |
G4VSensitiveDetector * | getSD () |
Retrieve the current SD. More... | |
void | SetSensitiveDetector (G4LogicalVolume *, G4VSensitiveDetector *) const |
Method stolen from G4VUserDetectorConstruction in G4 10.2. More... | |
Protected Attributes | |
Gaudi::Property< std::vector< std::string > > | m_volumeNames {this, "LogicalVolumeNames", {}} |
All the volumes to which this SD is assigned. More... | |
Gaudi::Property< std::vector< std::string > > | m_outputCollectionNames {this, "OutputCollectionNames", {}} |
Names of all output collections written out by this SD. More... | |
Gaudi::Property< bool > | m_noVolumes {this, "NoVolumes", false} |
This SensitiveDetector has no volumes associated with it. More... | |
Private Member Functions | |
void | setSD (G4VSensitiveDetector *) |
Set the current SD. More... | |
Static Private Member Functions | |
static bool | matchStrings (const char *first, const char *second) |
Match two strings with wildcard support. More... | |
Private Attributes | |
G4VSensitiveDetector * | m_SD {} |
The sensitive detector to which this thing corresponds. More... | |
Common base class for tools that create and manage Geant4 sensitive detectors.
Concrete tools must implement the makeSD method of ISensitiveDetector to create an SD on demand. In multi-threading mode, SDs are created once per thread by the infrastructure invoking initializeSDs.
Concrete tools can optionally implement the SetupEvent and Gather methods for preparing and post-processing output collections at the beginning or end of an Athena event.
Definition at line 41 of file SensitiveDetectorBase.h.
SensitiveDetectorBase::SensitiveDetectorBase | ( | const std::string & | type, |
const std::string & | name, | ||
const IInterface * | parent | ||
) |
Standard constructor.
Definition at line 22 of file SensitiveDetectorBase.cxx.
|
inlinevirtual |
|
protected |
Assign SD to a list of volumes.
This method supports wild card matching
Definition at line 69 of file SensitiveDetectorBase.cxx.
|
inlineoverridevirtual |
End of an athena event.
Store the output collection in SG at this point. If we are using a WriteHandle, then this can be empty!
Reimplemented in LArG4::CalibSDTool, FCS_Param::FCS_StepInfoSDTool, LArG4::SimpleSDTool, TBECBackOuterBarretteTool, TBECInnerModuleTool, TBECOuterModuleTool, LArG4H62004HECSDTool, LArG4H62004InactiveSDTool, LArG4H62004EMECSDTool, TileGeoG4CalibSDTool, TileGeoG4SDTool, LArG4H62004ActiveSDTool, LArG4H62004DeadSDTool, LArG4H62004FCALSDTool, MuonWallSDTool, MinBiasScintillatorSDTool, AFP_SensitiveDetectorTool, AFP_SiDSensitiveDetectorTool, AFP_TDSensitiveDetectorTool, ZDC_G4CalibSDTool, CaloCellContainerSDTool, ALFA_SensitiveDetectorTool, ZDC_FiberSDTool, and LArG4H6WarmTCSDTool.
Definition at line 67 of file SensitiveDetectorBase.h.
|
protected |
Retrieve the current SD.
In AthenaMT, this means the thread-local SD. Otherwise, it is simply the single SD.
Definition at line 123 of file SensitiveDetectorBase.cxx.
|
override |
Setup an SD in the current thread.
Separate from the AthAlgTool initialize() method because it needs to be called once per worker thread in AthenaMT. Don't confuse this with the G4 SD method Initialize which is called at the beginning of every G4 event.
Definition at line 30 of file SensitiveDetectorBase.cxx.
Match two strings with wildcard support.
Compares two strings character by character with optional * wildcard in the first argument
Definition at line 150 of file SensitiveDetectorBase.cxx.
|
private |
Set the current SD.
In hive, this gets assigned as the thread-local SD.
Definition at line 137 of file SensitiveDetectorBase.cxx.
|
protected |
Method stolen from G4VUserDetectorConstruction in G4 10.2.
Definition at line 177 of file SensitiveDetectorBase.cxx.
|
inlineoverridevirtual |
Beginning of an athena event.
This is where collection initialization should happen. If we are using a WriteHandle, then this could be empty.
Reimplemented in MuonWallSDTool, AFP_SensitiveDetectorTool, AFP_SiDSensitiveDetectorTool, AFP_TDSensitiveDetectorTool, CaloCellContainerSDTool, and ALFA_SensitiveDetectorTool.
Definition at line 62 of file SensitiveDetectorBase.h.
|
protected |
This SensitiveDetector has no volumes associated with it.
Definition at line 87 of file SensitiveDetectorBase.h.
|
protected |
Names of all output collections written out by this SD.
Definition at line 84 of file SensitiveDetectorBase.h.
|
private |
The sensitive detector to which this thing corresponds.
Definition at line 111 of file SensitiveDetectorBase.h.
|
protected |
All the volumes to which this SD is assigned.
Definition at line 82 of file SensitiveDetectorBase.h.