Import Geant4 0.1.0 source tree
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: G4RotationMatrix.icc,v 1.1 1999/01/08 16:31:34 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00-01 $
|
||||
//
|
||||
// Inline functions for class G4RotationMatrix
|
||||
// Converted from CLHEP:
|
||||
// Author: Leif Lonnblad
|
||||
//
|
||||
// History:
|
||||
// 30.11.94 P.Kent
|
||||
|
||||
inline G4RotationMatrix & G4RotationMatrix::operator = (const G4RotationMatrix & m) {
|
||||
xx = m.xx;
|
||||
xy = m.xy;
|
||||
xz = m.xz;
|
||||
yx = m.yx;
|
||||
yy = m.yy;
|
||||
yz = m.yz;
|
||||
zx = m.zx;
|
||||
zy = m.zy;
|
||||
zz = m.zz;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline G4bool G4RotationMatrix::operator == (const G4RotationMatrix& m) const
|
||||
{
|
||||
return ( (xx == m.xx)
|
||||
&&(xy == m.xy)
|
||||
&&(xz == m.xz)
|
||||
&&(yx == m.yx)
|
||||
&&(yy == m.yy)
|
||||
&&(yz == m.yz)
|
||||
&&(zx == m.zx)
|
||||
&&(zy == m.zy)
|
||||
&&(zz == m.zz) ) ? true : false;
|
||||
}
|
||||
|
||||
inline G4ThreeVector G4RotationMatrix::operator * (const G4ThreeVector & p) const {
|
||||
return G4ThreeVector(xx*p.x() + xy*p.y() + xz*p.z(),
|
||||
yx*p.x() + yy*p.y() + yz*p.z(),
|
||||
zx*p.x() + zy*p.y() + zz*p.z());
|
||||
}
|
||||
|
||||
inline G4RotationMatrix & G4RotationMatrix::operator *= (const G4RotationMatrix & m) {
|
||||
return *this = operator * (m);
|
||||
}
|
||||
|
||||
inline G4RotationMatrix & G4RotationMatrix::transform(const G4RotationMatrix & m) {
|
||||
return *this = m.operator * (*this);
|
||||
}
|
||||
|
||||
inline G4RotationMatrix G4RotationMatrix::inverse() const {
|
||||
G4RotationMatrix m(xx, yx, zx, xy, yy, zy, xz, yz, zz);
|
||||
return m;
|
||||
}
|
||||
|
||||
inline G4RotationMatrix & G4RotationMatrix::invert() {
|
||||
return *this=inverse();
|
||||
}
|
||||
|
||||
inline G4RotationMatrix & G4RotationMatrix::rotate(double psi, const G4ThreeVector * p) {
|
||||
return rotate(psi, *p);
|
||||
}
|
||||
|
||||
inline G4RotationMatrix::G4RotationMatrix(double mxx, double mxy, double mxz,
|
||||
double myx, double myy, double myz,
|
||||
double mzx, double mzy, double mzz)
|
||||
: xx(mxx), xy(mxy), xz(mxz), yx(myx), yy(myy), yz(myz),
|
||||
zx(mzx), zy(mzy), zz(mzz) {}
|
||||
|
||||
inline double G4RotationMatrix::phiX() const
|
||||
{
|
||||
double radang;
|
||||
if (yx) radang=atan2(yx,xx);
|
||||
else radang=0.0;
|
||||
return radang;
|
||||
}
|
||||
|
||||
inline double G4RotationMatrix::phiY() const
|
||||
{
|
||||
double radang;
|
||||
if (yy) radang=atan2(yy,xy);
|
||||
else radang=0.0;
|
||||
return radang;
|
||||
}
|
||||
|
||||
inline double G4RotationMatrix::phiZ() const
|
||||
{
|
||||
double radang;
|
||||
if (yz) radang=atan2(yz,xz);
|
||||
else radang=0.0;
|
||||
return radang;
|
||||
}
|
||||
|
||||
inline double G4RotationMatrix::thetaX() const
|
||||
{
|
||||
// double zang=xz;
|
||||
// if (zang>=1.0) return 0;
|
||||
// else if (zang <=1.0) return 180.0;
|
||||
// else return acos(zang);
|
||||
return acos(xz);
|
||||
}
|
||||
inline double G4RotationMatrix::thetaY() const
|
||||
|
||||
{
|
||||
//Angs should always be <1.0 && >-1.0
|
||||
// double zang=yz;
|
||||
// if (zang>=1.0) return 0;
|
||||
// else if (zang <=1.0) return 180.0;
|
||||
// else return acos(zang);
|
||||
return acos(yz);
|
||||
}
|
||||
|
||||
inline double G4RotationMatrix::thetaZ() const
|
||||
{
|
||||
//Angs should always be <1.0 && >-1.0
|
||||
// double zang=zz;
|
||||
// if (zang>=1.0) return 0;
|
||||
// else if (zang <=1.0) return 180.0;
|
||||
// else return acos(zang);
|
||||
return acos(zz);
|
||||
}
|
||||
|
||||
// Return zero if identity, else non-zero
|
||||
// Does not use `fuzzy' check - must be exactly identity
|
||||
inline G4bool G4RotationMatrix::isIdentity() const
|
||||
{
|
||||
return (xx==1.0 && xy==0.0 && xz==0.0 &&
|
||||
yx==0.0 && yy==1.0 && yz==0.0 &&
|
||||
zx==0.0 && zy==0.0 && zz==1.0 ) ? true : false;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user