Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef PHOTONS_Main_Photons_H
0002 #define PHOTONS_Main_Photons_H
0003 
0004 #include "MODEL/Main/Running_AlphaQED.H"
0005 #include "PHOTONS++/Main/Dipole_Type.H"
0006 #include "PHOTONS++/PhotonSplitter/Photon_Splitter.H"
0007 
0008 namespace ATOOLS {
0009   class Blob;
0010 #ifdef PHOTONS_DEBUG
0011   class Histogram_2D;
0012 #endif
0013 }
0014 
0015 namespace PHOTONS {
0016   struct yfsmode {
0017     enum code {
0018       off        = 0,
0019       soft       = 1,
0020       full       = 2
0021     };
0022   };
0023 
0024   std::ostream &operator<<(std::ostream &str,const yfsmode::code &ym);
0025   std::istream &operator>>(std::istream &str,yfsmode::code &ym);
0026 
0027 
0028   class Photons {
0029   private:
0030     std::string                 m_name;
0031     bool                        m_photonsadded;
0032     bool                        m_success;
0033     Photon_Splitter             m_photonsplitter;
0034     int                         m_splitphotons;
0035     void RegisterDefaults();
0036   public:
0037     Photons();
0038     ~Photons();
0039     bool AddRadiation(ATOOLS::Blob *);
0040     bool CheckStateBeforeTreatment(ATOOLS::Blob *);
0041 
0042     inline bool        DoneSuccessfully() { return m_success; }
0043     inline bool        AddedAnything()    { return m_photonsadded; }
0044     inline std::string Name()             { return m_name; }
0045 
0046     static double               s_alpha,s_alpha_input;
0047     static bool                 s_userunningparameters;
0048     static inline void ResetAlphaQED()
0049     { s_alpha=s_alpha_input; }
0050     static inline void SetAlphaQED(const double& scale)
0051     { if (s_userunningparameters) s_alpha=(*MODEL::aqed)(scale); }
0052 
0053     static yfsmode::code        s_mode;
0054     static bool                 s_useme;
0055     static double               s_ircutoff;
0056     static double               s_uvcutoff;
0057     static int                  s_ircutoffframe;
0058     static double               s_accu;
0059     static int                  s_nmax;
0060     static int                  s_nmin;
0061     static double               s_drcut;
0062     static bool                 s_strict;
0063     static double               s_increasemaxweight;
0064     static double               s_reducemaxenergy;
0065     static bool                 s_checkfirst;
0066     static int                  s_ffrecscheme;
0067     static int                  s_firecscheme;
0068 
0069 #ifdef PHOTONS_DEBUG
0070     static std::string          s_histo_base_name;
0071     static ATOOLS::Histogram_2D s_histo_dipole;
0072     static ATOOLS::Histogram_2D s_histo_jacobianM;
0073     static ATOOLS::Histogram_2D s_histo_jacobianL;
0074     static ATOOLS::Histogram_2D s_histo_higher;
0075     static ATOOLS::Histogram_2D s_histo_yfs;
0076     static ATOOLS::Histogram_2D s_histo_total;
0077     static ATOOLS::Histogram_2D s_histo_t_dipole;
0078     static ATOOLS::Histogram_2D s_histo_t_jacobianM;
0079     static ATOOLS::Histogram_2D s_histo_t_jacobianL;
0080     static ATOOLS::Histogram_2D s_histo_t_higher;
0081     static ATOOLS::Histogram_2D s_histo_t_yfs;
0082     static ATOOLS::Histogram_2D s_histo_t_total;
0083 #endif
0084   };
0085 
0086 
0087   
0088 
0089   /*!
0090     \namespace PHOTONS
0091     \brief namespace of the PHOTONS++ subprogramm
0092   */
0093 
0094   /*!
0095     \file Photons.H
0096     \brief Contains the class PHOTONS::Photons.
0097   */
0098 
0099   /*! 
0100     \class Photons
0101     \brief The Main Stearing Class for YFS Radiation in Sherpa
0102   */
0103   /////////////////////////////////////////////////////////////////////////////////////////
0104   // Description of member variables for Photons
0105   /////////////////////////////////////////////////////////////////////////////////////////
0106 
0107   /*!
0108     \var bool Photons::m_success
0109     \brief value filled by Define_Dipole class, specifies whether treatment was successful
0110   */
0111 
0112   /*!
0113     \var bool Photons::m_photonsadded
0114     \brief value filled by Define_Dipole class, tells whether treatment added any photons
0115   */
0116 
0117   /*!
0118     \var static int Photons::s_mode
0119     \brief contains the mode of operation of Photons set in Fragmentation.dat
0120   */
0121 
0122   /*!
0123     \var static bool Photons::s_useme
0124     \brief if true, ME corrections will be enabled, set in Fragmentation.dat
0125   */ 
0126 
0127   /*!
0128     \var static double Photons::s_ircutoff
0129     \brief contains the infrared cut-off, set in Fragmentation.dat
0130   */
0131   /////////////////////////////////////////////////////////////////////////////////////////
0132   // Description of member methods for Photons
0133   /////////////////////////////////////////////////////////////////////////////////////////
0134   /*!
0135     \fn bool Photons::AddRadiation(Blob *)
0136     \brief hands blob to Define_Dipole class if it is supposed to be treated, returns m_photonsadded
0137   */
0138 
0139   /*!
0140     \fn bool Photons::DoneSuccessfully()
0141     \brief returns m_success
0142   */
0143 } // end namespace PHOTONS
0144 #endif