00001 #ifndef Alignment_CommonAlignmentAlgorithm_AlignableData_h 00002 #define Alignment_CommonAlignmentAlgorithm_AlignableData_h 00003 00004 #include "Alignment/CommonAlignment/interface/StructureType.h" 00005 #include "CondFormats/Alignment/interface/Definitions.h" 00006 #include <vector> 00007 00012 00013 template<class T> class AlignableData 00014 { 00015 00016 public: 00017 00020 AlignableData(const T& pos, 00021 const align::RotationType& rot, 00022 align::ID id, align::StructureType objid, 00023 const std::vector<double> &deformationParameters = std::vector<double>()) : 00024 thePos(pos), theRot(rot), theObjId(objid), theId(id), 00025 theDeformationParameters(deformationParameters) {} 00026 00028 const T& pos() const { return thePos; } 00029 const align::RotationType& rot() const { return theRot; } 00030 align::StructureType objId() const { return theObjId; } 00031 align::ID id() const { return theId; } 00032 const std::vector<double> deformationParameters() const { return theDeformationParameters;} 00033 00034 private: 00035 00036 // data members 00037 00038 T thePos; 00039 align::RotationType theRot; 00040 align::StructureType theObjId; 00041 align::ID theId; 00042 std::vector<double> theDeformationParameters; 00043 00044 }; 00045 00047 typedef AlignableData<align::GlobalPoint> AlignableAbsData; 00049 typedef AlignableData<align::GlobalVector> AlignableRelData; 00050 00051 typedef std::vector<AlignableAbsData> AlignablePositions; 00052 typedef std::vector<AlignableRelData> AlignableShifts; 00053 00054 #endif 00055