Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef PHOTONS_Tools_Weight_Higher_Order_Corrections_H
0002 #define PHOTONS_Tools_Weight_Higher_Order_Corrections_H
0003 
0004 #include "PHOTONS++/Tools/Weight_Base.H"
0005 #include "PHOTONS++/Main/Dipole_Type.H"
0006 
0007 
0008 namespace PHOTONS {
0009   class PHOTONS_ME_Base;
0010 
0011   class Weight_Higher_Order_Corrections: public Weight_Base {
0012     private:
0013       ATOOLS::Particle_Vector m_olddipole;
0014       ATOOLS::Particle_Vector m_newdipole;
0015       ATOOLS::Particle_Vector m_softphotons;
0016       double          m_M;
0017       unsigned int    m_n;
0018 
0019       PHOTONS_ME_Base * p_pme;
0020 
0021       double RealCorrectionsOrder(int);
0022       double VirtualCorrectionsOrder(int);
0023 
0024       double Dmod(unsigned int, unsigned int, unsigned int);
0025       double Smod(unsigned int);
0026       double Kallen(double, double, double);
0027 
0028       virtual void CalculateWeight();
0029       virtual void CalculateMax();
0030 
0031       void CalculateWeightAndMaxWithME();
0032 
0033     public:
0034       Weight_Higher_Order_Corrections(const Particle_Vector_Vector&,
0035                                       const Particle_Vector_Vector&,
0036                                       Dipole_Type::code);
0037       virtual ~Weight_Higher_Order_Corrections();
0038   };
0039 
0040 
0041   
0042 
0043   /*!
0044     \file Weight_Higher_Order_Corrections.H
0045     \brief contains the class Weight_Higher_Order_Corrections
0046   */
0047 
0048   /*!
0049     \class Weight_Higher_Order_Corrections
0050     \brief calculates \f$ W_{\mathcal{C}} \f$ of the event given
0051   */
0052   ////////////////////////////////////////////////////////////////////////////////////////////////////
0053   // Description of the member variables for Weight_Higher_Order_Corrections
0054   ////////////////////////////////////////////////////////////////////////////////////////////////////
0055   /*!
0056     \var Particle_Vector Weight_Higher_Order_Corrections::m_olddipole
0057     \brief contains the multipole before treatment
0058   */
0059 
0060   /*!
0061     \var Particle_Vector Weight_Higher_Order_Corrections::m_newdipole
0062     \brief contains the multipole after treatment
0063   */
0064 
0065   /*!
0066     \var Particle_Vector Weight_Higher_Order_Corrections::m_softphotons
0067     \brief contains all photons generated
0068   */
0069 
0070   /*!
0071     \var double Weight_Higher_Order_Corrections::m_M
0072     \brief contains the mass of the decaying particle
0073   */
0074 
0075   ////////////////////////////////////////////////////////////////////////////////////////////////////
0076   // Description of the member methods for Weight_Higher_Order_Corrections
0077   ////////////////////////////////////////////////////////////////////////////////////////////////////
0078   /*!
0079     \fn Weight_Higher_Order_Corrections::Weight_Higher_Order_Corrections(Particle_Vector, Particle_Vector, Particle_Vector, double, Dipole_Type::code)
0080     \brief initialises all variables, looks for MEs and calculates the weight
0081 
0082     The arguments to be passed are the multipole after treatment, the 
0083     multipole before treatment, the generated photons, the mass of the 
0084     decaying particle and the Dipole_Type.
0085 
0086     Calls <tt>Weight_Higher_Order_Corrections::ME_Selector</tt> to find
0087     out whether there is a generic or specific ME for the process. Only
0088     enabled if the USE_ME switch in Fragmentation.dat is set to 1. If 
0089     there are no MEs available, the internal dipole approximation will 
0090     be called.
0091 
0092     Calls <tt>Weight_Higher_Order_Corrections::CalculateWeightAndMax()</tt> 
0093     in case the ME-correction is envoked, <tt>Weight_Higher_Order_Corrections::CalculateWeight()</tt> 
0094     and <tt>Weight_Higher_Order_Corrections::CalculateMax()</tt> in 
0095     otherwise to calculate the weight and its maximum. The latter 
0096     value is the contribution to the maximum total weight but not 
0097     the maximum of \f$ W_{\mathcal{C}} \f$ by itself.
0098   */
0099 
0100   /*!
0101     \fn double Weight_Higher_Order_Corrections::RealCorrectionsOrder(int)
0102     \brief calculates the real corrections of \f$ \mathcal{O}(\alpha^n) \f$ in the collinear approximation
0103 
0104     The argument to be passed is the order of \f$ \alpha \f$ at which 
0105     the corrections should be calculated. Lower orders than the one 
0106     specified will not be included. The value returned for 
0107     \f$ \mathcal{O}(\alpha) \f$ is
0108     \f[
0109       \frac{1}{\tilde{\beta}_0^0}\sum_{i=1}^{n_\gamma}
0110         \frac{\tilde{\beta}_1^1(k_i)}{\tilde{S}(k_i)}
0111     \f]
0112     with
0113     \f[
0114       \tilde{\beta}_1^1(k) 
0115       = -\frac{\alpha}{4\pi^2}\tilde{\beta}_0^0
0116          \sum_{i<j}Z_iZ_j\theta_i\theta_j
0117                     (\bar{\mathcal{D}}_{ij}+\bar{\mathcal{D}}_{ji})
0118     \f]
0119   */
0120 
0121   /*!
0122     \fn double Weight_Higher_Order_Corrections::VirtualCorrectionsOrder(int)
0123     \brief calculates the virtual corrections of \f$ \mathcal{O}(\alpha^n) \f$ in the leading log approximation
0124 
0125     The argument to be passed is the order of \f$ \alpha \f$ at which 
0126     the corrections should be calculated. Lower orders than the one 
0127     specified will not be included. For \f$ \mathcal{O}(\alpha) \f$ these 
0128     terms will only be calculated for \f$ Z^0 \f$ and \f$ W^\pm \f$ decays 
0129     into fermion anti-fermion pairs since in all other cases the virtual 
0130     contribution is negligable. The value returned is finite if the charged 
0131     fermions are massive.
0132   */
0133 
0134   /*!
0135     \fn double Weight_Higher_Order_Corrections::Dmod(unsigned int, unsigned int, unsigned int)
0136     \brief calculates the infrared subtracted massive dipole splitting function \f$ \bar{\mathcal{D}}_{ij}(k) \f$
0137 
0138     The arguments to be passed are the multipole indices \f$ i \f$ 
0139     and \f$ j \f$ and the bremsstrahlung photon index \f$ k \f$ as 
0140     they label the particles in their respective Particle_Vector.
0141 
0142     The massive dipole splitting functions are depending on the 
0143     Dipole_Type of the subdipole \f$ (ij) \f$ of the multipole and 
0144     the spin of the emitting particle with label \f$ i \f$.
0145 
0146     At the moment only the infrared subtracted splitting functions 
0147     for massive fermions and spin-0 bosons are implemented. The ones 
0148     for massive spin-1 and spin-2 bosons and spin-3/2 fermions are 
0149     still missing.
0150   */
0151 
0152   /*!
0153     \fn double Weight_Higher_Order_Corrections::Smod(unsigned int)
0154     \brief calculates \f$ \tilde{S}(k) \f$
0155 
0156     The argument passed is the index of the photon in its Particle_Vector. 
0157     Returns 
0158     \f[ 
0159       \tilde{S}(k) 
0160       = \sum\limits_{i<j}\tilde{S}_{ij}(k) 
0161       = \sum\limits_{i<j}Z_iZ_j\theta_i\theta_j
0162           \left(\frac{p_1}{(p_1\cdot k_i)}-\frac{p_2}{(p_2\cdot k_i)}\right)^2 
0163     \f]
0164   */
0165 
0166   /*!
0167     \fn void Weight_Higher_Order_Corrections::CalculateWeight()
0168     \brief calculates the weight of the event in the 
0169 
0170     The value calculated is \f$ W_{\mathcal{C}} = 1 + 
0171     \mathcal{O}(\alpha)_V + \mathcal{O}(\alpha)_R \f$
0172   */
0173 
0174   /*!
0175     \fn void Weight_Higher_Order_Corrections::CalculateMax()
0176     \brief calculates the maximum weight of the configuration given
0177 
0178     The value returned is \f$ W_{\mathcal{C}} = 1 + \mathcal{O}(\alpha)_V \f$, 
0179     which is the value of \f$ K=0 \f$. It is not the maximum of 
0180     \f$ W_{\mathcal{C}} \f$, but its contribution to the maximum total weight.
0181   */
0182 
0183   /*!
0184     \fn void Weight_Higher_Order_Corrections::CalculateWeightAndMaxWithME(Particle_Vector_Vector, Particle_Vector_Vector)
0185     \brief calculates the weight and its contribution to the maximum weight for ME-corrections
0186 
0187     Takes the <tt>Particle_Vector_Vector</tt>s of the dressed and undressed 
0188     blobs to pass on to <tt>Weight_Higher_Order_Corrections::ME_Selector</tt> 
0189     and calculates the weight and its contribution to the maximum.
0190   */
0191     
0192 }
0193 
0194 #endif