14#include "GaudiKernel/PhysicalConstants.h"
15#include "GaudiKernel/MsgStream.h"
34 double locZdotCurvT =
locZ.dot(curvUVT.
curvT());
35 (*this)(0,0) = curvUVT.
curvV().dot(
locY)/locZdotCurvT;
36 (*this)(0,1) = - curvUVT.
curvU().dot(
locY)/locZdotCurvT;
37 (*this)(1,0) = - curvUVT.
curvV().dot(
locX)/locZdotCurvT;
38 (*this)(1,1) = curvUVT.
curvU().dot(
locX)/locZdotCurvT;
58 double oneOverZt = 1./
locZ.dot(curvUVT.
curvT());
68 double alpha = n.mag();
70 double B = bfield.mag();
73 double Q = - B * Gaudi::Units::c_light * qOp;
74 double alphaQ = alpha*Q;
76 double un = curvUVT.
curvU().dot(n);
77 double vn = curvUVT.
curvV().dot(n);
79 (*this)(0,0) = vy*oneOverZt;
80 (*this)(0,1) = - uy*oneOverZt;
81 (*this)(1,0) = - vx*oneOverZt;
82 (*this)(1,1) = ux*oneOverZt;
83 (*this)(2,0) = - alphaQ/sinTheta*un*uz*oneOverZt;
84 (*this)(2,1) = - alphaQ/sinTheta*un*vz*oneOverZt;
85 (*this)(3,0) = alphaQ*vn*uz*oneOverZt;
86 (*this)(3,1) = alphaQ*vn*vz*oneOverZt;
95 sl << std::setiosflags(std::ios::fixed);
96 sl << std::setprecision(6);
97 sl << MSG::DEBUG <<
"Trk::JacobianCurvilinearToLocal" << std::endl;
98 sl <<
"______________________________________________________________________" << std::endl;
99 for (
int irow = 0; irow<5; irow++){
100 for (
int icol =0; icol<5; icol++){
101 sl << (jac)(irow,icol);
102 if (irow < 4 || icol < 4 ) { sl <<
" "; }
106 sl <<
"______________________________________________________________________";
112 sl << std::setiosflags(std::ios::fixed);
113 sl << std::setprecision(7);
114 sl <<
"Trk::JacobianCurvilinearToLocal " << std::endl;
115 sl <<
"______________________________________________________________________" << std::endl;
116 for (
int irow = 0; irow<5; irow++){
117 for (
int icol =0; icol<5; icol++){
118 sl << (jac)(irow,icol);
119 if (irow < 4 || icol < 4 ) { sl <<
" ";}
123 sl <<
"______________________________________________________________________";
Header file for AthHistogramAlgorithm.
simple class that constructs the curvilinear vectors curvU and curvV from a given momentum direction ...
const Amg::Vector3D & curvU() const
Access methods.
const Amg::Vector3D & curvT() const
const Amg::Vector3D & curvV() const
This class represents the jacobian for transforming from a curvilinear to a local frame.
JacobianCurvilinearToLocal(const Trk::CurvilinearUVT &curvUVT, const Amg::Vector3D &locX, const Amg::Vector3D &locY, const Amg::Vector3D &locZ)
Constructor for straight line track model.
Eigen::Matrix< double, 3, 1 > Vector3D
AmgMatrix(3, 3) NeutralParticleParameterCalculator
MsgStream & operator<<(MsgStream &sl, const AlignModule &alignModule)
overload of << operator for MsgStream for debug output