|
|
|||
File indexing completed on 2026-08-06 09:24:27
0001 // -*- C++ -*- 0002 // 0003 // ShowerAlpha.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_ShowerAlpha_H 0010 #define HERWIG_ShowerAlpha_H 0011 // 0012 // This is the declaration of the ShowerAlpha class. 0013 // 0014 0015 #include "ThePEG/Interface/Interfaced.h" 0016 #include "ShowerAlpha.fh" 0017 0018 namespace Herwig { 0019 0020 using namespace ThePEG; 0021 0022 /** \ingroup Shower 0023 * 0024 * This class is the abstract class from which all types of running couplings 0025 * used in the Showering derive from. 0026 * The main purpose of this class, and the ones that derive from it, is 0027 * to allow systematic uncertainties for the initial-state radiation and, 0028 * independently, the final-state radiation effects, to be evaluated. 0029 * 0030 * This is achieved by allowing a multiplicative factor, 0031 * which is 1.0 for the "central value", 0032 * for the scale argument, \f$\mu^2\f$, of the running coupling. This 0033 * factor, \f$f\f$ is given by the scaleFactor() member and the coupling 0034 * returned by the value() member is such that 0035 * \f[\alpha(\mu^2)\to \alpha(f\times\mu^2).\f] 0036 * This scale factor is a parameter which is settable by the user, via the 0037 * interface. 0038 * Although, of course, it is not clear my how much we should scale 0039 * in order to get a \f$1\sigma\f$ systematic error (but factors: 0040 * 1/2 and 2 are quite common), this method provides a double side error, 0041 * and it appears more sensible than the rough and one-sided evaluation 0042 * obtained 0043 * via turning off the I.S.R. and/or F.S.R. (possibilities which are, 0044 * anyway, provided by Herwig). 0045 * 0046 * @see \ref ShowerAlphaInterfaces "The interfaces" 0047 * defined for ShowerAlpha. 0048 */ 0049 class ShowerAlpha: public Interfaced { 0050 0051 public: 0052 0053 /** @name Standard constructors and destructors. */ 0054 //@{ 0055 /** 0056 * The default constructor. 0057 */ 0058 ShowerAlpha() : _scaleFactor( 1.0 ) {} 0059 //@} 0060 0061 public: 0062 0063 /** 0064 * Methods to return the coupling and the scaleFactor 0065 */ 0066 //@{ 0067 /** 0068 * Pure virtual method that is supposed to return the 0069 * running alpha value evaluated at the input scale. 0070 * @param scale The scale 0071 * @return The coupling 0072 */ 0073 virtual double value(const Energy2 scale) const = 0; 0074 0075 /** 0076 * Virtual method, which 0077 * should be overridden in a derived class to provide an 0078 * overestimate approximation of the alpha value. 0079 */ 0080 virtual double overestimateValue() const = 0; 0081 0082 /** 0083 * Virtual method which returns the ratio of the running alpha 0084 * value at the input scale to the overestimated value. 0085 * @param scale The scale 0086 * @return The ratio 0087 */ 0088 virtual double ratio(const Energy2 scale,double factor=1.) const = 0; 0089 0090 /** 0091 * It returns the factor that multiplies the 0092 * scale argument, \f$\mu^2\f$, of the running coupling. 0093 * This is supposed to be <I>1.0</I> in normal conditions (central values) 0094 * whereas different values can be useful for systematics evaluation 0095 * for Initial State radiation or Final State radiation effects. 0096 */ 0097 double scaleFactor() const {return _scaleFactor;} 0098 0099 /** 0100 * Virtual method that is supposed to return the 0101 * running alpha value evaluated at the input scale. 0102 * @param scale The scale 0103 * @return The coupling 0104 */ 0105 virtual inline double showerValue(const Energy2 scale) const { 0106 return value(scale); 0107 } 0108 0109 /** 0110 * Virtual method, which 0111 * should be overridden in a derived class to provide an 0112 * overestimate approximation of the alpha value. 0113 */ 0114 virtual inline double showerOverestimateValue() const { 0115 return overestimateValue(); 0116 } 0117 0118 /** 0119 * Virtual method which returns the ratio of the running alpha 0120 * value at the input scale to the overestimated value. 0121 * @param scale The scale 0122 * @return The ratio 0123 */ 0124 virtual inline double showerRatio(const Energy2 scale,double factor=1.) const { 0125 return ratio(scale,factor); 0126 } 0127 0128 /** 0129 * Initialize this coupling. 0130 */ 0131 virtual void initialize () {} 0132 //@} 0133 0134 public: 0135 0136 /** @name Functions used by the persistent I/O system. */ 0137 //@{ 0138 /** 0139 * Function used to write out object persistently. 0140 * @param os the persistent output stream written to. 0141 */ 0142 void persistentOutput(PersistentOStream & os) const; 0143 0144 /** 0145 * Function used to read in object persistently. 0146 * @param is the persistent input stream read from. 0147 * @param version the version number of the object when written. 0148 */ 0149 void persistentInput(PersistentIStream & is, int version); 0150 //@} 0151 0152 /** 0153 * The standard Init function used to initialize the interfaces. 0154 * Called exactly once for each class by the class description system 0155 * before the main function starts or 0156 * when this class is dynamically loaded. 0157 */ 0158 static void Init(); 0159 0160 private: 0161 0162 /** 0163 * The assignment operator is private and must never be called. 0164 * In fact, it should not even be implemented. 0165 */ 0166 ShowerAlpha & operator=(const ShowerAlpha &) = delete; 0167 0168 private: 0169 0170 /** 0171 * The scale factor 0172 */ 0173 double _scaleFactor; 0174 0175 }; 0176 0177 } 0178 0179 #endif /* HERWIG_ShowerAlpha_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|