33 if (parameters.num_row() !=
N_PARAM) {
34 throw cms::Exception(
"BadParameters") <<
"in BowedSurfaceAlignmentParameters(): " << parameters.num_row()
35 <<
" instead of " <<
N_PARAM <<
" parameters.";
45 if (parameters.num_row() !=
N_PARAM) {
46 throw cms::Exception(
"BadParameters") <<
"in BowedSurfaceAlignmentParameters(): " << parameters.num_row()
47 <<
" instead of " <<
N_PARAM <<
" parameters.";
86 throw cms::Exception(
"MisMatch") <<
"BowedSurfaceAlignmentParameters::derivatives: The hit alignable "
88 <<
"aligned one (i.e. bowed surface parameters cannot be used for "
89 "composed alignables)\n";
111 eulerAngles[1] = -params[
dslopeX] * 2. / surface.
width();
113 eulerAngles[2] = params[
drotZ] / aScale;
122 throw cms::Exception(
"BadParameters") <<
"BowedSurfaceAlignmentParameters::apply: parameters without "
155 std::cout <<
"Contents of BowedSurfaceAlignmentParameters:"
156 <<
"\nParameters: " <<
theData->parameters() <<
"\nCovariance: " <<
theData->covariance() << std::endl;
align::Scalar width() const
AlgebraicSymMatrix expandSymMatrix(const AlgebraicSymMatrix &m, const std::vector< bool > &sel) const
virtual void move(const GlobalVector &displacement)=0
Movement with respect to the global reference frame.
const std::vector< bool > & selector(void) const
Get alignment parameter selector vector.
BowedSurfaceAlignmentParameters(Alignable *alignable)
Constructor with empty parameters/covariance.
align::LocalVector translation() const
Get translation parameters in double precision.
AlignmentUserVariables * userVariables(void) const
Get pointer to user variables.
void print() const
print parameters to screen
BowedSurfaceAlignmentParameters * cloneFromSelected(const AlgebraicVector ¶meters, const AlgebraicSymMatrix &covMatrix) const override
Clone selected parameters (for update of parameters)
align::EulerAngles rotation() const
Get rotation parameters.
CLHEP::HepMatrix AlgebraicMatrix
void rectify(RotationType &)
Correct a rotation matrix for rounding errors.
void setValid(bool v)
Set validity flag.
virtual void addSurfaceDeformation(const SurfaceDeformation *deformation, bool propagateDown)=0
void apply() override
apply parameters to alignable
static double gammaScale(double width, double splitLength)
Alignable * alignable(void) const
Get pointer to corresponding alignable.
Vector3DBase< Scalar, LocalTag > LocalVector
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
CLHEP::HepVector AlgebraicVector
AlgebraicVector EulerAngles
align::Scalar length() const
AlgebraicVector expandVector(const AlgebraicVector &m, const std::vector< bool > &sel) const
void setUserVariables(AlignmentUserVariables *auv)
Set pointer to user variables.
virtual void rotateInGlobalFrame(const RotationType &rotation)=0
BowedSurfaceAlignmentDerivatives BowedDerivs
Give parameters a name.
BowedSurfaceAlignmentParameters * clone(const AlgebraicVector ¶meters, const AlgebraicSymMatrix &covMatrix) const override
Clone all parameters (for update of parameters)
bool isValid(void) const
Get validity flag.
align::GlobalPoints toGlobal(const align::LocalPoints &) const
Return in global coord given a set of local points.
RotationType toMatrix(const EulerAngles &)
Convert rotation angles about x-, y-, z-axes to matrix.
CLHEP::HepSymMatrix AlgebraicSymMatrix
AlgebraicMatrix derivatives(const TrajectoryStateOnSurface &tsos, const AlignableDetOrUnitPtr &aliDet) const override
Get all derivatives.
int type() const override
tell type (AlignmentParametersFactory::ParametersType - but no circular dependency) ...