File indexing completed on 2024-04-06 12:01:55
0001 #ifndef AlignTransformErrorExtended_H
0002 #define AlignTransformErrorExtended_H
0003 #include "CondFormats/Serialization/interface/Serializable.h"
0004
0005 #include "CLHEP/Matrix/SymMatrix.h"
0006 #include "CLHEP/Vector/RotationInterfaces.h"
0007
0008 #include "CondFormats/Alignment/interface/Definitions.h"
0009
0010
0011
0012
0013 class AlignTransformErrorExtended {
0014 public:
0015 typedef CLHEP::HepSymMatrix SymMatrix;
0016
0017 AlignTransformErrorExtended() {}
0018 AlignTransformErrorExtended(const SymMatrix& symMatrix, align::ID irawId) : m_rawId(irawId) {
0019 for (unsigned int i = 0; i < m_nPars; ++i)
0020 for (unsigned int j = 0; j <= i; ++j)
0021 m_Parameters[i * (i + 1) / 2 + j] = symMatrix[i][j];
0022 }
0023
0024 SymMatrix matrix() const {
0025 SymMatrix result(m_nPars);
0026 for (unsigned int i = 0; i < m_nPars; ++i)
0027 for (unsigned int j = 0; j <= i; ++j)
0028 result[i][j] = m_Parameters[i * (i + 1) / 2 + j];
0029 return result;
0030 }
0031
0032 align::ID rawId() const { return m_rawId; }
0033
0034
0035 const bool operator<(const AlignTransformErrorExtended& other) const { return (m_rawId < other.rawId()); }
0036
0037 private:
0038
0039 static const unsigned int m_nPars = 6;
0040 double m_Parameters[m_nPars * (m_nPars + 1) / 2];
0041 align::ID m_rawId;
0042
0043 COND_SERIALIZABLE;
0044 };
0045 #endif