#ifndef ROOT_TRotMatrix
#define ROOT_TRotMatrix
#ifndef ROOT_TNamed
#include "TNamed.h"
#endif
class TRotMatrix : public TNamed {
private:
virtual void SetReflection();
protected:
Int_t fNumber;
Int_t fType;
Double_t fTheta;
Double_t fPhi;
Double_t fPsi;
Double_t fMatrix[9];
public:
enum {
kReflection = BIT(23)
};
TRotMatrix();
TRotMatrix(const char *name, const char *title, Double_t *matrix);
TRotMatrix(const char *name, const char *title, Double_t theta, Double_t phi, Double_t psi);
TRotMatrix(const char *name, const char *title, Double_t theta1, Double_t phi1,
Double_t theta2, Double_t phi2,
Double_t theta3, Double_t phi3);
virtual ~TRotMatrix();
virtual Double_t Determinant() const ;
virtual Double_t* GetMatrix() {return &fMatrix[0];}
virtual Int_t GetNumber() const {return fNumber;}
virtual Int_t GetType() const {return fType;}
virtual Double_t GetTheta() const {return fTheta;}
virtual Double_t GetPhi() const {return fPhi;}
virtual Double_t GetPsi() const {return fPsi;}
virtual Double_t* GetGLMatrix(Double_t *rGLMatrix) const ;
virtual Bool_t IsReflection() const {return TestBit(kReflection);}
virtual const Double_t* SetAngles(Double_t theta1, Double_t phi1,Double_t theta2, Double_t phi2, Double_t theta3, Double_t phi3);
virtual void SetMatrix(const Double_t *matrix);
virtual void SetName(const char *name);
ClassDef(TRotMatrix,2)
};
inline void TRotMatrix::SetName(const char *) { }
#endif