ATLAS Offline Software
Loading...
Searching...
No Matches
TrackStatePrinterTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ACTSTRACKRECONSTRUCTION_TRACKSTATEPRINTERTOOL_H
6#define ACTSTRACKRECONSTRUCTION_TRACKSTATEPRINTERTOOL_H
7
8// Base
10
11// ATHENA
13#include "GaudiKernel/EventContext.h"
17
18// ACTS CORE
19#include "Acts/Geometry/TrackingGeometry.hpp"
20#include "Acts/EventData/BoundTrackParameters.hpp"
21#include "Acts/EventData/TrackStateType.hpp"
22
23// PACKAGE
31// Other
32#include <vector>
33#include <memory>
34#include <tuple>
35#include <boost/container/small_vector.hpp>
36
37namespace Acts
38{
39 class Surface;
40}
41
42namespace ActsTrk
43{
44 class TrackStatePrinterTool : virtual public AthAlgTool
45 {
46 public:
47
49 virtual ~TrackStatePrinterTool() = default;
50
51 // standard Athena methods
52 virtual StatusCode initialize() override;
53
54
55 void printMeasurements(const EventContext &ctx,
56 const std::vector<const xAOD::UncalibratedMeasurementContainer *> &clusterContainers,
57 const std::vector<size_t> &offsets) const;
58
59 void
60 printSeed(const Acts::GeometryContext &tgContext,
61 const ActsTrk::Seed &seed,
62 const Acts::BoundTrackParameters &initialParameters,
63 const detail::MeasurementIndex &measurementIndexer,
64 unsigned int iseed,
65 bool isKF) const;
66
67 template <typename track_container_t>
68 void
69 printTrack(const Acts::GeometryContext &tgContext,
70 const track_container_t &tracks,
71 const typename track_container_t::TrackProxy &track,
72 const detail::MeasurementIndex &measurementIndexer,
73 bool rejected = false) const;
74
75 template <typename track_state_proxy_t>
76 bool
77 printTrackState(const Acts::GeometryContext &tgContext,
78 const track_state_proxy_t &state,
79 const detail::MeasurementIndex &measurementIndexer,
80 bool useFiltered = false,
81 bool newLine = true) const;
82
83 using MeasurementInfo = std::tuple<size_t,
85 std::vector<const xAOD::SpacePoint *>>;
86
87 private:
88 // Handles
89 SG::ReadHandleKeyArray<xAOD::SpacePointContainer> m_spacePointKey{this, "InputSpacePoints", {}, "Input Space Points for debugging"};
90
91 // Tools
92 PublicToolHandle<ActsTrk::ITrackingGeometryTool> m_trackingGeometryTool{this, "TrackingGeometryTool", ""};
93
95
96 // Configuration
97 Gaudi::Property<bool> m_compareMeasurementTransforms{this, "compareMeasurementTransforms", false, "compare measurement coordinates transformed with Athena or ACTS"};
98 Gaudi::Property<bool> m_printFilteredStates{this, "printFilteredStates", false, "print track states during filtering"};
99
100 // most measurements are associated to only one SP, but allow some headroom to reduce number of allocations
101 static constexpr unsigned int N_SP_PER_MEAS = 2;
102 template <class T>
103 using small_vector = boost::container::small_vector<T, N_SP_PER_MEAS>;
104
105 std::vector<std::vector<small_vector<const xAOD::SpacePoint *>>>
106 addSpacePoints(const EventContext &ctx,
107 const std::vector<const xAOD::UncalibratedMeasurementContainer *> &clusterContainers,
108 const std::vector<size_t> &offset) const;
109
110 void printMeasurementAssociatedSpacePoint(const Acts::GeometryContext &tgContext,
111 const xAOD::UncalibratedMeasurement *measurement,
112 const std::vector<small_vector<const xAOD::SpacePoint *>> &measToSp,
113 size_t offset) const;
114
115 // static member functions used by TrackStatePrinter.icc
116 static void printParameters(const Acts::Surface &surface, const Acts::GeometryContext &tgContext, const Acts::BoundVector &bound);
117 static std::string actsSurfaceName(const Acts::Surface &surface);
118 static std::string trackStateName(Acts::ConstTrackStateTypeMap trackStateType);
119
120 };
121
122} // namespace
123
125
126#endif
static void printParameters(const Acts::Surface &surface, const Acts::GeometryContext &tgContext, const Acts::BoundVector &bound)
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
detail::xAODUncalibMeasSurfAcc m_surfAcc
SG::ReadHandleKeyArray< xAOD::SpacePointContainer > m_spacePointKey
void printMeasurementAssociatedSpacePoint(const Acts::GeometryContext &tgContext, const xAOD::UncalibratedMeasurement *measurement, const std::vector< small_vector< const xAOD::SpacePoint * > > &measToSp, size_t offset) const
static std::string trackStateName(Acts::ConstTrackStateTypeMap trackStateType)
========================================================================= file-local static functions...
PublicToolHandle< ActsTrk::ITrackingGeometryTool > m_trackingGeometryTool
void printTrack(const Acts::GeometryContext &tgContext, const track_container_t &tracks, const typename track_container_t::TrackProxy &track, const detail::MeasurementIndex &measurementIndexer, bool rejected=false) const
virtual ~TrackStatePrinterTool()=default
std::tuple< size_t, const xAOD::UncalibratedMeasurement **, std::vector< const xAOD::SpacePoint * > > MeasurementInfo
Gaudi::Property< bool > m_printFilteredStates
Gaudi::Property< bool > m_compareMeasurementTransforms
void printMeasurements(const EventContext &ctx, const std::vector< const xAOD::UncalibratedMeasurementContainer * > &clusterContainers, const std::vector< size_t > &offsets) const
virtual StatusCode initialize() override
=========================================================================
static constexpr unsigned int N_SP_PER_MEAS
boost::container::small_vector< T, N_SP_PER_MEAS > small_vector
void printSeed(const Acts::GeometryContext &tgContext, const ActsTrk::Seed &seed, const Acts::BoundTrackParameters &initialParameters, const detail::MeasurementIndex &measurementIndexer, unsigned int iseed, bool isKF) const
bool printTrackState(const Acts::GeometryContext &tgContext, const track_state_proxy_t &state, const detail::MeasurementIndex &measurementIndexer, bool useFiltered=false, bool newLine=true) const
static std::string actsSurfaceName(const Acts::Surface &surface)
std::vector< std::vector< small_vector< const xAOD::SpacePoint * > > > addSpacePoints(const EventContext &ctx, const std::vector< const xAOD::UncalibratedMeasurementContainer * > &clusterContainers, const std::vector< size_t > &offset) const
Helper class to access the Acts::surface associated with an Uncalibrated xAOD measurement.
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
HandleKeyArray< ReadHandle< T >, ReadHandleKey< T >, Gaudi::DataHandle::Reader > ReadHandleKeyArray
UncalibratedMeasurement_v1 UncalibratedMeasurement
Define the version of the uncalibrated measurement class.