CLHEP/Vector/LorentzRotation.h
// -*- C++ -*-
// CLASSDOC OFF
// $Id: LorentzRotation.h,v 1.9 1999/01/14 14:14:35 evc Exp $
// ---------------------------------------------------------------------------
// CLASSDOC ON
//
// This file is a part of the CLHEP - a Class Library for High Energy Physics.
//
// This is the definition of the HepLorentzRotation class for performing
// Lorentz transformations (rotations and boosts) on objects of the
// HepLorentzVector class.
//
// .SS See Also
// ThreeVector.h, LorentzVector.h, Rotation.h
//
// .SS Author
// Leif Lonnblad. Modified by Evgueni Tcherniaev.
#ifndef HEP_LORENTZROTATION_H
#define HEP_LORENTZROTATION_H
#ifdef GNUPRAGMA
#pragma interface
#endif
#include "CLHEP/Vector/Rotation.h"
#include "CLHEP/Vector/LorentzVector.h"
#ifdef HEP_NO_INLINE_IN_DECLARATION
#define inline
#endif
class HepLorentzRotation {
public:
class HepLorentzRotation_row {
public:
inline HepLorentzRotation_row(const HepLorentzRotation &, int);
inline HepDouble operator [] (int) const;
private:
const HepLorentzRotation & rr;
int ii;
};
// Helper class for implemention of C-style subscripting r[i][j]
inline HepLorentzRotation();
// Default constructor. Gives a unit matrix.
inline HepLorentzRotation(const HepRotation &);
// Constructor for 3d rotations.
inline HepLorentzRotation(const HepLorentzRotation &);
// Copy constructor.
inline HepLorentzRotation(HepDouble, HepDouble, HepDouble);
inline HepLorentzRotation(const Hep3Vector &);
// Constructors giving a Lorenz-boost.
inline HepDouble xx() const;
inline HepDouble xy() const;
inline HepDouble xz() const;
inline HepDouble xt() const;
inline HepDouble yx() const;
inline HepDouble yy() const;
inline HepDouble yz() const;
inline HepDouble yt() const;
inline HepDouble zx() const;
inline HepDouble zy() const;
inline HepDouble zz() const;
inline HepDouble zt() const;
inline HepDouble tx() const;
inline HepDouble ty() const;
inline HepDouble tz() const;
inline HepDouble tt() const;
// Elements of the matrix.
inline const HepLorentzRotation_row operator [] (int) const;
// Returns object of the helper class for C-style subscripting r[i][j]
HepDouble operator () (int, int) const;
// Fortran-style subscriptimg: returns (i,j) element of the matrix.
inline HepLorentzRotation & operator = (const HepLorentzRotation &);
inline HepLorentzRotation & operator = (const HepRotation &);
// Assignment.
inline HepBoolean operator == (const HepLorentzRotation &) const;
inline HepBoolean operator != (const HepLorentzRotation &) const;
// Comparisons.
inline HepBoolean isIdentity() const;
// Returns true if the Identity matrix.
inline HepLorentzVector vectorMultiplication(const HepLorentzVector&) const;
inline HepLorentzVector operator * (const HepLorentzVector &) const;
// Multiplication with a Lorentz vector.
HepLorentzRotation matrixMultiplication(const HepLorentzRotation &) const;
inline HepLorentzRotation operator * (const HepLorentzRotation &) const;
inline HepLorentzRotation & operator *= (const HepLorentzRotation &);
inline HepLorentzRotation & transform(const HepLorentzRotation &);
inline HepLorentzRotation & transform(const HepRotation &);
// Matrix multiplication.
// Note: a *= b; <=> a = a * b; while a.transform(b); <=> a = b * a;
inline HepLorentzRotation inverse() const;
// Return the inverse.
inline HepLorentzRotation & invert();
// Inverts the LorentzRotation matrix.
inline HepLorentzRotation & boost(HepDouble, HepDouble, HepDouble);
inline HepLorentzRotation & boost(const Hep3Vector &);
// Lorenz boost.
inline HepLorentzRotation & rotateX(HepDouble);
// Rotation around x-axis.
inline HepLorentzRotation & rotateY(HepDouble);
// Rotation around y-axis.
inline HepLorentzRotation & rotateZ(HepDouble);
// Rotation around z-axis.
inline HepLorentzRotation & rotate(HepDouble, const Hep3Vector &);
inline HepLorentzRotation & rotate(HepDouble, const Hep3Vector *);
// Rotation around specified vector.
protected:
HepDouble mxx, mxy, mxz, mxt,
myx, myy, myz, myt,
mzx, mzy, mzz, mzt,
mtx, mty, mtz, mtt;
// The matrix elements.
void setBoost(HepDouble, HepDouble, HepDouble);
// Set elements according to a boost vector.
inline HepLorentzRotation(HepDouble, HepDouble, HepDouble, HepDouble,
HepDouble, HepDouble, HepDouble, HepDouble,
HepDouble, HepDouble, HepDouble, HepDouble,
HepDouble, HepDouble, HepDouble, HepDouble);
// Protected constructor.
};
#ifdef HEP_NO_INLINE_IN_DECLARATION
#undef inline
#endif
#ifdef HEP_SHORT_NAMES
typedef HepLorentzRotation LRotation;
#endif
#ifndef HEP_DEBUG_INLINE
#include "CLHEP/Vector/LorentzRotation.icc"
#endif
#endif /* HEP_LORENTZROTATION_H */
Generated by GNU enscript 1.6.1.