Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // ADDModel.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_ADDModel_H
0010 #define HERWIG_ADDModel_H
0011 // This is the declaration of the ADDModel class.
0012 
0013 #include "Herwig/Models/General/BSMModel.h"
0014 #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h"
0015 #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h"
0016 #include "ThePEG/Helicity/Vertex/AbstractSSTVertex.h"
0017 #include "ThePEG/Helicity/Vertex/AbstractFFVTVertex.h"
0018 #include "ThePEG/Helicity/Vertex/AbstractVVVTVertex.h"
0019 #include "ADDModel.fh"
0020 
0021 namespace Herwig {
0022 using namespace ThePEG;
0023 using namespace ThePEG::Helicity;
0024 
0025 /** \ingroup Models
0026  *
0027  *  This is the class to be used instead of the Standard Model class for
0028  *  the ADD model.
0029  *
0030  * @see \ref ADDModelInterfaces "The interfaces"
0031  * defined for ADDModel.
0032  * @see StandardModel
0033  * @see StandardModelBase
0034  * 
0035  */
0036 class ADDModel: public BSMModel {
0037 
0038 public:
0039 
0040   /**
0041    * The default constructor 
0042    */
0043   ADDModel() : delta_(2), mPlanckBar_(2.4e18*GeV),
0044            md_(1000.*GeV), lambdaT_(1000.*GeV) {
0045     useMe();
0046   }
0047   
0048   /**
0049    * Number of extrac dimensions
0050    */
0051   unsigned int delta() const {return delta_;}
0052 
0053   /**
0054    *  The reduced Planck mass in 4d
0055    */
0056   Energy MPlanckBar() const {return mPlanckBar_;}
0057 
0058   /**
0059    *  The d-dimension Planck mass
0060    */
0061   Energy MD() const {return md_;}
0062 
0063   /**
0064    *  The cut-off for virtual gravition processes
0065    */
0066   Energy LambdaT() const {return lambdaT_;}
0067 
0068   /** @name Vertices */
0069   //@{
0070   /**
0071    * Pointer to the object handling the \f$G\to f\bar{f}\f$ vertex.
0072    */
0073   tAbstractFFTVertexPtr   vertexFFGR() const {return FFGRVertex_;}
0074 
0075   /**
0076    * Pointer to the object handling the \f$G\to VV\f$ vertex.
0077    */
0078   tAbstractVVTVertexPtr   vertexVVGR() const {return VVGRVertex_;}
0079 
0080   /**
0081    * Pointer to the object handling the \f$G\to SS\f$ vertex.
0082    */
0083   tAbstractSSTVertexPtr   vertexSSGR() const {return SSGRVertex_;}
0084 
0085   /**
0086    * Pointer to the object handling the \f$G\to f\bar{f}g\f$ vertex.
0087    */
0088   tAbstractFFVTVertexPtr  vertexFFGGR() const {return FFGGRVertex_;}
0089 
0090   /**
0091    * Pointer to the object handling the \f$G\to f\bar{f}W^\pm/Z^0/\gamma\f$ vertex.
0092    */
0093   tAbstractFFVTVertexPtr  vertexFFWGR() const {return FFWGRVertex_;}
0094 
0095   /**
0096    * Pointer to the object handling the \f$G\to W^+W^-Z^0/\gamma\f$ vertex.
0097    */
0098   tAbstractVVVTVertexPtr  vertexWWWGR() const {return WWWGRVertex_;}
0099 
0100   /**
0101    * Pointer to the object handling the \f$G\to ggg\f$ vertex.
0102    */
0103   tAbstractVVVTVertexPtr  vertexGGGGR() const {return GGGGRVertex_;}
0104   //@}
0105   
0106 public:
0107   
0108   /** @name Functions used by the persistent I/O system. */
0109   //@{
0110   /**
0111    * Function used to write out object persistently.
0112    * @param os the persistent output stream written to.
0113    */
0114   void persistentOutput(PersistentOStream & os) const;
0115 
0116   /**
0117    * Function used to read in object persistently.
0118    * @param is the persistent input stream read from.
0119    * @param version the version number of the object when written.
0120    */
0121   void persistentInput(PersistentIStream & is, int version);
0122   //@}
0123 
0124   /**
0125    * Standard Init function used to initialize the interfaces.
0126    */
0127   static void Init();
0128 
0129 protected:
0130 
0131   /** @name Standard Interfaced functions. */
0132   //@{
0133   /**
0134    * Initialize this object after the setup phase before saving an
0135    * EventGenerator to disk.
0136    * @throws InitException if object could not be initialized properly.
0137    */
0138   virtual void doinit();
0139   //@}
0140   
0141 protected:
0142   
0143   /** @name Clone Methods. */
0144   //@{
0145   /**
0146    * Make a simple clone of this object.
0147    * @return a pointer to the new object.
0148    */
0149   virtual IBPtr clone() const {return new_ptr(*this);}
0150 
0151   /** Make a clone of this object, possibly modifying the cloned object
0152    * to make it sane.
0153    * @return a pointer to the new object.
0154    */
0155   virtual IBPtr fullclone() const {return new_ptr(*this);}
0156   //@}
0157 
0158 private:
0159   
0160   /**
0161      * Private and non-existent assignment operator.
0162      */
0163   ADDModel & operator=(const ADDModel &) = delete;
0164 
0165 private:
0166   
0167   /**
0168    * Number of extrac dimensions
0169    */
0170   unsigned int delta_;
0171 
0172   /**
0173    *  The reduced Planck mass in 4d
0174    */
0175   Energy mPlanckBar_;
0176 
0177   /**
0178    *  The d-dimension Planck mass
0179    */
0180   Energy md_;
0181 
0182   /**
0183    *  Cut-off parameter for virtual gravitons
0184    */
0185   Energy lambdaT_;
0186 
0187   /**
0188    * Pointer to the object handling the \f$G\to f\bar{f}\f$ vertex.
0189    */
0190   AbstractFFTVertexPtr  FFGRVertex_;
0191 
0192   /**
0193    * Pointer to the object handling the \f$G\to VV\f$ vertex.
0194    */
0195   AbstractVVTVertexPtr  VVGRVertex_;
0196 
0197   /**
0198    * Pointer to the object handling the \f$G\to SS\f$ vertex.
0199    */
0200   AbstractSSTVertexPtr  SSGRVertex_;
0201 
0202   /**
0203    * Pointer to the object handling the \f$G\to f\bar{f}g\f$ vertex.
0204    */
0205   AbstractFFVTVertexPtr FFGGRVertex_;
0206 
0207   /**
0208    * Pointer to the object handling the \f$G\to f\bar{f}W/Z^0\gamma\f$ vertex.
0209    */
0210   AbstractFFVTVertexPtr FFWGRVertex_;
0211 
0212   /**
0213    * Pointer to the object handling the \f$G\to W^+W^-Z^0\gamma\f$ vertex.
0214    */
0215   AbstractVVVTVertexPtr WWWGRVertex_;
0216 
0217   /**
0218    * Pointer to the object handling the \f$G\to ggg\f$ vertex.
0219    */
0220   AbstractVVVTVertexPtr GGGGRVertex_;
0221   
0222 };
0223 }
0224 
0225 #endif /* HERWIG_ADDModel_H */