Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef PHOTONS_Tools_YFS_Form_Factor_H
0002 #define PHOTONS_Tools_YFS_Form_Factor_H
0003 
0004 #include "ATOOLS/Math/Vector.H"
0005 
0006 namespace ATOOLS {
0007   class Particle;
0008   typedef std::vector<Particle* > Particle_Vector;
0009   class Gauss_Integrator;
0010   class Function_Base;
0011 }
0012 
0013 namespace PHOTONS {
0014   class YFS_Form_Factor {
0015     private:
0016       ATOOLS::Vec4D m_p1;
0017       ATOOLS::Vec4D m_p2;
0018       double      m_ks;
0019       double      m_m1;
0020       double      m_m2;
0021       double      m_Z1;
0022       double      m_Z2;
0023       double      m_x1;
0024       double      m_x2;
0025       double      m_xx1;
0026       double      m_xx2;
0027       double      m_Y;
0028       double      m_t1t2;
0029 
0030       ATOOLS::Function_Base *p_ig1, *p_ig2;
0031       ATOOLS::Gauss_Integrator *p_gi1, *p_gi2;
0032 
0033       double Y();
0034       double IntP1();
0035       double IntE();
0036       double IntP2();
0037       double GFunc(double);
0038       double IntG();
0039       double CalculateBeta(const ATOOLS::Vec4D&);
0040 
0041     public:
0042       YFS_Form_Factor(const ATOOLS::Particle_Vector&, const double&);
0043       YFS_Form_Factor(const ATOOLS::Particle*, const ATOOLS::Particle*,
0044                       const double&);
0045       ~YFS_Form_Factor();
0046 
0047       double G(double);
0048 
0049       inline double Get() const { return m_Y; }
0050 
0051       inline const ATOOLS::Vec4D &P1() const  { return m_p1; }
0052       inline const ATOOLS::Vec4D &P2() const  { return m_p2; }
0053   };
0054 
0055 
0056   
0057 
0058   /*!
0059     \file YFS_Form_Factor.H
0060     \brief contains the class YFS_Form_Factor
0061   */
0062 
0063   /*!
0064     \class YFS_Form_Factor
0065     \brief calculates the YFS form factor of a multipole configuration given
0066   */
0067   ////////////////////////////////////////////////////////////////////////////////////////////////////
0068   // Description of member variable for YFS_Form_Factor
0069   ////////////////////////////////////////////////////////////////////////////////////////////////////
0070   /*!
0071     \var Vec4D YFS_Form_Factor::m_p1
0072     \brief momentum of particle 1
0073   */
0074 
0075   /*!
0076     \var Vec4D YFS_Form_Factor::m_p2
0077     \brief momentum of particle 2
0078   */
0079 
0080   /*!
0081     \var double YFS_Form_Factor::m_ks
0082     \brief infrared cut-off
0083   */
0084 
0085   /*!
0086     \var double YFS_Form_Factor::m_m1
0087     \brief mass of particle 1
0088   */
0089 
0090   /*!
0091     \var double YFS_Form_Factor::m_m2
0092     \brief mass of particle 2
0093   */
0094 
0095   /*!
0096     \var double YFS_Form_Factor::m_Z1
0097     \brief charge of particle 1
0098   */
0099 
0100   /*!
0101     \var double YFS_Form_Factor::m_Z2
0102     \brief charge of particle 2
0103   */
0104 
0105   /*!
0106     \var double YFS_Form_Factor::m_x1
0107     \brief one of the roots of \f$ p_x^2 \f$
0108   */
0109 
0110   /*!
0111     \var double YFS_Form_Factor::m_x2
0112     \brief other root of \f$ p_x^2 \f$
0113   */
0114 
0115   /*!
0116     \var double YFS_Form_Factor::m_xx1
0117     \brief one of the roots of \f$ p_x^{'2} \f$
0118   */
0119 
0120   /*!
0121     \var double YFS_Form_Factor::m_xx2
0122     \brief other root of \f$ p_x^{'2} \f$
0123   */
0124 
0125   /*!
0126     \var double YFS_Form_Factor::m_Y
0127     \brief YFS form factor
0128   */
0129 
0130   /*!
0131     \var short int YFS_Form_Factor::m_t1t2
0132     \brief product of \f$ \theta_1\theta_2 \f$
0133   */
0134   ////////////////////////////////////////////////////////////////////////////////////////////////////
0135   // Description of member methods for YFS_Form_Factor
0136   ////////////////////////////////////////////////////////////////////////////////////////////////////
0137   /*!
0138     \fn YFS_Form_Factor::YFS_Form_Factor(const ATOOLS::Particle_Vector& part, const double& ks)
0139     \brief Multipole constructor.
0140       For the calculation of the individual dipole contributions the
0141       dipole constructor is used.
0142     \param part The multipole.
0143     \param ks The infrared cut-off (taken to be an isotropic energy
0144       cut-off in the same frame as the momenta of the multipole given).
0145       Determines the YFS form factor as
0146       \f[
0147         Y(\omega) = \sum_{i<j}Y_{ij}(\omega)
0148       \f]
0149   */
0150 
0151   /*!
0152     \fn YFS_Form_Factor::YFS_Form_Factor(const ATOOLS::Particle * part1, const ATOOLS::Particle * part2, const double& ks)
0153     \brief dipole constructor, implements all variables and initiates the calculations 
0154 
0155     \param part1 Particle 1 of the dipole.
0156     \param part2 Particle 2 of the dipole. The Particles are ordered
0157       such that \f$ E_2 \ge E_1 \f$, possible by the invariance of the
0158       form factor under the swapping of the labels of the particles.
0159     \param ks The infrared cutoff (taken to be an isotropic energy
0160       cut-off in the same frame as the momenta of the multipole given).
0161   */
0162 
0163   /*!
0164     \fn double YFS_Form_Factor::Y()
0165     \brief calculates the YFS form factor
0166 
0167     \f[
0168       Y_{ij}(\omega) = 2\alpha\left(\mathcal{R}e B_{ij}+\tilde{B}_{ij}(\omega)\right)
0169     \f]
0170     \f[
0171       = -\frac{\alpha}{\pi}Z_1Z_2\theta_1\theta_2\left(\ln\frac{E_1E_2}{\omega^2}+\frac{1}{2}(p_1\cdot p_2)I_{p,1} - \frac{1}{2}(p_1\cdot p_2)I_{E} + \frac{1}{4}I_{p,2} + G(1) + G(-1) - (p_1 \cdot p_2)I_{G}\right)
0172     \f]
0173   */
0174 
0175   /*!
0176     \fn double YFS_Form_Factor::IntP1()
0177     \brief calculates the integral \f$ I_{p,1} \f$ (analytically)
0178 
0179     with \f$ I_{p,1} = \theta_1\theta_2\int\limits_{-1}^1dx\frac{\ln\frac{p_x^{'2}}{\lambda^2}}{p_x^{'2}} - \int\limits_{-1}^1dx\frac{\ln\frac{p_x^2}{\lambda^2}}{p_x^2} \f$
0180   */
0181 
0182   /*!
0183     \fn double YFS_Form_Factor::IntE()
0184     \brief calculates the integral \f$ I_E \f$ (analytically)
0185 
0186     with \f$ I_E = \int\limits_{-1}^1dx\frac{\ln\frac{E_x^2}{\omega^2}}{p_x^2} \f$
0187   */
0188 
0189   /*!
0190     \fn double YFS_Form_Factor::IntP2()
0191     \brief calculates the integral \f$ I_{p,2} \f$ (analytically)
0192 
0193     with \f$ I_{p,2} = \int\limits_{-1}^1dx\ln\frac{p_x^2}{m_1m_2} \f$
0194   */
0195 
0196   /*!
0197     \fn double YFS_Form_Factor::G(double)
0198     \brief calculates the function \f$ \tilde{G}(x) \f$ at the given value
0199 
0200     The value to be passed is the value at which \f$ \tilde{G}(x) = \frac{1-\beta_x}{2\beta_x}\ln\frac{1+\beta_x}{1-\beta_x}+\ln\frac{1+\beta_x}{2} \f$ shall be evaluated. The condition \f$ x \in [-1,1] \f$ must hold.
0201   */
0202 
0203   /*!
0204     \fn double YFS_Form_Factor::IntG()
0205     \brief calculates the integral \f$ I_G \f$ (numerically)
0206 
0207     with \f$ I_G = \int\limits_{-1}^1dx\frac{\tilde{G}(x)}{p_x^2} \f$. This integral cannot be solved analytically in a general frame.
0208   */
0209 
0210   /*!
0211     \fn double YFS_Form_Factor::CalculateBeta(Vec4D)
0212     \brief calculates \f$ \beta \f$ of a given 4-momentum
0213   */
0214 
0215   /*!
0216     \fn double YFS_Form_Factor::Get()
0217     \brief returns the YFS form factor
0218   */
0219 }
0220 
0221 #endif