ATLAS Offline Software
Loading...
Searching...
No Matches
BaseSimulatorG4Tool.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_BASESIMULATORG4TOOL_H
6#define ISF_BASESIMULATORG4TOOL_H
7
8// STL includes
9#include <memory>
10
11// FrameWork includes
12#include <GaudiKernel/IAlgTool.h>
13#include <GaudiKernel/StatusCode.h>
14
15// ISF
19
21
22namespace ISF {
23
24/*
25 * @class BaseSimulatorG4Tool
26 * Base class for an ISimulatorTool which requires a Geant4 UserInfo object
27 */
29 public:
32
34 virtual StatusCode simulate(const EventContext& ctx, ISFParticle& isp,
35 ISFParticleContainer& secondaries,
36 McEventCollection* mcEventCollection,
37 std::shared_ptr<HitCollectionMap>) = 0;
38
40 virtual StatusCode simulateVector(
41 const EventContext& ctx, const ISFParticleVector& particles,
42 ISFParticleContainer& secondaries, McEventCollection* mcEventCollection,
43 std::shared_ptr<HitCollectionMap> HitCollectionMap, McEventCollection* shadowTruth = nullptr) = 0;
44
46 virtual StatusCode setupEvent(const EventContext&, HitCollectionMap&) = 0;
47
49 virtual StatusCode setupEventST(HitCollectionMap& hitCollections) {
50 return setupEvent(Gaudi::Hive::currentContext(), hitCollections);
51 }
52
54 virtual StatusCode releaseEvent(const EventContext&,
55 HitCollectionMap&) = 0;
56
58 virtual StatusCode releaseEventST(HitCollectionMap& hitCollections) {
59 return releaseEvent(Gaudi::Hive::currentContext(), hitCollections);
60 }
61
63
65 virtual StatusCode simulate(const EventContext&, ISFParticle&,
67 return StatusCode::FAILURE;
68 };
69
71 virtual StatusCode simulateVector(const EventContext&,
72 const ISFParticleVector&,
75 return StatusCode::FAILURE;
76 };
77
79 virtual StatusCode setupEvent(const EventContext&) {
80 return StatusCode::FAILURE;
81 };
82
84 virtual StatusCode setupEventST() { return StatusCode::FAILURE; };
85
87 virtual StatusCode releaseEvent(const EventContext&) {
88 return StatusCode::FAILURE;
89 };
90
92 virtual StatusCode releaseEventST() { return StatusCode::FAILURE; };
93};
94
95} // namespace ISF
96
97#endif
Small wrapper around hit collection map to facilitate accessing the hit collection.
virtual StatusCode simulate(const EventContext &ctx, ISFParticle &isp, ISFParticleContainer &secondaries, McEventCollection *mcEventCollection, std::shared_ptr< HitCollectionMap >)=0
Simulation call for individual particles.
virtual StatusCode releaseEvent(const EventContext &)
Finalise data containers for an event.
virtual StatusCode setupEventST()
Create data containers for an event (called by ISimulationSvc)
virtual StatusCode setupEventST(HitCollectionMap &hitCollections)
Create data containers for an event (called by ISimulationSvc)
virtual StatusCode releaseEvent(const EventContext &, HitCollectionMap &)=0
Finalise data containers for an event.
virtual StatusCode setupEvent(const EventContext &)
Create data containers for an event.
virtual StatusCode simulateVector(const EventContext &, const ISFParticleVector &, ISFParticleContainer &, McEventCollection *, McEventCollection *)
Simulation call for vectors of particles.
virtual StatusCode simulate(const EventContext &, ISFParticle &, ISFParticleContainer &, McEventCollection *)
Simulation call for individual particles.
virtual StatusCode releaseEventST(HitCollectionMap &hitCollections)
Finalise data containers for an event (called by ISimulationSvc)
virtual StatusCode setupEvent(const EventContext &, HitCollectionMap &)=0
Create data containers for an event.
virtual StatusCode releaseEventST()
Finalise data containers for an event (called by ISimulationSvc)
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.
Concrete base class for all simulator Tools.
BaseSimulatorTool(const std::string &type, const std::string &name, const IInterface *parent)
The generic ISF particle definition,.
Definition ISFParticle.h:42
This defines the McEventCollection, which is really just an ObjectVector of McEvent objectsFile: Gene...
ISFParticleOrderedQueue.
std::list< ISF::ISFParticle * > ISFParticleContainer
generic ISFParticle container (not necessarily a std::list!)
std::vector< ISF::ISFParticle * > ISFParticleVector
ISFParticle vector.