CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/Alignment/TwoBodyDecay/interface/TwoBodyDecayDerivatives.h

Go to the documentation of this file.
00001 #ifndef Alignment_TwoBodyDecay_TwoBodyDecayDerivatives_h
00002 #define Alignment_TwoBodyDecay_TwoBodyDecayDerivatives_h
00003 
00004 #include "Alignment/TwoBodyDecay/interface/TwoBodyDecay.h"
00005 
00014 class TwoBodyDecayDerivatives
00015 {
00016 
00017 public:
00018 
00019   enum { dimension = 6 };
00020 
00021   enum DerivativeParameterName { px = 1, py = 2, pz = 3, theta = 4, phi = 5, mass = 6 };
00022 
00023   TwoBodyDecayDerivatives( double mPrimary = 91.1876, double mSecondary = 0.105658 );
00024   ~TwoBodyDecayDerivatives();
00025 
00029   const std::pair< AlgebraicMatrix, AlgebraicMatrix > derivatives( const TwoBodyDecay & tbd ) const;
00030 
00034   const std::pair< AlgebraicMatrix, AlgebraicMatrix > derivatives( const TwoBodyDecayParameters & param ) const;
00035 
00039   const std::pair< AlgebraicMatrix, AlgebraicMatrix > selectedDerivatives( const TwoBodyDecay & tbd,
00040                                                                            const std::vector< bool > & selector ) const;
00041 
00045   const std::pair< AlgebraicMatrix, AlgebraicMatrix > selectedDerivatives( const TwoBodyDecayParameters & param,
00046                                                                            const std::vector< bool > & selector ) const;
00047 
00048 private:
00049 
00052   const std::pair< AlgebraicMatrix, AlgebraicMatrix > dqsdpx( const TwoBodyDecayParameters & param ) const;
00053 
00056   const std::pair< AlgebraicMatrix, AlgebraicMatrix > dqsdpy( const TwoBodyDecayParameters & param ) const;
00057 
00060   const std::pair< AlgebraicMatrix, AlgebraicMatrix > dqsdpz( const TwoBodyDecayParameters & param ) const;
00061 
00064   const std::pair< AlgebraicMatrix, AlgebraicMatrix > dqsdtheta( const TwoBodyDecayParameters & param ) const;
00065 
00068   const std::pair< AlgebraicMatrix, AlgebraicMatrix > dqsdphi( const TwoBodyDecayParameters & param ) const;
00069 
00072   const std::pair< AlgebraicMatrix, AlgebraicMatrix > dqsdm( const TwoBodyDecayParameters & param ) const;
00073 
00074   const std::pair< AlgebraicMatrix, AlgebraicMatrix > dqsdzi( const TwoBodyDecayParameters & param, const DerivativeParameterName & i ) const;
00075 
00076   double thePrimaryMass;
00077   double theSecondaryMass;
00078 
00079 };
00080 
00081 #endif