00001 #ifndef Alignment_CommonAlignment_AlignableSurface_H 00002 #define Alignment_CommonAlignment_AlignableSurface_H 00003 00013 #include <vector> 00014 00015 #include "Alignment/CommonAlignment/interface/Utilities.h" 00016 #include "DataFormats/GeometrySurface/interface/GloballyPositioned.h" 00017 00018 class Plane; 00019 00020 class AlignableSurface: 00021 public GloballyPositioned<align::Scalar> 00022 { 00023 public: 00024 00026 AlignableSurface( 00027 const Plane& surface 00028 ); 00029 00031 AlignableSurface( 00032 const align::PositionType& = PositionType(), // default 0 00033 const align::RotationType& = RotationType() // default identity 00034 ); 00035 00036 align::Scalar width() const { return theWidth; } 00037 00038 align::Scalar length() const { return theLength; } 00039 00040 void setWidth(align::Scalar width) { theWidth = width; } 00041 00042 void setLength(align::Scalar length) { theLength = length; } 00043 00044 using GloballyPositioned<align::Scalar>::toGlobal; 00045 using GloballyPositioned<align::Scalar>::toLocal; 00046 00048 align::GlobalPoints toGlobal( 00049 const align::LocalPoints& 00050 ) const; 00051 00053 align::RotationType toGlobal( 00054 const align::RotationType& 00055 ) const; 00056 00058 align::EulerAngles toGlobal( 00059 const align::EulerAngles& 00060 ) const; 00061 00063 align::RotationType toLocal( 00064 const align::RotationType& 00065 ) const; 00066 00068 align::EulerAngles toLocal( 00069 const align::EulerAngles& 00070 ) const; 00071 00072 private: 00073 00074 align::Scalar theWidth; 00075 align::Scalar theLength; 00076 }; 00077 00078 #endif