Back to home page

EIC code displayed by LXR

 
 

    


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   };// end of struct Kin_Args
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   };// end of struct LN_Pair
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 }// end of namespace PHASIC
0080 
0081 #endif