25 : isOK_(component.alignmentParameters() && mother.alignmentParameters()) {
37 using namespace AlignmentParametersFactory;
48 edm::LogError(
"Alignment") <<
"@SUB=ParametersToParametersDerivatives::init"
84 if (rigM2rigC.Invert()) {
85 const double halfWidth = 0.5 * component.
surface().
width();
106 edm::LogError(
"Alignment") <<
"@SUB=ParametersToParametersDerivatives::init2BowedRigid"
107 <<
"dynamic_cast to TwoBowedSurfacesAlignmentParameters failed.";
113 const double ySplit = aliPar->
ySplit();
114 const double halfWidth = 0.5 * component.
surface().
width();
115 const double halfLength = 0.5 * component.
surface().
length();
116 const double halfLength1 = 0.5 * (halfLength + ySplit);
117 const double halfLength2 = 0.5 * (halfLength - ySplit);
118 const double yM1 = 0.5 * (ySplit - halfLength);
119 const double yM2 = yM1 + halfLength;
134 if (!f2fSurf1.Invert() || !f2fSurf2.Invert())
141 typedef ROOT::Math::SMatrix<double, 6, 18, ROOT::Math::MatRepStd<double, 6, 18>> AlgebraicMatrix6_18;
142 AlgebraicMatrix6_18 derivs;
143 derivs.Place_at(derivs1, 0, 0);
144 derivs.Place_at(derivs2, 0, 9);
157 const double gammaScale = BowedDerivs::gammaScale(2. * halfWidth, 2. * halfLength);
164 if (0. == gammaScale || 0. == halfWidth || 0. == halfLength) {
166 edm::LogError(
"Alignment") <<
"@SUB=ParametersToParametersDerivatives::dRigid_dBowed"
167 <<
"Some zero length as input.";
171 for (
unsigned int iRow = 0; iRow < AlgebraicMatrix69::kRows; ++iRow) {
175 for (
unsigned int iCol = 0; iCol < 3; ++iCol) {
176 derivs(iRow, iCol) = dRigidM2dRigidC(iRow, iCol);
183 derivs(iRow, 3) = -dRigidM2dRigidC(iRow, 4) / halfWidth;
187 derivs(iRow, 4) = dRigidM2dRigidC(iRow, 3) / halfLength;
191 derivs(iRow, 5) = dRigidM2dRigidC(iRow, 5) / gammaScale;
195 for (
unsigned int iCol = 6; iCol < AlgebraicMatrix69::kCols; ++iCol) {
196 derivs(iRow, iCol) = 0.;
align::Scalar width() const
bool initRigidRigid(const Alignable &component, const Alignable &mother)
init for component and mother both with RigidBody parameters
ParametersToParametersDerivatives(const Alignable &component, const Alignable &mother)
const RotationType & globalRotation() const
Return the global orientation of the object.
std::string parametersTypeName(ParametersType parType)
Log< level::Error, false > LogError
AlignmentParameters * alignmentParameters() const
Get the AlignmentParameters.
double operator()(unsigned int indParMother, unsigned int indParComp) const
bool initBowedRigid(const Alignable &component, const Alignable &mother)
init for component with BowedSurface and mother with RigidBody parameters
AlgebraicMatrix frameToFrameDerivative(const Alignable *object, const Alignable *composedObject) const
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepStd< double, 6, 6 > > AlgebraicMatrix66
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
virtual int type() const =0
tell type (AlignmentParametersFactory::ParametersType - but no circular dependency) ...
align::Scalar length() const
ROOT::Math::SMatrix< double, 6, 9, ROOT::Math::MatRepStd< double, 6, 9 > > AlgebraicMatrix69
AlgebraicMatrix69 dRigid_dBowed(const AlgebraicMatrix66 &dRigidM2dRigidC, double halfWidth, double halfLength)
align::GlobalPoints toGlobal(const align::LocalPoints &) const
Return in global coord given a set of local points.
ParametersType parametersType(const std::string &typeString)
convert string to ParametersType - exception if not known
const PositionType & globalPosition() const
Return the global position of the object.
TMatrixD derivatives_
can we provide the desired?
bool init2BowedRigid(const Alignable &component, const Alignable &mother)
bool init(const Alignable &component, int typeComponent, const Alignable &mother, int typeMother)