#ifndef ROTATIONTRAITS_H #define ROTATIONTRAITS_H // $Id: RotationTraits.h,v 1.1 2005/08/11 14:18:00 fischler Exp $ // // Rotation traits useful for testing purposes. // // For example, when reporting a problem, it is nice to be able // to present a human-readable name for the rotation. // // Created by: Mark Fischler at Thu Aug 12 2005 // #include #include #include "Math/GenVector/Rotation3D.h" #include "Math/GenVector/AxisAngle.h" #include "Math/GenVector/EulerAngles.h" #include "Math/GenVector/Quaternion.h" #include "Math/GenVector/RotationX.h" #include "Math/GenVector/RotationY.h" #include "Math/GenVector/RotationZ.h" #include "Math/GenVector/LorentzRotation.h" namespace ROOT { namespace Math { template struct RotationTraits { static const std::string name() {return "NOT-A-ROTATION!";} }; template <> struct RotationTraits < Rotation3D >{ static const std::string name() { std::string s = "Rotation3D"; return s; } }; template <> struct RotationTraits < AxisAngle >{ static const std::string name() { std::string s = "AxisAngle"; return s; } }; template <> struct RotationTraits < EulerAngles >{ static const std::string name() { std::string s = "EulerAngles"; return s; } }; template <> struct RotationTraits < Quaternion >{ static const std::string name() { std::string s = "Quaternion"; return s; } }; template <> struct RotationTraits < RotationX >{ static const std::string name() { std::string s = "RotationX"; return s; } }; template <> struct RotationTraits < RotationY >{ static const std::string name() { std::string s = "RotationY"; return s; } }; template <> struct RotationTraits < RotationZ >{ static const std::string name() { std::string s = "RotationZ"; return s; } }; template <> struct RotationTraits < LorentzRotation >{ static const std::string name() { std::string s = "LorentzRotation"; return s; } }; #ifdef TODO template <> struct RotationTraits < Boost >{ static const std::string name() { std::string s = "Boost"; return s; } }; template <> struct RotationTraits < BoostX >{ static const std::string name() { std::string s = "BoostX"; return s; } }; template <> struct RotationTraits < BoostY >{ static const std::string name() { std::string s = "BoostY"; return s; } }; template <> struct RotationTraits < BoostZ >{ static const std::string name() { std::string s = "BoostZ"; return s; } }; #endif // TODO } // namespace Math } // namespace ROOT #endif // COORDINATETRAITS_H