25 : isOK_(component.alignmentParameters() && mother.alignmentParameters())
49 edm::LogError(
"Alignment") <<
"@SUB=ParametersToParametersDerivatives::init" 52 <<
": not supported.";
89 if (rigM2rigC.Invert()) {
90 const double halfWidth = 0.5 * component.
surface().
width();
113 edm::LogError(
"Alignment") <<
"@SUB=ParametersToParametersDerivatives::init2BowedRigid" 114 <<
"dynamic_cast to TwoBowedSurfacesAlignmentParameters failed.";
120 const double ySplit = aliPar->
ySplit();
121 const double halfWidth = 0.5 * component.
surface().
width();
122 const double halfLength = 0.5 * component.
surface().
length();
123 const double halfLength1 = 0.5 * (halfLength + ySplit);
124 const double halfLength2 = 0.5 * (halfLength - ySplit);
125 const double yM1 = 0.5 * (ySplit - halfLength);
126 const double yM2 = yM1 + halfLength;
143 if (!f2fSurf1.Invert() || !f2fSurf2.Invert())
return false;
149 typedef ROOT::Math::SMatrix<double,6,18,ROOT::Math::MatRepStd<double,6,18> > AlgebraicMatrix6_18;
150 AlgebraicMatrix6_18 derivs;
151 derivs.Place_at(derivs1, 0, 0);
152 derivs.Place_at(derivs2, 0, 9);
164 double halfWidth,
double halfLength)
167 const double gammaScale = BowedDerivs::gammaScale(2.*halfWidth, 2.*halfLength);
174 if (0. == gammaScale || 0. == halfWidth || 0. == halfLength) {
176 edm::LogError(
"Alignment") <<
"@SUB=ParametersToParametersDerivatives::dRigid_dBowed" 177 <<
"Some zero length as input.";
181 for (
unsigned int iRow = 0; iRow < AlgebraicMatrix69::kRows; ++iRow) {
185 for (
unsigned int iCol = 0; iCol < 3; ++iCol) {
186 derivs(iRow, iCol) = dRigidM2dRigidC(iRow, iCol);
193 derivs(iRow, 3) = -dRigidM2dRigidC(iRow, 4)/halfWidth;
196 derivs(iRow, 4) = dRigidM2dRigidC(iRow, 3)/halfLength;
199 derivs(iRow, 5) = dRigidM2dRigidC(iRow, 5)/gammaScale;
202 for (
unsigned int iCol = 6; iCol < AlgebraicMatrix69::kCols; ++iCol) {
203 derivs(iRow, iCol) = 0.;
212 unsigned int indParComp)
const align::Scalar width() const
bool initRigidRigid(const Alignable &component, const Alignable &mother)
init for component and mother both with RigidBody parameters
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepStd< double, 6, 6 > > AlgebraicMatrix66
ParametersToParametersDerivatives(const Alignable &component, const Alignable &mother)
const RotationType & globalRotation() const
Return the global orientation of the object.
std::string parametersTypeName(ParametersType parType)
convert ParametersType to string understood by parametersType(string &typeString) ...
AlignmentParameters * alignmentParameters() const
Get the AlignmentParameters.
virtual int type() const =0
tell type (AlignmentParametersFactory::ParametersType - but no circular dependency) ...
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
ROOT::Math::SMatrix< double, 6, 9, ROOT::Math::MatRepStd< double, 6, 9 > > AlgebraicMatrix69
AlgebraicMatrix frameToFrameDerivative(const Alignable *object, const Alignable *composedObject) const
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
align::Scalar length() const
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)
init for component with TwoBowedSurfaces and mother with RigidBody parameters
bool init(const Alignable &component, int typeComponent, const Alignable &mother, int typeMother)
init by choosing the correct detailed init method depending on parameter types