File indexing completed on 2024-04-06 11:57:29
0001 #ifndef Alignment_TwoBodyDecay_TwoBodyDecayDerivatives_h
0002 #define Alignment_TwoBodyDecay_TwoBodyDecayDerivatives_h
0003
0004 #include "Alignment/TwoBodyDecay/interface/TwoBodyDecay.h"
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 class TwoBodyDecayDerivatives {
0015 public:
0016 enum { dimension = 6 };
0017
0018 enum DerivativeParameterName { px = 1, py = 2, pz = 3, theta = 4, phi = 5, mass = 6 };
0019
0020 TwoBodyDecayDerivatives(double mPrimary = 91.1876, double mSecondary = 0.105658);
0021 ~TwoBodyDecayDerivatives();
0022
0023
0024
0025
0026 const std::pair<AlgebraicMatrix, AlgebraicMatrix> derivatives(const TwoBodyDecay &tbd) const;
0027
0028
0029
0030
0031 const std::pair<AlgebraicMatrix, AlgebraicMatrix> derivatives(const TwoBodyDecayParameters ¶m) const;
0032
0033
0034
0035
0036 const std::pair<AlgebraicMatrix, AlgebraicMatrix> selectedDerivatives(const TwoBodyDecay &tbd,
0037 const std::vector<bool> &selector) const;
0038
0039
0040
0041
0042 const std::pair<AlgebraicMatrix, AlgebraicMatrix> selectedDerivatives(const TwoBodyDecayParameters ¶m,
0043 const std::vector<bool> &selector) const;
0044
0045 private:
0046
0047
0048
0049 const std::pair<AlgebraicMatrix, AlgebraicMatrix> dqsdpx(const TwoBodyDecayParameters ¶m) const;
0050
0051
0052
0053
0054 const std::pair<AlgebraicMatrix, AlgebraicMatrix> dqsdpy(const TwoBodyDecayParameters ¶m) const;
0055
0056
0057
0058
0059 const std::pair<AlgebraicMatrix, AlgebraicMatrix> dqsdpz(const TwoBodyDecayParameters ¶m) const;
0060
0061
0062
0063
0064 const std::pair<AlgebraicMatrix, AlgebraicMatrix> dqsdtheta(const TwoBodyDecayParameters ¶m) const;
0065
0066
0067
0068
0069 const std::pair<AlgebraicMatrix, AlgebraicMatrix> dqsdphi(const TwoBodyDecayParameters ¶m) const;
0070
0071
0072
0073
0074 const std::pair<AlgebraicMatrix, AlgebraicMatrix> dqsdm(const TwoBodyDecayParameters ¶m) const;
0075
0076 const std::pair<AlgebraicMatrix, AlgebraicMatrix> dqsdzi(const TwoBodyDecayParameters ¶m,
0077 const DerivativeParameterName &i) const;
0078
0079 double thePrimaryMass;
0080 double theSecondaryMass;
0081 };
0082
0083 #endif