Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // RunningMass.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_RunningMass_H
0010 #define HERWIG_RunningMass_H
0011 //
0012 // This is the declaration of the RunningMass class.
0013 
0014 #include "RunningMassBase.h"
0015 #include "StandardModel.h"
0016 
0017 namespace Herwig {
0018 using namespace ThePEG;
0019 
0020 /** \ingroup Models
0021  * 
0022  *  Implementation of the 1 or 2 loop QCD running mass.
0023  *
0024  *  @see RunningMassBase
0025  */
0026 class RunningMass: public RunningMassBase {
0027   
0028 public:
0029   
0030   /**
0031    * Default constructor.
0032    */
0033   RunningMass()  : _theQCDOrder(1), _theMaxFlav(6), _lightOption(1), _heavyOption(0) {}
0034 
0035 public:
0036   
0037   /**
0038    * Return the running mass for a given scale \f$q^2\f$ and particle type.
0039    * @param q2 The scale \f$q^2\f$.
0040    * @param part The ParticleData pointer
0041    */
0042   virtual Energy value(Energy2 q2,tcPDPtr part) const;
0043   
0044   /**
0045    * Return the masses used.
0046    */
0047   virtual vector<Energy> mass() const;
0048 
0049 public:
0050   
0051   /** @name Functions used by the persistent I/O system. */
0052   //@{
0053   /**
0054    * Function used to write out object persistently.
0055    * @param os the persistent output stream written to.
0056    */
0057   void persistentOutput(PersistentOStream & os) const;
0058 
0059   /**
0060    * Function used to read in object persistently.
0061    * @param is the persistent input stream read from.
0062    * @param version the version number of the object when written.
0063    */
0064   void persistentInput(PersistentIStream & is, int version);
0065   //@}
0066   
0067   /**
0068    * Standard Init function used to initialize the interfaces.
0069    */
0070   static void Init();
0071   
0072 protected:
0073   
0074   /** @name Clone Methods. */
0075   //@{
0076   /**
0077    * Make a simple clone of this object.
0078    * @return a pointer to the new object.
0079    */
0080   virtual IBPtr clone() const {return new_ptr(*this);}
0081 
0082   /** Make a clone of this object, possibly modifying the cloned object
0083    * to make it sane.
0084    * @return a pointer to the new object.
0085    */
0086   virtual IBPtr fullclone() const {return new_ptr(*this);}
0087   //@}
0088 
0089 protected:
0090   
0091   /** @name Standard Interfaced functions. */
0092   //@{
0093   /**
0094    * Initialize this object after the setup phase before saving and
0095    * EventGenerator to disk.
0096    * @throws InitException if object could not be initialized properly.
0097    */
0098   virtual void doinit();
0099   //@}
0100     
0101 private:
0102   
0103   /**
0104    * Private and non-existent assignment operator.
0105    */
0106   RunningMass & operator=(const RunningMass &) = delete;
0107   
0108 private:
0109 
0110   /**
0111    * Order in alphaS.
0112    */
0113   unsigned int _theQCDOrder;
0114 
0115   /**
0116    * The maximum number of flavours.
0117    */
0118   unsigned int _theMaxFlav;
0119 
0120   /**
0121    * The power for the running mass calculation.
0122    */
0123   vector<double> _thePower;
0124 
0125   /**
0126    * The coefficients for the running mass calculation.
0127    */
0128   vector<double> _theCoefficient;
0129 
0130   /**
0131    * Pointer to the StandardModel object.
0132    */
0133   tcSMPtr _theStandardModel;
0134 
0135   /**
0136    *  Option to use pole masses for u,d,s
0137    */
0138   unsigned int _lightOption;
0139 
0140   /**
0141    *  Option to use pole masses for c,b
0142    */
0143   unsigned int _heavyOption;
0144 
0145 };
0146 
0147 }
0148 
0149 
0150 #endif /* HERWIG_RunningMass_H */