00001 //-------------------------------------------------------------------------- 00002 // File and Version Information: 00003 // $Id: DifRotation.h,v 1.2 2009/12/23 02:59:56 zhangy Exp $ 00004 // 00005 // Description: 00006 // Class Header for |DifRotation| 00007 // Rotation matrix and rotate things 00008 // 00009 // Environment: 00010 // Software developed for the BaBar Detector at the SLAC B-Factory. 00011 // 00012 // Author List: 00013 // A. Snyder 00014 // 00015 // Copyright Information: 00016 // Copyright (C) 1996 SLAC 00017 // 00018 // History: 00019 // Migration for BESIII MDC 00020 // 00021 //------------------------------------------------------------------------ 00022 00023 #ifndef DifRotation_H 00024 #define DifRotation_H 00025 00026 #include "MdcRecoUtil/DifVector.h" 00027 00028 class DifRotation { 00029 00030 public: 00031 00032 //constructors 00033 DifRotation(); // unit matrix 00034 DifRotation // construct from euler 00035 (const DifNumber& alpha, 00036 const DifNumber& beta, 00037 const DifNumber& gamma); 00038 00039 DifRotation // constructionr from axes 00040 (const DifVector& xp,const DifVector& yp,const DifVector& zp); 00041 DifRotation // z=x X y 00042 (const DifVector& xp,const DifVector& yp); 00043 00044 ~DifRotation() {}; 00045 00046 //access 00047 inline DifVector xnew()const {return _xnew;} 00048 inline DifVector ynew()const {return _ynew;} 00049 inline DifVector znew()const {return _znew;} 00050 00051 //rotate a vector 00052 void rotate(DifVector& v)const; 00053 00054 //error check 00055 int fail()const; // check for orthonormality failure 00056 00057 private: 00058 00059 //data - store as vector 00060 DifVector _xnew; 00061 DifVector _ynew; 00062 DifVector _znew; 00063 }; 00064 00065 #endif