|
|
|||
File indexing completed on 2026-08-06 09:24:26
0001 // -*- C++ -*- 0002 // 0003 // ShowerAlphaQED.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_ShowerAlphaQED_H 0010 #define HERWIG_ShowerAlphaQED_H 0011 // 0012 // This is the declaration of the ShowerAlphaQED class. 0013 // 0014 0015 #include "Herwig/Shower/ShowerAlpha.h" 0016 0017 namespace Herwig { 0018 0019 using namespace ThePEG; 0020 0021 /** \ingroup Shower 0022 * 0023 * This concrete class provides the definition of the 0024 * pure virtual function value(scale) for \f$\alpha_{\rm QED}\f$. 0025 * N.B. as we always use \f$\alpha(0)\f$ for the radiation of photons 0026 * this class is very simple. 0027 * 0028 * @see ShowerAlpha 0029 * @see ShowerAlphaQCD 0030 * 0031 * @see \ref ShowerAlphaQEDInterfaces "The interfaces" 0032 * defined for ShowerAlphaQED. 0033 */ 0034 class ShowerAlphaQED: public ShowerAlpha { 0035 0036 public: 0037 0038 /** @name Standard constructors and destructors. */ 0039 //@{ 0040 /** 0041 * The default constructor. 0042 */ 0043 ShowerAlphaQED() : ShowerAlpha(), _alpha(1./137.), couplingSource_(1) 0044 {} 0045 //@} 0046 0047 public: 0048 0049 /** 0050 * Methods to return the coupling. 0051 * The methods are equivalent to the QCD ones 0052 * and are necessary to make use of the virtuality of ShowerAlpha 0053 * at other places. 0054 */ 0055 //@{ 0056 /** 0057 * It returns the running coupling value evaluated at the input scale 0058 * multiplied by the scale factor scaleFactor(). 0059 * @param scale The scale 0060 * @return The coupling 0061 */ 0062 virtual double value(const Energy2 scale) const; 0063 0064 /** 0065 * It returns the overestimiate of the coupling 0066 * multiplied by the scale factor scaleFactor(). 0067 */ 0068 virtual double overestimateValue() const; 0069 0070 /** 0071 * Return the ratio of the coupling at the scale to the overestimated value 0072 */ 0073 virtual double ratio(const Energy2 scale,double factor=1.) const; 0074 //@} 0075 0076 public: 0077 0078 /** @name Functions used by the persistent I/O system. */ 0079 //@{ 0080 /** 0081 * Function used to write out object persistently. 0082 * @param os the persistent output stream written to. 0083 */ 0084 void persistentOutput(PersistentOStream & os) const; 0085 0086 /** 0087 * Function used to read in object persistently. 0088 * @param is the persistent input stream read from. 0089 * @param version the version number of the object when written. 0090 */ 0091 void persistentInput(PersistentIStream & is, int version); 0092 //@} 0093 0094 /** 0095 * The standard Init function used to initialize the interfaces. 0096 * Called exactly once for each class by the class description system 0097 * before the main function starts or 0098 * when this class is dynamically loaded. 0099 */ 0100 static void Init(); 0101 0102 protected: 0103 0104 /** @name Clone Methods. */ 0105 //@{ 0106 /** 0107 * Make a simple clone of this object. 0108 * @return a pointer to the new object. 0109 */ 0110 inline virtual IBPtr clone() const {return new_ptr(*this);} 0111 0112 /** Make a clone of this object, possibly modifying the cloned object 0113 * to make it sane. 0114 * @return a pointer to the new object. 0115 */ 0116 inline virtual IBPtr fullclone() const {return new_ptr(*this);} 0117 //@} 0118 0119 protected: 0120 0121 /** 0122 * Initialize this object after the setup phase before saving an 0123 * EventGenerator to disk. 0124 * @throws InitException if object could not be initialized properly. 0125 */ 0126 virtual void doinit(); 0127 0128 private: 0129 0130 /** 0131 * The static object used to initialize the description of this class. 0132 * Indicates that this is a concrete class with persistent data. 0133 */ 0134 static ClassDescription<ShowerAlphaQED> initShowerAlphaQED; 0135 0136 /** 0137 * The assignment operator is private and must never be called. 0138 * In fact, it should not even be implemented. 0139 */ 0140 ShowerAlphaQED & operator=(const ShowerAlphaQED &) = delete; 0141 0142 private: 0143 0144 /** 0145 * The value of the coupling, as we are producing real photons 0146 * this is always \f$\alpha(q^2=0)\f$. 0147 */ 0148 double _alpha; 0149 0150 /** 0151 * Source of coupling value 0152 */ 0153 unsigned int couplingSource_; 0154 }; 0155 0156 } 0157 0158 #include "ThePEG/Utilities/ClassTraits.h" 0159 0160 namespace ThePEG { 0161 0162 /** @cond TRAITSPECIALIZATIONS */ 0163 0164 /** This template specialization informs ThePEG about the 0165 * base classes of ShowerAlphaQED. */ 0166 template <> 0167 struct BaseClassTrait<Herwig::ShowerAlphaQED,1> { 0168 /** Typedef of the first base class of ShowerAlphaQED. */ 0169 typedef Herwig::ShowerAlpha NthBase; 0170 }; 0171 0172 /** This template specialization informs ThePEG about the name of 0173 * the ShowerAlphaQED class and the shared object where it is defined. */ 0174 template <> 0175 struct ClassTraits<Herwig::ShowerAlphaQED> 0176 : public ClassTraitsBase<Herwig::ShowerAlphaQED> { 0177 /** Return a platform-independent class name */ 0178 static string className() { return "Herwig::ShowerAlphaQED"; } 0179 /** 0180 * The name of a file containing the dynamic library where the class 0181 * ShowerAlphaQED is implemented. It may also include several, space-separated, 0182 * libraries if the class ShowerAlphaQED depends on other classes (base classes 0183 * excepted). In this case the listed libraries will be dynamically 0184 * linked in the order they are specified. 0185 */ 0186 static string library() { return "HwShower.so"; } 0187 }; 0188 0189 /** @endcond */ 0190 0191 } 0192 0193 #endif /* HERWIG_ShowerAlphaQED_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|