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