Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef PHOTONS_PhaseSpace_Avarage_Photon_Number_H
0002 #define PHOTONS_PhaseSpace_Avarage_Photon_Number_H
0003 
0004 #include "ATOOLS/Math/Vector.H"
0005 #include "PHOTONS++/Main/Dipole_Type.H"
0006 
0007 namespace PHOTONS {
0008   struct IdPairNbar;
0009   typedef std::vector<IdPairNbar> IdPairNbarVector;
0010 
0011   class Avarage_Photon_Number {
0012     private:
0013       double              m_omegaMax;
0014       double              m_omegaMin;
0015       ATOOLS::Particle_Vector m_dipole;
0016 
0017       double              m_nbar;
0018       IdPairNbarVector    m_nbars;
0019 
0020       void    CalculateAvaragePhotonNumber();
0021       double  CalculateBeta(const ATOOLS::Vec4D&);
0022       double  InterferenceTerm(const double&, const double&,
0023                                const double&, const double&);
0024       double  TiTj(const size_t&, const size_t&);
0025 
0026     public:
0027       Avarage_Photon_Number(const ATOOLS::Particle_Vector&,
0028                             const double&, const double&);
0029       ~Avarage_Photon_Number();
0030 
0031       const double            GetNBar()  const { return m_nbar; }
0032       const IdPairNbarVector& GetNBars() const { return m_nbars; }
0033 
0034   };
0035 
0036 
0037   
0038 
0039   /*!
0040     \file Avarage_Photon_Number.H
0041     \brief contains the class Avarage_Photon_Number
0042   */
0043 
0044   /*!
0045     \class Avarage_Photon_Number
0046     \brief calculates \f$\bar{n}\f$ of the multipole
0047   */
0048   ////////////////////////////////////////////////////////////////////////////////////////////////////
0049   // Description of the member variables for Avarage_Photon_Number
0050   ////////////////////////////////////////////////////////////////////////////////////////////////////
0051   /*!
0052     \var double Avarage_Photon_Number::m_omegaMax
0053     \brief maximum photon energy allowed kinematically
0054   */
0055 
0056   /*!
0057     \var double Avarage_Photon_Number::m_omegaMin
0058     \brief minimum photon energy (infrared cut-off)
0059   */
0060 
0061   /*!
0062     \var Particle_Vector Avarage_Photon_Number::m_dipole
0063     \brief contains all charged particles of the blob forming the multipole
0064   */
0065 
0066   /*!
0067     \var double Avarage_Photon_Number::m_nbar
0068     \brief the avarage photon number of the multipole
0069   */
0070 
0071   /*!
0072     \var std::vector<double> Avarage_Photon_Number::m_nbars
0073     \brief the avarage photon numbers of all individual constituent dipoles
0074   */
0075   ////////////////////////////////////////////////////////////////////////////////////////////////////
0076   // Description of the member methods for Avarage_Photon_Number
0077   ////////////////////////////////////////////////////////////////////////////////////////////////////
0078   /*!
0079     \fn Avarage_Photon_Number::Avarage_Photon_Number(Particle_Vector, double, double)
0080     \brief initialises and executes the calculations
0081 
0082     The constructor <tt>Avarage_Photon_Number::Avarage_Photon_Number(Particle_Vector dip, double wmax, double wmin)</tt> has to receive a Particle_Vector 
0083     containing all charged particles and the upper and lower 
0084     limit of the photon energy.
0085     Finally, <tt>Avarage_Photon_Number::CalculateAvaragePhotonNumber()</tt> 
0086     is called to calculate \f$\bar{n}\f$.
0087   */
0088 
0089   /*!
0090     \fn void Avarage_Photon_Number::CalculateAvaragePhotonNumber()
0091     \brief stears and combines the calculation of the different terms for \f$\bar{n}\f$
0092 
0093     \f$\bar{n}\f$ is calculated via
0094     \f[
0095       \bar{n} = \int\frac{d^3k}{k}\Theta(\Omega)\tilde{S}(k)
0096     \f]
0097     with
0098     \f[
0099       \tilde{S}(k) 
0100       = \sum_{i<j}\tilde{S}_{ij}(k) -\frac{\alpha}{4\pi^2}
0101           \sum_{i<j}Z_iZ_j\theta_i\theta_j
0102             \left(\frac{p_i}{(p_i\cdot k)}-\frac{p_j}{(p_j\cdot k)}\right)^2
0103     \f]
0104   */
0105 
0106   /*!
0107     \fn double Avarage_Photon_Number::CalculateBeta(Vec4D)
0108     \brief calculates \f$\beta\f$ of 4-vector
0109   */
0110 
0111   /*!
0112     \fn double Avarage_Photon_Number::GetNBar()
0113     \brief returns m_nbar
0114   */
0115 
0116   /*!
0117     \fn std::vector<double> Avarage_Photon_Number::GetNBars()
0118     \brief returns m_nbars
0119   */
0120 
0121 }
0122 
0123 #endif