ATLAS Offline Software
Loading...
Searching...
No Matches
ActsExtrapolationAlg.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 ACTSGEOMETRY_ACTSEXTRAPOLATIONALG_H
6#define ACTSGEOMETRY_ACTSEXTRAPOLATIONALG_H
7
8// ATHENA
11
15
16// ACTS
17#include "Acts/EventData/TrackParameters.hpp"
18#include "Acts/Geometry/GeometryIdentifier.hpp"
19
20// STL
21#include <memory>
22#include <vector>
23#include <fstream>
24#include <mutex>
25
26
27namespace Acts {
28 class TrackingGeometry;
29 namespace detail {
30 struct Step;
31 }
32}
33
34
35class EventContext;
36class IAthRNGSvc;
38
40public:
41 using AthReentrantAlgorithm::AthReentrantAlgorithm;
42 StatusCode initialize() override;
43 StatusCode execute(const EventContext& ctx) const override;
44
45private:
46
47 ServiceHandle<IActsPropStepRootWriterSvc> m_propStepWriterSvc{this, "PropStepRootWriterSvc", "ActsPropStepRootWriterSvc"};
48 ServiceHandle<IAthRNGSvc> m_rndmGenSvc{this, "AthRNGSvc", "AthRNGSvc"};
49
50 ToolHandle<ActsTrk::IExtrapolationTool> m_extrapolationTool{this, "ExtrapolationTool", "ActsExtrapolationTool"};
51
52 PublicToolHandle<ActsTrk::ITrackingGeometryTool> m_trackingGeometryTool{this, "TrackingGeometryTool", "ActsTrackingGeometryTool"};
53
54
55 // poor-mans Particle Gun is included here right now
56 Gaudi::Property<std::vector<double>> m_etaRange{this, "EtaRange", {-3, 3}, "The eta range for particles"};
57 Gaudi::Property<std::vector<double>> m_ptRange{this, "PtRange", {0.1, 1000}, "The pt range for particles"};
58 Gaudi::Property<size_t> m_nParticlePerEvent{this, "NParticlesPerEvent", 1, "The number of particles per event"};
59
60 // material track writer for the material map validation
61 Gaudi::Property<bool> m_writeMaterialTracks{this, "WriteMaterialTracks", false, "Write material track"};
62 Gaudi::Property<bool> m_writePropStep{this, "WritePropStep", false, "Write propagation step"};
63
64 // Mutex and members for optional debugging output
65 mutable std::mutex m_writeMutex;
66 mutable size_t m_objVtxCount ATLAS_THREAD_SAFE {0};
67
68 void writeStepsObj(const std::vector<Acts::detail::Step>& steps) const;
69
71 SG::WriteHandleKey<ActsTrk::RecordedMaterialTrackCollection> m_materialTrackCollectionKey {this, "MaterialTrackCollectionKey", "MaterialTracks", "Name of the RecordedMaterialTrackCollection"};
72
73};
74
75#endif // ActsGeometry_ActsExtrapolation_h
Define macros for attributes used to control the static checker.
ToolHandle< ActsTrk::IExtrapolationTool > m_extrapolationTool
Gaudi::Property< size_t > m_nParticlePerEvent
size_t m_objVtxCount ATLAS_THREAD_SAFE
ServiceHandle< IAthRNGSvc > m_rndmGenSvc
Gaudi::Property< bool > m_writePropStep
Gaudi::Property< std::vector< double > > m_etaRange
PublicToolHandle< ActsTrk::ITrackingGeometryTool > m_trackingGeometryTool
Gaudi::Property< bool > m_writeMaterialTracks
Gaudi::Property< std::vector< double > > m_ptRange
ServiceHandle< IActsPropStepRootWriterSvc > m_propStepWriterSvc
StatusCode execute(const EventContext &ctx) const override
SG::WriteHandleKey< ActsTrk::RecordedMaterialTrackCollection > m_materialTrackCollectionKey
The RecordedMaterialTrackCollection to write.
StatusCode initialize() override
void writeStepsObj(const std::vector< Acts::detail::Step > &steps) const
An algorithm that can be simultaneously executed in multiple threads.
manage multiple RandomEngines in thread-safe way.
Definition IAthRNGSvc.h:28
Property holding a SG store/key/clid from which a WriteHandle is made.