ATLAS Offline Software
Loading...
Searching...
No Matches
G4AtlasAlg Class Reference

Primary Athena algorithm for ATLAS simulation. More...

#include <G4AtlasAlg.h>

Inheritance diagram for G4AtlasAlg:

Public Member Functions

 G4AtlasAlg (const std::string &name, ISvcLocator *pSvcLocator)
 Standard algorithm constructor.
virtual ~G4AtlasAlg ()
 Virtual destructor.
bool isClonable () const override
 this Alg is Clonable (for AthenaMT)
StatusCode initialize ATLAS_NOT_THREAD_SAFE () override
 Initialize the algorithm.
StatusCode finalize () override
 Finalize the algorithm and invoke G4 run termination.
StatusCode execute (const EventContext &ctx) override
 Simulate one Athena event.
void initializeG4 ()
 Poorly named possibly unused method which sets some verbosities.
void initializeOnce ()
 G4 initialization called only by the first alg instance.
void finalizeOnce ()
 G4 finalization called only by the first alg instance.
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
bool filterPassed (const EventContext &ctx) const
void setFilterPassed (bool state, const EventContext &ctx) const
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const
const EventContext & getContext () const
 Deprecated methods (use the ones with EventContext).
bool filterPassed () const
void setFilterPassed (bool state) const

Protected Member Functions

virtual bool isReEntrant () const override final
 Legacy algorithms are not thread-safe.
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

void commandLog (int returnCode, const std::string &commandString) const
 This command prints a message about a G4Command depending on its returnCode.
void releaseGeoModel ()
 Releases the GeoModel geometry from memory once it has been used to build the G4 geometry and is no-longer required.
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

PublicToolHandleArray< G4UA::IUserActionToolm_actionTools {this, "UserActionTools", {}, "User action tools to be added to the G4 Action service."}
Gaudi::Property< std::string > m_simplifiedGeoPath {this, "SimplifiedGeoPath", "", "Path to the simplified geometry file used to transport particles"}
DataObjIDColl m_extendedExtraObjects
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default).
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default).
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared
Configurable Properties
Gaudi::Property< bool > m_killAbortedEvents {this, "KillAbortedEvents", false, ""}
Gaudi::Property< bool > m_flagAbortedEvents {this, "FlagAbortedEvents", false, ""}
SG::ReadHandleKey< McEventCollectionm_inputTruthCollectionKey {this, "InputTruthCollection", "BeamTruthEvent", "Input hard scatter collection"}
 input hard scatter collection
SG::WriteHandleKey< McEventCollectionm_outputTruthCollectionKey {this, "OutputTruthCollection", "TruthEvent", "Output hard scatter truth collection"}
 output hard scatter truth collection
SG::ReadHandleKey< xAOD::EventInfom_eventInfoKey {this, "EventInfo", "EventInfo", "EventInfo key"}
ServiceHandle< ISF::ITruthSvcm_truthRecordSvc {this, "TruthRecordService", "ISF_TruthRecordSvc", ""}
 Central Truth Service.
ServiceHandle< ISF::IGeoIDSvcm_geoIDSvc {this, "GeoIDSvc", "ISF_GeoIDSvc", ""}
 Geo ID Service.
std::map< std::string, std::string > m_verbosities
 Verbosity settings for Geant4.
Configurable Properties (common with TransportTool)
Gaudi::Property< std::string > m_libList {this, "Dll", "", ""}
Gaudi::Property< std::string > m_physList {this, "Physics", "", ""}
Gaudi::Property< std::string > m_fieldMap {this, "FieldMap", "", ""}
Gaudi::Property< std::string > m_rndmGen {this, "RandomGenerator", "athena", ""}
Gaudi::Property< bool > m_releaseGeoModel {this, "ReleaseGeoModel", true, ""}
Gaudi::Property< bool > m_recordFlux {this, "RecordFlux", false, ""}
Gaudi::Property< bool > m_quietMode {this, "QuietMode", false, ""}
Gaudi::Property< std::vector< std::string > > m_g4commands {this, "G4Commands", {}, "Commands to send to the G4UI"}
 Commands to send to the G4 UI.
Gaudi::Property< bool > m_useMT {this,"MultiThreading", false, "Multi-threading specific settings"}
 Activate multi-threading configuration.
Gaudi::Property< bool > m_activateParallelGeometries {this, "ActivateParallelWorlds", false, "Toggle on/off the G4 parallel geometry system"}
BooleanProperty m_useShadowEvent {this, "UseShadowEvent", false, "New approach to selecting particles for simulation" }
ServiceHandle< IAthRNGSvcm_rndmGenSvc {this, "AtRndmGenSvc", "AthRNGSvc", ""}
 Random number service.
Gaudi::Property< std::string > m_randomStreamName {this, "RandomStreamName", "Geant4", ""}
 Random Stream Name.
ServiceHandle< IUserLimitsSvcm_userLimitsSvc {this, "UserLimitsSvc", "UserLimitsSvc", ""}
ServiceHandle< G4UA::IUserActionSvcm_userActionSvc {this, "UserActionSvc", "G4UA::UserActionSvc", ""}
 User Action Service.
PublicToolHandle< IDetectorConstructionToolm_detConstruction {this, "DetectorConstruction", "", "Tool handle of the DetectorConstruction"}
PublicToolHandleArray< IPhysicsInitializationToolm_physicsInitializationTools {this, "PhysicsInitializationTools", {}, "Physics initialization happening after Geant4 initialization"}
ServiceHandle< Simulation::IZeroLifetimePatcherm_qspatcher {this, "QuasiStablePatcher", "", "Quasi-Stable Particle Simulation Patcher"}
 Quasi-Stable Particle Simulation Patcher.
ToolHandle< ISF::IGenEventFilterm_truthPreselectionTool {this, "TruthPreselectionTool", "", "Tool for filtering out quasi-stable particle daughters"}
ServiceHandle< ISF::IInputConverterm_inputConverter {this, "InputConverter", "ISF_InputConverter", ""}
 Service to convert ISF_Particles into a G4Event.
ServiceHandle< IPhysicsListSvcm_physListSvc {this, "PhysicsListSvc", "PhysicsListSvc", ""}
 Physics List Tool.
PublicToolHandle< ISensitiveDetectorMasterToolm_senDetTool {this, "SenDetMasterTool", "SensitiveDetectorMasterTool", ""}
 Sensitive Detector Master Tool.
PublicToolHandle< IFastSimulationMasterToolm_fastSimTool {this, "FastSimMasterTool", "FastSimulationMasterTool", ""}
 Fast Simulation Master Tool.

Detailed Description

Primary Athena algorithm for ATLAS simulation.

During initialization, this class sets up several things, including:

  • the ATLAS (master) run manager
  • physics list assignment to G4
  • detector construction (currently FADS::FadsDetectorConstruction)

During the event loop, it handles processing of the event by invoking the (worker) run manager.

Definition at line 53 of file G4AtlasAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ G4AtlasAlg()

G4AtlasAlg::G4AtlasAlg ( const std::string & name,
ISvcLocator * pSvcLocator )

Standard algorithm constructor.

Definition at line 61 of file G4AtlasAlg.cxx.

62 : AthAlgorithm(name, pSvcLocator)
63{
64 // Verbosities
65 declareProperty("Verbosities", m_verbosities);
66}
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
std::map< std::string, std::string > m_verbosities
Verbosity settings for Geant4.
Definition G4AtlasAlg.h:115

◆ ~G4AtlasAlg()

virtual G4AtlasAlg::~G4AtlasAlg ( )
inlinevirtual

Virtual destructor.

Definition at line 62 of file G4AtlasAlg.h.

62{ };

Member Function Documentation

◆ ATLAS_NOT_THREAD_SAFE()

StatusCode initialize G4AtlasAlg::ATLAS_NOT_THREAD_SAFE ( )
override

Initialize the algorithm.

Here we setup several things for simulation, including:

  • force intialization of the UserActionSvc
  • apply custom G4 UI commands (like custom physics list)
  • configure the particle generator and random generator svc

◆ commandLog()

void G4AtlasAlg::commandLog ( int returnCode,
const std::string & commandString ) const
private

This command prints a message about a G4Command depending on its returnCode.

Definition at line 486 of file G4AtlasAlg.cxx.

487{
488 switch(returnCode) {
489 case 0: { ATH_MSG_DEBUG("G4 Command: " << commandString << " - Command Succeeded"); } break;
490 case 100: { ATH_MSG_ERROR("G4 Command: " << commandString << " - Command Not Found!"); } break;
491 case 200: {
492 auto* stateManager = G4StateManager::GetStateManager();
493 ATH_MSG_DEBUG("G4 Command: " << commandString << " - Illegal Application State (" <<
494 stateManager->GetStateString(stateManager->GetCurrentState()) << ")!");
495 } break;
496 case 300: { ATH_MSG_ERROR("G4 Command: " << commandString << " - Parameter Out of Range!"); } break;
497 case 400: { ATH_MSG_ERROR("G4 Command: " << commandString << " - Parameter Unreadable!"); } break;
498 case 500: { ATH_MSG_ERROR("G4 Command: " << commandString << " - Parameter Out of Candidates!"); } break;
499 case 600: { ATH_MSG_ERROR("G4 Command: " << commandString << " - Alias Not Found!"); } break;
500 default: { ATH_MSG_ERROR("G4 Command: " << commandString << " - Unknown Status!"); } break;
501 }
502
503}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_DEBUG(x)

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode G4AtlasAlg::execute ( const EventContext & ctx)
overridevirtual

Simulate one Athena event.

Implements AthAlgorithm.

Definition at line 318 of file G4AtlasAlg.cxx.

319{
320 static std::atomic<unsigned int> n_Event=0;
321 ATH_MSG_DEBUG("++++++++++++ G4AtlasAlg execute ++++++++++++");
322
323 n_Event += 1;
324
325 if (n_Event<=10 || (n_Event%100) == 0) {
326 ATH_MSG_ALWAYS("G4AtlasAlg: Event num. " << n_Event << " start processing");
327 }
328
329 // Release GeoModel Geometry if necessary
330 if (m_releaseGeoModel) {
331 try {
333 }
334 catch(const std::exception& e) {
335 ATH_MSG_ERROR("Failure in G4AtlasAlg::releaseGeoModel: " << e.what());
336 return StatusCode::FAILURE;
337 }
338 }
339
340 // Set the RNG to use for this event. We need to reset it for MT jobs
341 // because of the mismatch between Gaudi slot-local and G4 thread-local RNG.
342 ATHRNG::RNGWrapper* rngWrapper = m_rndmGenSvc->getEngine(this, m_randomStreamName);
343 rngWrapper->setSeed( m_randomStreamName, ctx);
344 G4Random::setTheEngine(rngWrapper->getEngine(ctx));
345
346 ATH_MSG_DEBUG("Calling SimulateG4Event");
347
348 auto eventInfo = std::make_unique<AtlasG4EventUserInfo>(ctx);
349 // get a shared pointer to the hit collection map because we will need it after the G4Event is destroyed
350 std::shared_ptr<HitCollectionMap> hitCollections = eventInfo->GetHitCollectionMap();
351
352 ATH_CHECK(m_senDetTool->BeginOfAthenaEvent(*hitCollections));
353 ATH_CHECK(m_userActionSvc->BeginOfAthenaEvent(*hitCollections));
354 ATH_CHECK(m_fastSimTool->BeginOfAthenaEvent(*hitCollections));
355
356 SG::ReadHandle<McEventCollection> inputTruthCollection(m_inputTruthCollectionKey, ctx);
357 if (!inputTruthCollection.isValid()) {
358 ATH_MSG_FATAL("Unable to read input GenEvent collection " << inputTruthCollection.name() << " in store " << inputTruthCollection.store());
359 return StatusCode::FAILURE;
360 }
361 ATH_MSG_DEBUG("Found input GenEvent collection " << inputTruthCollection.name() << " in store " << inputTruthCollection.store());
362 // create the output Truth collection
363 SG::WriteHandle<McEventCollection> outputTruthCollection(m_outputTruthCollectionKey, ctx);
364 std::unique_ptr<McEventCollection> shadowTruth{};
365 if (m_useShadowEvent) {
366 outputTruthCollection = std::make_unique<McEventCollection>();
367 // copy input Evgen collection to shadow Truth collection
368 shadowTruth = std::make_unique<McEventCollection>(*inputTruthCollection);
369 for (HepMC::GenEvent* currentGenEvent : *shadowTruth ) {
370 // Apply QS patch if required
371 if ( not m_qspatcher.empty() ) {
372 ATH_CHECK(m_qspatcher->applyWorkaround(*currentGenEvent));
373 }
374 // Copy GenEvent and remove daughters of quasi-stable particles to be simulated
375 std::unique_ptr<HepMC::GenEvent> outputEvent = m_truthPreselectionTool->filterGenEvent(*currentGenEvent);
376 outputTruthCollection->push_back(outputEvent.release());
377 }
378 }
379 else {
380 // copy input Evgen collection to output Truth collection
381 outputTruthCollection = std::make_unique<McEventCollection>(*inputTruthCollection);
382 // empty shadow Truth collection
383 shadowTruth = std::make_unique<McEventCollection>();
384 // Apply QS patch if required
385 if ( not m_qspatcher.empty() ) {
386 for (HepMC::GenEvent* currentGenEvent : *outputTruthCollection ) {
387 ATH_CHECK(m_qspatcher->applyWorkaround(*currentGenEvent));
388 }
389 }
390 }
391
392 ATH_MSG_DEBUG("Recorded output GenEvent collection " << outputTruthCollection.name() << " in store " << outputTruthCollection.store());
393
394 const int largestGeneratedParticleBC = (outputTruthCollection->empty()) ? HepMC::UNDEFINED_ID
395 : HepMC::maxGeneratedParticleBarcode(outputTruthCollection->at(0)); // TODO make this more robust
396 const int largestGeneratedVertexBC = (outputTruthCollection->empty()) ? HepMC::UNDEFINED_ID
397 : HepMC::maxGeneratedVertexBarcode(outputTruthCollection->at(0)); // TODO make this more robust
398 // tell TruthService we're starting a new event
399 ATH_CHECK( m_truthRecordSvc->initializeTruthCollection(largestGeneratedParticleBC, largestGeneratedVertexBC) );
400
401 bool abort = false;
402
403 {
404
405 auto inputEvent = std::make_unique<G4Event>(ctx.eventID().event_number());
406 inputEvent->SetUserInformation(eventInfo.release());
407
408 ATH_CHECK(m_inputConverter->convertHepMCToG4Event(
409 *outputTruthCollection, *inputEvent, *shadowTruth));
410 // Worker run manager
411 // Custom class has custom method call: ProcessEvent.
412 // So, grab custom singleton class directly, rather than base.
413 // Maybe that should be changed! Then we can use a base pointer.
414 if (m_useMT) {
415#ifdef G4MULTITHREADED
416 auto* workerRM = G4AtlasWorkerRunManager::GetG4AtlasWorkerRunManager();
417 abort = workerRM->ProcessEvent(inputEvent.release());
418#else
419 ATH_MSG_ERROR("Trying to use multi-threading in non-MT build!");
420 return StatusCode::FAILURE;
421#endif
422 } else {
423 auto* workerRM ATLAS_THREAD_SAFE = // single-threaded case
424 G4AtlasRunManager::GetG4AtlasRunManager();
425 abort = workerRM->ProcessEvent(inputEvent.release());
426 }
427
428 if (abort) {
429 ATH_MSG_WARNING("Event was aborted !! ");
430 ATH_MSG_WARNING("Simulation will now go on to the next event ");
432 ATH_MSG_WARNING("setFilterPassed is now False");
433 setFilterPassed(false);
434 }
436 SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfoKey, ctx);
437 if (!eventInfo.isValid()) {
439 "Failed to retrieve xAOD::EventInfo while trying to update the "
440 "error state!");
441 return StatusCode::FAILURE;
442 } else {
443 eventInfo->updateErrorState(xAOD::EventInfo::Core,
445 ATH_MSG_WARNING("Set error state in xAOD::EventInfo!");
446 }
447 }
448 }
449
450 ATH_CHECK(m_senDetTool->EndOfAthenaEvent(*hitCollections));
451 ATH_CHECK(m_userActionSvc->EndOfAthenaEvent(*hitCollections));
452 ATH_CHECK(m_fastSimTool->EndOfAthenaEvent(*hitCollections));
453
454 ATH_CHECK(m_truthRecordSvc->releaseEvent());
455 }
456 // Remove QS patch if required
457 if(!m_qspatcher.empty()) {
458 for (HepMC::GenEvent* currentGenEvent : *outputTruthCollection ) {
459 ATH_CHECK(m_qspatcher->removeWorkaround(*currentGenEvent));
460 }
461 }
462
463 return StatusCode::SUCCESS;
464}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_FATAL(x)
#define ATH_MSG_ALWAYS(x)
#define ATH_MSG_WARNING(x)
static std::once_flag releaseGeoModelOnceFlag
#define ATLAS_THREAD_SAFE
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
Definition RNGWrapper.h:154
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
Definition RNGWrapper.h:108
void setFilterPassed(bool state) const
ServiceHandle< ISF::IInputConverter > m_inputConverter
Service to convert ISF_Particles into a G4Event.
Definition G4AtlasAlg.h:151
ServiceHandle< ISF::ITruthSvc > m_truthRecordSvc
Central Truth Service.
Definition G4AtlasAlg.h:110
ServiceHandle< Simulation::IZeroLifetimePatcher > m_qspatcher
Quasi-Stable Particle Simulation Patcher.
Definition G4AtlasAlg.h:146
PublicToolHandle< ISensitiveDetectorMasterTool > m_senDetTool
Sensitive Detector Master Tool.
Definition G4AtlasAlg.h:155
Gaudi::Property< bool > m_useMT
Activate multi-threading configuration.
Definition G4AtlasAlg.h:130
ServiceHandle< IAthRNGSvc > m_rndmGenSvc
Random number service.
Definition G4AtlasAlg.h:134
BooleanProperty m_useShadowEvent
Definition G4AtlasAlg.h:132
ToolHandle< ISF::IGenEventFilter > m_truthPreselectionTool
Definition G4AtlasAlg.h:148
Gaudi::Property< std::string > m_randomStreamName
Random Stream Name.
Definition G4AtlasAlg.h:136
PublicToolHandle< IFastSimulationMasterTool > m_fastSimTool
Fast Simulation Master Tool.
Definition G4AtlasAlg.h:157
Gaudi::Property< bool > m_killAbortedEvents
Definition G4AtlasAlg.h:103
SG::ReadHandleKey< McEventCollection > m_inputTruthCollectionKey
input hard scatter collection
Definition G4AtlasAlg.h:105
ServiceHandle< G4UA::IUserActionSvc > m_userActionSvc
User Action Service.
Definition G4AtlasAlg.h:140
SG::WriteHandleKey< McEventCollection > m_outputTruthCollectionKey
output hard scatter truth collection
Definition G4AtlasAlg.h:106
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
Definition G4AtlasAlg.h:107
Gaudi::Property< bool > m_releaseGeoModel
Definition G4AtlasAlg.h:124
Gaudi::Property< bool > m_flagAbortedEvents
Definition G4AtlasAlg.h:104
void releaseGeoModel()
Releases the GeoModel geometry from memory once it has been used to build the G4 geometry and is no-l...
@ Core
Core flags describing the event.
@ Error
The sub-detector issued an error.
int maxGeneratedVertexBarcode(const HepMC::GenEvent *genEvent)
Get the maximal absolute value of barcode of vertex present in the event. Returns a negative number.
constexpr int UNDEFINED_ID
int maxGeneratedParticleBarcode(const HepMC::GenEvent *genEvent)
Get the maximal value of barcode of particle present in the event.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 50 of file AthAlgorithm.cxx.

51{
52 // If we didn't find any symlinks to add, just return the collection
53 // from the base class. Otherwise, return the extended collection.
54 if (!m_extendedExtraObjects.empty()) {
56 }
57 return Algorithm::extraOutputDeps();
58}
DataObjIDColl m_extendedExtraObjects

◆ filterPassed() [1/2]

bool AthAlgorithm::filterPassed ( ) const
inherited

Definition at line 94 of file AthAlgorithm.cxx.

94 {
95 return filterPassed( Gaudi::Hive::currentContext() );
96}
bool filterPassed() const

◆ filterPassed() [2/2]

bool AthAlgorithm::filterPassed ( const EventContext & ctx) const
inherited

Definition at line 98 of file AthAlgorithm.cxx.

98 {
99 return execState( ctx ).filterPassed();
100}

◆ finalize()

StatusCode G4AtlasAlg::finalize ( )
override

Finalize the algorithm and invoke G4 run termination.

Definition at line 291 of file G4AtlasAlg.cxx.

292{
293 ATH_MSG_DEBUG(std::endl<<std::endl<<std::endl);
294 ATH_MSG_DEBUG("++++++++++++ G4AtlasAlg finalized ++++++++++++" <<std::endl<<std::endl);
295
296 // One time finalization
297 try {
298 std::call_once(finalizeOnceFlag, &G4AtlasAlg::finalizeOnce, this);
299 }
300 catch(const std::exception& e) {
301 ATH_MSG_ERROR("Failure in G4AtlasAlg::finalizeOnce: " << e.what());
302 return StatusCode::FAILURE;
303 }
304
305 return StatusCode::SUCCESS;
306}
static std::once_flag finalizeOnceFlag
void finalizeOnce()
G4 finalization called only by the first alg instance.

◆ finalizeOnce()

void G4AtlasAlg::finalizeOnce ( )

G4 finalization called only by the first alg instance.

This is done (for now) because we get multiple alg instances in hive.

Definition at line 309 of file G4AtlasAlg.cxx.

310{
311 ATH_MSG_DEBUG("\t terminating the current G4 run");
312 auto runMgr = G4RunManager::GetRunManager();
313 runMgr->RunTermination();
314}

◆ getContext()

const EventContext & AthAlgorithm::getContext ( ) const
inherited

Deprecated methods (use the ones with EventContext).

Definition at line 90 of file AthAlgorithm.cxx.

90 {
91 return Gaudi::Hive::currentContext();
92}

◆ initializeG4()

void G4AtlasAlg::initializeG4 ( )

Poorly named possibly unused method which sets some verbosities.

Definition at line 258 of file G4AtlasAlg.cxx.

259{
260 if (m_verbosities.size()>0) {
261 G4TransportationManager *tm = G4TransportationManager::GetTransportationManager();
262 G4RunManagerKernel *rmk = G4RunManagerKernel::GetRunManagerKernel();
263 G4EventManager *em = G4EventManager::GetEventManager();
264
265 auto itr = m_verbosities.end();
266 if ((itr = m_verbosities.find("Navigator")) != m_verbosities.end()) {
267 tm->GetNavigatorForTracking()->SetVerboseLevel( atof(itr->second.data()) );
268 }
269 if ((itr = m_verbosities.find("Propagator")) != m_verbosities.end()) {
270 tm->GetPropagatorInField()->SetVerboseLevel( atof(itr->second.data()) );
271 }
272 if ((itr = m_verbosities.find("Tracking")) != m_verbosities.end()) {
273 rmk->GetTrackingManager()->SetVerboseLevel( atof(itr->second.data()) );
274 }
275 if ((itr = m_verbosities.find("Stepping")) != m_verbosities.end()) {
276 rmk->GetTrackingManager()->GetSteppingManager()->
277 SetVerboseLevel( atof(itr->second.data()) );
278 }
279 if ((itr = m_verbosities.find("Stacking")) != m_verbosities.end()) {
280 rmk->GetStackManager()->SetVerboseLevel( atof(itr->second.data()) );
281 }
282 if ((itr = m_verbosities.find("Event")) != m_verbosities.end()) {
283 em->SetVerboseLevel( atof(itr->second.data()) );
284 }
285 } // End of the setting of verbosities
286
287}
double atof(std::string_view str)
Converts a string into a double / float.

◆ initializeOnce()

void G4AtlasAlg::initializeOnce ( )

G4 initialization called only by the first alg instance.

This is done (for now) because we get multiple alg instances in hive.

Definition at line 136 of file G4AtlasAlg.cxx.

137{
138 // Assign physics list
139 if(m_physListSvc.retrieve().isFailure()) {
140 throw std::runtime_error("Could not initialize ATLAS PhysicsListSvc!");
141 }
142 for (const auto& action_tool : m_actionTools) {
143 if (m_userActionSvc->addActionTool(action_tool).isFailure()) {
144 throw std::runtime_error("Failed to add action tool "+action_tool.name());
145 }
146 }
147
148 ATH_MSG_INFO( "retrieving the Detector Construction tool" );
149 if(m_detConstruction.retrieve().isFailure()) {
150 throw std::runtime_error("Could not initialize ATLAS DetectorConstruction!");
151 }
152
153 // Create the (master) run manager
154 if(m_useMT) {
155#ifdef G4MULTITHREADED
156 auto* runMgr ATLAS_THREAD_SAFE = // protected by std::call_once above
157 G4AtlasMTRunManager::GetG4AtlasMTRunManager();
158 m_physListSvc->SetPhysicsList();
159 runMgr->SetDetConstructionTool( m_detConstruction.get() );
160 runMgr->SetPhysListSvc( m_physListSvc.typeAndName() );
161 runMgr->SetQuietMode( m_quietMode );
162 // Worker Thread initialization used to create worker run manager on demand.
163 std::unique_ptr<G4AtlasUserWorkerThreadInitialization> workerInit =
164 std::make_unique<G4AtlasUserWorkerThreadInitialization>();
165 workerInit->SetQuietMode( m_quietMode );
166 runMgr->SetUserInitialization( workerInit.release() );
167 std::unique_ptr<G4AtlasActionInitialization> actionInitialization =
168 std::make_unique<G4AtlasActionInitialization>(m_userActionSvc.get());
169 runMgr->SetUserInitialization(actionInitialization.release());
170#else
171 throw std::runtime_error("Trying to use multi-threading in non-MT build!");
172#endif
173 }
174 // Single-threaded run manager
175 else {
176 auto* runMgr ATLAS_THREAD_SAFE = // safe because single-threaded
177 G4AtlasRunManager::GetG4AtlasRunManager();
178 m_physListSvc->SetPhysicsList();
179 runMgr->SetRecordFlux( m_recordFlux, std::make_unique<G4AtlasFluxRecorder>() );
180 runMgr->SetLogLevel( int(msg().level()) ); // Synch log levels
181 runMgr->SetDetConstructionTool( m_detConstruction.get() );
182 runMgr->SetPhysListSvc(m_physListSvc.typeAndName() );
183 runMgr->SetQuietMode( m_quietMode );
184 std::unique_ptr<G4AtlasActionInitialization> actionInitialization =
185 std::make_unique<G4AtlasActionInitialization>(m_userActionSvc.get());
186 runMgr->SetUserInitialization(actionInitialization.release());
187 }
188
189 // G4 user interface commands
190 G4UImanager *ui = G4UImanager::GetUIpointer();
191
192 // Load custom libraries
193 if (!m_libList.empty()) {
194 ATH_MSG_INFO("G4AtlasAlg specific libraries requested ");
195 std::string temp="/load "+m_libList;
196 ui->ApplyCommand(temp);
197 }
198 // Load custom physics
199 if (!m_physList.empty()) {
200 ATH_MSG_INFO("requesting a specific physics list "<< m_physList);
201 std::string temp="/Physics/GetPhysicsList "+m_physList;
202 ui->ApplyCommand(temp);
203 }
204 // Load custom magnetic field
205 if (!m_fieldMap.empty()) {
206 ATH_MSG_INFO("requesting a specific field map "<< m_fieldMap);
207 ATH_MSG_INFO("the field is initialized straight away");
208 std::string temp="/MagneticField/Select "+m_fieldMap;
209 ui->ApplyCommand(temp);
210 ui->ApplyCommand("/MagneticField/Initialize");
211 }
212
213 // Send UI commands
214 ATH_MSG_DEBUG("G4 Command: Trying at the end of initializeOnce()");
215 for (const auto& g4command : m_g4commands) {
216 int returnCode = ui->ApplyCommand( g4command );
217 commandLog(returnCode, g4command);
218 }
219
220 // Code from G4AtlasSvc
221 auto* rm = G4RunManager::GetRunManager();
222 if(!rm) {
223 throw std::runtime_error("Run manager retrieval has failed");
224 }
225 rm->Initialize(); // Initialization differs slightly in multi-threading.
226 // TODO: add more details about why this is here.
227 if(!m_useMT && rm->ConfirmBeamOnCondition()) {
228 rm->RunInitialization();
229 }
230
231 ATH_MSG_INFO("Initializing " << m_physicsInitializationTools.size() << " physics initialization tools");
232 for(auto& physicsTool : m_physicsInitializationTools) {
233 if (physicsTool->initializePhysics().isFailure()) {
234 throw std::runtime_error("Failed to initialize physics with tool " + physicsTool.name());
235 }
236 }
237
238 if(m_userLimitsSvc.retrieve().isFailure()) {
239 throw std::runtime_error("Could not initialize ATLAS UserLimitsSvc!");
240 }
241
243 G4VModularPhysicsList* thePhysicsList=dynamic_cast<G4VModularPhysicsList*>(m_physListSvc->GetPhysicsList());
244 if (!thePhysicsList) {
245 throw std::runtime_error("Failed dynamic_cast!! this is not a G4VModularPhysicsList!");
246 }
247#if G4VERSION_NUMBER >= 1010
248 std::vector<std::string>& parallelWorldNames=m_detConstruction->GetParallelWorldNames();
249 for (auto& it: parallelWorldNames) {
250 thePhysicsList->RegisterPhysics(new G4ParallelWorldPhysics(it,true));
251 }
252#endif
253 }
254
255 return;
256}
#define ATH_MSG_INFO(x)
Gaudi::Property< std::string > m_fieldMap
Definition G4AtlasAlg.h:122
void commandLog(int returnCode, const std::string &commandString) const
This command prints a message about a G4Command depending on its returnCode.
Gaudi::Property< std::string > m_physList
Definition G4AtlasAlg.h:121
Gaudi::Property< bool > m_quietMode
Definition G4AtlasAlg.h:126
PublicToolHandleArray< IPhysicsInitializationTool > m_physicsInitializationTools
Definition G4AtlasAlg.h:143
Gaudi::Property< std::vector< std::string > > m_g4commands
Commands to send to the G4 UI.
Definition G4AtlasAlg.h:128
PublicToolHandleArray< G4UA::IUserActionTool > m_actionTools
Definition G4AtlasAlg.h:159
PublicToolHandle< IDetectorConstructionTool > m_detConstruction
Definition G4AtlasAlg.h:142
Gaudi::Property< bool > m_activateParallelGeometries
Definition G4AtlasAlg.h:131
ServiceHandle< IUserLimitsSvc > m_userLimitsSvc
Definition G4AtlasAlg.h:138
Gaudi::Property< std::string > m_libList
Definition G4AtlasAlg.h:120
Gaudi::Property< bool > m_recordFlux
Definition G4AtlasAlg.h:125
ServiceHandle< IPhysicsListSvc > m_physListSvc
Physics List Tool.
Definition G4AtlasAlg.h:153

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isClonable()

bool G4AtlasAlg::isClonable ( ) const
inlineoverride

this Alg is Clonable (for AthenaMT)

Definition at line 65 of file G4AtlasAlg.h.

65{ return true; }

◆ isReEntrant()

virtual bool AthAlgorithm::isReEntrant ( ) const
inlinefinaloverrideprotectedvirtualinherited

Legacy algorithms are not thread-safe.

Definition at line 111 of file AthAlgorithm.h.

111{ return false; }

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ releaseGeoModel()

void G4AtlasAlg::releaseGeoModel ( )
private

Releases the GeoModel geometry from memory once it has been used to build the G4 geometry and is no-longer required.

Definition at line 468 of file G4AtlasAlg.cxx.

469{
470 SmartIF<IGeoModelSvc> geoModel{Gaudi::svcLocator()->service("GeoModelSvc")};
471 if (!geoModel) {
472 ATH_MSG_WARNING( " ----> Unable to retrieve GeoModelSvc" );
473 }
474 else {
475 if (geoModel->clear().isFailure()) {
476 ATH_MSG_WARNING( " ----> GeoModelSvc::clear() failed" );
477 }
478 else {
479 ATH_MSG_INFO( " ----> GeoModelSvc::clear() succeeded " );
480 }
481 }
482 m_releaseGeoModel=false; // Don't do that again...
483 return;
484}

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed() [1/2]

void AthAlgorithm::setFilterPassed ( bool state) const
inherited

Definition at line 102 of file AthAlgorithm.cxx.

102 {
103 setFilterPassed( state, Gaudi::Hive::currentContext() );
104}

◆ setFilterPassed() [2/2]

void AthAlgorithm::setFilterPassed ( bool state,
const EventContext & ctx ) const
inherited

Definition at line 106 of file AthAlgorithm.cxx.

106 {
107 execState( ctx ).setFilterPassed(state);
108}

◆ sysInitialize()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc.

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, and PyAthena::Alg.

Definition at line 66 of file AthAlgorithm.cxx.

66 {
68
69 if (sc.isFailure()) {
70 return sc;
71 }
72 ServiceHandle<ICondSvc> cs("CondSvc",name());
73 for (auto h : outputHandles()) {
74 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75 // do this inside the loop so we don't create the CondSvc until needed
76 if ( cs.retrieve().isFailure() ) {
77 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78 return StatusCode::SUCCESS;
79 }
80 if (cs->regHandle(this,*h).isFailure()) {
81 sc = StatusCode::FAILURE;
82 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83 << " with CondSvc");
84 }
85 }
86 }
87 return sc;
88}
static Double_t sc
virtual StatusCode sysInitialize() override
Override sysInitialize.
AthCommonDataStore(const std::string &name, T... args)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

Member Data Documentation

◆ m_actionTools

PublicToolHandleArray<G4UA::IUserActionTool> G4AtlasAlg::m_actionTools {this, "UserActionTools", {}, "User action tools to be added to the G4 Action service."}
private

Definition at line 159 of file G4AtlasAlg.h.

159{this, "UserActionTools", {}, "User action tools to be added to the G4 Action service."};

◆ m_activateParallelGeometries

Gaudi::Property<bool> G4AtlasAlg::m_activateParallelGeometries {this, "ActivateParallelWorlds", false, "Toggle on/off the G4 parallel geometry system"}
private

Definition at line 131 of file G4AtlasAlg.h.

131{this, "ActivateParallelWorlds", false, "Toggle on/off the G4 parallel geometry system"};

◆ m_detConstruction

PublicToolHandle<IDetectorConstructionTool> G4AtlasAlg::m_detConstruction {this, "DetectorConstruction", "", "Tool handle of the DetectorConstruction"}
private

Definition at line 142 of file G4AtlasAlg.h.

142{this, "DetectorConstruction", "", "Tool handle of the DetectorConstruction"};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_eventInfoKey

SG::ReadHandleKey<xAOD::EventInfo> G4AtlasAlg::m_eventInfoKey {this, "EventInfo", "EventInfo", "EventInfo key"}
private

Definition at line 107 of file G4AtlasAlg.h.

107{this, "EventInfo", "EventInfo", "EventInfo key"};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 114 of file AthAlgorithm.h.

◆ m_fastSimTool

PublicToolHandle<IFastSimulationMasterTool> G4AtlasAlg::m_fastSimTool {this, "FastSimMasterTool", "FastSimulationMasterTool", ""}
private

Fast Simulation Master Tool.

Definition at line 157 of file G4AtlasAlg.h.

157{this, "FastSimMasterTool", "FastSimulationMasterTool", ""};

◆ m_fieldMap

Gaudi::Property<std::string> G4AtlasAlg::m_fieldMap {this, "FieldMap", "", ""}
private

Definition at line 122 of file G4AtlasAlg.h.

122{this, "FieldMap", "", ""};

◆ m_flagAbortedEvents

Gaudi::Property<bool> G4AtlasAlg::m_flagAbortedEvents {this, "FlagAbortedEvents", false, ""}
private

Definition at line 104 of file G4AtlasAlg.h.

104{this, "FlagAbortedEvents", false, ""};

◆ m_g4commands

Gaudi::Property<std::vector<std::string> > G4AtlasAlg::m_g4commands {this, "G4Commands", {}, "Commands to send to the G4UI"}
private

Commands to send to the G4 UI.

Definition at line 128 of file G4AtlasAlg.h.

128{this, "G4Commands", {}, "Commands to send to the G4UI"};

◆ m_geoIDSvc

ServiceHandle<ISF::IGeoIDSvc> G4AtlasAlg::m_geoIDSvc {this, "GeoIDSvc", "ISF_GeoIDSvc", ""}
private

Geo ID Service.

Definition at line 112 of file G4AtlasAlg.h.

112{this, "GeoIDSvc", "ISF_GeoIDSvc", ""};

◆ m_inputConverter

ServiceHandle<ISF::IInputConverter> G4AtlasAlg::m_inputConverter {this, "InputConverter", "ISF_InputConverter", ""}
private

Service to convert ISF_Particles into a G4Event.

Definition at line 151 of file G4AtlasAlg.h.

151{this, "InputConverter", "ISF_InputConverter", ""};

◆ m_inputTruthCollectionKey

SG::ReadHandleKey<McEventCollection> G4AtlasAlg::m_inputTruthCollectionKey {this, "InputTruthCollection", "BeamTruthEvent", "Input hard scatter collection"}
private

input hard scatter collection

Definition at line 105 of file G4AtlasAlg.h.

105{this, "InputTruthCollection", "BeamTruthEvent", "Input hard scatter collection"};

◆ m_killAbortedEvents

Gaudi::Property<bool> G4AtlasAlg::m_killAbortedEvents {this, "KillAbortedEvents", false, ""}
private

Definition at line 103 of file G4AtlasAlg.h.

103{this, "KillAbortedEvents", false, ""};

◆ m_libList

Gaudi::Property<std::string> G4AtlasAlg::m_libList {this, "Dll", "", ""}
private

Definition at line 120 of file G4AtlasAlg.h.

120{this, "Dll", "", ""};

◆ m_outputTruthCollectionKey

SG::WriteHandleKey<McEventCollection> G4AtlasAlg::m_outputTruthCollectionKey {this, "OutputTruthCollection", "TruthEvent", "Output hard scatter truth collection"}
private

output hard scatter truth collection

Definition at line 106 of file G4AtlasAlg.h.

106{this, "OutputTruthCollection", "TruthEvent", "Output hard scatter truth collection"};

◆ m_physicsInitializationTools

PublicToolHandleArray<IPhysicsInitializationTool> G4AtlasAlg::m_physicsInitializationTools {this, "PhysicsInitializationTools", {}, "Physics initialization happening after Geant4 initialization"}
private

Definition at line 143 of file G4AtlasAlg.h.

143{this, "PhysicsInitializationTools", {}, "Physics initialization happening after Geant4 initialization"};

◆ m_physList

Gaudi::Property<std::string> G4AtlasAlg::m_physList {this, "Physics", "", ""}
private

Definition at line 121 of file G4AtlasAlg.h.

121{this, "Physics", "", ""};

◆ m_physListSvc

ServiceHandle<IPhysicsListSvc> G4AtlasAlg::m_physListSvc {this, "PhysicsListSvc", "PhysicsListSvc", ""}
private

Physics List Tool.

Definition at line 153 of file G4AtlasAlg.h.

153{this, "PhysicsListSvc", "PhysicsListSvc", ""};

◆ m_qspatcher

ServiceHandle<Simulation::IZeroLifetimePatcher> G4AtlasAlg::m_qspatcher {this, "QuasiStablePatcher", "", "Quasi-Stable Particle Simulation Patcher"}
private

Quasi-Stable Particle Simulation Patcher.

Definition at line 146 of file G4AtlasAlg.h.

146{this, "QuasiStablePatcher", "", "Quasi-Stable Particle Simulation Patcher"};

◆ m_quietMode

Gaudi::Property<bool> G4AtlasAlg::m_quietMode {this, "QuietMode", false, ""}
private

Definition at line 126 of file G4AtlasAlg.h.

126{this, "QuietMode", false, ""};

◆ m_randomStreamName

Gaudi::Property<std::string> G4AtlasAlg::m_randomStreamName {this, "RandomStreamName", "Geant4", ""}
private

Random Stream Name.

Definition at line 136 of file G4AtlasAlg.h.

136{this, "RandomStreamName", "Geant4", ""};

◆ m_recordFlux

Gaudi::Property<bool> G4AtlasAlg::m_recordFlux {this, "RecordFlux", false, ""}
private

Definition at line 125 of file G4AtlasAlg.h.

125{this, "RecordFlux", false, ""};

◆ m_releaseGeoModel

Gaudi::Property<bool> G4AtlasAlg::m_releaseGeoModel {this, "ReleaseGeoModel", true, ""}
private

Definition at line 124 of file G4AtlasAlg.h.

124{this, "ReleaseGeoModel", true, ""};

◆ m_rndmGen

Gaudi::Property<std::string> G4AtlasAlg::m_rndmGen {this, "RandomGenerator", "athena", ""}
private

Definition at line 123 of file G4AtlasAlg.h.

123{this, "RandomGenerator", "athena", ""};

◆ m_rndmGenSvc

ServiceHandle<IAthRNGSvc> G4AtlasAlg::m_rndmGenSvc {this, "AtRndmGenSvc", "AthRNGSvc", ""}
private

Random number service.

Definition at line 134 of file G4AtlasAlg.h.

134{this, "AtRndmGenSvc", "AthRNGSvc", ""}; // TODO rename property

◆ m_senDetTool

PublicToolHandle<ISensitiveDetectorMasterTool> G4AtlasAlg::m_senDetTool {this, "SenDetMasterTool", "SensitiveDetectorMasterTool", ""}
private

Sensitive Detector Master Tool.

Definition at line 155 of file G4AtlasAlg.h.

155{this, "SenDetMasterTool", "SensitiveDetectorMasterTool", ""};

◆ m_simplifiedGeoPath

Gaudi::Property<std::string> G4AtlasAlg::m_simplifiedGeoPath {this, "SimplifiedGeoPath", "", "Path to the simplified geometry file used to transport particles"}
private

Definition at line 161 of file G4AtlasAlg.h.

161{this, "SimplifiedGeoPath", "", "Path to the simplified geometry file used to transport particles"};

◆ m_truthPreselectionTool

ToolHandle<ISF::IGenEventFilter> G4AtlasAlg::m_truthPreselectionTool {this, "TruthPreselectionTool", "", "Tool for filtering out quasi-stable particle daughters"}
private

Definition at line 148 of file G4AtlasAlg.h.

148{this, "TruthPreselectionTool", "", "Tool for filtering out quasi-stable particle daughters"};

◆ m_truthRecordSvc

ServiceHandle<ISF::ITruthSvc> G4AtlasAlg::m_truthRecordSvc {this, "TruthRecordService", "ISF_TruthRecordSvc", ""}
private

Central Truth Service.

Definition at line 110 of file G4AtlasAlg.h.

110{this, "TruthRecordService", "ISF_TruthRecordSvc", ""};

◆ m_useMT

Gaudi::Property<bool> G4AtlasAlg::m_useMT {this,"MultiThreading", false, "Multi-threading specific settings"}
private

Activate multi-threading configuration.

Definition at line 130 of file G4AtlasAlg.h.

130{this,"MultiThreading", false, "Multi-threading specific settings"};

◆ m_userActionSvc

ServiceHandle<G4UA::IUserActionSvc> G4AtlasAlg::m_userActionSvc {this, "UserActionSvc", "G4UA::UserActionSvc", ""}
private

User Action Service.

Definition at line 140 of file G4AtlasAlg.h.

140{this, "UserActionSvc", "G4UA::UserActionSvc", ""};

◆ m_userLimitsSvc

ServiceHandle<IUserLimitsSvc> G4AtlasAlg::m_userLimitsSvc {this, "UserLimitsSvc", "UserLimitsSvc", ""}
private

Definition at line 138 of file G4AtlasAlg.h.

138{this, "UserLimitsSvc", "UserLimitsSvc", ""};

◆ m_useShadowEvent

BooleanProperty G4AtlasAlg::m_useShadowEvent {this, "UseShadowEvent", false, "New approach to selecting particles for simulation" }
private

Definition at line 132 of file G4AtlasAlg.h.

132{this, "UseShadowEvent", false, "New approach to selecting particles for simulation" };

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_verbosities

std::map<std::string,std::string> G4AtlasAlg::m_verbosities
private

Verbosity settings for Geant4.

Definition at line 115 of file G4AtlasAlg.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


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