24 #include "CLHEP/Vector/defs.h"
25 #include "CLHEP/Vector/EulerAngles.h"
27 #include "CLHEP/Vector/ThreeVector.h"
44 static void ZMpvEulerAnglesRep (
const HepEulerAngles & ex,
double array[] ) {
46 register double sinPhi = std::sin( ex.phi() ) , cosPhi = std::cos( ex.phi() );
47 register double sinTheta = std::sin( ex.theta() ), cosTheta = std::cos( ex.theta() );
48 register double sinPsi = std::sin( ex.psi() ) , cosPsi = std::cos( ex.psi() );
50 array[0] = cosPsi * cosPhi - sinPsi * cosTheta * sinPhi;
51 array[1] = cosPsi * sinPhi + sinPsi * cosTheta * cosPhi;
52 array[2] = sinPsi * sinTheta;
54 array[3] = - sinPsi * cosPhi - cosPsi * cosTheta * sinPhi;
55 array[4] = - sinPsi * sinPhi + cosPsi * cosTheta * cosPhi;
56 array[5] = cosPsi * sinTheta;
58 array[6] = sinTheta * sinPhi;
59 array[7] = - sinTheta * cosPhi;
70 ZMpvEulerAnglesRep ( *
this, thisRep );
71 ZMpvEulerAnglesRep ( ex, exRep );
74 for (
int i = 0;
i < 9;
i++) {
75 sum += thisRep[
i] * exRep[
i];
79 return (d >= 0) ? d : 0;
86 return distance( ex ) <= epsilon*epsilon ;
103 os <<
"(" << ea.
phi() <<
", " << ea.
theta() <<
", " << ea.
psi() <<
")";
108 double &
x,
double & y,
double & z );
115 ea.
set ( thePhi , theTheta , thePsi );