File indexing completed on 2024-09-07 04:34:29
0001 #ifndef Alignment_CommonAlignment_BowedSurfaceAlignmentParameters_h
0002 #define Alignment_CommonAlignment_BowedSurfaceAlignmentParameters_h
0003
0004 #include "Alignment/CommonAlignment/interface/AlignmentParameters.h"
0005 #include "CondFormats/Alignment/interface/Definitions.h"
0006 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
0007
0008 #include "Alignment/CommonAlignmentParametrization/interface/BowedSurfaceAlignmentDerivatives.h"
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 class Alignable;
0024 class AlignableDetOrUnitPtr;
0025 class TrajectoryStateOnSurface;
0026
0027 class BowedSurfaceAlignmentParameters : public AlignmentParameters {
0028 public:
0029
0030 typedef BowedSurfaceAlignmentDerivatives BowedDerivs;
0031 enum AlignmentParameterName {
0032 dx = BowedDerivs::dx,
0033 dy = BowedDerivs::dy,
0034 dz = BowedDerivs::dz,
0035 dslopeX = BowedDerivs::dslopeX,
0036 dslopeY = BowedDerivs::dslopeY,
0037 drotZ = BowedDerivs::drotZ,
0038 dsagittaX = BowedDerivs::dsagittaX,
0039 dsagittaXY = BowedDerivs::dsagittaXY,
0040 dsagittaY = BowedDerivs::dsagittaY,
0041 N_PARAM = BowedDerivs::N_PARAM
0042 };
0043
0044
0045 BowedSurfaceAlignmentParameters(Alignable *alignable);
0046
0047
0048 BowedSurfaceAlignmentParameters(Alignable *alignable,
0049 const AlgebraicVector ¶meters,
0050 const AlgebraicSymMatrix &covMatrix);
0051
0052
0053 BowedSurfaceAlignmentParameters(Alignable *alignable,
0054 const AlgebraicVector ¶meters,
0055 const AlgebraicSymMatrix &covMatrix,
0056 const std::vector<bool> &selection);
0057
0058
0059 ~BowedSurfaceAlignmentParameters() override {}
0060 void apply() override;
0061 int type() const override;
0062
0063
0064 BowedSurfaceAlignmentParameters *clone(const AlgebraicVector ¶meters,
0065 const AlgebraicSymMatrix &covMatrix) const override;
0066
0067
0068 BowedSurfaceAlignmentParameters *cloneFromSelected(const AlgebraicVector ¶meters,
0069 const AlgebraicSymMatrix &covMatrix) const override;
0070
0071
0072 AlgebraicMatrix derivatives(const TrajectoryStateOnSurface &tsos, const AlignableDetOrUnitPtr &aliDet) const override;
0073
0074
0075 align::LocalVector translation() const;
0076
0077
0078 align::EulerAngles rotation() const;
0079
0080
0081 void print() const;
0082 };
0083
0084 #endif