#ifndef PHOTONS_Tools_YFS_Form_Factor_H #define PHOTONS_Tools_YFS_Form_Factor_H #include "ATOOLS/Math/Vector.H" namespace ATOOLS { class Particle; typedef std::vector Particle_Vector; class Gauss_Integrator; class Function_Base; } namespace PHOTONS { class YFS_Form_Factor { private: ATOOLS::Vec4D m_p1; ATOOLS::Vec4D m_p2; double m_ks; double m_m1; double m_m2; double m_Z1; double m_Z2; double m_x1; double m_x2; double m_xx1; double m_xx2; double m_Y; double m_t1t2; ATOOLS::Function_Base *p_ig1, *p_ig2; ATOOLS::Gauss_Integrator *p_gi1, *p_gi2; double Y(); double IntP1(); double IntE(); double IntP2(); double GFunc(double); double IntG(); double CalculateBeta(const ATOOLS::Vec4D&); public: YFS_Form_Factor(const ATOOLS::Particle_Vector&, const double&); YFS_Form_Factor(const ATOOLS::Particle*, const ATOOLS::Particle*, const double&); ~YFS_Form_Factor(); double G(double); inline double Get() const { return m_Y; } inline const ATOOLS::Vec4D &P1() const { return m_p1; } inline const ATOOLS::Vec4D &P2() const { return m_p2; } }; /*! \file YFS_Form_Factor.H \brief contains the class YFS_Form_Factor */ /*! \class YFS_Form_Factor \brief calculates the YFS form factor of a multipole configuration given */ //////////////////////////////////////////////////////////////////////////////////////////////////// // Description of member variable for YFS_Form_Factor //////////////////////////////////////////////////////////////////////////////////////////////////// /*! \var Vec4D YFS_Form_Factor::m_p1 \brief momentum of particle 1 */ /*! \var Vec4D YFS_Form_Factor::m_p2 \brief momentum of particle 2 */ /*! \var double YFS_Form_Factor::m_ks \brief infrared cut-off */ /*! \var double YFS_Form_Factor::m_m1 \brief mass of particle 1 */ /*! \var double YFS_Form_Factor::m_m2 \brief mass of particle 2 */ /*! \var double YFS_Form_Factor::m_Z1 \brief charge of particle 1 */ /*! \var double YFS_Form_Factor::m_Z2 \brief charge of particle 2 */ /*! \var double YFS_Form_Factor::m_x1 \brief one of the roots of \f$ p_x^2 \f$ */ /*! \var double YFS_Form_Factor::m_x2 \brief other root of \f$ p_x^2 \f$ */ /*! \var double YFS_Form_Factor::m_xx1 \brief one of the roots of \f$ p_x^{'2} \f$ */ /*! \var double YFS_Form_Factor::m_xx2 \brief other root of \f$ p_x^{'2} \f$ */ /*! \var double YFS_Form_Factor::m_Y \brief YFS form factor */ /*! \var short int YFS_Form_Factor::m_t1t2 \brief product of \f$ \theta_1\theta_2 \f$ */ //////////////////////////////////////////////////////////////////////////////////////////////////// // Description of member methods for YFS_Form_Factor //////////////////////////////////////////////////////////////////////////////////////////////////// /*! \fn YFS_Form_Factor::YFS_Form_Factor(const ATOOLS::Particle_Vector& part, const double& ks) \brief Multipole constructor. For the calculation of the individual dipole contributions the dipole constructor is used. \param part The multipole. \param ks The infrared cut-off (taken to be an isotropic energy cut-off in the same frame as the momenta of the multipole given). Determines the YFS form factor as \f[ Y(\omega) = \sum_{i