#ifndef PHOTONS_Tools_Weight_Dipole_H #define PHOTONS_Tools_Weight_Dipole_H #include "ATOOLS/Math/Vector.H" #include "PHOTONS++/Tools/Weight_Base.H" namespace PHOTONS { class Weight_Dipole: public Weight_Base { private: ATOOLS::Particle_Vector m_olddipole; ATOOLS::Particle_Vector m_newdipole; ATOOLS::Particle_Vector m_softphotons; virtual void CalculateWeight(); virtual void CalculateMax(); double SMod(const ATOOLS::Vec4D&, const ATOOLS::Vec4D&, const ATOOLS::Vec4D&); public: Weight_Dipole(const ATOOLS::Particle_Vector&, const ATOOLS::Particle_Vector&, const ATOOLS::Particle_Vector&, Dipole_Type::code); virtual ~Weight_Dipole(); }; /*! \file Weight_Dipole.H \brief contains the class Weight_Dipole */ /*! \class Weight_Dipole \brief calculates \f$ W_{dipole} \f$ of the event given */ //////////////////////////////////////////////////////////////////////////////////////////////////// // Description of the variables for Weight_Dipole //////////////////////////////////////////////////////////////////////////////////////////////////// /*! \var Particle_Vector Weight_Dipole::m_olddipole \brief contains all charged particles before the treatment (\f$ K=0 \f$ event) */ /*! \var Particle_Vector Weight_Dipole::m_newdipole \brief contains all charged particles after the treatment */ /*! \var Particle_Vector Weight_Dipole::m_softphotons \brief contains all bremsstrahlung photons generated in the event */ //////////////////////////////////////////////////////////////////////////////////////////////////// // Description of the member methods for Weight_Dipole //////////////////////////////////////////////////////////////////////////////////////////////////// /*! \fn Weight_Dipole::Weight_Dipole(const Particle_Vector, const Particle_Vector, const Particle_Vector, Dipole_Type::code) \brief initialises all variales and calculates the weights The values to be passed are the multipole before the treatment, after the treatment, the generated photons and the Dipole_Type. Calls Weight_Dipole::CalculateWeight() and Weight_Dipole::CalculateMax() to calculate the weight and its maximum. The latter value is the contribution to the maximum total weight as well as the maximum of \f$ W_{dipole} \f$ by itself. */ /*! \fn void Weight_Dipole::CalculateWeight() \brief calculates the weight of the event The weight is \f$ W_{dipole} = \prod_{i=1}^{n_\gamma}\frac{\tilde{S}(p,P,k_i)}{\tilde{S}(p,Q,k_i)} \f$ with \f$ \tilde{S}(k) = \sum\limits_{iWeight_Dipole::SMod(const Vec4D, const Vec4D, const Vec4D) to calculate \f$ \tilde{S} \f$. */ /*! \fn void Weight_Dipole::CalculateMax() \brief calculates the maximum weight of the configuration The maximum weight is \f$ W_{dipole,max} = 1 \f$. */ /*! \fn double Weight_Dipole::SMod(const Vec4D, const Vec4D, const Vec4D) \brief calculates the eikonal factor in \f$ \tilde{S}_{ij} \f$ The arguments are \f$ p_1 \f$, \f$ p_2 \f$ and \f$ k_i \f$. The value returned is \f$ \left(\frac{p_1}{(p_1\cdot k_i)}-\frac{p_2}{(p_2\cdot k_i)}\right)^2 \f$. */ } #endif