Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:24:18

0001 // -*- C++ -*-
0002 //
0003 // AlphaEM.h is a part of Herwig - A multi-purpose Monte Carlo event generator
0004 // Copyright (C) 2002-2019 The Herwig Collaboration
0005 //
0006 // Herwig is licenced under version 3 of the GPL, see COPYING for details.
0007 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
0008 //
0009 #ifndef HERWIG_AlphaEM_H
0010 #define HERWIG_AlphaEM_H
0011 //
0012 // This is the declaration of the AlphaEM class.
0013 //
0014 
0015 #include "ThePEG/StandardModel/AlphaEMBase.h"
0016 
0017 namespace Herwig {
0018 
0019 using namespace ThePEG;
0020 
0021 
0022 /**
0023  * The AlphaEM class is an exact reimplementation of the electromagentic
0024  * coupling in FORTRAN HERWIG and is mainly intended for testing.
0025  * It uses that same hadronic parameterisation as in the ThePEG::SimpleEM
0026  * but differs in the treatment of the top and leptonic contribution.
0027  *
0028  * @see \ref AlphaEMInterfaces "The interfaces"
0029  * defined for AlphaEM.
0030  */
0031 class AlphaEM: public AlphaEMBase {
0032 
0033 public:
0034 
0035   /**
0036    * The default constructor.
0037    */
0038   AlphaEM() : _me(),_mmu(),_mtau(), _mtop() {}
0039 
0040   /**
0041    * The \f$\alpha_{EM}\f$. Return the value of the coupling at a
0042    * given \a scale using the given standard model object, \a sm.
0043    */
0044   virtual double value(Energy2 scale, const StandardModelBase &) const;
0045 
0046 public:
0047 
0048   /** @name Functions used by the persistent I/O system. */
0049   //@{
0050   /**
0051    * Function used to write out object persistently.
0052    * @param os the persistent output stream written to.
0053    */
0054   void persistentOutput(PersistentOStream & os) const;
0055 
0056   /**
0057    * Function used to read in object persistently.
0058    * @param is the persistent input stream read from.
0059    * @param version the version number of the object when written.
0060    */
0061   void persistentInput(PersistentIStream & is, int version);
0062   //@}
0063 
0064   /**
0065    * The standard Init function used to initialize the interfaces.
0066    * Called exactly once for each class by the class description system
0067    * before the main function starts or
0068    * when this class is dynamically loaded.
0069    */
0070   static void Init();
0071 
0072 protected:
0073 
0074   /**
0075    *  The real part of the photon self-energy
0076    * @param ratio The ratio of the mass squared of the fermion to the scale squared,
0077    * \f$m^2/Q^2\f$.
0078    */
0079   double realPi(double ratio) const;
0080 
0081 protected:
0082 
0083   /** @name Clone Methods. */
0084   //@{
0085   /**
0086    * Make a simple clone of this object.
0087    * @return a pointer to the new object.
0088    */
0089   virtual IBPtr clone() const;
0090 
0091   /** Make a clone of this object, possibly modifying the cloned object
0092    * to make it sane.
0093    * @return a pointer to the new object.
0094    */
0095   virtual IBPtr fullclone() const;
0096   //@}
0097 
0098 protected:
0099 
0100   /** @name Standard Interfaced functions. */
0101   //@{
0102   /**
0103    * Initialize this object after the setup phase before saving an
0104    * EventGenerator to disk.
0105    * @throws InitException if object could not be initialized properly.
0106    */
0107   virtual void doinit();
0108   //@}
0109 
0110 private:
0111 
0112   /**
0113    * The assignment operator is private and must never be called.
0114    * In fact, it should not even be implemented.
0115    */
0116   AlphaEM & operator=(const AlphaEM &) = delete;
0117 
0118 
0119 private:
0120 
0121   /**
0122    *  Masses of the Standard Model fermions we need for the
0123    *  self-energies
0124    */
0125   //@{
0126   /**
0127    *  Electron mass squared
0128    */
0129   Energy2 _me;
0130 
0131   /**
0132    *  Muon mass squared
0133    */
0134   Energy2 _mmu;
0135 
0136   /**
0137    *  Tau mass squared
0138    */
0139   Energy2 _mtau;
0140 
0141   /**
0142    *  Top mass squared
0143    */
0144   Energy2 _mtop;
0145   //@}
0146 };
0147 
0148 }
0149 
0150 #endif /* HERWIG_AlphaEM_H */