6 #include "CLHEP/Units/GlobalSystemOfUnits.h"
7 #include <Math/AxisAngle.h>
24 os << *(defined.first) <<
" ";
28 os <<
"t=" << ra.Axis().Theta()/deg <<
"deg "
29 <<
"p=" << ra.Axis().Phi()/deg <<
"deg "
30 <<
"a=" << ra.Angle()/deg <<
"deg";
34 os <<
"* rotation not defined * ";
38 os <<
"* rotation not declared * ";
50 static std::string baseName(
"DdBlNa");
51 static int countBlank;
52 static std::ostringstream ostr;
79 static std::string baseNoName(
"DdNoNa");
81 static std::ostringstream ostr2;
104 double thetaX,
double phiX,
105 double thetaY,
double phiY,
106 double thetaZ,
double phiZ)
114 double check = (x.Cross(y)).Dot(z);
115 if (fabs(1.-check)>tol) {
116 edm::LogError(
"DDRotation") << ddname <<
" is not a RIGHT-handed orthonormal matrix!" << std::endl;
117 throw DDException( ddname.
name() + std::string(
" is not RIGHT-handed!" ) );
140 double thetaX,
double phiX,
141 double thetaY,
double phiY,
142 double thetaZ,
double phiZ)
151 double check = (x.Cross(y)).Dot(z);
152 if (fabs(1.+check)>tol) {
153 edm::LogError(
"DDRotation") << ddname <<
" is not a LEFT-handed orthonormal matrix!" << std::endl;
154 throw DDException( ddname.
name() + std::string(
" is not LEFT-handed!" ) );
170 double thetaY,
double phiY,
171 double thetaZ,
double phiZ)
179 double check = (x.Cross(y)).Dot(z);
180 if ((1.-fabs(check))>tol) {
181 std::ostringstream
o;
182 o <<
"matrix is not an (left or right handed) orthonormal matrix! (in deg)" << std::endl
183 <<
" thetaX=" << thetaX/deg <<
" phiX=" << phiX/deg << std::endl
184 <<
" thetaY=" << thetaY/deg <<
" phiY=" << phiY/deg << std::endl
185 <<
" thetaZ=" << thetaZ/deg <<
" phiZ=" << phiZ/deg << std::endl;
const DDRotationMatrix * rotation() const
Returns the read-only rotation-matrix.
def_type isDefined() const
Sin< T >::type sin(const T &t)
An exception for DDD errors.
DDName is used to identify DDD entities uniquely.
std::ostream & operator<<(std::ostream &out, const ALILine &li)
Represents a uniquely identifyable rotation matrix.
static value_type & instance()
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DD3Vector
A DD Translation is currently implemented with Root Vector3D.
bool check(const DataFrame &df, bool capcheck, bool dvercheck)
Cos< T >::type cos(const T &t)
#define DCOUT_V(M_v_Y, M_v_S)
DDRotation()
refers to the unit-rotation (no rotation at all)
ROOT::Math::AxisAngle DDAxisAngle
ROOT::Math::Rotation3D DDRotationMatrix
A DDRotationMatrix is currently implemented with a ROOT Rotation3D.
const std::string & name() const
Returns the name.