ATLAS Offline Software
Loading...
Searching...
No Matches
ActsTrk::TracccTrackConverterAlg Class Reference

Algorithm converting traccc tracks ( tracks + track states sdevice buffer) to ACTS tracks (host container). More...

#include <TracccTrackConverterAlg.h>

Inheritance diagram for ActsTrk::TracccTrackConverterAlg:

Public Member Functions

virtual StatusCode initialize () override
 Function initializing the algorithm.
virtual StatusCode execute (const EventContext &ctx) const override
 Function executing the algorithm.
virtual StatusCode finalize () override
 Function finalizing the algorthm.
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
 Get filter decision:
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 Set filter decision:
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

const xAOD::UncalibratedMeasurementmakeSourceLink (const unsigned int &meas_index, std::span< const unsigned int > pixelMap, std::span< const unsigned int > stripMap, const xAOD::PixelClusterContainer &pixel_clusters, const xAOD::StripClusterContainer &strip_clusters) const
const Acts::Surface & findActsSurface (const Acts::GeometryIdentifier &actsID) const
std::optional< Acts::BoundTrackParameters > convertGlobalToActsParameters (traccc::bound_track_parameters< traccc::default_algebra > const &trkParams) const
template<typename state_t>
std::optional< Acts::BoundTrackParameters > convertSmoothedToActsParameters (traccc::edm::track_state< state_t > const &state) const
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default).
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default).
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared
The input device resident cluster, measurement and cell collection names

{@

SG::ReadHandleKey< xAOD::PixelClusterContainerm_inputPixelClustersKey
SG::ReadHandleKey< xAOD::StripClusterContainerm_inputStripClustersKey
SG::ReadHandleKey< std::vector< unsigned int > > m_inputMeasToPixelSPKey
SG::ReadHandleKey< std::vector< unsigned int > > m_inputMeasToStripClKey
SG::ReadHandleKey< traccc_track_container::buffer > m_inputTracksKey
The output host resident track container name

{@

SG::WriteHandleKey< ActsTrk::TrackContainerm_outputTracksKey
The host memory resource tool to use for memory allocations
ToolHandle< AthDevice::IMemoryResourceToolm_hostMR
The copy tool used for copying data from device
ToolHandle< AthDevice::ICopyToolm_copy
std::shared_ptr< const Acts::TrackingGeometry > m_trackingGeometry
ServiceHandle< ActsTrk::ITrackingGeometrySvcm_trackingGeometrySvc {this, "TrackingGeometrySvc", "ActsTrackingGeometrySvc"}
std::map< Acts::GeometryIdentifier, const Acts::Surface * > m_actsSurfaceMap
ActsTrk::MutableTrackContainerHandlesHelper m_tracksBackendHandlesHelper
The detector description service providing the Athena<->Detray ID map
Gaudi::Property< std::string > m_geoIdMappingObjectName {this, "GeoIdMapping", "", "ID mapping between the three detector description realms."}
const ActsTrk::GeometryIdMappingm_idMapping {nullptr}
Gaudi::Property< std::string > m_hostDetectorObjectName
const traccc::host_detector * m_hostDetector = nullptr
std::atomic< int > m_nTracksIn = 0
 The object counters for debug prints in finalize method {.
std::atomic< int > m_nTracksOut = 0
std::atomic< int > m_nExcludedFitOutcome = 0
std::atomic< int > m_nExcludedNoState = 0
std::atomic< int > m_nExcludedBadNdf = 0
std::atomic< int > m_nExcludedWeirdState = 0
std::atomic< int > m_nExcludedWeirdGlobal = 0

Detailed Description

Algorithm converting traccc tracks ( tracks + track states sdevice buffer) to ACTS tracks (host container).

This algorithm retrieves the input device resident traccc track and track states collection from the event store, copies the data to host buffer and converts the traccc tracks to ActsTrk::Track. It works under the assumption that the other relevant traccc objects have already been converted to xAOD and are available on host in the event store and that the indices between the HOST and DEVICE resident containers have been recorded in a index map.

Author
Neža Ribarič neza..nosp@m.riba.nosp@m.ric@c.nosp@m.ern..nosp@m.ch

Definition at line 45 of file TracccTrackConverterAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Function Documentation

◆ convertGlobalToActsParameters()

std::optional< Acts::BoundTrackParameters > ActsTrk::TracccTrackConverterAlg::convertGlobalToActsParameters ( traccc::bound_track_parameters< traccc::default_algebra > const & trkParams) const
private

Definition at line 126 of file TracccTrackConverterAlg.cxx.

129{
130 if (trkParams.bound_local()[0] == 0 && trkParams.bound_local()[1] == 0 &&
131 trkParams.phi() == 0 && trkParams.theta() == 0 &&
132 trkParams.qop() == 0 && trkParams.time() == 0) {
133 // traccc reports degenerate states like this; treat as "no
134 // parameters" rather than as a real (but zeroed-out) track.
135 return std::nullopt;
136 }
137
138 const auto& detrayDetector = m_hostDetector->as<traccc::itk_detector>();
139 const detray::tracking_surface detray_surface{detrayDetector, trkParams.surface_link()};
140 const auto geo_id = detray_surface.source();
141 const Acts::GeometryIdentifier acts_geom_id{geo_id};
142
143 const Acts::Surface& surface = findActsSurface(acts_geom_id);
144
145 Acts::BoundVector params;
146 params << trkParams.bound_local()[0], trkParams.bound_local()[1],
147 trkParams.phi(), trkParams.theta(), trkParams.qop(), trkParams.time();
148
149 // ---- sanity-check units ----
150 const double qop = trkParams.qop();
151 const double p = (qop != 0) ? 1.0 / std::abs(qop) : 0.0;
152 const double pT = p * std::sin(trkParams.theta());
153 ATH_MSG_DEBUG("Global params: d0=" << trkParams.bound_local()[0]
154 << " z0=" << trkParams.bound_local()[1]
155 << " phi=" << trkParams.phi()
156 << " theta=" << trkParams.theta()
157 << " qop=" << qop
158 << " -> |p|=" << p << " pT=" << pT
159 << " charge=" << (qop > 0 ? +1 : -1)
160 << " time=" << trkParams.time());
161
162 // Traccc covariance has no time uncertainty; Acts::BoundMatrix does
163 // (it's eBoundSize x eBoundSize == 6x6). For now leave the time row/column at the
164 // Identity() values set above and only fill the spatial+qop values.
165 static constexpr unsigned int kAtlasCovSize = 5; // d0, z0, phi, theta, qop (no time)
166
167 Acts::BoundMatrix cov = Acts::BoundMatrix::Identity();
168 const auto& atlasCov = trkParams.covariance();
169 for (unsigned i = 0; i < kAtlasCovSize; ++i) {
170 for (unsigned j = 0; j < kAtlasCovSize; ++j) {
171 cov(i, j) = atlasCov[i][j];
172 }
173 }
174
175 return Acts::BoundTrackParameters(surface.getSharedPtr(), params, cov,
176 Acts::ParticleHypothesis::pion());
177}
#define ATH_MSG_DEBUG(x,...)
const Acts::Surface & findActsSurface(const Acts::GeometryIdentifier &actsID) const
const traccc::host_detector * m_hostDetector
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)

◆ convertSmoothedToActsParameters()

template<typename state_t>
std::optional< Acts::BoundTrackParameters > ActsTrk::TracccTrackConverterAlg::convertSmoothedToActsParameters ( traccc::edm::track_state< state_t > const & state) const
private

Definition at line 181 of file TracccTrackConverterAlg.cxx.

183{
184 const auto& atlasParam = state.smoothed_params();
185
186 if (atlasParam.bound_local()[0] == 0 && atlasParam.bound_local()[1] == 0 &&
187 atlasParam.phi() == 0 && atlasParam.theta() == 0 &&
188 atlasParam.qop() == 0 && atlasParam.time() == 0) {
189 // traccc reports degenerate states like this; treat as "no
190 // parameters" rather than as a real (but zeroed-out) state.
191 return std::nullopt;
192 }
193
194 const auto& detrayDetector = m_hostDetector->as<traccc::itk_detector>();
195 const detray::tracking_surface detray_surface{detrayDetector, atlasParam.surface_link()};
196 const auto geo_id = detray_surface.source();
197 const Acts::GeometryIdentifier acts_geom_id{geo_id};
198
199 const Acts::Surface& surface = findActsSurface(acts_geom_id);
200
201 // d0/z0 come from the measurement's local position; the remaining bound
202 // parameters come from the smoothed track state.
203 Acts::BoundVector params;
204 params << atlasParam.bound_local()[0], atlasParam.bound_local()[1],
205 atlasParam.phi(), atlasParam.theta(), atlasParam.qop(),
206 atlasParam.time();
207
208 // ---- per-state momentum check for sanity ----
209 const double qop = atlasParam.qop();
210 const double p = (qop != 0) ? 1.0 / std::abs(qop) : 0.0;
211 const double pT = p * std::sin(atlasParam.theta());
212 ATH_MSG_DEBUG("Smoothed state: d0=" << atlasParam.bound_local()[0]
213 << " z0=" << atlasParam.bound_local()[1]
214 << " phi=" << atlasParam.phi()
215 << " theta=" << atlasParam.theta()
216 << " qop=" << qop
217 << " -> |p|=" << p << " pT=" << pT);
218
219 // Traccc covariance has no time uncertainty; Acts::BoundMatrix does
220 // (it's eBoundSize x eBoundSize == 6x6). For now leave the time row/column at the
221 // Identity() values set above and only fill the spatial+qop values.
222 static constexpr unsigned int kAtlasCovSize = 5; // d0, z0, phi, theta, qop (no time)
223
224 Acts::BoundMatrix cov = Acts::BoundMatrix::Identity();
225 const auto& atlasCov = atlasParam.covariance();
226 for (unsigned i = 0; i < kAtlasCovSize; ++i) {
227 for (unsigned j = 0; j < kAtlasCovSize; ++j) {
228 cov(i, j) = atlasCov[i][j];
229 }
230 }
231
232 return Acts::BoundTrackParameters(surface.getSharedPtr(), params, cov,
233 Acts::ParticleHypothesis::pion());
234}

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode ActsTrk::TracccTrackConverterAlg::execute ( const EventContext & ctx) const
overridevirtual

Function executing the algorithm.

Definition at line 236 of file TracccTrackConverterAlg.cxx.

237{
238 // ---- Retrieve HOST RESIDENT clusters (always needed) ----
239 // These are made during the TracccMeasurementConverterAlg
240 auto pixel_clusters = SG::makeHandle(m_inputPixelClustersKey, ctx);
241 ATH_CHECK(pixel_clusters.isValid());
242
243 auto strip_clusters = SG::makeHandle(m_inputStripClustersKey, ctx);
244 ATH_CHECK(strip_clusters.isValid());
245
246 // ---- Retrieve mapping from traccc measurement index to pixel cluster/spacepoint index (always needed) ----
247 // Because the SPs were created from xAOD pixel clusters on the host, the same traccc measurement index
248 // points to the xAOD pixel cluster and xAOD spacepoint in their respective containers
249 auto pixelMeasMap = SG::makeHandle(m_inputMeasToPixelSPKey, ctx);
250 ATH_CHECK(pixelMeasMap.isValid());
251
252 auto stripMeasMap = SG::makeHandle(m_inputMeasToStripClKey, ctx);
253 ATH_CHECK(stripMeasMap.isValid());
254
255 if(stripMeasMap->size() == 0 || pixelMeasMap->size() == 0){
256 ATH_MSG_FATAL("Maps relating traccc measurements to xAOD cluster containers are empty!!");
257 return StatusCode::FAILURE;
258 }
259
260 // ---- Retrieve DEVICE resident traccc tracks and track states ----
261 auto tracks = SG::makeHandle(m_inputTracksKey, ctx);
262 ATH_CHECK(tracks.isValid());
263
264 auto copy = m_copy->copy(ctx);
265
266 traccc_track_container::buffer traccc_tracks_buffer;
267 traccc_tracks_buffer.tracks =
268 copy->to(tracks->tracks, m_hostMR->mr(),
269 nullptr, vecmem::copy::type::device_to_host);
270 traccc_tracks_buffer.states =
271 copy->to(tracks->states, m_hostMR->mr(),
272 nullptr, vecmem::copy::type::device_to_host);
273
274 traccc_track_container::const_device traccc_tracks(
275 traccc_tracks_buffer);
276
277 ATH_MSG_DEBUG("Read " << traccc_tracks.tracks.size() << " tracks from device.");
278 m_nTracksIn += traccc_tracks.tracks.size();
279
280 // -- Write HOST resident ACTS track container ----
281 Acts::VectorTrackContainer trackBackend;
282 Acts::VectorMultiTrajectory trackStateBackend;
283 ActsTrk::MutableTrackContainer trackContainer(std::move(trackBackend),
284 std::move(trackStateBackend));
285
286 // Bookkeeping for debug summary
287 unsigned nExcludedFitOutcome = 0;
288 unsigned nExcludedNoState = 0;
289 unsigned nExcludedBadNdf = 0;
290 unsigned nExcludedWeirdState = 0;
291 unsigned nExcludedWeirdGlobal = 0;
292
293 for (std::size_t i = 0; i < traccc_tracks.tracks.size(); ++i) {
294
295 const traccc::edm::track track = traccc_tracks.tracks.at(i);
296
297 const auto fitOutcome = track.fit_outcome();
298 if (fitOutcome == traccc::track_fit_outcome::FAILURE_NON_POSITIVE_NDF ||
299 fitOutcome == traccc::track_fit_outcome::FAILURE_NOT_ALL_SMOOTHED ||
300 fitOutcome == traccc::track_fit_outcome::UNKNOWN) {
301 ATH_MSG_DEBUG("Skipping track " << i << ": fit outcome "
302 << static_cast<int>(fitOutcome));
303 ++nExcludedFitOutcome;
304 continue;
305 }
306
307 if (track.constituent_links().empty()) {
308 ++nExcludedNoState;
309 continue;
310 }
311
312 if (track.ndf() >
313 static_cast<float>(std::numeric_limits<unsigned int>::max()) ||
314 track.ndf() <
315 static_cast<float>(std::numeric_limits<unsigned int>::min())) {
316 ++nExcludedBadNdf;
317 continue;
318 }
319
320 TrackValidity track_validity = kValid;
321
322 auto actsTrack = trackContainer.makeTrack();
323 actsTrack.chi2() = track.chi2();
324 actsTrack.nDoF() = track.ndf();
325
326 Acts::TrackStatePropMask const state_mask =
327 Acts::TrackStatePropMask::Smoothed;
328
329 bool firstState = true;
330
331 for (const auto [linkType, stateIdx] : track.constituent_links()) {
332
333 assert(linkType == traccc::edm::track_constituent_link::track_state);
334
335 const auto& state = traccc_tracks.states.at(stateIdx);
336 const auto& meas_index = state.measurement_index();
337
338 auto trackState = actsTrack.appendTrackState(state_mask);
339 trackState.typeFlags().setIsMeasurement();
340
341 const std::optional<Acts::BoundTrackParameters> smoothed =
343
344 if (!smoothed) {
345 ATH_MSG_DEBUG("Track " << i << ": degenerate smoothed state, "
346 "dropping track");
347 track_validity = TrackValidity::kInvalidState;
348 break;
349 }
350
351 const xAOD::UncalibratedMeasurement* sourceLink =
352 &makeSourceLink(meas_index, *pixelMeasMap, *stripMeasMap, *pixel_clusters, *strip_clusters);
353
354 trackState.setUncalibratedSourceLink(ActsTrk::detail::xAODUncalibMeasCalibrator::pack(sourceLink));
355
356 // traccc does not yet do backpropagation, so there is no true
357 // reference surface (perigee) for the track. We use the surface
358 // of the first measurement instead and rely on back-propagation
359 // during the later Acts -> xAOD conversion step to find the real
360 // perigee.
361 if (firstState) {
362 const std::optional<Acts::BoundTrackParameters> global =
364 if (!global) {
365 ATH_MSG_DEBUG("Track "
366 << i
367 << ": degenerate global parameters, "
368 "dropping track");
370 break;
371 }
372 actsTrack.parameters() = global->parameters();
373 actsTrack.covariance() = *global->covariance();
374 actsTrack.setReferenceSurface(
375 global->referenceSurface().getSharedPtr());
376 firstState = false;
377 }
378
379 try {
380 trackState.setReferenceSurface(
381 smoothed->referenceSurface().getSharedPtr());
382 trackState.smoothed() = smoothed->parameters();
383 trackState.smoothedCovariance() = *smoothed->covariance();
384 } catch (const std::exception& e) {
385 ATH_MSG_ERROR("Track " << i << ": failed to set track state ("
386 << e.what() << ")");
387 }
388
389 }
390
391 if (track_validity == TrackValidity::kInvalidState) {
392 ++nExcludedWeirdState;
393 trackContainer.removeTrack(actsTrack.index());
394 } else if (track_validity == TrackValidity::kInvalidGlobalParams) {
395 ++nExcludedWeirdGlobal;
396 trackContainer.removeTrack(actsTrack.index());
397 } else {
398 // sanity checks
399 const auto& pars = actsTrack.parameters();
400 const double qop = pars[Acts::eBoundQOverP];
401 const double p = (qop != 0) ? 1.0 / std::abs(qop) : 0.0;
402 const double pT = p * std::sin(pars[Acts::eBoundTheta]);
403 ATH_MSG_DEBUG("Track " << i << " ACCEPTED: nHits="
404 << track.constituent_links().size()
405 << " chi2=" << track.chi2()
406 << " ndf=" << track.ndf()
407 << " |p|=" << p << " GeV pT=" << pT << " GeV");
408 }
409
410 }
411
412 ATH_MSG_DEBUG("Converted " << trackContainer.size() << " tracks to " << m_outputTracksKey.key() );
413 ATH_MSG_DEBUG("excluded: "
414 << nExcludedFitOutcome << " (fit outcome), "
415 << nExcludedNoState << " (no state), "
416 << nExcludedBadNdf << " (bad ndf), "
417 << nExcludedWeirdState << " (weird state), "
418 << nExcludedWeirdGlobal << " (weird global params)");
419
420 m_nExcludedFitOutcome += nExcludedFitOutcome;
421 m_nExcludedNoState += nExcludedNoState;
422 m_nExcludedBadNdf += nExcludedBadNdf;
423 m_nExcludedWeirdState += nExcludedWeirdState;
424 m_nExcludedWeirdGlobal += nExcludedWeirdGlobal;
425
426 m_nTracksOut += trackContainer.size();
427
428 Acts::ConstVectorTrackContainer constTrackBackend(
429 std::move(trackContainer.container()));
430 Acts::ConstVectorMultiTrajectory constTrackStateBackend(
431 std::move(trackContainer.trackStateContainer()));
432 auto constTrackContainer = std::make_unique<ActsTrk::TrackContainer>(
433 std::move(constTrackBackend), std::move(constTrackStateBackend));
434
435 SG::WriteHandle<ActsTrk::TrackContainer> outputHandle(
436 m_outputTracksKey, ctx);
437 ATH_CHECK(outputHandle.record(std::move(constTrackContainer)));
438
439 return StatusCode::SUCCESS;
440}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x,...)
#define ATH_MSG_FATAL(x,...)
@ kInvalidGlobalParams
std::optional< Acts::BoundTrackParameters > convertGlobalToActsParameters(traccc::bound_track_parameters< traccc::default_algebra > const &trkParams) const
SG::ReadHandleKey< xAOD::StripClusterContainer > m_inputStripClustersKey
const xAOD::UncalibratedMeasurement & makeSourceLink(const unsigned int &meas_index, std::span< const unsigned int > pixelMap, std::span< const unsigned int > stripMap, const xAOD::PixelClusterContainer &pixel_clusters, const xAOD::StripClusterContainer &strip_clusters) const
ToolHandle< AthDevice::ICopyTool > m_copy
SG::ReadHandleKey< xAOD::PixelClusterContainer > m_inputPixelClustersKey
SG::ReadHandleKey< std::vector< unsigned int > > m_inputMeasToStripClKey
std::atomic< int > m_nTracksIn
The object counters for debug prints in finalize method {.
SG::ReadHandleKey< traccc_track_container::buffer > m_inputTracksKey
SG::WriteHandleKey< ActsTrk::TrackContainer > m_outputTracksKey
ToolHandle< AthDevice::IMemoryResourceTool > m_hostMR
SG::ReadHandleKey< std::vector< unsigned int > > m_inputMeasToPixelSPKey
std::optional< Acts::BoundTrackParameters > convertSmoothedToActsParameters(traccc::edm::track_state< state_t > const &state) const
static Acts::SourceLink pack(const Ptr_t &measurement)
Pack the measurement type pointer to an Acts::SourceLink including the intermediate conversion into a...
Acts::TrackContainer< MutableTrackBackend, MutableTrackStateBackend, Acts::detail::ValueHolder > MutableTrackContainer
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
bool copy
Definition calibdata.py:26
UncalibratedMeasurement_v1 UncalibratedMeasurement
Define the version of the uncalibrated measurement class.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthCommonAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 89 of file AthCommonAlgorithm.cxx.

54{
55 // If we didn't find any symlinks to add, just return the collection
56 // from the base class. Otherwise, return the extended collection.
57 if (!m_extendedExtraObjects.empty()) {
59 }
61}
Common base class for algorithms.

◆ filterPassed()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Get filter decision:

Definition at line 93 of file AthCommonAlgorithm.h.

93 {
94 return execState( ctx ).filterPassed();
95 }
virtual bool filterPassed(const EventContext &ctx) const
Get filter decision:

◆ finalize()

StatusCode ActsTrk::TracccTrackConverterAlg::finalize ( )
overridevirtual

Function finalizing the algorthm.

Definition at line 442 of file TracccTrackConverterAlg.cxx.

443{
444 ATH_MSG_DEBUG("Finalizing.");
445
446 ATH_MSG_DEBUG("Received " << m_nTracksIn << " tracks, wrote " << m_nTracksOut);
447 ATH_MSG_DEBUG("Excluded: "
448 << m_nExcludedFitOutcome << " (fit outcome), "
449 << m_nExcludedNoState << " (no state), "
450 << m_nExcludedBadNdf << " (bad ndf), "
451 << m_nExcludedWeirdState << " (weird state), "
452 << m_nExcludedWeirdGlobal << " (weird global params)");
453
454 ATH_MSG_DEBUG("Successfully finalized");
455 return StatusCode::SUCCESS;
456}

◆ findActsSurface()

const Acts::Surface & ActsTrk::TracccTrackConverterAlg::findActsSurface ( const Acts::GeometryIdentifier & actsID) const
private

Definition at line 113 of file TracccTrackConverterAlg.cxx.

115{
116 const auto surfaceIt = m_actsSurfaceMap.find(actsID);
117 if (surfaceIt == m_actsSurfaceMap.end()) {
118 ATH_MSG_ERROR("No Acts surface known for Acts geometry id "
119 << actsID);
120 throw std::domain_error("No Acts surface for this geometry id");
121 }
122 return *surfaceIt->second;
123}
std::map< Acts::GeometryIdentifier, const Acts::Surface * > m_actsSurfaceMap

◆ initialize()

StatusCode ActsTrk::TracccTrackConverterAlg::initialize ( )
overridevirtual

Function initializing the algorithm.

Definition at line 19 of file TracccTrackConverterAlg.cxx.

20{
21 ATH_MSG_DEBUG("Initializing.");
22
23 ATH_CHECK(m_hostMR.retrieve());
24 ATH_CHECK(m_copy.retrieve());
25
30
31 ATH_CHECK(m_inputTracksKey.initialize());
32 ATH_CHECK(m_outputTracksKey.initialize());
33
36
37 // Build the ACTS-surface <-> ACTS-id lookup map once,
38 // up front, rather than re-deriving them per event.
39 // Possibly this will be built during ACTS->Detray conversion
40 // Possibly this is an issue when the tracking geometry changes between events
41 if (!m_trackingGeometrySvc.empty()) {
43 m_trackingGeometry = m_trackingGeometrySvc->trackingGeometry();
44 m_trackingGeometry->visitSurfaces([&](const Acts::Surface* surface) {
45 if (!surface) return;
46 // m_allsurfaces.push_back(surface->getSharedPtr());
47 const auto *actsElement = getActsDetectorElement(surface);
48 if (!actsElement){
49 ATH_MSG_DEBUG("Could not find matching Acts detector element for surface with geometryId " << surface->geometryId());
50 return;
51 }
52 if(dynamic_cast<const InDetDD::HGTD_DetectorElement*>(actsElement->upstreamDetectorElement()) != nullptr) {
53 // skip HGTD surfaces for now
54 // currently no time info is being used in traccc
55 ATH_MSG_VERBOSE("Found HGTD surface with geometryId " << surface->geometryId());
56 return;
57 }
58 const auto *geoElement = actsElement->upstreamDetectorElement();
59 const auto *detElem = dynamic_cast<const InDetDD::SiDetectorElement*>(geoElement);
60 if (!geoElement || !detElem) {
61 ATH_MSG_DEBUG("Could not find matching Athena silicon detector element for surface with geometryId " << surface->geometryId());
62 return;
63 }
64
65 const Acts::GeometryIdentifier actsID = surface->geometryId();
66 const auto [it, inserted] = m_actsSurfaceMap.insert({actsID, surface});
67 if (!inserted) {
68 ATH_MSG_WARNING("ACTS id " << actsID
69 << " maps to two Acts surfaces: "
70 << it->second->geometryId() << " and "
71 << surface->geometryId());
72 }
73
74 });
75
76 }else {
77 ATH_MSG_FATAL("TrackingGeometrySvc is not configured, cannot translate Traccc tracks to ACTS tracks");
78 return StatusCode::FAILURE;
79 }
80
83 m_outputTracksKey.key())));
84
85 ATH_MSG_DEBUG("Successfully initialized");
86 return StatusCode::SUCCESS;
87}
const ActsDetectorElement * getActsDetectorElement(const Acts::Surface &surf)
Attempts to retrieve the ActsDetectorElement associated to the passed ActsSurface.
#define ATH_MSG_WARNING(x,...)
#define ATH_MSG_VERBOSE(x,...)
Gaudi::Property< std::string > m_hostDetectorObjectName
std::shared_ptr< const Acts::TrackingGeometry > m_trackingGeometry
Gaudi::Property< std::string > m_geoIdMappingObjectName
ServiceHandle< ActsTrk::ITrackingGeometrySvc > m_trackingGeometrySvc
ActsTrk::MutableTrackContainerHandlesHelper m_tracksBackendHandlesHelper
const ActsTrk::GeometryIdMapping * m_idMapping
const ServiceHandle< StoreGateSvc > & detStore() const
std::string prefixFromTrackContainerName(const std::string &tracks)
Parse TrackContainer name to get the prefix for backends The name has to contain XYZTracks,...

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isClonable()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::isClonable ( ) const
inlineoverridevirtualinherited

Specify if the algorithm is clonable.

Only relevant for non-reentrant algorithms. Actual number of clones needs to be set via the "Cardinality" property.

Reimplemented in AFP_DigiTop, AlgB, AlgT, BCM_Digitization, CscDigitBuilder, CscDigitToCscRDO, G4AtlasAlg, G4RunAlg, HGTD_Digitization, HiveAlgBase, InDet::GNNSeedingTrackMaker, InDet::SCT_Clusterization, InDet::SiSPGNNTrackMaker, InDet::SiSPSeededTrackFinder, InDet::SiTrackerSpacePointFinder, ISF::SimKernelMT, ITk::StripDigitization, ITkPixelCablingAlg, ITkStripCablingAlg, LArHitEMapMaker, LArTTL1Maker, LUCID_DigiTop, LVL1::L1TopoSimulation, MergeCalibHits, MergeGenericMuonSimHitColl, MergeHijingPars, MergeMcEventCollection, MergeTrackRecordCollection, MergeTruthJets, MergeTruthParticles, MuonDigitizer, PileUpMTAlg, PixelDigitization, RoIBResultToxAOD, SCT_ByteStreamErrorsTestAlg, SCT_CablingCondAlgFromCoraCool, SCT_CablingCondAlgFromText, SCT_ConditionsParameterTestAlg, SCT_ConditionsSummaryTestAlg, SCT_ConfigurationConditionsTestAlg, SCT_Digitization, SCT_FlaggedConditionTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_PrepDataToxAOD, SCT_RawDataToxAOD, SCT_ReadCalibChipDataTestAlg, SCT_ReadCalibDataTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_SiliconConditionsTestAlg, SCT_StripVetoTestAlg, SCT_TdaqEnabledTestAlg, SCT_TestCablingAlg, SCTEventFlagWriter, SCTRawDataProvider, SCTSiLorentzAngleTestAlg, SCTSiPropertiesTestAlg, SGInputLoader, Simulation::BeamEffectsAlg, TileHitVecToCnt, TileMuonFitter, TilePulseForTileMuonReceiver, TileRawChannelMaker, TRTDigitization, and ZDC_DigiTop.

Definition at line 68 of file AthCommonAlgorithm.h.

68 {
69 return true;
70 }

◆ makeSourceLink()

const xAOD::UncalibratedMeasurement & ActsTrk::TracccTrackConverterAlg::makeSourceLink ( const unsigned int & meas_index,
std::span< const unsigned int > pixelMap,
std::span< const unsigned int > stripMap,
const xAOD::PixelClusterContainer & pixel_clusters,
const xAOD::StripClusterContainer & strip_clusters ) const
private

Definition at line 90 of file TracccTrackConverterAlg.cxx.

96{
97 const unsigned int pixel_index = (pixelMap)[meas_index];
98 if(pixel_index != std::numeric_limits<unsigned int>::max()){
99
100 return *pixel_clusters.at(pixel_index);
101 }
102
103 const unsigned int strip_index = (stripMap)[meas_index];
104 if(strip_index != std::numeric_limits<unsigned int>::max()){
105 return *strip_clusters.at(strip_index);
106 }
107
108 ATH_MSG_FATAL("Measurement index could not be found!!!");
109 throw std::domain_error("No measurement index match found in xAOD map");
110
111}
const T * at(size_type n) const
Access an element, as an rvalue.

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Set filter decision:

Reimplemented in AthFilterAlgorithm.

Definition at line 99 of file AthCommonAlgorithm.h.

99 {
101 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const
Set filter decision:

◆ sysExecute()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Reimplemented in AthAnalysisAlgorithm.

Definition at line 80 of file AthCommonAlgorithm.cxx.

41{
42 return BaseAlg::sysExecute (ctx);
43}

◆ sysInitialize()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, HypoBase, InputMakerBase, and PyAthena::Alg.

Definition at line 60 of file AthCommonAlgorithm.cxx.

71 {
73
74 if (sc.isFailure()) {
75 return sc;
76 }
77
78 ServiceHandle<ICondSvc> cs("CondSvc",name());
79 for (auto h : outputHandles()) {
80 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
81 // do this inside the loop so we don't create the CondSvc until needed
82 if ( cs.retrieve().isFailure() ) {
83 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
85 }
86 if (cs->regHandle(this,*h).isFailure()) {
88 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
89 << " with CondSvc");
90 }
91 }
92 }
93 return sc;
94}
virtual StatusCode sysInitialize() override
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

Member Data Documentation

◆ m_actsSurfaceMap

std::map<Acts::GeometryIdentifier, const Acts::Surface*> ActsTrk::TracccTrackConverterAlg::m_actsSurfaceMap
private

Definition at line 110 of file TracccTrackConverterAlg.h.

◆ m_copy

ToolHandle<AthDevice::ICopyTool> ActsTrk::TracccTrackConverterAlg::m_copy
private
Initial value:
{
this, "CopyProviderTool", "", "Vecmem copy provider tool"}

Definition at line 105 of file TracccTrackConverterAlg.h.

105 {
106 this, "CopyProviderTool", "", "Vecmem copy provider tool"};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 108 of file AthCommonAlgorithm.h.

◆ m_geoIdMappingObjectName

Gaudi::Property<std::string> ActsTrk::TracccTrackConverterAlg::m_geoIdMappingObjectName {this, "GeoIdMapping", "", "ID mapping between the three detector description realms."}
private

Definition at line 115 of file TracccTrackConverterAlg.h.

115{this, "GeoIdMapping", "", "ID mapping between the three detector description realms."};

◆ m_hostDetector

const traccc::host_detector* ActsTrk::TracccTrackConverterAlg::m_hostDetector = nullptr
private

Definition at line 120 of file TracccTrackConverterAlg.h.

◆ m_hostDetectorObjectName

Gaudi::Property<std::string> ActsTrk::TracccTrackConverterAlg::m_hostDetectorObjectName
private
Initial value:
{
this, "HostDetectorName", "",
"Detray host detector object"}

Definition at line 117 of file TracccTrackConverterAlg.h.

117 {
118 this, "HostDetectorName", "",
119 "Detray host detector object"};

◆ m_hostMR

ToolHandle<AthDevice::IMemoryResourceTool> ActsTrk::TracccTrackConverterAlg::m_hostMR
private
Initial value:
{
this, "HostMR", "", "Host memory resource tool"}

Definition at line 102 of file TracccTrackConverterAlg.h.

102 {
103 this, "HostMR", "", "Host memory resource tool"};

◆ m_idMapping

const ActsTrk::GeometryIdMapping* ActsTrk::TracccTrackConverterAlg::m_idMapping {nullptr}
private

Definition at line 116 of file TracccTrackConverterAlg.h.

116{nullptr};

◆ m_inputMeasToPixelSPKey

SG::ReadHandleKey<std::vector<unsigned int> > ActsTrk::TracccTrackConverterAlg::m_inputMeasToPixelSPKey
private
Initial value:
{
this, "InputMeasToPixelSP", "",
"Input mapping from traccc measurement index to pixel spacepoint index"}

Definition at line 83 of file TracccTrackConverterAlg.h.

83 {
84 this, "InputMeasToPixelSP", "",
85 "Input mapping from traccc measurement index to pixel spacepoint index"};

◆ m_inputMeasToStripClKey

SG::ReadHandleKey<std::vector<unsigned int> > ActsTrk::TracccTrackConverterAlg::m_inputMeasToStripClKey
private
Initial value:
{
this, "InputMeasToStripCl", "",
"Input mapping from traccc measurement index to strip cluster index"}

Definition at line 86 of file TracccTrackConverterAlg.h.

86 {
87 this, "InputMeasToStripCl", "",
88 "Input mapping from traccc measurement index to strip cluster index"};

◆ m_inputPixelClustersKey

SG::ReadHandleKey<xAOD::PixelClusterContainer> ActsTrk::TracccTrackConverterAlg::m_inputPixelClustersKey
private
Initial value:
{
this, "InputPixelClusters", "",
"Input xAOD pixel clusters converted from Traccc"}

Definition at line 77 of file TracccTrackConverterAlg.h.

77 {
78 this, "InputPixelClusters", "",
79 "Input xAOD pixel clusters converted from Traccc"};

◆ m_inputStripClustersKey

SG::ReadHandleKey<xAOD::StripClusterContainer> ActsTrk::TracccTrackConverterAlg::m_inputStripClustersKey
private
Initial value:
{
this, "InputStripClusters", "",
"Input xAOD strip clusters converted from Traccc"}

Definition at line 80 of file TracccTrackConverterAlg.h.

80 {
81 this, "InputStripClusters", "",
82 "Input xAOD strip clusters converted from Traccc"};

◆ m_inputTracksKey

SG::ReadHandleKey<traccc_track_container::buffer> ActsTrk::TracccTrackConverterAlg::m_inputTracksKey
private
Initial value:
{
this, "InputTracks", "",
"Input traccc track collection buffer"}

Definition at line 89 of file TracccTrackConverterAlg.h.

89 {
90 this, "InputTracks", "",
91 "Input traccc track collection buffer"};

◆ m_nExcludedBadNdf

std::atomic<int> ActsTrk::TracccTrackConverterAlg::m_nExcludedBadNdf = 0
mutableprivate

Definition at line 127 of file TracccTrackConverterAlg.h.

◆ m_nExcludedFitOutcome

std::atomic<int> ActsTrk::TracccTrackConverterAlg::m_nExcludedFitOutcome = 0
mutableprivate

Definition at line 125 of file TracccTrackConverterAlg.h.

◆ m_nExcludedNoState

std::atomic<int> ActsTrk::TracccTrackConverterAlg::m_nExcludedNoState = 0
mutableprivate

Definition at line 126 of file TracccTrackConverterAlg.h.

◆ m_nExcludedWeirdGlobal

std::atomic<int> ActsTrk::TracccTrackConverterAlg::m_nExcludedWeirdGlobal = 0
mutableprivate

Definition at line 129 of file TracccTrackConverterAlg.h.

◆ m_nExcludedWeirdState

std::atomic<int> ActsTrk::TracccTrackConverterAlg::m_nExcludedWeirdState = 0
mutableprivate

Definition at line 128 of file TracccTrackConverterAlg.h.

◆ m_nTracksIn

std::atomic<int> ActsTrk::TracccTrackConverterAlg::m_nTracksIn = 0
mutableprivate

The object counters for debug prints in finalize method {.

Definition at line 123 of file TracccTrackConverterAlg.h.

◆ m_nTracksOut

std::atomic<int> ActsTrk::TracccTrackConverterAlg::m_nTracksOut = 0
mutableprivate

Definition at line 124 of file TracccTrackConverterAlg.h.

◆ m_outputTracksKey

SG::WriteHandleKey<ActsTrk::TrackContainer> ActsTrk::TracccTrackConverterAlg::m_outputTracksKey
private
Initial value:
{
this, "OutputTracks", "",
"Output ACTS track container"}

Definition at line 96 of file TracccTrackConverterAlg.h.

96 {
97 this, "OutputTracks", "",
98 "Output ACTS track container"};

◆ m_trackingGeometry

std::shared_ptr<const Acts::TrackingGeometry> ActsTrk::TracccTrackConverterAlg::m_trackingGeometry
private

Definition at line 108 of file TracccTrackConverterAlg.h.

◆ m_trackingGeometrySvc

ServiceHandle<ActsTrk::ITrackingGeometrySvc> ActsTrk::TracccTrackConverterAlg::m_trackingGeometrySvc {this, "TrackingGeometrySvc", "ActsTrackingGeometrySvc"}
private

Definition at line 109 of file TracccTrackConverterAlg.h.

109{this, "TrackingGeometrySvc", "ActsTrackingGeometrySvc"};

◆ m_tracksBackendHandlesHelper

ActsTrk::MutableTrackContainerHandlesHelper ActsTrk::TracccTrackConverterAlg::m_tracksBackendHandlesHelper
private
Initial value:
{
this}

Definition at line 112 of file TracccTrackConverterAlg.h.

112 {
113 this};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: