ATLAS Offline Software
Loading...
Searching...
No Matches
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
18namespace 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),
71 pixelEndcap(track),
72 stripBarrel(track),
73 stripEndcap(track)
74 };
75 }
76
77 };
78
79
89 std::array<unsigned int,4> expectedLayerPattern(const EventContext& ctx,
90 const ActsTrk::IExtrapolationTool &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
Tool to extrapolate bound track parameters.
Athena definition of the Eigen plugin.
std::array< unsigned int, 4 > expectedLayerPattern(const EventContext &ctx, const IExtrapolationTool &extrapolator, const Acts::BoundTrackParameters &perigee_parameters, double pathLimit)
Extrapolate from the perigee outwards and gather information which detector layers should have hits.
void addToExpectedLayerPattern(std::array< unsigned int, 4 > &pattern, const ActsDetectorElement &detElement)
Helper functions to encode the expected layer patterns in separate columns.
static const std::string_view kExpectedLayerPatternColumnName
static std::array< unsigned int, 4 > get(const track_proxy_t &track)
static void add(track_container_t &trackContainer)
static bool exists(track_container_t &trackContainer)
static void set(track_proxy_t &track, std::array< unsigned int, 4 > values)