Back to home page

EIC code displayed by LXR

 
 

    


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     // Complex m_Amp1U[2][2], m_Amp1V[2][2];
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