Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:38:31

0001 // -*- C++ -*-
0002 //
0003 // SimpleAlphaEM.h is a part of ThePEG - Toolkit for HEP Event Generation
0004 // Copyright (C) 1999-2019 Leif Lonnblad
0005 //
0006 // ThePEG 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 ThePEG_SimpleAlphaEM_H
0010 #define ThePEG_SimpleAlphaEM_H
0011 // This is the declaration of the SimpleAlphaEM class.
0012 
0013 #include "AlphaEMBase.h"
0014 
0015 namespace ThePEG {
0016 
0017 /**
0018  * SimpleAlphaEM inherits from AlphaEMBase and implements a simple
0019  * running of the electromagnetic coupling as parameterized by
0020  * H.~Buckhardt et al.
0021  *
0022  * @see \ref SimpleAlphaEMInterfaces "The interfaces"
0023  * defined for SimpleAlphaEM.
0024  */
0025 class SimpleAlphaEM: public AlphaEMBase {
0026 
0027 public:
0028 
0029   /**
0030    * The \f$\alpha_{EM}\f$. Return the value of the coupling at a
0031    * given \a scale using the given standard model object, \a sm.
0032    */
0033   virtual double value(Energy2 scale, const StandardModelBase &) const;
0034 
0035   /**
0036    * Return the number of loops contributing to
0037    * the running this coupling.
0038    */
0039   virtual unsigned int nloops () const { return 1; }
0040 
0041 public:
0042 
0043   /**
0044    * Standard Init function used to initialize the interface.
0045    */
0046   static void Init();
0047 
0048 protected:
0049 
0050   /** @name Clone Methods. */
0051   //@{
0052   /**
0053    * Make a simple clone of this object.
0054    * @return a pointer to the new object.
0055    */
0056   virtual IBPtr clone() const;
0057 
0058   /** Make a clone of this object, possibly modifying the cloned object
0059    * to make it sane.
0060    * @return a pointer to the new object.
0061    */
0062   virtual IBPtr fullclone() const;
0063   //@}
0064 
0065 private:
0066 
0067   /**
0068    * Describe a concrete class without persistent data.
0069    */
0070   static NoPIOClassDescription<SimpleAlphaEM> initSimpleAlphaEM;
0071 
0072   /**
0073    *  Private and non-existent assignment operator.
0074    */
0075   SimpleAlphaEM & operator=(const SimpleAlphaEM &) = delete;
0076 
0077 };
0078 
0079 /** @cond TRAITSPECIALIZATIONS */
0080 
0081 /** This template specialization informs ThePEG about the base classes
0082  *  of SimpleAlphaEM. */
0083 template <>
0084 struct BaseClassTrait<SimpleAlphaEM,1>: public ClassTraitsType {
0085   /** Typedef of the first base class of SimpleAlphaEM. */
0086   typedef AlphaEMBase NthBase;
0087 };
0088 
0089 /** This template specialization informs ThePEG about the name of the
0090  *  SimpleAlphaEM class and the shared object where it is
0091  *  defined. */
0092 template <>
0093 struct ClassTraits<SimpleAlphaEM>: public ClassTraitsBase<SimpleAlphaEM> {
0094   /** Return a platform-independent class name */
0095   static string className() { return "ThePEG::SimpleAlphaEM"; }
0096   /** Return the name of the shared library be loaded to get access to
0097    *  the SimpleAlphaEM class and every other class it uses
0098    *  (except the base class). */
0099   static string library() { return "SimpleAlphaEM.so"; }
0100 };
0101 
0102 /** @endcond */
0103 
0104 }
0105 
0106 #endif /* ThePEG_SimpleAlphaEM_H */