#include <SctSensorSDTool.h>
|
| void | setSD (G4VSensitiveDetector *) |
| | Set the current SD. More...
|
| |
|
| G4VSensitiveDetector * | m_SD {} |
| | The sensitive detector to which this thing corresponds. More...
|
| |
Definition at line 24 of file SctSensorSDTool.h.
◆ SctSensorSDTool()
| SctSensorSDTool::SctSensorSDTool |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
◆ assignSD()
| StatusCode SensitiveDetectorBase::assignSD |
( |
G4VSensitiveDetector * |
sd, |
|
|
const std::vector< std::string > & |
volumes |
|
) |
| const |
|
protectedinherited |
Assign SD to a list of volumes.
This method supports wild card matching
Definition at line 64 of file SensitiveDetectorBase.cxx.
73 auto sdMgr = G4SDManager::GetSDMpointer();
74 sdMgr->AddNewDetector(
sd);
76 if(!volumes.empty()) {
78 auto logicalVolumeStore = G4LogicalVolumeStore::GetInstance();
79 for(
const auto& volumeName : volumes) {
85 for(
auto* logVol : *logicalVolumeStore) {
87 ATH_MSG_VERBOSE(
"Check whether "<<logVol->GetName()<<
" belongs to the set of sensitive detectors "<<volumeName);
88 if(
matchStrings( volumeName.data(), logVol->GetName() ) ){
97 " not found in G4LogicalVolumeStore.");
100 ATH_MSG_VERBOSE(
"Found " << numFound <<
" copies of LV " << volumeName <<
101 "; SD " <<
sd->GetName() <<
" assigned.");
110 " and expected at least one. Size of the volume store "<<G4LogicalVolumeStore::GetInstance()->
size() );
111 return StatusCode::FAILURE;
115 return StatusCode::SUCCESS;
◆ Gather() [1/2]
| virtual StatusCode SensitiveDetectorBase::Gather |
( |
| ) |
|
|
inlineoverridevirtualinherited |
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::SimpleSDTool, LArG4::CalibSDTool, FCS_Param::FCS_StepInfoSDTool, TBECBackOuterBarretteTool, TBECInnerModuleTool, TBECOuterModuleTool, LArG4H62004HECSDTool, LArG4H62004InactiveSDTool, LArG4H62004EMECSDTool, LArG4H62004ActiveSDTool, LArG4H62004DeadSDTool, LArG4H62004FCALSDTool, MuonWallSDTool, AFP_SensitiveDetectorTool, AFP_SiDSensitiveDetectorTool, AFP_TDSensitiveDetectorTool, ZDC_G4CalibSDTool, CaloCellContainerSDTool, MinBiasScintillatorSDTool, ALFA_SensitiveDetectorTool, ZDC_FiberSDTool, and LArG4H6WarmTCSDTool.
Definition at line 78 of file SensitiveDetectorBase.h.
78 {
return StatusCode::SUCCESS; }
◆ Gather() [2/2]
◆ getSD()
| G4VSensitiveDetector * SensitiveDetectorBase::getSD |
( |
| ) |
|
|
protectedinherited |
Retrieve the current SD.
In AthenaMT, this means the thread-local SD. Otherwise, it is simply the single SD.
Definition at line 118 of file SensitiveDetectorBase.cxx.
120 #ifdef G4MULTITHREADED
122 const auto tid = std::this_thread::get_id();
124 auto sdPair = m_sdThreadMap.find(tid);
125 if(sdPair == m_sdThreadMap.end())
return nullptr;
126 return sdPair->second;
◆ initializeSD()
| StatusCode SensitiveDetectorBase::initializeSD |
( |
| ) |
|
|
overrideinherited |
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 25 of file SensitiveDetectorBase.cxx.
33 << (
m_noVolumes?
"true" :
"false") <<
", but LogicalVolumeNames = "
35 return StatusCode::FAILURE;
42 return StatusCode::FAILURE;
50 return StatusCode::FAILURE;
58 return StatusCode::SUCCESS;
◆ makeSD()
| G4VSensitiveDetector * SctSensorSDTool::makeSD |
( |
| ) |
const |
|
finaloverrideprotected |
Definition at line 44 of file SctSensorSDTool.cxx.
47 GeoModelIO::ReadGeoModel* sqlreader =
nullptr;
50 msg(MSG::ERROR) <<
"Could not locate GeoDbTagSvc" <<
endmsg;
◆ matchStrings()
| bool SensitiveDetectorBase::matchStrings |
( |
const char * |
first, |
|
|
const char * |
second |
|
) |
| |
|
staticprivateinherited |
Match two strings with wildcard support.
Compares two strings character by character with optional * wildcard in the first argument
Definition at line 145 of file SensitiveDetectorBase.cxx.
◆ setSD()
| void SensitiveDetectorBase::setSD |
( |
G4VSensitiveDetector * |
sd | ) |
|
|
privateinherited |
Set the current SD.
In hive, this gets assigned as the thread-local SD.
Definition at line 132 of file SensitiveDetectorBase.cxx.
134 #ifdef G4MULTITHREADED
135 const auto tid = std::this_thread::get_id();
136 ATH_MSG_DEBUG(
"Creating and registering SD " <<
sd <<
" in thread " << tid);
137 m_sdThreadMap.insert( std::make_pair(tid,
sd) );
◆ SetSensitiveDetector()
| void SensitiveDetectorBase::SetSensitiveDetector |
( |
G4LogicalVolume * |
logVol, |
|
|
G4VSensitiveDetector * |
aSD |
|
) |
| const |
|
protectedinherited |
Method stolen from G4VUserDetectorConstruction in G4 10.2.
Definition at line 172 of file SensitiveDetectorBase.cxx.
179 G4VSensitiveDetector* originalSD = logVol->GetSensitiveDetector();
180 if ( originalSD ==
nullptr )
182 logVol->SetSensitiveDetector(aSD);
186 G4MultiSensitiveDetector* msd =
dynamic_cast<G4MultiSensitiveDetector*
>(originalSD);
187 if ( msd !=
nullptr )
194 std::stringstream
ss;
195 ss << static_cast<const void*>(logVol);
196 const G4String msdname =
"/MultiSD_" + logVol->GetName() +
ss.str();
198 msd =
new G4MultiSensitiveDetector(msdname);
200 G4SDManager::GetSDMpointer()->AddNewDetector(msd);
201 msd->AddSD(originalSD);
203 logVol->SetSensitiveDetector(msd);
◆ SetupEvent() [1/2]
| virtual StatusCode SensitiveDetectorBase::SetupEvent |
( |
| ) |
|
|
inlineoverridevirtualinherited |
◆ SetupEvent() [2/2]
◆ m_geoDbTagSvc
◆ m_isGmxSensor
| bool SctSensorSDTool::m_isGmxSensor |
|
protected |
◆ m_noVolumes
| Gaudi::Property<bool> SensitiveDetectorBase::m_noVolumes {this, "NoVolumes", false} |
|
protectedinherited |
◆ m_outputCollectionNames
| Gaudi::Property<std::vector<std::string> > SensitiveDetectorBase::m_outputCollectionNames {this, "OutputCollectionNames", {}} |
|
protectedinherited |
◆ m_SD
| G4VSensitiveDetector* SensitiveDetectorBase::m_SD {} |
|
privateinherited |
◆ m_volumeNames
| Gaudi::Property<std::vector<std::string> > SensitiveDetectorBase::m_volumeNames {this, "LogicalVolumeNames", {}} |
|
protectedinherited |
The documentation for this class was generated from the following files:
std::pair< StorageIterator, bool > Emplace(std::string const &hitCollectionName, CollectionArgs &&... args)
Insert a container in the map with in-place construction.
void Record(std::string const &sgKey, std::string const &hitCollectionName, EventContext const &ctx)
Record the hit collection hitCollectionName to the StoreGate sgKey.