Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:10:12

0001 #ifndef PHOTONS_MEs_PHOTONS_ME_Base_H
0002 #define PHOTONS_MEs_PHOTONS_ME_Base_H
0003 
0004 #include "ATOOLS/Math/MyComplex.H"
0005 #include "ATOOLS/Math/Vector.H"
0006 #include "ATOOLS/Math/Poincare.H"
0007 #include "ATOOLS/Math/MyComplex.H"
0008 #include "ATOOLS/Phys/Flavour.H"
0009 #include "METOOLS/Main/Polarization_Tools.H"
0010 #include "ATOOLS/Org/Getter_Function.H"
0011 #include "PHOTONS++/Main/Dipole_Type.H"
0012 
0013 namespace ATOOLS {
0014   class Flavour;
0015   class Poincare;
0016 }
0017 
0018 namespace PHOTONS {
0019 
0020   class PHOTONS_ME_Base {
0021     protected:
0022       std::string        m_name;
0023 
0024       unsigned int       m_nV;
0025       unsigned int       m_nR;
0026       double             m_alpha;
0027       double             m_e;
0028       double             m_sW;
0029       double             m_cW;
0030       double             m_GF;
0031       double             m_sqrt2;
0032       Complex    m_i;
0033 
0034       Complex    m_cL;
0035       Complex    m_cR;
0036 
0037       ATOOLS::Poincare * p_boost;
0038       ATOOLS::Poincare * p_rot;
0039 
0040       ATOOLS::Flavour    m_flavs[9];
0041       double             m_masses[9];
0042       ATOOLS::Vec4D *    m_moms;
0043       ATOOLS::Vec4D      m_moms0[9];
0044       ATOOLS::Vec4D      m_moms1[9][9];
0045       ATOOLS::Vec4D      m_moms2[9][9];
0046       int                m_spins[9];
0047 
0048       const Particle_Vector_Vector& m_pvv_zero;
0049 
0050       virtual void    BoostOriginalPVVToMultipoleCMS() = 0;
0051 
0052       virtual Complex InfraredSubtractedME_0_0() = 0;
0053       virtual Complex InfraredSubtractedME_0_1() = 0;
0054       virtual Complex InfraredSubtractedME_0_2() = 0;
0055 
0056       virtual Complex InfraredSubtractedME_1_05(unsigned int) = 0;
0057       virtual Complex InfraredSubtractedME_1_15(unsigned int) = 0;
0058 
0059       virtual Complex InfraredSubtractedME_2_1(unsigned int,
0060                                                unsigned int) = 0;
0061 
0062     public:
0063       PHOTONS_ME_Base(const Particle_Vector_Vector&);
0064       virtual ~PHOTONS_ME_Base();
0065 
0066 
0067       virtual double GetBeta_0_0() = 0;
0068       virtual double GetBeta_0_1() = 0;
0069       virtual double GetBeta_0_2() = 0;
0070 
0071       virtual double GetBeta_1_1(unsigned int) = 0;
0072       virtual double GetBeta_1_2(unsigned int) = 0;
0073 
0074       virtual double GetBeta_2_2(unsigned int, unsigned int) = 0;
0075 
0076       virtual void   FillMomentumArrays(const Particle_Vector_Vector&) = 0;
0077       virtual double Smod(unsigned int) = 0;
0078 
0079       inline std::string Name() { return m_name; }
0080 
0081       static PHOTONS_ME_Base * GetIRsubtractedME
0082                                (const Particle_Vector_Vector& pvv);
0083       static PHOTONS_ME_Base * GetIRsubtractedME
0084                                (const std::string& tag,
0085                                 const Particle_Vector_Vector& pvv);
0086   };
0087 }
0088 
0089 #define DECLARE_PHOTONS_ME_GETTER(NAME,TAG)                        \
0090   DECLARE_GETTER(NAME,TAG,PHOTONS::PHOTONS_ME_Base,PHOTONS::Particle_Vector_Vector); \
0091   void ATOOLS::Getter<PHOTONS::PHOTONS_ME_Base,PHOTONS::Particle_Vector_Vector,NAME>:: \
0092   PrintInfo(std::ostream &str,const size_t width) const         \
0093   {                                                                \
0094     str<<#TAG;                                                     \
0095   }
0096 
0097 typedef ATOOLS::Getter_Function<PHOTONS::PHOTONS_ME_Base,PHOTONS::Particle_Vector_Vector>
0098         PHOTONS_ME_Getter;
0099 
0100 #endif