CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_14/src/Alignment/CommonAlignmentParametrization/interface/ParametersToParametersDerivatives.h

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   // Not this - would make the internals public:
00034   //  const TMatrixD& matrix() const { return derivatives_;}
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