#include <ParametersToParametersDerivatives.h>
Public Member Functions | |
bool | isOK () const |
Indicate whether able to provide the derivatives. More... | |
double | operator() (unsigned int indParMother, unsigned int indParComp) const |
ParametersToParametersDerivatives (const Alignable &component, const Alignable &mother) | |
Private Types | |
typedef ROOT::Math::SMatrix< double, 6, 9, ROOT::Math::MatRepStd< double, 6, 9 > > | AlgebraicMatrix69 |
Private Member Functions | |
AlgebraicMatrix69 | dRigid_dBowed (const AlgebraicMatrix66 &dRigidM2dRigidC, double halfWidth, double halfLength) |
bool | init (const Alignable &component, int typeComponent, const Alignable &mother, int typeMother) |
init by choosing the correct detailed init method depending on parameter types More... | |
bool | init2BowedRigid (const Alignable &component, const Alignable &mother) |
init for component with TwoBowedSurfaces and mother with RigidBody parameters More... | |
bool | initBowedRigid (const Alignable &component, const Alignable &mother) |
init for component with BowedSurface and mother with RigidBody parameters More... | |
bool | initRigidRigid (const Alignable &component, const Alignable &mother) |
init for component and mother both with RigidBody parameters More... | |
Private Attributes | |
TMatrixD | derivatives_ |
can we provide the desired? More... | |
bool | isOK_ |
data members More... | |
Class for getting the jacobian d_mother/d_component for various kinds of alignment parametrisations, i.e. the derivatives expressing the influence of the parameters of the 'component' on the parameters of its 'mother'. This is needed e.g. to formulate constraints to remove the additional degrees of freedom introduced if larger structures and their components are aligned simultaneously. The jacobian matrix is
/ dp1_l/dp1_i dp1_l/dp2_i ... dp1_l/dpn_i | | dp2_l/dp1_i dp2_l/dp2_i ... dp2_l/dpn_i | | . . . | | . . . | | . . . | \ dpm_l/dpm_i dpm_l/dpm_i ... dpm_l/dpn_i /
where p1_l, p2_l, ..., pn_l are the n parameters of the composite 'mother' object and p1_i, p2_i, ..., pm_i are the m parameters of its component.
Note that not all combinations of parameters are supported: Please check method isOK() before accessing the derivatives via operator(unsigned int indParMother, unsigned int indParComp).
Currently these parameters are supported:
component: rigid body, bowed surface or two bowed surfaces parameters.
(last update by
)
Definition at line 43 of file ParametersToParametersDerivatives.h.
|
private |
Definition at line 70 of file ParametersToParametersDerivatives.h.
ParametersToParametersDerivatives::ParametersToParametersDerivatives | ( | const Alignable & | component, |
const Alignable & | mother | ||
) |
Definition at line 24 of file ParametersToParametersDerivatives.cc.
References Alignable::alignmentParameters(), init, and AlignmentParameters::type().
|
private |
from d(rigid_mother)/d(rigid_component) to d(rigid_mother)/d(bowed_component) for bad input (length or width zero), set object to invalid: isOK_ = false
Definition at line 163 of file ParametersToParametersDerivatives.cc.
References isOK_.
Referenced by init2BowedRigid(), and initBowedRigid().
|
private |
init by choosing the correct detailed init method depending on parameter types
Definition at line 34 of file ParametersToParametersDerivatives.cc.
References init2BowedRigid(), initBowedRigid(), initRigidRigid(), AlignmentParametersFactory::kBowedSurface, AlignmentParametersFactory::kRigidBody, AlignmentParametersFactory::kRigidBody4D, AlignmentParametersFactory::kTwoBowedSurfaces, AlignmentParametersFactory::parametersType(), and AlignmentParametersFactory::parametersTypeName().
Referenced by isOK().
|
private |
init for component with TwoBowedSurfaces and mother with RigidBody parameters
Definition at line 105 of file ParametersToParametersDerivatives.cc.
References Alignable::alignmentParameters(), derivatives_, dRigid_dBowed(), Alignable::globalPosition(), Alignable::globalRotation(), AlignableSurface::length(), Alignable::surface(), AlignableSurface::toGlobal(), AlignableSurface::width(), and TwoBowedSurfacesAlignmentParameters::ySplit().
Referenced by init(), and isOK().
|
private |
init for component with BowedSurface and mother with RigidBody parameters
Definition at line 82 of file ParametersToParametersDerivatives.cc.
References derivatives_, dRigid_dBowed(), FrameToFrameDerivative::frameToFrameDerivative(), AlignableSurface::length(), funct::m, Alignable::surface(), and AlignableSurface::width().
Referenced by init(), and isOK().
|
private |
init for component and mother both with RigidBody parameters
Definition at line 59 of file ParametersToParametersDerivatives.cc.
References derivatives_, FrameToFrameDerivative::frameToFrameDerivative(), and funct::m.
Referenced by init(), and isOK().
|
inline |
Indicate whether able to provide the derivatives.
Definition at line 49 of file ParametersToParametersDerivatives.h.
References init(), init2BowedRigid(), initBowedRigid(), initRigidRigid(), isOK_, and operator()().
Referenced by AlignmentParameterStore::hierarchyConstraints().
double ParametersToParametersDerivatives::operator() | ( | unsigned int | indParMother, |
unsigned int | indParComp | ||
) | const |
Return the derivative DeltaParam(mother)/DeltaParam(component). Indices start with 0 - but check isOK() first! See class description about matrix.
Definition at line 211 of file ParametersToParametersDerivatives.cc.
References derivatives_.
Referenced by isOK().
|
private |
can we provide the desired?
Definition at line 78 of file ParametersToParametersDerivatives.h.
Referenced by init2BowedRigid(), initBowedRigid(), initRigidRigid(), and operator()().
|
private |
data members
Definition at line 77 of file ParametersToParametersDerivatives.h.
Referenced by dRigid_dBowed(), and isOK().