ATLAS Offline Software
ExpectedHitUtils.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef ACTSTRK_EXPECTEDHITUTILS_H
6 #define ACTSTRK_EXPECTEDHITUTILS_H
7 
9 #include "GaudiKernel/EventContext.h"
10 #include "Acts/Surfaces/CylinderSurface.hpp"
11 #include "Acts/EventData/TrackParameters.hpp"
13 #include <Acts/EventData/ProxyAccessor.hpp>
14 #include <array>
15 
17 
18 namespace ActsTrk::detail {
19 
26  inline static const std::string_view kExpectedLayerPatternColumnName = "expectedLayerPattern";
27 
28  inline static const std::string kPixelBarrel = std::string{kExpectedLayerPatternColumnName}+"_PixelBarrel";
29  inline static const std::string kPixelEndcap = std::string{kExpectedLayerPatternColumnName}+"_PixelEndcap";
30  inline static const std::string kStripBarrel = std::string{kExpectedLayerPatternColumnName}+"_StripBarrel";
31  inline static const std::string kStripEndcap = std::string{kExpectedLayerPatternColumnName}+"_StripEndcap";
32 
33 
34  template <typename track_container_t>
35  static void add(track_container_t& trackContainer) {
36  trackContainer.template addColumn<unsigned int>(kPixelBarrel);
37  trackContainer.template addColumn<unsigned int>(kPixelEndcap);
38  trackContainer.template addColumn<unsigned int>(kStripBarrel);
39  trackContainer.template addColumn<unsigned int>(kStripEndcap);
40  }
41 
42  template <typename track_container_t>
43  static bool exists(track_container_t& trackContainer) {
44  return trackContainer.hasColumn(kPixelBarrel)
45  && trackContainer.hasColumn(kPixelEndcap)
46  && trackContainer.hasColumn(kStripBarrel)
47  && trackContainer.hasColumn(kStripEndcap);
48  }
49 
50  template <typename track_proxy_t>
51  static void set(track_proxy_t& track, std::array<unsigned int, 4> values) {
52  static const Acts::ProxyAccessor<unsigned int> pixelBarrel{kPixelBarrel};
53  static const Acts::ProxyAccessor<unsigned int> pixelEndcap{kPixelEndcap};
54  static const Acts::ProxyAccessor<unsigned int> stripBarrel{kStripBarrel};
55  static const Acts::ProxyAccessor<unsigned int> stripEndcap{kStripEndcap};
56  pixelBarrel(track) = values.at(0);
57  pixelEndcap(track) = values.at(1);
58  stripBarrel(track) = values.at(2);
59  stripEndcap(track) = values.at(3);
60  }
61 
62  template <typename track_proxy_t>
63  static std::array<unsigned int, 4> get(const track_proxy_t& track) {
64  static const Acts::ConstProxyAccessor<unsigned int> pixelBarrel{kPixelBarrel};
65  static const Acts::ConstProxyAccessor<unsigned int> pixelEndcap{kPixelEndcap};
66  static const Acts::ConstProxyAccessor<unsigned int> stripBarrel{kStripBarrel};
67  static const Acts::ConstProxyAccessor<unsigned int> stripEndcap{kStripEndcap};
68 
69  return {
70  pixelBarrel(track),
74  };
75  }
76 
77  };
78 
79 
89  std::array<unsigned int,4> expectedLayerPattern(const EventContext& ctx,
90  const IActsExtrapolationTool &extrapolator,
91  const Acts::BoundTrackParameters& perigee_parameters,
92  double pathLimit);
93 
98  std::array<unsigned int,4> expectedLayerPattern(std::span<const ActsDetectorElement*> detectorElements);
99 
100  void addToExpectedLayerPattern(std::array<unsigned int,4>& pattern, const ActsDetectorElement& detElement);
101 }
102 
103 #endif
mergePhysValFiles.pattern
pattern
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:25
Trk::stripBarrel
@ stripBarrel
Definition: DetailedHitInfo.h:17
ActsTrk::detail::ExpectedLayerPatternHelper::kPixelEndcap
static const std::string kPixelEndcap
Definition: ExpectedHitUtils.h:29
ActsTrk::detail::ExpectedLayerPatternHelper::set
static void set(track_proxy_t &track, std::array< unsigned int, 4 > values)
Definition: ExpectedHitUtils.h:51
ActsTrk::detail::ExpectedLayerPatternHelper::kExpectedLayerPatternColumnName
static const std::string_view kExpectedLayerPatternColumnName
Definition: ExpectedHitUtils.h:26
python.Bindings.values
values
Definition: Control/AthenaPython/python/Bindings.py:808
IActsExtrapolationTool
Definition: IActsExtrapolationTool.h:29
ActsTrk::detail::ExpectedLayerPatternHelper::exists
static bool exists(track_container_t &trackContainer)
Definition: ExpectedHitUtils.h:43
Trk::stripEndcap
@ stripEndcap
Definition: DetailedHitInfo.h:18
Trk::pixelEndcap
@ pixelEndcap
Definition: DetailedHitInfo.h:16
ActsDetectorElement
Definition: ActsDetectorElement.h:44
python.TrackLeptonConfig.trackContainer
string trackContainer
Definition: TrackLeptonConfig.py:23
ActsDetectorElement.h
ActsTrk::detail::ExpectedLayerPatternHelper::kStripBarrel
static const std::string kStripBarrel
Definition: ExpectedHitUtils.h:30
ActsTrk::detail::ExpectedLayerPatternHelper::kPixelBarrel
static const std::string kPixelBarrel
Definition: ExpectedHitUtils.h:28
ActsTrk::detail::expectedLayerPattern
std::array< unsigned int, 4 > expectedLayerPattern(const EventContext &ctx, const IActsExtrapolationTool &extrapolator, const Acts::BoundTrackParameters &perigee_parameters, double pathLimit)
Extrapolate from the perigee outwards and gather information which detector layers should have hits.
Definition: ExpectedHitUtils.cxx:14
ActsTrk::detail::ExpectedLayerPatternHelper::add
static void add(track_container_t &trackContainer)
Definition: ExpectedHitUtils.h:35
ActsTrk::detail::ExpectedLayerPatternHelper
Helper functions to encode the expected layer patterns in separate columns.
Definition: ExpectedHitUtils.h:25
ActsTrk::detail::ExpectedLayerPatternHelper::get
static std::array< unsigned int, 4 > get(const track_proxy_t &track)
Definition: ExpectedHitUtils.h:63
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
ActsTrk::detail
Athena definition of the Eigen plugin.
Definition: MeasurementCalibratorBase.h:19
IActsExtrapolationTool.h
ActsTrk::detail::ExpectedLayerPatternHelper::kStripEndcap
static const std::string kStripEndcap
Definition: ExpectedHitUtils.h:31
ActsTrk::detail::addToExpectedLayerPattern
void addToExpectedLayerPattern(std::array< unsigned int, 4 > &pattern, const ActsDetectorElement &detElement)
Definition: ExpectedHitUtils.cxx:40