00001
00002 #ifndef DETDESC_ALIGNMENTCONDITION_H
00003 #define DETDESC_ALIGNMENTCONDITION_H 1
00004
00005
00006 #include "DetDesc/Condition.h"
00007 #include "DetDesc/DetDesc.h"
00008 #include "DetDesc/CLIDAlignmentCondition.h"
00009 #include "GaudiKernel/Point3DTypes.h"
00010 #include "GaudiKernel/Vector3DTypes.h"
00011 #include "GaudiKernel/Transform3DTypes.h"
00019 class MsgStream;
00020 class IMessageSvc;
00021
00022 class AlignmentCondition : public Condition {
00023
00024 public:
00026 AlignmentCondition( );
00028 AlignmentCondition(const std::vector<double>& translation,
00029 const std::vector<double>& rotation,
00030 const std::vector<double>& pivot =
00031 std::vector<double>(3, 0.) ) ;
00032
00033 virtual ~AlignmentCondition( );
00034
00035 virtual StatusCode initialize();
00036
00038 inline virtual const CLID& clID() const { return classID(); }
00040 inline static const CLID& classID() { return CLID_AlignmentCondition; };
00044 inline const Gaudi::Transform3D& offNominalMatrix() const
00045 {
00046 return m_matrixInv;
00047 }
00051 inline const Gaudi::Transform3D& toNominalMatrix() const
00052 {
00053 return m_matrix;
00054 }
00055
00062 void offNominalMatrix(const Gaudi::Transform3D& newMatrix);
00063
00074 StatusCode setOffNominalTransformation( const std::vector<double>& translation,
00075 const std::vector<double>& rotation,
00076 const std::vector<double>& pivot);
00077
00078 std::ostream &fillStream(std::ostream &s) const;
00079
00080 protected:
00081
00082 IMessageSvc* msgSvc () const;
00083
00084 inline void loadParams(const std::vector<double>& translation,
00085 const std::vector<double>& rotation,
00086 const std::vector<double>& pivot)
00087 {
00088 this->addParam(m_translationString, translation );
00089 this->addParam(m_rotationString, rotation );
00090 this->addParam(m_pivotString, pivot );
00091 }
00092
00093
00094 virtual StatusCode makeMatrices();
00095
00096 void updateParams();
00097
00098 DetDesc::Services* m_services;
00099
00100 Gaudi::Transform3D m_matrix;
00101 Gaudi::Transform3D m_matrixInv;
00102
00103 const std::string m_translationString;
00104 const std::string m_rotationString;
00105 const std::string m_pivotString;
00106
00107 };
00108 #endif // DETDESC_ALIGNMENTCONDITION_H