ATLAS Offline Software
Loading...
Searching...
No Matches
ActsTrk::MeasurementParameterMap Struct Reference

#include <MeasurementCalibrator.h>

Collaboration diagram for ActsTrk::MeasurementParameterMap:

Public Member Functions

xAOD::UncalibMeasType measurementTypeFromVolumeId (unsigned int volume_id) const
void setMeasurementTypeForVolumeId (unsigned int volume_id, xAOD::UncalibMeasType type)
 MeasurementParameterMap ()
template<std::size_t DIM>
Acts::SubspaceIndices< DIM > parameterMap (const Acts::GeometryContext &, const Acts::CalibrationContext &, const Acts::Surface &surface) const

Public Attributes

std::array< unsigned char, 128 > m_volumeIdToMeasurementType {}

Static Public Attributes

static constexpr std::array< Acts::SubspaceIndices< 1 >, 2 > s_stripSubspaceIndices
static constexpr Acts::SubspaceIndices< 2 > s_pixelSubspaceIndices
static constexpr Acts::SubspaceIndices< 3 > s_hgtdSubspaceIndices

Detailed Description

Definition at line 40 of file MeasurementCalibrator.h.

Constructor & Destructor Documentation

◆ MeasurementParameterMap()

ActsTrk::MeasurementParameterMap::MeasurementParameterMap ( )
inline

Definition at line 54 of file MeasurementCalibrator.h.

54 {
55 // @TODO get mapping from converter tool ?
56 std::vector<unsigned int> pixel_vol {16, 15, 9, 20, 19, 18, 10, 14, 13, 8};
57 for (unsigned int vol_id : pixel_vol) {
59 }
60 std::vector<unsigned int> strip_vol {23, 22, 24};
61 for (unsigned int vol_id : strip_vol) {
63 }
64 std::vector<unsigned int> hgtd_vol {2, 25};
65 for (unsigned int vol_id : hgtd_vol) {
67 }
68 }
void setMeasurementTypeForVolumeId(unsigned int volume_id, xAOD::UncalibMeasType type)

Member Function Documentation

◆ measurementTypeFromVolumeId()

xAOD::UncalibMeasType ActsTrk::MeasurementParameterMap::measurementTypeFromVolumeId ( unsigned int volume_id) const
inline

Definition at line 43 of file MeasurementCalibrator.h.

43 {
44 unsigned char shift = (volume_id%2) ? 4 : 0;
45 unsigned char idx = volume_id/2;
46 return static_cast<xAOD::UncalibMeasType>((m_volumeIdToMeasurementType[idx] >> shift) & 0xf);
47 }
virtual void shift(size_t pos, ptrdiff_t offs) override
Shift the elements of the container.
UncalibMeasType
Define the type of the uncalibrated measurement.
std::array< unsigned char, 128 > m_volumeIdToMeasurementType

◆ parameterMap()

template<std::size_t DIM>
Acts::SubspaceIndices< DIM > ActsTrk::MeasurementParameterMap::parameterMap ( const Acts::GeometryContext & ,
const Acts::CalibrationContext & ,
const Acts::Surface & surface ) const
inline

Definition at line 71 of file MeasurementCalibrator.h.

73 {
74 // @TODO make interface measurement type aware ?
75 if constexpr(DIM==3) {
76 assert( measurementTypeFromVolumeId(surface.geometryId().volume()) == xAOD::UncalibMeasType::HGTDClusterType );
78 }
79 else if constexpr(DIM==2) {
80 assert( measurementTypeFromVolumeId(surface.geometryId().volume()) == xAOD::UncalibMeasType::PixelClusterType );
82 }
83 else if constexpr(DIM==1) {
84 assert( measurementTypeFromVolumeId(surface.geometryId().volume()) == xAOD::UncalibMeasType::StripClusterType );
85 auto boundType = surface.bounds().type();
86 const std::size_t projector_idx = boundType == Acts::SurfaceBounds::eAnnulus;
87 return s_stripSubspaceIndices[projector_idx];
88 }
89 else {
90 throw std::runtime_error("Unsupported dimension");
91 }
92
93 }
static constexpr Acts::SubspaceIndices< 2 > s_pixelSubspaceIndices
static constexpr std::array< Acts::SubspaceIndices< 1 >, 2 > s_stripSubspaceIndices
static constexpr Acts::SubspaceIndices< 3 > s_hgtdSubspaceIndices
xAOD::UncalibMeasType measurementTypeFromVolumeId(unsigned int volume_id) const

◆ setMeasurementTypeForVolumeId()

void ActsTrk::MeasurementParameterMap::setMeasurementTypeForVolumeId ( unsigned int volume_id,
xAOD::UncalibMeasType type )
inline

Definition at line 48 of file MeasurementCalibrator.h.

48 {
49 static_assert( static_cast<unsigned int>(xAOD::UncalibMeasType::nTypes) < 16u );
50 unsigned char shift = (volume_id%2) ? 4 : 0;
51 unsigned char idx = volume_id/2;
52 m_volumeIdToMeasurementType[idx] |= ((static_cast<unsigned int>(type) & 0xf) << shift);
53 }

Member Data Documentation

◆ m_volumeIdToMeasurementType

std::array<unsigned char, 128> ActsTrk::MeasurementParameterMap::m_volumeIdToMeasurementType {}

Definition at line 42 of file MeasurementCalibrator.h.

42{};

◆ s_hgtdSubspaceIndices

Acts::SubspaceIndices<3> ActsTrk::MeasurementParameterMap::s_hgtdSubspaceIndices
staticconstexpr
Initial value:
= {
Acts::eBoundLoc0, Acts::eBoundLoc1, Acts::eBoundTime
}

Definition at line 102 of file MeasurementCalibrator.h.

102 {
103 Acts::eBoundLoc0, Acts::eBoundLoc1, Acts::eBoundTime
104 };

◆ s_pixelSubspaceIndices

Acts::SubspaceIndices<2> ActsTrk::MeasurementParameterMap::s_pixelSubspaceIndices
staticconstexpr
Initial value:
= {
Acts::eBoundLoc0, Acts::eBoundLoc1
}

Definition at line 99 of file MeasurementCalibrator.h.

99 {
100 Acts::eBoundLoc0, Acts::eBoundLoc1
101 };

◆ s_stripSubspaceIndices

std::array<Acts::SubspaceIndices<1>, 2> ActsTrk::MeasurementParameterMap::s_stripSubspaceIndices
staticconstexpr
Initial value:
= {
{{Acts::eBoundLoc0},
{Acts::eBoundLoc1}}
}

Definition at line 95 of file MeasurementCalibrator.h.

95 {
96 {{Acts::eBoundLoc0}, // normal strip: x -> l0
97 {Acts::eBoundLoc1}} // annulus strip: y -> l0
98 };

The documentation for this struct was generated from the following file: