Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:06:54

0001 // -*- C++ -*-
0002 #ifndef RIVET_MT2_HH
0003 #define RIVET_MT2_HH
0004 
0005 #include "Rivet/Math/Vector4.hh"
0006 
0007 namespace Rivet {
0008 
0009 
0010   /// @brief Compute asymm mT2**2 using the bisection method
0011   ///
0012   /// If the second invisible mass is not given, symm mT2**2 will be calculated.
0013   ///
0014   /// @note Cheng/Han arXiv:0810.5178, Lester arXiv:1411.4312
0015   double mT2Sq(const FourMomentum& a, const FourMomentum& b, const Vector3& ptmiss,
0016                double invisiblesMass, double invisiblesMass2=-1);
0017 
0018   /// Override for mT2Sq with FourMomentum ptmiss
0019   inline double mT2Sq(const FourMomentum& a, const FourMomentum& b, const FourMomentum& ptmiss,
0020                       double invisiblesMass, double invisiblesMass2=-1) {
0021     return mT2Sq(a, b, ptmiss.perpVec(), invisiblesMass, invisiblesMass2);
0022   }
0023 
0024 
0025   /// @brief Compute asymm mT2 using the bisection method
0026   ///
0027   /// If the second invisible mass is not given, symm mT2 will be calculated.
0028   ///
0029   /// @note Cheng/Han arXiv:0810.5178, Lester arXiv:1411.4312
0030   inline double mT2(const FourMomentum& a, const FourMomentum& b, const Vector3& ptmiss,
0031                     double invisiblesMass, double invisiblesMass2=-1) {
0032     const double mt2sq = mT2Sq(a, b, ptmiss, invisiblesMass, invisiblesMass2);
0033     return mt2sq >= 0 ? sqrt(mt2sq) : -1;
0034   }
0035 
0036   /// Override for mT2 with FourMomentum ptmiss
0037   inline double mT2(const FourMomentum& a, const FourMomentum& b, const FourMomentum& ptmiss,
0038                     double invisiblesMass, double invisiblesMass2=-1) {
0039     return mT2(a, b, ptmiss.perpVec(), invisiblesMass, invisiblesMass2);
0040   }
0041 
0042 
0043 }
0044 
0045 #endif