![]() |
![]() |
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