Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef YFS_Main_Define_Dipoles_H
0002 #define YFS_Main_Define_Dipoles_H
0003 
0004 #include "ATOOLS/Phys/Particle.H"
0005 #include "YFS/Tools/Dipole.H"
0006 #include "YFS/Main/YFS_Base.H"
0007 #include "YFS/Main/YFS_Form_Factor.H"
0008 
0009 
0010 namespace MODEL {
0011   class Single_Vertex;
0012   typedef std::vector<Single_Vertex *> Vertex_List;
0013 }
0014 
0015 
0016 
0017 namespace YFS {
0018   typedef std::vector<YFS::Dipole> Dipole_Vector;
0019 
0020  
0021 
0022 
0023   class Define_Dipoles : YFS_Base {
0024     public:
0025       bool                    m_success;
0026       bool                    m_photonsadded;
0027       int m_N;
0028       std::map<ATOOLS::Flavour, ATOOLS::Vec4D> m_test_dip, m_born_dip;
0029       std::map<ATOOLS::Flavour, int> m_flav_label;
0030       // std::map<ATOOLS::Vec4D, int> m_mom_label;
0031       ATOOLS::Vec4D_Vector m_chargedinparticles;
0032       ATOOLS::Vec4D_Vector m_neutralinparticles;
0033       ATOOLS::Vec4D_Vector m_chargedoutparticles;
0034       ATOOLS::Vec4D_Vector m_neutraloutparticles;
0035       ATOOLS::Vec4D_Vector m_softphotons, m_bornmomenta;
0036       ATOOLS::Vec4D m_softphotonSum;
0037       Dipole_Vector m_dipoles, m_olddipoles, m_newdipoles, m_dipolesII, m_dipolesFF, m_dipolesIF;
0038       std::vector<std::vector<int>> m_dip;
0039       std::map<std::string,MODEL::Vertex_List> m_proc_restab_map;
0040       YFS::YFS_Form_Factor *p_yfsFormFact;
0041 
0042 
0043       YFS::dipoletype     m_type;
0044       Define_Dipoles();
0045       ~Define_Dipoles();
0046 
0047       int m_in, m_out;
0048       std::vector<double> m_massInC, m_massInN;
0049       std::vector<double> m_massOutC, m_massOutN;
0050 
0051       ATOOLS::Flavour_Vector m_dipoleFlav;
0052       ATOOLS::Vec4D_Vector m_dipoleMom;
0053       void AddRadiation();
0054       void MakeDipolesII(ATOOLS::Flavour_Vector const &fl, ATOOLS::Vec4D_Vector const &mom, ATOOLS::Vec4D_Vector const &born);
0055       void MakeDipolesIF(ATOOLS::Flavour_Vector const &fl, ATOOLS::Vec4D_Vector const mom, ATOOLS::Vec4D_Vector const born);
0056       void MakeDipoles(ATOOLS::Flavour_Vector const &fl, ATOOLS::Vec4D_Vector const &mom,  ATOOLS::Vec4D_Vector const &born);
0057       void MakeDipolesFF(ATOOLS::Flavour_Vector const &fl, ATOOLS::Vec4D_Vector const &mom,ATOOLS::Vec4D_Vector const &born);
0058       void Dipole_II(ATOOLS::Flavour_Vector const &fl, ATOOLS::Vec4D_Vector const &mom);
0059       void Dipole_FF(ATOOLS::Flavour_Vector const &fl, ATOOLS::Vec4D_Vector const &mom);
0060       void Dipole_IF(ATOOLS::Flavour_Vector const &fl, ATOOLS::Vec4D_Vector const &mom, ATOOLS::Vec4D_Vector const &born);
0061       void CleanInParticles();
0062       void CleanOutParticles();
0063       // void Get4Mom(ATOOLS::Flavour_Vector const &fl,ATOOLS::Vec4D_Vector mom, std::vector<int> v);
0064       void Get4Mom(ATOOLS::Flavour_Vector const &fl,ATOOLS::Vec4D_Vector mom);
0065       bool CheckMasses();
0066       void IsResonant(YFS::Dipole &D);
0067       double CalculateRealSub(const Vec4D &k);
0068       double CalculateRealSubIF(const Vec4D &k);
0069       double CalculateRealSubEEX(const Vec4D &k);
0070       double CalculateVirtualSub();
0071       double CalculateRealVirtualSub(const Vec4D & k);
0072       double CalculateEEX();
0073       double CalculateEEXVirtual();
0074       double CalculateEEX(const Vec4D & k1, const Vec4D & k2);
0075       double CalculateFlux(const Vec4D &k);
0076       double CalculateFlux(const Vec4D &k, const Vec4D &kk);
0077       double Propagator(const double &s, int width=0);
0078       double CalculateVirtualSubTchannel();
0079       double FormFactor();
0080       double TFormFactor();
0081       void generate_pairings(std::vector<std::vector<int>>& pairings, std::vector<int>& curr_pairing, std::vector<int>& available_nums);
0082       void CleanUp();
0083       std::ostream& operator<<(std::ostream &out);
0084       inline bool DoneSuccessfully()     { return m_success; }
0085       inline bool AddedAnything()        { return m_photonsadded; }
0086       inline void AddSoftPhotons(ATOOLS::Vec4D k) { m_softphotonSum +=k; }
0087       inline Dipole_Vector Old() { return m_olddipoles; }
0088       inline Dipole_Vector New() { return m_newdipoles; }
0089       inline Dipole * GetDipoleII() { return &m_dipolesII[0]; }
0090       inline Dipole_Vector * GetDipoleFF() { return &m_dipolesFF; }
0091       inline Dipole_Vector * GetDipoleIF() { return &m_dipolesIF; }
0092       inline void SetProcResMap(std::map<std::string,MODEL::Vertex_List> map) {m_proc_restab_map=map;}
0093   };
0094 
0095 
0096 }
0097 #endif