ATLAS Offline Software
BaseSimulationG4Svc.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef ISF_BASESIMULATIONG4SVC_H
6 #define ISF_BASESIMULATIONG4SVC_H 1
7 
8 // STL includes
9 #include <memory.h>
10 #include <string>
11 
12 // FrameWork includes
14 #include <GaudiKernel/StatusCode.h>
16 
17 // ISF includes
18 #include "ISF_Event/ISFParticle.h"
21 
22 class HitCollectionMap;
23 
24 namespace ISF {
25 
26 class IParticleBroker;
27 class ITruthSvc;
28 
34  public:
37 
39  virtual ~BaseSimulationG4Svc() = default;
40 
43  std::shared_ptr<HitCollectionMap>) = 0;
44 
47 
50 
53  McEventCollection* mcEventCollection,
54  std::shared_ptr<HitCollectionMap> hitCollections,
56  // this implementation is a wrapper in case the simulator does
57  // implement particle-vector input
58  StatusCode sc = StatusCode::SUCCESS;
59  // simulate each particle individually
62  << "Starting simulation of particle: " << part);
63  if (this->simulate(*part, mcEventCollection, hitCollections).isFailure()) {
64  ATH_MSG_WARNING("Simulation of particle failed!"
65  << endmsg
66  << " -> simulator: " << this->simSvcDescriptor()
67  << " -> particle : " << *part);
68  sc = StatusCode::FAILURE;
69  }
70  }
71  return sc;
72  }
73 
75 
78  return StatusCode::FAILURE;
79  }
80 
82  virtual StatusCode setupEvent() override { return StatusCode::FAILURE; }
83 
85  virtual StatusCode releaseEvent() override { return StatusCode::FAILURE; }
86 
90  McEventCollection*) override {
91  return StatusCode::FAILURE;
92  }
93 };
94 } // namespace ISF
95 
96 #endif //> !ISF_BASESIMULATIONSVC_H
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
ISF::BaseSimulationG4Svc::simulate
virtual StatusCode simulate(ISFParticle &, McEventCollection *, std::shared_ptr< HitCollectionMap >)=0
Simulation call for individual particles.
HitCollectionMap
Small wrapper around hit collection map to facilitate accessing the hit collection.
Definition: HitCollectionMap.h:21
ISF::BaseSimulationG4Svc
Definition: BaseSimulationG4Svc.h:33
ISF::BaseSimulationSvc::BaseSimulationSvc
BaseSimulationSvc()
Default constructor.
ISF::ISFParticle
Definition: ISFParticle.h:42
ISF::BaseSimulationG4Svc::simulateVector
virtual StatusCode simulateVector(const ISFParticleVector &particles, McEventCollection *mcEventCollection, std::shared_ptr< HitCollectionMap > hitCollections, McEventCollection *)
Simulation call for vectors of particles.
Definition: BaseSimulationG4Svc.h:52
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
ISF::BaseSimulationG4Svc::releaseEvent
virtual StatusCode releaseEvent() override
Release Event chain - in case of an end-of event action is needed.
Definition: BaseSimulationG4Svc.h:85
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
ISF::BaseSimulationG4Svc::setupEvent
virtual StatusCode setupEvent() override
Setup Event chain - in case of a begin-of event action is needed.
Definition: BaseSimulationG4Svc.h:82
ISFParticle.h
ISF::BaseSimulationG4Svc::releaseEvent
virtual StatusCode releaseEvent(HitCollectionMap &)=0
Release Event chain - in case of an end-of event action is needed.
McEventCollection.h
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ISF::ISFParticleVector
std::vector< ISF::ISFParticle * > ISFParticleVector
ISFParticle vector.
Definition: ISFParticleContainer.h:26
ISF::BaseSimulationSvc::m_screenOutputPrefix
Gaudi::Property< std::string > m_screenOutputPrefix
Screen output refinement.
Definition: BaseSimulationSvc.h:199
BaseSimulationSvc.h
McEventCollection
This defines the McEventCollection, which is really just an ObjectVector of McEvent objects.
Definition: McEventCollection.h:32
ISF::BaseSimulationG4Svc::~BaseSimulationG4Svc
virtual ~BaseSimulationG4Svc()=default
Destructor.
ISF::BaseSimulationG4Svc::simulate
virtual StatusCode simulate(ISFParticle &, McEventCollection *) override
Simulation call for individual particles.
Definition: BaseSimulationG4Svc.h:77
ISF::BaseSimulationSvc::simSvcDescriptor
const std::string & simSvcDescriptor() override
Return the simulation service descriptor.
Definition: BaseSimulationSvc.h:67
ISF
ISFParticleOrderedQueue.
Definition: PrimaryParticleInformation.h:13
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
LArG4FSStartPointFilter.particles
list particles
Definition: LArG4FSStartPointFilter.py:84
ISimulationSvc.h
AthService.h
ISF::BaseSimulationSvc
Definition: BaseSimulationSvc.h:41
ISF::BaseSimulationG4Svc::simulateVector
virtual StatusCode simulateVector(const ISFParticleVector &, McEventCollection *, McEventCollection *) override
Simulation call for vectors of particles.
Definition: BaseSimulationG4Svc.h:88
ISF::BaseSimulationG4Svc::setupEvent
virtual StatusCode setupEvent(HitCollectionMap &)=0
Setup Event chain - in case of a begin-of event action is needed.