File indexing completed on 2025-04-19 09:10:09
0001 #ifndef PHASIC__Channels__CSS_Kinematics_H
0002 #define PHASIC__Channels__CSS_Kinematics_H
0003
0004 #include "ATOOLS/Math/Poincare.H"
0005 #include "ATOOLS/Org/Message.H"
0006
0007 namespace PHASIC {
0008
0009 struct Kin_Args {
0010 double m_y, m_z, m_phi, m_mk2, m_x;
0011 ATOOLS::Vec4D m_pi, m_pj, m_pk;
0012 ATOOLS::Poincare_Sequence m_lam;
0013 int m_mode, m_stat;
0014 static double s_uxeps;
0015 inline Kin_Args(const double &y=0.0,const double &z=0.0,
0016 const double &phi=0.0,const int mode=0,
0017 const int stat=-1):
0018 m_y(y), m_z(z), m_phi(phi), m_mk2(-1.0), m_x(0.0),
0019 m_mode(mode), m_stat(stat) {}
0020 };
0021
0022 struct LN_Pair {
0023 ATOOLS::Vec4D m_l, m_n;
0024 inline LN_Pair(const ATOOLS::Vec4D &l=ATOOLS::Vec4D(),
0025 const ATOOLS::Vec4D &n=ATOOLS::Vec4D(),
0026 const int mode=0):
0027 m_l(mode&&l[0]<0.0?-l:l), m_n(mode&&n[0]<0.0?-n:n) {}
0028 inline ATOOLS::Vec4D SaneCMS() const
0029 { return (m_l[0]<0.0?-m_l:m_l)+(m_n[0]<0.0?-m_n:m_n); }
0030 };
0031
0032 LN_Pair GetLN(const ATOOLS::Vec4D &pi,
0033 const ATOOLS::Vec4D &pk,const int mode=0);
0034
0035 ATOOLS::Vec4D LT(const ATOOLS::Vec4D &a,const ATOOLS::Vec4D &b,
0036 const ATOOLS::Vec4D &c);
0037
0038 double ComputePhi(ATOOLS::Vec4D pijt,ATOOLS::Vec4D pkt,
0039 ATOOLS::Vec4D pi);
0040
0041 Kin_Args ClusterFFDipole(const double &mi2,const double &mj2,
0042 const double &mij2,const double &mk2,
0043 const ATOOLS::Vec4D &pi,const ATOOLS::Vec4D &pj,
0044 const ATOOLS::Vec4D &pk,const int mode=0);
0045 int ConstructFFDipole(const double &mi2,const double &mj2,
0046 const double &mij2,const double &mk2,
0047 const ATOOLS::Vec4D &pij,const ATOOLS::Vec4D &pk,
0048 Kin_Args &ffp);
0049
0050 Kin_Args ClusterFIDipole(const double &mi2,const double &mj2,
0051 const double &mij2,const double &ma2,
0052 const ATOOLS::Vec4D &pi,const ATOOLS::Vec4D &pj,
0053 const ATOOLS::Vec4D &pa,const int mode=0);
0054 int ConstructFIDipole(const double &mi2,const double &mj2,
0055 const double &mij2,const double &ma2,
0056 const ATOOLS::Vec4D &pij,const ATOOLS::Vec4D &pa,
0057 Kin_Args &fip);
0058
0059 Kin_Args ClusterIFDipole(const double &ma2,const double &mj2,
0060 const double &maj2,const double &mk2,
0061 const double &mb2,const ATOOLS::Vec4D &pa,
0062 const ATOOLS::Vec4D &pj,const ATOOLS::Vec4D &pk,
0063 const ATOOLS::Vec4D &pb,const int mode=0);
0064 int ConstructIFDipole(const double &ma2,const double &mj2,
0065 const double &maj2,const double &mk2,
0066 const double &mb2,const ATOOLS::Vec4D &paj,
0067 const ATOOLS::Vec4D &pk,const ATOOLS::Vec4D &pb,
0068 Kin_Args &ifp);
0069
0070 Kin_Args ClusterIIDipole(const double &ma2,const double &mi2,
0071 const double &mai2,const double &mb2,
0072 const ATOOLS::Vec4D &pa,const ATOOLS::Vec4D &pi,
0073 const ATOOLS::Vec4D &pb,const int mode=0);
0074 int ConstructIIDipole(const double &ma2,const double &mi2,
0075 const double &mai2,const double &mb2,
0076 const ATOOLS::Vec4D &pa,const ATOOLS::Vec4D &pb,
0077 Kin_Args &iip);
0078
0079 }
0080
0081 #endif