#include <cmath>
Go to the source code of this file.
|
| const PlainObject | unit () const |
| | This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
|
| Scalar | mag () const |
| | mag method
|
| Scalar | mag2 () const |
| | mag2 method - forward to squaredNorm()
|
| Scalar | perp2 () const |
| | perp2 method - perpendicular length squared
|
| Scalar | perp () const |
| | perp method - perpendicular length
|
| Scalar | perp2 (const MatrixBase< Derived > &vec) |
| | perp2 method wrt another vector
|
| Scalar | perp (const MatrixBase< Derived > &vec) |
| | perp2 method wrt another vector
|
| Scalar | phi () const |
| | phi method
|
| Scalar | theta () const |
| | theta method
|
| Scalar | eta () const |
| | pseudorapidity method
|
| Scalar | deltaR (const MatrixBase< Derived > &vec) const |
| Scalar | deltaPhi (const MatrixBase< Derived > &vec) const |
| void | fillSymmetric (size_t i, size_t j, Scalar value) |
| | method to fill elements for a symmetric matrix
|
| template<typename OtherDerived> |
| Matrix< Scalar, OtherDerived::RowsAtCompileTime, OtherDerived::RowsAtCompileTime > | similarity (const MatrixBase< OtherDerived > &m) const |
| | similarity method : yields ms = m*s*m^T
|
| template<typename OtherDerived> |
| Matrix< Scalar, OtherDerived::RowsAtCompileTime, OtherDerived::RowsAtCompileTime > | similarityT (const MatrixBase< OtherDerived > &m) const |
| | similarityT method : yields ms = m^T*s*m
|
◆ deltaPhi()
| Scalar deltaPhi |
( |
const MatrixBase< Derived > & | vec | ) |
const |
|
inline |
Definition at line 112 of file AmgMatrixBasePlugin.h.
112 {
113
114 double dphi =
vec.phi() - this->
phi();
117 }
else if (dphi <= -
M_PI) {
119 }
120 return dphi;
121}
Scalar phi() const
phi method
std::vector< size_t > vec
◆ deltaR()
| Scalar deltaR |
( |
const MatrixBase< Derived > & | vec | ) |
const |
|
inline |
Definition at line 105 of file AmgMatrixBasePlugin.h.
105 {
106
107 double a = this->
eta() -
vec.eta();
109 return std::sqrt(
a *
a + b * b);
110}
Scalar eta() const
pseudorapidity method
Scalar deltaPhi(const MatrixBase< Derived > &vec) const
◆ eta()
pseudorapidity method
Definition at line 83 of file AmgMatrixBasePlugin.h.
83 {
84 constexpr int size = Eigen::MatrixBase<Derived>::SizeAtCompileTime;
85 constexpr int isVector = Eigen::MatrixBase<Derived>::IsVectorAtCompileTime;
86 static_assert(
isVector && size>=3,
"Method applicable for vectors of size >=3");
87 const Scalar
rho2 = (*this).x() * (*this).x() + (*this).y() * (*this).y();
88 const Scalar
z = (*this).z();
89 const Scalar z2 =
z *
z;
90 constexpr Scalar
epsilon = 2. * std::numeric_limits<Scalar>::epsilon();
91
92 if (rho2 > z2 * epsilon) {
93 const double m = std::sqrt(rho2 + z2);
94 return 0.5 * std::log((m +
z) / (m -
z));
95 }
97 return 0.0;
98 }
99
100 constexpr Scalar s_etaMax = static_cast<Scalar>(22756.0);
101
102 return (
z > 0) ?
z + s_etaMax :
z - s_etaMax;
103}
◆ fillSymmetric()
| void fillSymmetric |
( |
size_t | i, |
|
|
size_t | j, |
|
|
Scalar | value ) |
|
inline |
method to fill elements for a symmetric matrix
Definition at line 124 of file AmgMatrixBasePlugin.h.
124 {
125 (*this)(
i, j) = value;
126 (*this)(j,
i) = value;
127}
◆ mag()
◆ mag2()
mag2 method - forward to squaredNorm()
Definition at line 31 of file AmgMatrixBasePlugin.h.
31 {
32 return (*this).squaredNorm();
33}
◆ perp() [1/2]
perp method - perpendicular length
Definition at line 44 of file AmgMatrixBasePlugin.h.
44 {
45 constexpr int size = Eigen::MatrixBase<Derived>::SizeAtCompileTime;
46 constexpr int isVector = Eigen::MatrixBase<Derived>::IsVectorAtCompileTime;
47 static_assert(
isVector && size>=2,
"Method applicable for vectors of size >=2");
48 return std::sqrt(this->
perp2());
49}
Scalar perp2() const
perp2 method - perpendicular length squared
◆ perp() [2/2]
| Scalar perp |
( |
const MatrixBase< Derived > & | vec | ) |
|
|
inline |
◆ perp2() [1/2]
perp2 method - perpendicular length squared
Definition at line 36 of file AmgMatrixBasePlugin.h.
36 {
37 constexpr int size = Eigen::MatrixBase<Derived>::SizeAtCompileTime;
38 constexpr int isVector = Eigen::MatrixBase<Derived>::IsVectorAtCompileTime;
39 static_assert(
isVector && size>=2,
"Method applicable for vectors of size >=2");
40 return ((*this)[0] * (*this)[0] + (*this)[1] * (*this)[1]);
41}
◆ perp2() [2/2]
| Scalar perp2 |
( |
const MatrixBase< Derived > & | vec | ) |
|
|
inline |
perp2 method wrt another vector
Definition at line 52 of file AmgMatrixBasePlugin.h.
52 {
54 if (tot > 0) {
57 }
59}
Scalar mag2() const
mag2 method - forward to squaredNorm()
◆ phi()
phi method
Definition at line 67 of file AmgMatrixBasePlugin.h.
67 {
68 constexpr int size = Eigen::MatrixBase<Derived>::SizeAtCompileTime;
69 constexpr int isVector = Eigen::MatrixBase<Derived>::IsVectorAtCompileTime;
70 static_assert(
isVector && size>=2,
"Method applicable for vectors of size >=2");
71 return std::atan2((*this)[1], (*this)[0]);
72}
◆ similarity()
template<typename OtherDerived>
| Matrix< Scalar, OtherDerived::RowsAtCompileTime, OtherDerived::RowsAtCompileTime > similarity |
( |
const MatrixBase< OtherDerived > & | m | ) |
const |
|
inline |
similarity method : yields ms = m*s*m^T
Definition at line 133 of file AmgMatrixBasePlugin.h.
133 {
134 return m * (this->derived() *
m.transpose());
135}
◆ similarityT()
template<typename OtherDerived>
| Matrix< Scalar, OtherDerived::RowsAtCompileTime, OtherDerived::RowsAtCompileTime > similarityT |
( |
const MatrixBase< OtherDerived > & | m | ) |
const |
|
inline |
similarityT method : yields ms = m^T*s*m
Definition at line 141 of file AmgMatrixBasePlugin.h.
141 {
142 return m.transpose() * (this->derived() *
m);
143}
◆ theta()
theta method
Definition at line 75 of file AmgMatrixBasePlugin.h.
75 {
76 constexpr int size = Eigen::MatrixBase<Derived>::SizeAtCompileTime;
77 constexpr int isVector = Eigen::MatrixBase<Derived>::IsVectorAtCompileTime;
78 static_assert(
isVector && size>=3,
"Method applicable for vectors of size >=3");
79 return std::atan2(this->
perp(), (*
this)[2]);
80}
Scalar perp() const
perp method - perpendicular length
◆ unit()
| const PlainObject unit |
( |
| ) |
const |
|
inline |
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
unit method - forward normalized()
Definition at line 21 of file AmgMatrixBasePlugin.h.
21 {
22 return (*this).normalized();
23}