ATLAS Offline Software
Public Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
iGeant4::Geant4SimSvc Class Reference

#include <Geant4SimSvc.h>

Inheritance diagram for iGeant4::Geant4SimSvc:
Collaboration diagram for iGeant4::Geant4SimSvc:

Public Member Functions

 Geant4SimSvc (const std::string &name, ISvcLocator *pSvcLocator)
 Constructor. More...
 
virtual ~Geant4SimSvc ()
 Destructor. More...
 
virtual StatusCode initialize () override
 Athena algorithm's interface methods. More...
 
virtual StatusCode finalize () override
 framework methods More...
 
virtual StatusCode simulate (ISF::ISFParticle &isp, McEventCollection *mcEventCollection, std::shared_ptr< HitCollectionMap >) override
 Simulation Call
More...
 
virtual StatusCode simulateVector (const ISF::ISFParticleVector &particles, McEventCollection *mcEventCollection, std::shared_ptr< HitCollectionMap > hitCollections, McEventCollection *shadowTruth=nullptr) override
 Simulation Call for vector of ISF particles. More...
 
virtual StatusCode setupEvent (HitCollectionMap &) override
 Setup Event chain - in case of a begin-of event action is needed. More...
 
virtual StatusCode releaseEvent (HitCollectionMap &) override
 Release Event chain - in case of an end-of event action is needed. More...
 
virtual StatusCode simulate (ISFParticle &, McEventCollection *) override
 Simulation call for individual particles. More...
 
virtual StatusCode setupEvent () override
 Setup Event chain - in case of a begin-of event action is needed. More...
 
virtual StatusCode releaseEvent () override
 Release Event chain - in case of an end-of event action is needed. More...
 
virtual StatusCode simulateVector (const ISFParticleVector &, McEventCollection *, McEventCollection *) override
 Simulation call for vectors of particles. More...
 
 BaseSimulationSvc (const std::string &name, ISvcLocator *pSvcLocator)
 Standard BaseSimulationSvc constructor. More...
 
virtual StatusCode sysInitialize () override
 Gaudi sysInitialize() methods. More...
 
const std::string & simSvcDescriptor () override
 Return the simulation service descriptor. More...
 
virtual StatusCode setParticleBroker (IParticleBroker *broker) override
 Inform the SimulationSvc about the ParticleBroker svc. More...
 
const ChronoEntity * chronoStart (const IChronoSvc::ChronoTag &tag)
 wrapper call to start chrono with given tag More...
 
const ChronoEntity * chronoStop (const IChronoSvc::ChronoTag &tag)
 wrapper call to stop chrono with given tag More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
ServiceHandle< StoreGateSvc > & evtStore ()
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
ServiceHandle< StoreGateSvc > & detStore ()
 
template<class T >
StatusCode retrieveTool (ToolHandle< T > &thandle)
 templated Tool retrieval - gives unique handling & look and feel More...
 
template<class T >
StatusCode retrieveTools (ToolHandleArray< T > &thandleArray)
 templated Tool retrieval - gives unique handling & look and feel More...
 
template<class T >
StatusCode recordCollection (T *&coll, const std::string &collName) const
 templated record collection method, will create a new one if not existing More...
 
template<class T >
StatusCode retrieveCollection (T *&coll, const std::string &collName, bool forceBreak=true) const
 templated retrieve collection method, boolean steers that force break More...
 

Protected Attributes

Gaudi::Property< std::string > m_simDescr
 The simulator service descriptor. More...
 
Gaudi::Property< std::string > m_screenOutputPrefix
 Screen output refinement. More...
 
ServiceHandle< IChronoStatSvc > m_chrono {this, "ChronoStatService", "ChronoStatSvc"}
 The timing service for general usage. More...
 
IParticleBroker * m_particleBroker {}
 The particle service used to push particles into the simulation. More...
 

Private Member Functions

 Geant4SimSvc ()
 Default constructor. More...
 

Private Attributes

PublicToolHandle< ISF::ISimulatorToolm_simulatorTool
 
ISF::BaseSimulatorG4Toolm_simulatorG4Tool {}
 pointer to the downcasted G4 simulator tool More...
 
ServiceHandle< StoreGateSvcm_evtStore
 Handle to StoreGate (event store by default) More...
 
ServiceHandle< StoreGateSvcm_detStore
 Handle to StoreGate (detector store by default) More...
 

Detailed Description

Definition at line 27 of file Geant4SimSvc.h.

Constructor & Destructor Documentation

◆ Geant4SimSvc() [1/2]

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

Constructor.

Definition at line 11 of file Geant4SimSvc.cxx.

12  : BaseSimulationG4Svc(name, svc) {}

◆ ~Geant4SimSvc()

iGeant4::Geant4SimSvc::~Geant4SimSvc ( )
virtual

Destructor.

Definition at line 14 of file Geant4SimSvc.cxx.

15 {}

◆ Geant4SimSvc() [2/2]

iGeant4::Geant4SimSvc::Geant4SimSvc ( )
private

Default constructor.

Member Function Documentation

◆ BaseSimulationSvc()

ISF::BaseSimulationSvc::BaseSimulationSvc
inlineinherited

Standard BaseSimulationSvc constructor.

Definition at line 45 of file BaseSimulationSvc.h.

45  :
46  base_class(name,pSvcLocator) {};

◆ chronoStart()

const ChronoEntity* ISF::BaseSimulationSvc::chronoStart ( const IChronoSvc::ChronoTag &  tag)
inlineinherited

wrapper call to start chrono with given tag

Definition at line 105 of file BaseSimulationSvc.h.

105  {
106  if (m_chrono) return m_chrono->chronoStart( tag);
107  return nullptr;
108  }

◆ chronoStop()

const ChronoEntity* ISF::BaseSimulationSvc::chronoStop ( const IChronoSvc::ChronoTag &  tag)
inlineinherited

wrapper call to stop chrono with given tag

Definition at line 111 of file BaseSimulationSvc.h.

111  {
112  if (m_chrono) return m_chrono->chronoStop( tag);
113  return nullptr;
114  }

◆ detStore() [1/2]

ServiceHandle<StoreGateSvc>& ISF::BaseSimulationSvc::detStore ( )
inlineinherited

Definition at line 126 of file BaseSimulationSvc.h.

126 {return m_detStore;};

◆ detStore() [2/2]

const ServiceHandle<StoreGateSvc>& ISF::BaseSimulationSvc::detStore ( ) const
inlineinherited

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

Definition at line 125 of file BaseSimulationSvc.h.

125 {return m_detStore;};

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& ISF::BaseSimulationSvc::evtStore ( )
inlineinherited

Definition at line 120 of file BaseSimulationSvc.h.

120 {return m_evtStore;};

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& ISF::BaseSimulationSvc::evtStore ( ) const
inlineinherited

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

Definition at line 119 of file BaseSimulationSvc.h.

119 {return m_evtStore;};

◆ finalize()

StatusCode iGeant4::Geant4SimSvc::finalize ( )
overridevirtual

framework methods

Definition at line 31 of file Geant4SimSvc.cxx.

32 {
33  return StatusCode::SUCCESS;
34 }

◆ initialize()

StatusCode iGeant4::Geant4SimSvc::initialize ( )
overridevirtual

Athena algorithm's interface methods.

framework methods

Definition at line 18 of file Geant4SimSvc.cxx.

19 {
20  ATH_CHECK (m_simulatorTool.retrieve());
22  dynamic_cast<ISF::BaseSimulatorG4Tool*>(m_simulatorTool.get());
23  if (!m_simulatorG4Tool) {
24  ATH_MSG_FATAL("SimulatorTool is not of type ISF::BaseSimulatorG4Tool");
25  return StatusCode::FAILURE;
26  }
27  return StatusCode::SUCCESS;
28 }

◆ recordCollection()

template<class T >
StatusCode ISF::BaseSimulationSvc::recordCollection ( T *&  coll,
const std::string &  collName 
) const
inlineinherited

templated record collection method, will create a new one if not existing

Definition at line 151 of file BaseSimulationSvc.h.

151  {
152  // create if necessary
153  coll = coll ? coll : new T;
154  // record
155  if (evtStore()->record( coll, collName).isFailure()){
156  ATH_MSG_FATAL( m_screenOutputPrefix << "Cannot record collection " << collName << ". Abort." );
157  return StatusCode::FAILURE;
158  } else
159  ATH_MSG_DEBUG(m_screenOutputPrefix << "Successfully recorded collection " << collName);
160  return StatusCode::SUCCESS;
161  }

◆ releaseEvent() [1/2]

virtual StatusCode ISF::BaseSimulationG4Svc::releaseEvent ( )
inlineoverridevirtualinherited

Release Event chain - in case of an end-of event action is needed.

Reimplemented from ISF::BaseSimulationSvc.

Definition at line 85 of file BaseSimulationG4Svc.h.

85 { return StatusCode::FAILURE; }

◆ releaseEvent() [2/2]

StatusCode iGeant4::Geant4SimSvc::releaseEvent ( HitCollectionMap hitCollections)
overridevirtual

Release Event chain - in case of an end-of event action is needed.

Implements ISF::BaseSimulationG4Svc.

Definition at line 40 of file Geant4SimSvc.cxx.

41  {
42  return m_simulatorG4Tool->releaseEventST(hitCollections);
43 }

◆ retrieveCollection()

template<class T >
StatusCode ISF::BaseSimulationSvc::retrieveCollection ( T *&  coll,
const std::string &  collName,
bool  forceBreak = true 
) const
inlineinherited

templated retrieve collection method, boolean steers that force break

Definition at line 165 of file BaseSimulationSvc.h.

165  {
166  // check for existence in the soft case
167  if (!forceBreak && !evtStore()->contains<T>(collName)) {
168  coll = 0;
169  ATH_MSG_DEBUG(m_screenOutputPrefix << "Collection does not exists (not required). Ignore.");
170  return StatusCode::SUCCESS;
171  }
172  if ( evtStore()->retrieve(coll, collName).isFailure()){
173  ATH_MSG_FATAL( m_screenOutputPrefix << "Cannot retireve collection " << collName << ". Abort." );
174  return StatusCode::FAILURE;
175  } else
176  ATH_MSG_DEBUG(m_screenOutputPrefix << "Successfully retrieved collection " << collName);
177  return StatusCode::SUCCESS;
178  }

◆ retrieveTool()

template<class T >
StatusCode ISF::BaseSimulationSvc::retrieveTool ( ToolHandle< T > &  thandle)
inlineinherited

templated Tool retrieval - gives unique handling & look and feel

Definition at line 129 of file BaseSimulationSvc.h.

129  {
130  if (!thandle.empty() && thandle.retrieve().isFailure()){
131  ATH_MSG_FATAL( m_screenOutputPrefix << "Cannot retrieve " << thandle << ". Abort.");
132  return StatusCode::FAILURE;
133  } else
134  ATH_MSG_DEBUG(m_screenOutputPrefix << "Successfully retrieved " << thandle);
135  return StatusCode::SUCCESS;
136  }

◆ retrieveTools()

template<class T >
StatusCode ISF::BaseSimulationSvc::retrieveTools ( ToolHandleArray< T > &  thandleArray)
inlineinherited

templated Tool retrieval - gives unique handling & look and feel

Definition at line 140 of file BaseSimulationSvc.h.

140  {
141  if (!thandleArray.empty() && thandleArray.retrieve().isFailure()){
142  ATH_MSG_FATAL( m_screenOutputPrefix << "Cannot retrieve " << thandleArray << ". Abort.");
143  return StatusCode::FAILURE;
144  } else
145  ATH_MSG_DEBUG(m_screenOutputPrefix << "Successfully retrieved " << thandleArray);
146  return StatusCode::SUCCESS;
147  }

◆ setParticleBroker()

virtual StatusCode ISF::BaseSimulationSvc::setParticleBroker ( IParticleBroker broker)
inlineoverridevirtualinherited

Inform the SimulationSvc about the ParticleBroker svc.

Definition at line 78 of file BaseSimulationSvc.h.

78  {
79  m_particleBroker = broker;
80  return StatusCode::SUCCESS;
81  }

◆ setupEvent() [1/2]

virtual StatusCode ISF::BaseSimulationG4Svc::setupEvent ( )
inlineoverridevirtualinherited

Setup Event chain - in case of a begin-of event action is needed.

Reimplemented from ISF::BaseSimulationSvc.

Definition at line 82 of file BaseSimulationG4Svc.h.

82 { return StatusCode::FAILURE; }

◆ setupEvent() [2/2]

StatusCode iGeant4::Geant4SimSvc::setupEvent ( HitCollectionMap hitCollections)
overridevirtual

Setup Event chain - in case of a begin-of event action is needed.

Implements ISF::BaseSimulationG4Svc.

Definition at line 36 of file Geant4SimSvc.cxx.

36  {
37  return m_simulatorG4Tool->setupEventST(hitCollections);
38 }

◆ simSvcDescriptor()

const std::string& ISF::BaseSimulationSvc::simSvcDescriptor ( )
inlineoverrideinherited

Return the simulation service descriptor.

Definition at line 67 of file BaseSimulationSvc.h.

67 { return m_simDescr.value(); }

◆ simulate() [1/2]

StatusCode iGeant4::Geant4SimSvc::simulate ( ISF::ISFParticle isp,
McEventCollection mcEventCollection,
std::shared_ptr< HitCollectionMap hitCollections 
)
overridevirtual

Simulation Call

Simulation Call.

Implements ISF::BaseSimulationG4Svc.

Definition at line 46 of file Geant4SimSvc.cxx.

48  {
49  const EventContext& ctx = Gaudi::Hive::currentContext();
50  ISF::ISFParticleContainer secondaries; // filled, but not used
51  ATH_CHECK(m_simulatorG4Tool->simulate(ctx, isp, secondaries,
52  mcEventCollection, hitCollections));
53  return StatusCode::SUCCESS;
54 }

◆ simulate() [2/2]

virtual StatusCode ISF::BaseSimulationG4Svc::simulate ( ISFParticle ,
McEventCollection  
)
inlineoverridevirtualinherited

Simulation call for individual particles.

Reimplemented from ISF::BaseSimulationSvc.

Definition at line 77 of file BaseSimulationG4Svc.h.

77  {
78  return StatusCode::FAILURE;
79  }

◆ simulateVector() [1/2]

StatusCode iGeant4::Geant4SimSvc::simulateVector ( const ISF::ISFParticleVector particles,
McEventCollection mcEventCollection,
std::shared_ptr< HitCollectionMap hitCollections,
McEventCollection shadowTruth = nullptr 
)
overridevirtual

Simulation Call for vector of ISF particles.

Simulation Call.

Reimplemented from ISF::BaseSimulationG4Svc.

Definition at line 57 of file Geant4SimSvc.cxx.

60  {
61  const EventContext& ctx = Gaudi::Hive::currentContext();
62  ISF::ISFParticleContainer secondaries; // filled, but not used
64  ctx, particles, secondaries, mcEventCollection, hitCollections, shadowTruth));
65  return StatusCode::SUCCESS;
66 }

◆ simulateVector() [2/2]

virtual StatusCode ISF::BaseSimulationG4Svc::simulateVector ( const ISFParticleVector ,
McEventCollection ,
McEventCollection  
)
inlineoverridevirtualinherited

Simulation call for vectors of particles.

Reimplemented from ISF::BaseSimulationSvc.

Definition at line 88 of file BaseSimulationG4Svc.h.

90  {
91  return StatusCode::FAILURE;
92  }

◆ sysInitialize()

virtual StatusCode ISF::BaseSimulationSvc::sysInitialize ( )
inlineoverridevirtualinherited

Gaudi sysInitialize() methods.

Definition at line 52 of file BaseSimulationSvc.h.

53  {
54  if ( AthService::sysInitialize().isFailure() ) {
55  ATH_MSG_FATAL( m_screenOutputPrefix << " Cannot initialize AthService! Abort.");
56  return StatusCode::FAILURE;
57  }
58  if ( m_chrono.retrieve().isFailure()){
59  ATH_MSG_FATAL( m_screenOutputPrefix << " Cannot retrieve ChronoStatSvc! Abort.");
60  return StatusCode::FAILURE;
61  }
62 
63  return StatusCode::SUCCESS;
64  }

Member Data Documentation

◆ m_chrono

ServiceHandle<IChronoStatSvc> ISF::BaseSimulationSvc::m_chrono {this, "ChronoStatService", "ChronoStatSvc"}
protectedinherited

The timing service for general usage.

Definition at line 203 of file BaseSimulationSvc.h.

◆ m_detStore

ServiceHandle<StoreGateSvc> ISF::BaseSimulationSvc::m_detStore
privateinherited
Initial value:
{this, "DetStore", "StoreGateSvc/DetectorStore",
"Handle to a StoreGateSvc/DetectorStore instance: it will be used to retrieve data during the course of the job"}

Handle to StoreGate (detector store by default)

Definition at line 189 of file BaseSimulationSvc.h.

◆ m_evtStore

ServiceHandle<StoreGateSvc> ISF::BaseSimulationSvc::m_evtStore
privateinherited
Initial value:
{this, "EvtStore", "StoreGateSvc/StoreGateSvc",
"Handle to a StoreGateSvc instance: it will be used to retrieve data during the course of the job"}

Handle to StoreGate (event store by default)

Definition at line 185 of file BaseSimulationSvc.h.

◆ m_particleBroker

IParticleBroker* ISF::BaseSimulationSvc::m_particleBroker {}
protectedinherited

The particle service used to push particles into the simulation.

Definition at line 206 of file BaseSimulationSvc.h.

◆ m_screenOutputPrefix

Gaudi::Property<std::string> ISF::BaseSimulationSvc::m_screenOutputPrefix
protectedinherited
Initial value:
{this, "ScreenOutputPrefix", "isf >> ",
"Prefix for log output"}

Screen output refinement.

Definition at line 199 of file BaseSimulationSvc.h.

◆ m_simDescr

Gaudi::Property<std::string> ISF::BaseSimulationSvc::m_simDescr
protectedinherited
Initial value:
{this, "Identifier", {},
"A unique string to identify the simulator."}

The simulator service descriptor.

Definition at line 195 of file BaseSimulationSvc.h.

◆ m_simulatorG4Tool

ISF::BaseSimulatorG4Tool* iGeant4::Geant4SimSvc::m_simulatorG4Tool {}
private

pointer to the downcasted G4 simulator tool

Definition at line 70 of file Geant4SimSvc.h.

◆ m_simulatorTool

PublicToolHandle<ISF::ISimulatorTool> iGeant4::Geant4SimSvc::m_simulatorTool
private
Initial value:
{this, "SimulatorTool",
"", ""}

Definition at line 66 of file Geant4SimSvc.h.


The documentation for this class was generated from the following files:
ISF::ISFParticleContainer
std::list< ISF::ISFParticle * > ISFParticleContainer
generic ISFParticle container (not necessarily a std::list!)
Definition: ISFParticleContainer.h:23
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
ISF::BaseSimulationSvc::m_simDescr
Gaudi::Property< std::string > m_simDescr
The simulator service descriptor.
Definition: BaseSimulationSvc.h:195
ISF::BaseSimulationSvc::m_chrono
ServiceHandle< IChronoStatSvc > m_chrono
The timing service for general usage.
Definition: BaseSimulationSvc.h:203
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
iGeant4::Geant4SimSvc::m_simulatorG4Tool
ISF::BaseSimulatorG4Tool * m_simulatorG4Tool
pointer to the downcasted G4 simulator tool
Definition: Geant4SimSvc.h:70
iGeant4::Geant4SimSvc::m_simulatorTool
PublicToolHandle< ISF::ISimulatorTool > m_simulatorTool
Definition: Geant4SimSvc.h:66
ISF::BaseSimulatorG4Tool::simulateVector
virtual StatusCode simulateVector(const EventContext &ctx, const ISFParticleVector &particles, ISFParticleContainer &secondaries, McEventCollection *mcEventCollection, std::shared_ptr< HitCollectionMap > HitCollectionMap, McEventCollection *shadowTruth=nullptr)=0
Simulation call for vectors of particles.
ISF::BaseSimulationSvc::evtStore
const ServiceHandle< StoreGateSvc > & evtStore() const
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: BaseSimulationSvc.h:119
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ISF::BaseSimulationSvc::m_screenOutputPrefix
Gaudi::Property< std::string > m_screenOutputPrefix
Screen output refinement.
Definition: BaseSimulationSvc.h:199
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Handler::svc
AthROOTErrorHandlerSvc * svc
Definition: AthROOTErrorHandlerSvc.cxx:10
ISF::BaseSimulationSvc::m_detStore
ServiceHandle< StoreGateSvc > m_detStore
Handle to StoreGate (detector store by default)
Definition: BaseSimulationSvc.h:189
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
ISF::BaseSimulationSvc::m_evtStore
ServiceHandle< StoreGateSvc > m_evtStore
Handle to StoreGate (event store by default)
Definition: BaseSimulationSvc.h:185
ISF::BaseSimulatorG4Tool::simulate
virtual StatusCode simulate(const EventContext &ctx, ISFParticle &isp, ISFParticleContainer &secondaries, McEventCollection *mcEventCollection, std::shared_ptr< HitCollectionMap >)=0
Simulation call for individual particles.
LArG4FSStartPointFilter.particles
list particles
Definition: LArG4FSStartPointFilter.py:84
ISF::BaseSimulatorG4Tool
Definition: BaseSimulatorG4Tool.h:28
ISF::BaseSimulatorG4Tool::setupEventST
virtual StatusCode setupEventST(HitCollectionMap &hitCollections)
Create data containers for an event (called by ISimulationSvc)
Definition: BaseSimulatorG4Tool.h:49
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:23
ISF::BaseSimulationSvc::m_particleBroker
IParticleBroker * m_particleBroker
The particle service used to push particles into the simulation.
Definition: BaseSimulationSvc.h:206
ISF::BaseSimulatorG4Tool::releaseEventST
virtual StatusCode releaseEventST(HitCollectionMap &hitCollections)
Finalise data containers for an event (called by ISimulationSvc)
Definition: BaseSimulatorG4Tool.h:58
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35