Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef HERWIG_GravitonMassGenerator_H
0003 #define HERWIG_GravitonMassGenerator_H
0004 //
0005 // This is the declaration of the GravitonMassGenerator class.
0006 //
0007 
0008 #include "Herwig/PDT/GenericMassGenerator.h"
0009 
0010 namespace Herwig {
0011 
0012 using namespace ThePEG;
0013 
0014 /**
0015  * Here is the documentation of the GravitonMassGenerator class.
0016  *
0017  * @see \ref GravitonMassGeneratorInterfaces "The interfaces"
0018  * defined for GravitonMassGenerator.
0019  */
0020 class GravitonMassGenerator: public GenericMassGenerator {
0021 
0022 public:
0023 
0024   /**
0025    * The default constructor.
0026    */
0027   GravitonMassGenerator();
0028 
0029 public:
0030 
0031   /** @name Functions used by the persistent I/O system. */
0032   //@{
0033   /**
0034    * Function used to write out object persistently.
0035    * @param os the persistent output stream written to.
0036    */
0037   void persistentOutput(PersistentOStream & os) const;
0038 
0039   /**
0040    * Function used to read in object persistently.
0041    * @param is the persistent input stream read from.
0042    * @param version the version number of the object when written.
0043    */
0044   void persistentInput(PersistentIStream & is, int version);
0045   //@}
0046 
0047   /**
0048    * The standard Init function used to initialize the interfaces.
0049    * Called exactly once for each class by the class description system
0050    * before the main function starts or
0051    * when this class is dynamically loaded.
0052    */
0053   static void Init();
0054 
0055 protected:
0056 
0057   /** @name Clone Methods. */
0058   //@{
0059   /**
0060    * Make a simple clone of this object.
0061    * @return a pointer to the new object.
0062    */
0063   virtual IBPtr clone() const;
0064 
0065   /** Make a clone of this object, possibly modifying the cloned object
0066    * to make it sane.
0067    * @return a pointer to the new object.
0068    */
0069   virtual IBPtr fullclone() const;
0070   //@}
0071 
0072 protected:
0073 
0074   /** @name Standard Interfaced functions. */
0075   //@{
0076   /**
0077    * Initialize this object after the setup phase before saving an
0078    * EventGenerator to disk.
0079    * @throws InitException if object could not be initialized properly.
0080    */
0081   virtual void doinit();
0082   //@}
0083 
0084 protected:
0085 
0086   /**
0087    * Return a mass with the weight using the specified limits.
0088    * @param part The particle data pointer of the particle.
0089    * @param low The lower limit on the particle's mass.
0090    * @param upp The upper limit on the particle's mass.
0091    * @param wgt The weight for this mass.
0092    * @param shape The type of shape to use
0093    * @param r   The random number used for the weight
0094    * @return The mass of the particle instance.
0095    */
0096   virtual Energy mass(double & wgt, const ParticleData & part,
0097               const Energy low,const Energy upp, int shape,
0098               double r=UseRandom::rnd()) const;
0099 
0100 private:
0101 
0102   /**
0103    * The assignment operator is private and must never be called.
0104    * In fact, it should not even be implemented.
0105    */
0106   GravitonMassGenerator & operator=(const GravitonMassGenerator &) = delete;
0107 
0108 private:
0109 
0110   /**
0111    *  prefactor
0112    */
0113   double prefactor_;
0114 
0115   /**
0116    *  Number of extra dimensions
0117    */
0118   unsigned int delta_;
0119 
0120   /**
0121    *  d-dimensional Planck mass
0122    */
0123   Energy md_;
0124 
0125   /**
0126    *  Minimum mass cut to avoid numerical problems
0127    */
0128   Energy mMin_;
0129 
0130 };
0131 
0132 }
0133 
0134 #endif /* HERWIG_GravitonMassGenerator_H */