File indexing completed on 2024-04-06 11:56:13
0001
0002
0003
0004
0005
0006
0007
0008 #include "FWCore/Utilities/interface/Exception.h"
0009
0010 #include "Alignment/CommonAlignment/interface/Alignable.h"
0011 #include "Alignment/CommonAlignment/interface/AlignableDetOrUnitPtr.h"
0012 #include "Alignment/CommonAlignmentParametrization/interface/AlignmentParametersFactory.h"
0013 #include "Alignment/CommonAlignmentParametrization/interface/FrameToFrameDerivative.h"
0014 #include "Alignment/CommonAlignmentParametrization/interface/SegmentAlignmentDerivatives4D.h"
0015 #include "CondFormats/Alignment/interface/Definitions.h"
0016
0017
0018 #include "Alignment/CommonAlignmentParametrization/interface/RigidBodyAlignmentParameters4D.h"
0019
0020
0021 AlgebraicMatrix RigidBodyAlignmentParameters4D::derivatives(const TrajectoryStateOnSurface &tsos,
0022 const AlignableDetOrUnitPtr &alidet) const {
0023 const Alignable *ali = this->alignable();
0024
0025 if (ali == alidet) {
0026 return SegmentAlignmentDerivatives4D()(tsos);
0027 } else {
0028 const AlgebraicMatrix deriv = SegmentAlignmentDerivatives4D()(tsos);
0029 FrameToFrameDerivative ftfd;
0030 return ftfd.frameToFrameDerivative(alidet, ali).T() * deriv;
0031 }
0032 }
0033
0034
0035 RigidBodyAlignmentParameters4D *RigidBodyAlignmentParameters4D::clone(const AlgebraicVector ¶meters,
0036 const AlgebraicSymMatrix &covMatrix) const {
0037 RigidBodyAlignmentParameters4D *rbap =
0038 new RigidBodyAlignmentParameters4D(alignable(), parameters, covMatrix, selector());
0039
0040 if (userVariables())
0041 rbap->setUserVariables(userVariables()->clone());
0042 rbap->setValid(isValid());
0043
0044 return rbap;
0045 }
0046
0047
0048 RigidBodyAlignmentParameters4D *RigidBodyAlignmentParameters4D::cloneFromSelected(
0049 const AlgebraicVector ¶meters, const AlgebraicSymMatrix &covMatrix) const {
0050 RigidBodyAlignmentParameters4D *rbap = new RigidBodyAlignmentParameters4D(
0051 alignable(), expandVector(parameters, selector()), expandSymMatrix(covMatrix, selector()), selector());
0052
0053 if (userVariables())
0054 rbap->setUserVariables(userVariables()->clone());
0055 rbap->setValid(isValid());
0056
0057 return rbap;
0058 }
0059
0060
0061 int RigidBodyAlignmentParameters4D::type() const { return AlignmentParametersFactory::kRigidBody4D; }