Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 
0003 // couplings/lo_alpha_s.h is part of matchbox
0004 // (C) 2008 Simon Platzer -- sp@particle.uni-karlsruhe.de
0005 
0006 #ifndef matchbox_couplings_lo_alpha_s_h
0007 #define matchbox_couplings_lo_alpha_s_h
0008 
0009 #include "alpha_s.h"
0010 
0011 namespace matchbox {
0012 
0013   using namespace ThePEG;
0014 
0015   /**
0016    * LO running alpha_s
0017    *
0018    * @see \ref lo_alpha_sInterfaces "The interfaces"
0019    * defined for lo_alpha_s.
0020    */
0021   class lo_alpha_s
0022     : public alpha_s {
0023 
0024   public:
0025 
0026     /**
0027      * The default constructor.
0028      */
0029     lo_alpha_s();
0030 
0031   public:
0032 
0033     /// return alpha_s as function of scale, QCD scale
0034     /// and number of active flavours
0035     virtual double operator () (Energy2 scale,
0036                 Energy2 lambda2,
0037                 unsigned int nf) const;
0038 
0039     /// return the number of loops which determine this running
0040     virtual unsigned int nloops () const { return 1; }
0041 
0042   public:
0043 
0044     /** @name Functions used by the persistent I/O system. */
0045     //@{
0046     /**
0047      * Function used to write out object persistently.
0048      * @name os the persistent output stream written to.
0049      */
0050     void persistentOutput(PersistentOStream & os) const;
0051 
0052     /**
0053      * Function used to read in object persistently.
0054      * @name is the persistent input stream read from.
0055      * @name version the version number of the object when written.
0056      */
0057     void persistentInput(PersistentIStream & is, int version);
0058     //@}
0059 
0060     /**
0061      * The standard Init function used to initialize the interfaces.
0062      * Called exactly once for each class by the class description system
0063      * before the main function starts or
0064      * when this class is dynamically loaded.
0065      */
0066     static void Init();
0067 
0068   protected:
0069 
0070     /** @name Standard Interfaced functions. */
0071     //@{
0072 
0073     /**
0074      * Initialize this object after the setup phase before saving an
0075      * EventGenerator to disk.
0076      * @throws InitException if object could not be initialized properly.
0077      */
0078     virtual inline void doinit() {
0079       freezing_scale_ *= scale_factor();
0080       alpha_s::doinit();
0081     }
0082 
0083     //@}
0084 
0085   protected:
0086 
0087     /** @name Clone Methods. */
0088     //@{
0089     /**
0090      * Make a simple clone of this object.
0091      * @return a pointer to the new object.
0092      */
0093     virtual IBPtr clone() const;
0094 
0095     /** Make a clone of this object, possibly modifying the cloned object
0096      * to make it sane.
0097      * @return a pointer to the new object.
0098      */
0099     virtual IBPtr fullclone() const;
0100     //@}
0101 
0102   private:
0103 
0104     /**
0105      * The static object used to initialize the description of this class.
0106      * Indicates that this is an abstract class with persistent data.
0107      */
0108     static ClassDescription<lo_alpha_s> initlo_alpha_s;
0109 
0110     /**
0111      * The assignment operator is private and must never be called.
0112      * In fact, it should not even be implemented.
0113      */
0114     lo_alpha_s & operator=(const lo_alpha_s &) = delete;
0115 
0116   private:
0117 
0118     Energy freezing_scale_;
0119 
0120   };
0121 
0122 }
0123 
0124 #include "ThePEG/Utilities/ClassTraits.h"
0125 
0126 namespace ThePEG {
0127 
0128   /** @cond TRAITSPECIALIZATIONS */
0129 
0130   /** This template specialization informs ThePEG about the
0131    *  base classes of lo_alpha_s. */
0132   template <>
0133   struct BaseClassTrait<matchbox::lo_alpha_s,1> {
0134     /** Typedef of the first base class of lo_alpha_s. */
0135     typedef matchbox::alpha_s NthBase;
0136   };
0137 
0138   /** This template specialization informs ThePEG about the name of
0139    *  the lo_alpha_s class and the shared object where it is defined. */
0140   template <>
0141   struct ClassTraits<matchbox::lo_alpha_s>
0142     : public ClassTraitsBase<matchbox::lo_alpha_s> {
0143     /** Return a platform-independent class name */
0144     static string className() { return "matchbox::lo_alpha_s"; }
0145     /**
0146      * The name of a file containing the dynamic library where the class
0147      * lo_alpha_s is implemented. It may also include several, space-separated,
0148      * libraries if the class lo_alpha_s depends on other classes (base classes
0149      * excepted). In this case the listed libraries will be dynamically
0150      * linked in the order they are specified.
0151      */
0152     static string library() { return "HwDipoleShowerAlphaS.so"; }
0153   };
0154 
0155   /** @endcond */
0156 
0157 }
0158 
0159 #endif /* matchbox_couplings_lo_alpha_s_h */