File indexing completed on 2024-04-06 12:01:55
0001 #ifndef AlignTransform_H
0002 #define AlignTransform_H
0003 #include "CondFormats/Serialization/interface/Serializable.h"
0004
0005 #include "CLHEP/Vector/EulerAngles.h"
0006 #include "CLHEP/Vector/Rotation.h"
0007 #include "CLHEP/Vector/ThreeVector.h"
0008 #include "CLHEP/Geometry/Transform3D.h"
0009
0010 #include "CondFormats/Alignment/interface/Definitions.h"
0011
0012
0013
0014
0015 class AlignTransform {
0016 public:
0017 typedef CLHEP::HepEulerAngles EulerAngles;
0018 typedef CLHEP::Hep3Vector Translation;
0019 typedef CLHEP::HepRotation Rotation;
0020 typedef HepGeom::Transform3D Transform;
0021
0022
0023 AlignTransform() {}
0024
0025
0026 AlignTransform(const Translation& itranslation, const EulerAngles& ieulerAngles, align::ID irawId)
0027 : m_translation(itranslation), m_eulerAngles(ieulerAngles), m_rawId(irawId) {}
0028
0029
0030 AlignTransform(const Translation& itranslation, const Rotation& irotation, align::ID irawId)
0031 : m_translation(itranslation), m_eulerAngles(irotation.eulerAngles()), m_rawId(irawId) {}
0032
0033 const Translation& translation() const { return m_translation; }
0034
0035
0036 align::ID rawId() const { return m_rawId; }
0037
0038 Rotation rotation()
0039 const {
0040
0041 return Rotation(m_eulerAngles);
0042 }
0043
0044 Transform transform() const { return Transform(rotation(), translation()); }
0045
0046
0047 const bool operator<(const AlignTransform& other) const { return (m_rawId < other.rawId()); }
0048
0049 private:
0050 Translation m_translation;
0051 EulerAngles m_eulerAngles;
0052 align::ID m_rawId;
0053
0054 COND_SERIALIZABLE;
0055 };
0056 #endif