Go to the documentation of this file.00001 #ifndef Alignment_CommonAlignmentParametrization_ParametersToParametersDerivatives_h
00002 #define Alignment_CommonAlignmentParametrization_ParametersToParametersDerivatives_h
00003
00015
00016 #include "DataFormats/Math/interface/AlgebraicROOTObjects.h"
00017 #include "TMatrixD.h"
00018
00019 class Alignable;
00020
00021 class ParametersToParametersDerivatives
00022 {
00023 public:
00024 ParametersToParametersDerivatives(const Alignable &component, const Alignable &mother);
00025
00027 bool isOK() const { return isOK_;}
00028
00031 double operator() (unsigned int indParMother, unsigned int indParComp) const;
00032
00033
00034
00035
00036 private:
00038 bool init(const Alignable &component, int typeComponent,
00039 const Alignable &mother, int typeMother);
00041 bool initRigidRigid(const Alignable &component, const Alignable &mother);
00043 bool initBowedRigid(const Alignable &component, const Alignable &mother);
00045 bool init2BowedRigid(const Alignable &component, const Alignable &mother);
00046
00047 typedef ROOT::Math::SMatrix<double,6,9,ROOT::Math::MatRepStd<double,6,9> > AlgebraicMatrix69;
00048 AlgebraicMatrix69 dBowed_dRigid(const AlgebraicMatrix66 &f2f,
00049 double halfWidth, double halfLength) const;
00050
00052 bool isOK_;
00053 TMatrixD derivatives_;
00054 };
00055
00056 #endif
00057