Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef PHOTONS_Tools_Generate_One_Photon_H
0002 #define PHOTONS_Tools_Generate_One_Photon_H
0003 
0004 #include "PHOTONS++/Main/Dipole_Type.H"
0005 
0006 namespace ATOOLS {
0007   class Histogram_2D;
0008 }
0009 
0010 namespace PHOTONS {
0011   class Generate_One_Photon {
0012     private:
0013       double            m_beta1;
0014       double            m_beta2;
0015       double            m_theta;
0016       double            m_phi;
0017       double            m_w;
0018       double            m_delta;
0019       Dipole_Type::code m_dtype;
0020       ATOOLS::Particle *p_photon;
0021 
0022       void GeneratePhotonAngleMassless();
0023       void GeneratePhoton();
0024 
0025     public:
0026       Generate_One_Photon(const double&, const double&,
0027                           const double&, Dipole_Type::code);
0028       Generate_One_Photon(const ATOOLS::Particle_Vector&,
0029                           const IdPairNbarVector&,double,
0030                           Dipole_Type::code);
0031       ~Generate_One_Photon();
0032 
0033       inline ATOOLS::Particle * GetPhoton() { return p_photon; }
0034 
0035       void SetMinimalPhotonAngle(const double&);
0036 
0037       static ATOOLS::Histogram_2D *s_histo;
0038   };
0039 
0040 
0041   
0042 
0043   /*!
0044     \file Generate_One_Photon.H
0045     \brief contains the class Generate_One_Photon
0046   */
0047 
0048   /*!
0049     \class Generate_One_Photon
0050     \brief generates one photon according to the angular distribution of the multipole
0051   */
0052   ////////////////////////////////////////////////////////////////////////////////////////////////////
0053   // Description of member variables for Generate_One_Photon
0054   ////////////////////////////////////////////////////////////////////////////////////////////////////
0055   /*!
0056     \var double Generate_One_Photon::m_beta1
0057     \brief \f$ \beta \f$ of particle 1 in a different mass dipole
0058   */
0059 
0060   /*!
0061     \var double Generate_One_Photon::m_beta2
0062     \brief \f$ \beta \f$ of particle 2 in a different mass dipole
0063   */
0064 
0065   /*!
0066     \var double Generate_One_Photon::m_theta
0067     \brief generated inclinational angle of the photon in a dipole
0068   */
0069 
0070   /*!
0071     \var double Generate_One_Photon::m_phi
0072     \brief generated azimutal angle of the photon in a dipole
0073   */
0074 
0075   /*!
0076     \var double Generate_One_Photon::m_w
0077     \brief energy for the photon
0078   */
0079 
0080   /*!
0081     \var double Generate_One_Photon::m_delta
0082     \brief collinear cut-off angle (needed for angular generation of massless particles)
0083   */
0084 
0085   /*!
0086     \var Dipole_Type::code Generate_One_Photon::m_dtype
0087     \brief specifies the Dipole_Type
0088   */
0089 
0090   /*!
0091     \var Particle * Generate_One_Photon::p_photon
0092     \brief the complete photon generated
0093   */
0094   ////////////////////////////////////////////////////////////////////////////////////////////////////
0095   // Description of member methods fo Generate_One_Photon
0096   ////////////////////////////////////////////////////////////////////////////////////////////////////
0097   /*!
0098     \fn Generate_One_Photon::Generate_One_Photon(const double&, const double&, const double&, Dipole_Type::code)
0099     \brief constructor for photon generation in dipoles
0100 
0101     The values passed are \f$ \beta_1,\beta_2 \f$, the energy of the photon and the Dipole_Type. For the dipole it is assumed that particle one is aligned along the \f$ +z \f$-axis for final-final dipoles and along the \f$ -z \f$-axis for initial-final dipoles, because in the this case, <tt>Dipole_FF</tt> fills the charged initial state into position 1. The constructor also executes the photon generation process.
0102   */
0103 
0104   /*!
0105     \fn Generate_One_Photon::Generate_One_Photon(const ATOOLS::Particle_Vector &, const IdPairNbarVector&, double, Dipole_Type::code)
0106     \brief constructor for photon generation in multipoles
0107 
0108     The values passed are the multipole, all individual dipoles' \f$ \bar{n}_i \f$, the energy of the photon and the Dipole_Type. The constructor also executes the photon generation process wherein for the angular generation <tt>Generate_Multipole_Photon_Angle</tt> is called. It is also able to handle dipoles, but somewhat slower than the built-in generation.
0109   */
0110 
0111   /*!
0112     \fn void Generate_One_Photon::GeneratePhotonAngleMassless()
0113     \brief generates \f$ \theta \f$ in massless dipoles according to \f$ \tilde{S}_{ij} \f$
0114   */
0115 
0116   /*!
0117     \fn void Generate_One_Photon::GeneratePhoton()
0118     \brief builds a particle out of the generated angles and the energy
0119   */
0120 
0121   /*!
0122     \fn Particle * Generate_One_Photon::GetPhoton()
0123     \brief returns p_photon, the generated photon
0124   */
0125 
0126   /*!
0127     \fn void Generate_One_Photon::SetMinimalPhotonAngle(double)
0128     \brief changes the preset value of the collinear cut-off angle needed in the massless generation and regenerates the event
0129   */
0130 
0131 }
0132 
0133 #endif