00001 #ifndef Alignment_CommonAlignment_RigidBodyAlignmentParameters_h 00002 #define Alignment_CommonAlignment_RigidBodyAlignmentParameters_h 00003 00004 #include "Alignment/CommonAlignment/interface/AlignmentParameters.h" 00005 00015 00016 class RigidBodyAlignmentParameters : public AlignmentParameters 00017 { 00018 00019 public: 00020 00022 enum AlignmentParameterName 00023 { 00024 dx = 0, dy, dz, 00025 dalpha, dbeta, dgamma, 00026 N_PARAM 00027 }; 00028 00031 RigidBodyAlignmentParameters(Alignable* alignable, bool calcMis); 00032 00034 RigidBodyAlignmentParameters( Alignable* alignable, 00035 const AlgebraicVector& parameters, 00036 const AlgebraicSymMatrix& covMatrix ); 00037 00039 RigidBodyAlignmentParameters( Alignable* alignable, const AlgebraicVector& parameters, 00040 const AlgebraicSymMatrix& covMatrix, 00041 const std::vector<bool>& selection ); 00042 00044 virtual ~RigidBodyAlignmentParameters() {}; 00045 00047 virtual RigidBodyAlignmentParameters* clone( const AlgebraicVector& parameters, 00048 const AlgebraicSymMatrix& covMatrix ) const; 00049 00051 virtual RigidBodyAlignmentParameters* 00052 cloneFromSelected(const AlgebraicVector& parameters, const AlgebraicSymMatrix& covMatrix) const; 00053 00055 virtual AlgebraicMatrix derivatives( const TrajectoryStateOnSurface& tsos, 00056 const AlignableDetOrUnitPtr & ) const; 00057 00059 virtual AlgebraicMatrix selectedDerivatives( const TrajectoryStateOnSurface& tsos, 00060 const AlignableDetOrUnitPtr & ) const; 00061 00063 AlgebraicVector translation(void) const; 00064 00066 AlgebraicVector rotation(void) const; 00067 00069 AlgebraicVector globalParameters(void) const; 00070 00072 void print(void) const; 00073 00076 static AlgebraicVector displacementFromAlignable(const Alignable* ali); 00077 00078 }; 00079 00080 #endif 00081