Juggler
Juggling algorithms and event processing using gaudi framework
Measurement.hpp
Go to the documentation of this file.
1 // Copyright (C) 2020 CERN for the benefit of the Acts project
2 //
3 // This Source Code Form is subject to the terms of the Mozilla Public
4 // License, v. 2.0. If a copy of the MPL was not distributed with this
5 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
6 
7 #pragma once
8 
9 #include "Acts/EventData/Measurement.hpp"
11 
12 #include <cassert>
13 #include <vector>
14 
15 namespace Jug {
16 
17  /// Variable measurement type that can contain all possible combinations.
18  using Measurement = ::Acts::BoundVariantMeasurement<IndexSourceLink>;
19  /// Container of measurements.
20  ///
21  /// In contrast to the source links, the measurements themself must not be
22  /// orderable. The source links stored in the measurements are treated
23  /// as opaque here and no ordering is enforced on the stored measurements.
24  using MeasurementContainer = std::vector<Measurement>;
25 
26  /// Calibrator to convert an index source link to a measurement.
28  public:
29  /// Construct an invalid calibrator. Required to allow copying.
30  MeasurementCalibrator() = default;
31  /// Construct using a user-provided container to chose measurements from.
32  MeasurementCalibrator(const MeasurementContainer& measurements) : m_measurements(&measurements) {}
33 
34  /// Find the measurement corresponding to the source link.
35  ///
36  /// @tparam parameters_t Track parameters type
37  /// @param sourceLink Input source link
38  /// @param parameters Input track parameters (unused)
39  template <typename parameters_t>
40  const Measurement& operator()(const IndexSourceLink& sourceLink, const parameters_t& /* parameters */) const
41  {
42  assert(m_measurements and "Undefined measurement container in DigitizedCalibrator");
43  assert((sourceLink.index() < m_measurements->size()) and "Source link index is outside the container bounds");
44  return (*m_measurements)[sourceLink.m_index];
45  }
46 
47  private:
48  // use pointer so the calibrator is copyable and default constructible.
49  const MeasurementContainer* m_measurements = nullptr;
50  };
51 
52 } // namespace Jug
Jug::MeasurementCalibrator::operator()
const Measurement & operator()(const IndexSourceLink &sourceLink, const parameters_t &) const
Definition: Measurement.hpp:40
Jug::MeasurementCalibrator::MeasurementCalibrator
MeasurementCalibrator()=default
Construct an invalid calibrator. Required to allow copying.
Jug::MeasurementCalibrator
Calibrator to convert an index source link to a measurement.
Definition: Measurement.hpp:27
Jug::Measurement
::Acts::BoundVariantMeasurement< IndexSourceLink > Measurement
Variable measurement type that can contain all possible combinations.
Definition: Measurement.hpp:18
Jug::MeasurementContainer
std::vector< Measurement > MeasurementContainer
Definition: Measurement.hpp:24
Jug
Definition: DD4hepBField.h:22
Jug::MeasurementCalibrator::MeasurementCalibrator
MeasurementCalibrator(const MeasurementContainer &measurements)
Construct using a user-provided container to chose measurements from.
Definition: Measurement.hpp:32