Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // RunningMassBase.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_RunningMassBase_H
0010 #define HERWIG_RunningMassBase_H
0011 //
0012 // This is the declaration of the RunningMassBase class.
0013 
0014 #include "ThePEG/Interface/Interfaced.h"
0015 #include "ThePEG/StandardModel/StandardModelBase.h"
0016 
0017 namespace Herwig {
0018 using namespace ThePEG;
0019 
0020 /** \ingroup Models
0021  * 
0022  *  Base class for running mass calculations.
0023  */
0024 class RunningMassBase: public Interfaced {
0025   
0026 public:
0027   
0028   /**
0029    * Return the running mass for a given scale \f$q^2\f$ and particle type.
0030    * @param q2 The scale \f$q^2\f$.
0031    * @param part The ParticleData pointer
0032    */
0033   virtual Energy value(Energy2 q2,tcPDPtr part) const = 0;
0034  
0035   /**
0036    * Return the masses used.
0037    */
0038   virtual vector<Energy> mass() const = 0;
0039 
0040   /**
0041    * Return the \f$i\f$ th element of the mass array.
0042    * @param i The element to return
0043    */
0044   Energy massElement(unsigned int i) const {return _theMass[i];}
0045 
0046 public:
0047   
0048   /** @name Functions used by the persistent I/O system. */
0049   //@{
0050   /**
0051    * Function used to write out object persistently.
0052    * @param os the persistent output stream written to.
0053    */
0054   void persistentOutput(PersistentOStream & os) const;
0055 
0056   /**
0057    * Function used to read in object persistently.
0058    * @param is the persistent input stream read from.
0059    * @param version the version number of the object when written.
0060    */
0061   void persistentInput(PersistentIStream & is, int version);
0062   //@}
0063   
0064   /**
0065    * Standard Init function used to initialize the interfaces.
0066    */
0067   static void Init();
0068   
0069 protected:
0070   
0071   /** @name Standard Interfaced functions. */
0072   //@{
0073   /**
0074    * Initialize this object after the setup phase before saving and
0075    * EventGenerator to disk.
0076    * @throws InitException if object could not be initialized properly.
0077    */
0078   virtual void doinit();
0079   //@}
0080 
0081 private:
0082   
0083   /**
0084    * Private and non-existent assignment operator.
0085    */
0086   RunningMassBase & operator=(const RunningMassBase &) = delete;
0087   
0088 private:
0089   
0090   /**
0091    * Flavour thresholds and the masses, set at initialization.
0092    */
0093   vector<Energy> _theMass;
0094 
0095 };
0096 
0097 }
0098 
0099 #endif /* HERWIG_RunningMassBase_H */