ATLAS Offline Software
EigenHelpers.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef EIGEN_HELPERS_H
6 #define EIGEN_HELPERS_H
7 
10 #include <vector>
12 
14 {
15 public:
16 
21  template <class VECTOR, class COVARIANCE>
22  inline static void vectorToEigenMatrix(VECTOR& vec, COVARIANCE& cov, const char* ) {
23  Amg::expand(vec.begin(), vec.end(), cov);
24  }
29  template <class VECTOR, class COVARIANCE>
30  inline static void eigenMatrixToVector(VECTOR& vec, COVARIANCE& cov, const char* ) {
32  }
33 
35  template <class T>
36  static void vectorToEigenTransform3D( const T &vec,
37  Amg::Transform3D &trans )
38  {
39  trans(0, 0) = vec[0];
40  trans(0, 1) = vec[1];
41  trans(0, 2) = vec[2];
42  trans(1, 0) = vec[3];
43  trans(1, 1) = vec[4];
44  trans(1, 2) = vec[5];
45  trans(2, 0) = vec[6];
46  trans(2, 1) = vec[7];
47  trans(2, 2) = vec[8];
48  trans(0, 3) = vec[9];
49  trans(1, 3) = vec[10];
50  trans(2, 3) = vec[11];
51  }
52 
54  template <class T>
55  static void eigenTransform3DToVector( const Amg::Transform3D &trans,
56  T &vec )
57  {
58  vec.reserve(12);
59  vec.push_back( trans(0, 0) );
60  vec.push_back( trans(0, 1) );
61  vec.push_back( trans(0, 2) );
62  vec.push_back( trans(1, 0) );
63  vec.push_back( trans(1, 1) );
64  vec.push_back( trans(1, 2) );
65  vec.push_back( trans(2, 0) );
66  vec.push_back( trans(2, 1) );
67  vec.push_back( trans(2, 2) );
68  vec.push_back( trans(0, 3) );
69  vec.push_back( trans(1, 3) );
70  vec.push_back( trans(2, 3) );
71  }
72 };
73 
74 
75 
76 // template <>
77 // static void EigenHelpers::vectorToEigenMatrix<typename std::vector<float>, typename Amg::Transform3D>(VECTOR& vec, TRANSFORM& transform, const char* name) {
78 // size_t size = vec.size();
79 // assert (size==9);
80 // transform<vec[0],vec[1],vec[3],
81 // vec[1],vec[2],vec[4],
82 // vec[3],vec[4],vec[5];
83 // }
84 
85 #endif
Amg::compress
void compress(const AmgSymMatrix(N) &covMatrix, std::vector< float > &vec)
Definition: EventPrimitivesHelpers.h:56
EventPrimitivesHelpers.h
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:12
EigenHelpers::eigenTransform3DToVector
static void eigenTransform3DToVector(const Amg::Transform3D &trans, T &vec)
Convert HepGeom::Transform3D to std :: vector<double>
Definition: EigenHelpers.h:55
Amg::expand
void expand(std::vector< float >::const_iterator it, std::vector< float >::const_iterator, AmgSymMatrix(N) &covMatrix)
Definition: EventPrimitivesHelpers.h:75
EigenHelpers::vectorToEigenMatrix
static void vectorToEigenMatrix(VECTOR &vec, COVARIANCE &cov, const char *)
Helper fn to fill the covariance from the raw data (vec<float>)
Definition: EigenHelpers.h:22
GeoPrimitives.h
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
EigenHelpers::eigenMatrixToVector
static void eigenMatrixToVector(VECTOR &vec, COVARIANCE &cov, const char *)
Helper fn to get raw data (vec<float>) from the covariance.
Definition: EigenHelpers.h:30
EigenHelpers::vectorToEigenTransform3D
static void vectorToEigenTransform3D(const T &vec, Amg::Transform3D &trans)
Convert std :: vector<double> to Amg::Transform3D.
Definition: EigenHelpers.h:36
EigenHelpers
Definition: EFTrackingSmearingAlg.cxx:85
EventPrimitives.h
VECTOR
TVectorD VECTOR
Definition: sincos_poly.cxx:20