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
14
15// ACTS
16#include "Acts/EventData/TrackParameters.hpp"
17#include "Acts/Geometry/GeometryIdentifier.hpp"
18
19// STL
20#include <memory>
21#include <vector>
22#include <fstream>
23#include <mutex>
24
25
26namespace Acts {
27 class TrackingGeometry;
28 namespace detail {
29 struct Step;
30 }
31}
32
33
35
36class EventContext;
37class IAthRNGSvc;
39
41public:
42 using AthReentrantAlgorithm::AthReentrantAlgorithm;
43 StatusCode initialize() override;
44 StatusCode execute(const EventContext& ctx) const override;
45
46private:
47
48 ServiceHandle<IActsPropStepRootWriterSvc> m_propStepWriterSvc{this, "PropStepRootWriterSvc", "ActsPropStepRootWriterSvc"};
49 ServiceHandle<IAthRNGSvc> m_rndmGenSvc{this, "AthRNGSvc", "AthRNGSvc"};
50
51 ToolHandle<ActsTrk::IExtrapolationTool> m_extrapolationTool{this, "ExtrapolationTool", "ActsExtrapolationTool"};
52
53 PublicToolHandle<ActsTrk::ITrackingGeometryTool> m_trackingGeometryTool{this, "TrackingGeometryTool", "ActsTrackingGeometryTool"};
54
55
56 // poor-mans Particle Gun is included here right now
57 Gaudi::Property<std::vector<double>> m_etaRange{this, "EtaRange", {-3, 3}, "The eta range for particles"};
58 Gaudi::Property<std::vector<double>> m_ptRange{this, "PtRange", {0.1, 1000}, "The pt range for particles"};
59 Gaudi::Property<size_t> m_nParticlePerEvent{this, "NParticlesPerEvent", 1, "The number of particles per event"};
60
61 // material track writer for the material map validation
62 Gaudi::Property<bool> m_writeMaterialTracks{this, "WriteMaterialTracks", false, "Write material track"};
63 Gaudi::Property<bool> m_writePropStep{this, "WritePropStep", false, "Write propagation step"};
64 ServiceHandle<IActsMaterialTrackWriterSvc> m_materialTrackWriterSvc{this, "MaterialTrackWriterSvc", "ActsMaterialTrackWriterSvc"};
65
66 // Mutex and members for optional debugging output
67 mutable std::mutex m_writeMutex;
68 mutable size_t m_objVtxCount ATLAS_THREAD_SAFE {0};
69
70 void writeStepsObj(const std::vector<Acts::detail::Step>& steps) const;
71
72};
73
74#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
ServiceHandle< IActsMaterialTrackWriterSvc > m_materialTrackWriterSvc
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