Go to the documentation of this file.00001 #ifndef Alignment_CommonAlignment_BowedSurfaceAlignmentParameters_h
00002 #define Alignment_CommonAlignment_BowedSurfaceAlignmentParameters_h
00003
00004 #include "Alignment/CommonAlignment/interface/AlignmentParameters.h"
00005 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
00006 #include "CondFormats/Alignment/interface/Definitions.h"
00007
00008 #include "Alignment/CommonAlignmentParametrization/interface/BowedSurfaceAlignmentDerivatives.h"
00009
00022
00023 class Alignable;
00024 class AlignableDetOrUnitPtr;
00025 class TrajectoryStateOnSurface;
00026
00027 class BowedSurfaceAlignmentParameters : public AlignmentParameters
00028 {
00029 public:
00031 typedef BowedSurfaceAlignmentDerivatives BowedDerivs;
00032 enum AlignmentParameterName {
00033 dx = BowedDerivs::dx,
00034 dy = BowedDerivs::dy,
00035 dz = BowedDerivs::dz,
00036 dslopeX = BowedDerivs::dslopeX,
00037 dslopeY = BowedDerivs::dslopeY,
00038 drotZ = BowedDerivs::drotZ,
00039 dsagittaX = BowedDerivs::dsagittaX,
00040 dsagittaXY = BowedDerivs::dsagittaXY,
00041 dsagittaY = BowedDerivs::dsagittaY,
00042 N_PARAM = BowedDerivs::N_PARAM
00043 };
00044
00046 BowedSurfaceAlignmentParameters(Alignable *alignable);
00047
00049 BowedSurfaceAlignmentParameters(Alignable *alignable,
00050 const AlgebraicVector ¶meters,
00051 const AlgebraicSymMatrix &covMatrix);
00052
00054 BowedSurfaceAlignmentParameters(Alignable *alignable, const AlgebraicVector ¶meters,
00055 const AlgebraicSymMatrix &covMatrix,
00056 const std::vector<bool> &selection);
00057
00059 virtual ~BowedSurfaceAlignmentParameters() {};
00060 virtual void apply();
00061 virtual int type() const;
00062
00064 virtual BowedSurfaceAlignmentParameters* clone(const AlgebraicVector ¶meters,
00065 const AlgebraicSymMatrix &covMatrix) const;
00066
00068 virtual BowedSurfaceAlignmentParameters*
00069 cloneFromSelected(const AlgebraicVector ¶meters,
00070 const AlgebraicSymMatrix &covMatrix) const;
00071
00073 virtual AlgebraicMatrix derivatives(const TrajectoryStateOnSurface &tsos,
00074 const AlignableDetOrUnitPtr &aliDet) const;
00075
00077 align::LocalVector translation() const;
00078
00080 align::EulerAngles rotation() const;
00081
00083 void print() const;
00084 };
00085
00086 #endif
00087