4
4
5
5
#include " IterativeVertexFinder.h"
6
6
7
- #include < Acts/Definitions/Common.hpp>
8
- #include < Acts/Definitions/Direction.hpp>
9
7
#include < Acts/Definitions/TrackParametrization.hpp>
10
8
#include < Acts/Definitions/Units.hpp>
11
9
#include < Acts/EventData/GenericBoundTrackParameters.hpp>
12
- #include < Acts/EventData/GenericParticleHypothesis.hpp>
13
- #include < Acts/EventData/ParticleHypothesis.hpp>
14
- #include < Acts/EventData/TrackParameters.hpp>
10
+ #include < Acts/MagneticField/MagneticFieldProvider.hpp>
15
11
#include < Acts/Propagator/EigenStepper.hpp>
16
12
#include < Acts/Propagator/Propagator.hpp>
17
- #include < ActsExamples/EventData/Track.hpp>
18
- #include < boost/move/utility_core.hpp>
19
- #include < edm4eic/Track.h>
20
- #include < fmt/core.h>
21
- #include < podio/RelationRange.h>
22
- #if Acts_VERSION_MAJOR >= 32
23
13
#include < Acts/Propagator/VoidNavigator.hpp>
24
- #else
25
- #include < Acts/Propagator/detail/VoidPropagatorComponents.hpp>
26
- #endif
14
+ #include < Acts/Utilities/Delegate.hpp>
27
15
#include < Acts/Utilities/Logger.hpp>
28
16
#include < Acts/Utilities/Result.hpp>
29
- #include < Acts/Utilities/VectorHelpers.hpp>
30
17
#include < Acts/Vertexing/FullBilloirVertexFitter.hpp>
31
18
#include < Acts/Vertexing/HelicalTrackLinearizer.hpp>
19
+ #include < Acts/Vertexing/IVertexFinder.hpp>
32
20
#include < Acts/Vertexing/ImpactPointEstimator.hpp>
33
21
#include < Acts/Vertexing/IterativeVertexFinder.hpp>
22
+ #include < Acts/Vertexing/LinearizedTrack.hpp>
34
23
#include < Acts/Vertexing/TrackAtVertex.hpp>
35
24
#include < Acts/Vertexing/Vertex.hpp>
36
25
#include < Acts/Vertexing/VertexingOptions.hpp>
37
26
#include < Acts/Vertexing/ZScanVertexFinder.hpp>
27
+ #include < ActsExamples/EventData/Track.hpp>
38
28
#include < ActsExamples/EventData/Trajectories.hpp>
39
- #include < boost/container/vector.hpp>
40
29
#include < edm4eic/Cov4f.h>
41
30
#include < edm4eic/ReconstructedParticleCollection.h>
31
+ #include < edm4eic/Track.h>
42
32
#include < edm4eic/TrackParameters.h>
43
33
#include < edm4eic/Trajectory.h>
44
34
#include < edm4eic/unit_system.h>
45
35
#include < edm4hep/Vector2f.h>
36
+ #include < fmt/core.h>
37
+ #include < podio/RelationRange.h>
46
38
#include < Eigen/Core>
47
- #include < Eigen/Geometry>
48
- #include < Eigen/LU>
49
- #include < algorithm>
50
39
#include < cmath>
51
- #include < optional>
52
- #include < tuple>
53
40
#include < utility>
54
41
55
42
#include " extensions/spdlog/SpdlogToActs.h"
@@ -73,79 +60,50 @@ std::unique_ptr<edm4eic::VertexCollection> eicrecon::IterativeVertexFinder::prod
73
60
auto outputVertices = std::make_unique<edm4eic::VertexCollection>();
74
61
75
62
using Propagator = Acts::Propagator<Acts::EigenStepper<>>;
76
- #if Acts_VERSION_MAJOR >= 33
77
63
using Linearizer = Acts::HelicalTrackLinearizer;
78
64
using VertexFitter = Acts::FullBilloirVertexFitter;
79
65
using ImpactPointEstimator = Acts::ImpactPointEstimator;
80
66
using VertexSeeder = Acts::ZScanVertexFinder;
81
67
using VertexFinder = Acts::IterativeVertexFinder;
82
68
using VertexFinderOptions = Acts::VertexingOptions;
83
- #else
84
- using Linearizer = Acts::HelicalTrackLinearizer<Propagator>;
85
- using VertexFitter = Acts::FullBilloirVertexFitter<Acts::BoundTrackParameters, Linearizer>;
86
- using ImpactPointEstimator = Acts::ImpactPointEstimator<Acts::BoundTrackParameters, Propagator>;
87
- using VertexSeeder = Acts::ZScanVertexFinder<VertexFitter>;
88
- using VertexFinder = Acts::IterativeVertexFinder<VertexFitter, VertexSeeder>;
89
- using VertexFinderOptions = Acts::VertexingOptions<Acts::BoundTrackParameters>;
90
- #endif
91
69
92
70
ACTS_LOCAL_LOGGER (eicrecon::getSpdlogLogger (" IVF" , m_log));
93
71
94
72
Acts::EigenStepper<> stepper (m_BField);
95
73
96
74
// Set up propagator with void navigator
97
- #if Acts_VERSION_MAJOR >= 32
98
75
auto propagator = std::make_shared<Propagator>(
99
76
stepper, Acts::VoidNavigator{}, logger ().cloneWithSuffix (" Prop" ));
100
- #else
101
- auto propagator = std::make_shared<Propagator>(
102
- stepper, Acts::detail::VoidNavigator{}, logger ().cloneWithSuffix (" Prop" ));
103
- #endif
104
77
105
78
// Setup the track linearizer
106
- #if Acts_VERSION_MAJOR >= 33
107
79
Linearizer::Config linearizerCfg;
108
80
linearizerCfg.bField = m_BField;
109
81
linearizerCfg.propagator = propagator;
110
- #else
111
- Linearizer::Config linearizerCfg (m_BField, propagator);
112
- #endif
113
82
Linearizer linearizer (linearizerCfg, logger ().cloneWithSuffix (" HelLin" ));
114
83
115
84
// Setup the vertex fitter
116
85
VertexFitter::Config vertexFitterCfg;
117
- #if Acts_VERSION_MAJOR >= 33
118
86
vertexFitterCfg.extractParameters
119
87
.connect <&Acts::InputTrack::extractParameters>();
120
88
vertexFitterCfg.trackLinearizer .connect <&Linearizer::linearizeTrack>(
121
89
&linearizer);
122
- #endif
123
90
VertexFitter vertexFitter (vertexFitterCfg);
124
91
125
92
// Setup the seed finder
126
93
ImpactPointEstimator::Config ipEstCfg (m_BField, propagator);
127
94
ImpactPointEstimator ipEst (ipEstCfg);
128
95
VertexSeeder::Config seederCfg (ipEst);
129
- #if Acts_VERSION_MAJOR >= 33
130
96
seederCfg.extractParameters
131
97
.connect <&Acts::InputTrack::extractParameters>();
132
98
auto seeder = std::make_shared<VertexSeeder>(seederCfg);
133
- #else
134
- VertexSeeder seeder (seederCfg);
135
- #endif
136
99
137
100
// Set up the actual vertex finder
138
101
VertexFinder::Config finderCfg (
139
102
std::move (vertexFitter),
140
- #if Acts_VERSION_MAJOR < 33
141
- std::move (linearizer),
142
- #endif
143
103
std::move (seeder),
144
104
std::move (ipEst));
145
105
finderCfg.maxVertices = m_cfg.maxVertices ;
146
106
finderCfg.reassignTracksAfterFirstFit = m_cfg.reassignTracksAfterFirstFit ;
147
- #if Acts_VERSION_MAJOR >= 31
148
- #if Acts_VERSION_MAJOR >= 33
149
107
finderCfg.extractParameters .connect <&Acts::InputTrack::extractParameters>();
150
108
finderCfg.trackLinearizer .connect <&Linearizer::linearizeTrack>(&linearizer);
151
109
#if Acts_VERSION_MAJOR >= 36
@@ -154,26 +112,14 @@ std::unique_ptr<edm4eic::VertexCollection> eicrecon::IterativeVertexFinder::prod
154
112
finderCfg.field = std::dynamic_pointer_cast<Acts::MagneticFieldProvider>(
155
113
std::const_pointer_cast<eicrecon::BField::DD4hepBField>(m_BField));
156
114
#endif
157
- #endif
158
115
VertexFinder finder (std::move (finderCfg));
159
- #else
160
- VertexFinder finder (finderCfg);
161
- #endif
162
- #if Acts_VERSION_MAJOR >= 33
163
116
Acts::IVertexFinder::State state (
164
117
std::in_place_type<VertexFinder::State>,
165
118
*m_BField,
166
119
m_fieldctx);
167
- #else
168
- VertexFinder::State state (*m_BField, m_fieldctx);
169
- #endif
170
120
VertexFinderOptions finderOpts (m_geoctx, m_fieldctx);
171
121
172
- #if Acts_VERSION_MAJOR >= 33
173
122
std::vector<Acts::InputTrack> inputTracks;
174
- #else
175
- std::vector<const Acts::BoundTrackParameters*> inputTrackPointers;
176
- #endif
177
123
178
124
for (const auto & trajectory : trajectories) {
179
125
auto tips = trajectory->tips ();
@@ -184,22 +130,13 @@ std::unique_ptr<edm4eic::VertexCollection> eicrecon::IterativeVertexFinder::prod
184
130
for (auto & tip : tips) {
185
131
ActsExamples::TrackParameters par = trajectory->trackParameters (tip);
186
132
187
- #if Acts_VERSION_MAJOR >= 33
188
133
inputTracks.emplace_back (&(trajectory->trackParameters (tip)));
189
- #else
190
- inputTrackPointers.push_back (&(trajectory->trackParameters (tip)));
191
- #endif
192
134
m_log->trace (" Track local position at input = {} mm, {} mm" , par.localPosition ().x () / Acts::UnitConstants::mm, par.localPosition ().y () / Acts::UnitConstants::mm);
193
135
}
194
136
}
195
137
196
- #if Acts_VERSION_MAJOR >= 33
197
138
std::vector<Acts::Vertex> vertices;
198
139
auto result = finder.find (inputTracks, finderOpts, state);
199
- #else
200
- std::vector<Acts::Vertex<Acts::BoundTrackParameters>> vertices;
201
- auto result = finder.find (inputTrackPointers, finderOpts, state);
202
- #endif
203
140
if (result.ok ()) {
204
141
vertices = std::move (result.value ());
205
142
}
@@ -222,11 +159,7 @@ std::unique_ptr<edm4eic::VertexCollection> eicrecon::IterativeVertexFinder::prod
222
159
eicvertex.setPositionError (cov); // covariance
223
160
224
161
for (const auto & t : vtx.tracks ()) {
225
- #if Acts_VERSION_MAJOR >= 33
226
162
const auto & par = finderCfg.extractParameters (t.originalParams );
227
- #else
228
- const auto & par = *t.originalParams ;
229
- #endif
230
163
m_log->trace (" Track local position from vertex = {} mm, {} mm" , par.localPosition ().x () / Acts::UnitConstants::mm, par.localPosition ().y () / Acts::UnitConstants::mm);
231
164
float loc_a = par.localPosition ().x ();
232
165
float loc_b = par.localPosition ().y ();
0 commit comments