ATLAS Offline Software
Loading...
Searching...
No Matches
MeasurementSelector.h File Reference
#include "Acts/Utilities/Result.hpp"
#include "Acts/Utilities/Delegate.hpp"
#include "Acts/EventData/SourceLink.hpp"
#include "Acts/TrackFinding/CombinatorialKalmanFilterError.hpp"
#include "Acts/Surfaces/Surface.hpp"
#include "Acts/Geometry/GeometryHierarchyMap.hpp"
#include "Acts/EventData/Types.hpp"
#include "Acts/EventData/TrackStatePropMask.hpp"
#include "boost/container/small_vector.hpp"
#include "Acts/EventData/TrackStateProxy.hpp"
#include "Acts/Utilities/CalibrationContext.hpp"
#include "Acts/EventData/TrackParameters.hpp"
#include "Acts/EventData/MultiTrajectory.hpp"
#include <utility>
#include <type_traits>
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  MeasurementSelectorTraits< derived_t >
struct  MeasurementSelectorTraits< derived_t >::MeasurementContainerTraits< T_MeasurementRangeIterator >
struct  MeasurementSelectorMatrixTraits
struct  ParameterMapping
struct  TopCollection< N, PayloadType >
struct  AtlasMeasurementSelectorCuts
struct  MeasurementSelectorBase< NMeasMax, DIMMAX, derived_t >
struct  MeasurementSelectorBase< NMeasMax, DIMMAX, derived_t >::ProjectorBitSetMaker
struct  MeasurementSelectorWithDispatch< NMeasMax, derived_t, measurement_container_variant_t >
struct  MeasurementSelectorBaseImpl< NMeasMax, derived_t, measurement_container_variant_t >

Functions

template<std::size_t N, class T_ResultType, class T_Matrix>
T_ResultType project (ParameterMapping::type< N > parameter_map, const T_Matrix &matrix)
template<typename measurement_vector_t, typename measurement_cov_matrix_t, typename predicted_vector_t, typename predicted_cov_matrix_t>
double computeChi2 (const measurement_vector_t &a, const measurement_cov_matrix_t &a_cov, const predicted_vector_t &b, const predicted_cov_matrix_t &b_cov)

Function Documentation

◆ computeChi2()

template<typename measurement_vector_t, typename measurement_cov_matrix_t, typename predicted_vector_t, typename predicted_cov_matrix_t>
double computeChi2 ( const measurement_vector_t & a,
const measurement_cov_matrix_t & a_cov,
const predicted_vector_t & b,
const predicted_cov_matrix_t & b_cov )

Definition at line 188 of file MeasurementSelector.h.

191 {
192
193 // just sum sanity checks that a and b have the correct dimensions and that
194 // the chi2 can actually be computed.
196 static_assert( MeasurementSelectorMatrixTraits::matrixColumns<predicted_vector_t>() == 1); // b is vector
207
208 // @TODO remove abstraction i.e. assume matrix has the interface of an eigen matrix
209 auto inv_ab_cov( MeasurementSelectorMatrixTraits::invert(a_cov+b_cov) );
210 auto diff( a-b);
211 return (MeasurementSelectorMatrixTraits::transpose(diff) * inv_ab_cov * diff)(0,0);
212}
static Double_t a
void diff(const Jet &rJet1, const Jet &rJet2, std::map< std::string, double > varDiff)
Difference between jets - Non-Class function required by trigger.
Definition Jet.cxx:631
static constexpr std::size_t matrixRows()
static constexpr std::size_t matrixColumns()
matrix adapter for Eigen additionally need +,- and *
static auto transpose(const T_Matrix &matrix)
static auto invert(const T_Matrix &matrix)

◆ project()

template<std::size_t N, class T_ResultType, class T_Matrix>
T_ResultType project ( ParameterMapping::type< N > parameter_map,
const T_Matrix & matrix )

Definition at line 149 of file MeasurementSelector.h.

150{
151 using MatrixIndexMapType = unsigned char; // "char" to reduce the size of the map, and if not wide enough this entire
152 // concept is likely inefficient.
153 using MatrixIndexType = unsigned int; // @TODO or std::size_t ? does not matter
154
155 // ensure that index types are wide enough
156 static_assert( MeasurementSelectorMatrixTraits::matrixRows<T_Matrix>() < std::numeric_limits<MatrixIndexMapType>::max());
157 static_assert( N*MeasurementSelectorMatrixTraits::matrixRows<T_Matrix>() < std::numeric_limits<MatrixIndexType>::max());
158
159 T_ResultType ret;
161 // handle projection of paramteter vector
162 for (MatrixIndexType meas_i=0; meas_i<N; ++meas_i) {
163 assert( meas_i < parameter_map.size() );
164 ret(meas_i,0) = matrix( parameter_map[meas_i], 0);
165 }
166 }
167 else {
168 // handle projection of covariance matrix
169 // "project" matrix
170 for (MatrixIndexType meas_i=0; meas_i<N; ++meas_i) {
171 assert( meas_i < parameter_map.size());
172 MatrixIndexType param_i = parameter_map[meas_i];
173 for (MatrixIndexType meas_j=0; meas_j<N; ++meas_j) {
174 assert( meas_j < parameter_map.size());
175 ret(meas_i,meas_j) = matrix(param_i, parameter_map[meas_j]);
176 }
177 }
178 }
179 return ret;
180}