File indexing completed on 2025-04-19 09:10:16
0001 #ifndef YFS_CEEX_Ceex_handler
0002 #define YFS_CEEX_Ceex_handler
0003
0004 #include "ATOOLS/Phys/Flavour.H"
0005 #include "METOOLS/Main/XYZFuncs.H"
0006 #include "MODEL/Main/Model_Base.H"
0007 #include "PHASIC++/Process/Process_Base.H"
0008 #include "PHASIC++/Process/Virtual_ME2_Base.H"
0009 #include "PHASIC++/Process/Tree_ME2_Base.H"
0010 #include "EXTAMP/Process.H"
0011 #include "YFS/Main/YFS_Base.H"
0012
0013
0014 using namespace MODEL;
0015 using namespace ATOOLS;
0016 using namespace std;
0017 using namespace METOOLS;
0018
0019 namespace YFS {
0020
0021 typedef std::map<int,double> HelicityMap;
0022 typedef complex<double> dcmplx;
0023
0024 class Amplitude{
0025 public:
0026 Amplitude();
0027 ~Amplitude(){}
0028 Complex m_A[2][2][2][2];
0029 Complex m_U[2][2];
0030 Complex m_V[2][2];
0031 };
0032
0033 class Ceex_Base : public YFS::YFS_Base {
0034 public:
0035
0036 Ceex_Base(const Flavour_Vector &flavs);
0037
0038 Flavour_Vector m_flavs;
0039 PHASIC::Virtual_ME2_Base* p_loop_me;
0040 PHASIC::Tree_ME2_Base* p_lo_me;
0041 Amplitude m_bornAmp, m_Amp1, m_Amp1U, m_Amp1V;
0042 Vec4D_Vector m_momenta, m_isrphotons,m_bornmomenta;
0043 Vec4D m_eta, m_zeta, m_b, m_pp1, m_pp2, m_kk;
0044 int m_onlyz, m_onlyg;
0045 bool m_fixedwidth,m_checkxs;
0046 std::vector<int> m_PhoHel;
0047 PHASIC::Process_Info m_pi, m_pireal;
0048 XYZFunc *p_xyz;
0049 Complex m_T,m_U, m_sW, m_cW, m_sin2tw,m_gcpl, m_zcpl, m_propG, m_propZ, m_bornsum, m_cfac;
0050 Complex m_cL, m_cR, m_prop, m_I_L, m_I_R, m_F_L, m_F_R, m_I, m_Soft;
0051 Complex m_Tamp[2][2][2][2], m_Uamp[2][2][2][2],m_ampborn[2][2][2][2], m_Sc, m_Tc, m_Uc;
0052 Complex m_Sini[2][2], m_TC[2], m_UC[2], m_ampISR1, m_ae, m_af, m_ve, m_vf, m_norm;
0053 Complex m_BoxGGtu, m_BoxGZtu, m_BoxGGut, m_BoxGZut, m_Sprod, m_beta00, m_beta10, m_beta01, m_beta20;
0054
0055 Complex m_vertexI, m_b1, m_b2;
0056 double m_Q1Q2I, m_Q1Q2F, m_QIQF, m_MZ, m_gZ, m_isrformfactor, m_sQ;
0057 double m_mass_I, m_mass_F, m_qe, m_qf, m_crude;
0058 double m_result, m_e;
0059 void RegisterDefaults();
0060 void Init(const Vec4D_Vector &p);
0061 virtual void Calculate();
0062 void InfraredSubtractedME_0_0();
0063 void InfraredSubtractedME_0_1();
0064 void InfraredSubtractedME_1_0(Vec4D &k, int hel);
0065 void InfraredSubtractedME_2_0();
0066 Complex BetaDouble_2_0(Vec4D &k1, Vec4D &k2, int h1, int h2);
0067 Complex BetaSingle_2_0(Vec4D &k1, Vec4D &k2, int h1, int h2);
0068 Complex BetaRest_2_0(Vec4D &k1, Vec4D &k2, int h1, int h2);
0069 void CalculateSfactors();
0070 void MakePhotonHel();
0071 void LoadME();
0072 Complex BoxGG();
0073 Complex BoxGZ();
0074 Complex BoxSubtract();
0075 Complex Soft(Vec4D k, Vec4D p1, Vec4D p2, int hel1);
0076 Complex Sfactor(const Vec4D &p1, const Vec4D &p2, const Vec4D &k, int hel);
0077 Complex UGamma(const Vec4D &p1, const Vec4D &p2, const Vec4D &k, int h2, int i, int j, bool NegMass=0);
0078 Complex VGamma(const Vec4D &p1, const Vec4D &p2, const Vec4D &k, int h2, int i, int j);
0079 Complex bsigma(Vec4D k, Vec4D p, int hel);
0080 virtual inline bool ZOnly() {return m_onlyz;}
0081
0082 Complex S(const Vec4D &p1, const Vec4D &p2, int h1, int h2);
0083 Complex S(const Vec4D &p1, const Vec4D &p2, double m1,double m2, int h1, int h2);
0084 Complex T(const Vec4D &p1, const Vec4D &p2, int h1, int h2);
0085 Complex Tp(const Vec4D &p1, const Vec4D &p2, int h1, int h2);
0086 Complex U(const Vec4D &p1, const Vec4D &p2, int h1, int h2);
0087 Complex Up(const Vec4D &p1, const Vec4D &p2, int h1, int h2);
0088 Complex T_mass(const Vec4D &p1, const Vec4D &p2, double m1, double m2, int h1, int h2);
0089 Complex Tp_mass(const Vec4D &p1, const Vec4D &p2, double m1, double m2, int h1, int h2);
0090 Complex U_mass(const Vec4D &p1, const Vec4D &p2, double m1, double m2, int h1, int h2);
0091 Complex Up_mass(const Vec4D &p1, const Vec4D &p2, double m1, double m2, int h1, int h2);
0092 Complex BornAmplitude(const Vec4D_Vector &k);
0093 Complex BornAmplitude_mass(const Vec4D_Vector &k, double m1, double m2, double m3, double m4);
0094 Complex BornAmplitude(const Vec4D_Vector &k, int h0, int h1, int h2, int h3);
0095 Complex BornAmplitude_mass(const Vec4D_Vector &k,double m1, double m2, double m3, double m4, int h0, int h1, int h2, int h3);
0096 Complex BornAmplitude(Vec4D p1, Vec4D p2, Vec4D p3, Vec4D p4, int h0, int h1, int h2, int h3);
0097 void BornAmplitude(const Vec4D_Vector &k, Amplitude &T);
0098 int MapHel(int &h);
0099 void UGamma(const Vec4D &p1, const Vec4D &p2, const Vec4D &k, int sigma, Amplitude &AmpU);
0100 void VGamma(const Vec4D &p1, const Vec4D &p2, const Vec4D &k, int sigma, Amplitude &AmpV);
0101
0102 void SumAmplitude(Complex &sum, const Amplitude &Amp, const Complex fac=1.);
0103 void AddU(Complex &sum, const Amplitude &Amp, const Amplitude &U, const Complex fac=1.);
0104 void AddV(Complex &sum, const Amplitude &Amp, const Amplitude &V, const Complex fac=1.);
0105 void SumAmplitude(Complex &sum, const Amplitude &Amp1, const Amplitude &Amp2, const Complex fac=1.);
0106
0107 Complex Splus(const Vec4D &p1, const Vec4D &p2);
0108 Complex Sminus(const Vec4D &p1, const Vec4D &p2);
0109 Complex CouplingZ(double i, int mode);
0110 Complex CouplingG();
0111 void MakeProp();
0112 void Reset();
0113
0114 inline double GetResult() {return m_result;}
0115 inline void SetISRPhotons(Vec4D_Vector &k) {m_isrphotons=k;}
0116 inline void SetBornMomenta (Vec4D_Vector &p) {m_bornmomenta =p;}
0117 inline void SetBorn (const double &born) {m_born=born;}
0118 inline void SetISRFormFactor (double &form) {m_isrformfactor =form;}
0119 inline void SetProcessInfo(PHASIC::Process_Info const &pi) {m_pi = pi;}
0120 inline bool CheckXs() {return m_checkxs;}
0121 double Xi(const Vec4D p, const Vec4D q);
0122 Complex iProd(const int i, const Vec4D &p, const Vec4D &q);
0123 };
0124 }
0125
0126 #endif