Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // RSModel.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_RSModel_H
0010 #define HERWIG_RSModel_H
0011 // This is the declaration of the RSModel 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 "RSModel.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 Randell Sundrum model.
0029  *
0030  * @see \ref RSModelInterfaces "The interfaces"
0031  * defined for RSModel.
0032  * @see StandardModel
0033  * @see StandardModelBase
0034  * 
0035  */
0036 class RSModel: public BSMModel {
0037 
0038 public:
0039 
0040   /**
0041    * The default constructor 
0042    */
0043   RSModel(): Lambda_pi_(10000*GeV) {
0044     useMe();
0045   }
0046   
0047   /**
0048    * Return the gravition coupling
0049    */
0050   Energy lambda_pi() const {return Lambda_pi_;}
0051 
0052 
0053   /** @name Vertices */
0054   //@{
0055   /**
0056    * Pointer to the object handling the \f$G\to f\bar{f}\f$ vertex.
0057    */
0058   tAbstractFFTVertexPtr   vertexFFGR() const {return FFGRVertex_;}
0059 
0060   /**
0061    * Pointer to the object handling the \f$G\to VV\f$ vertex.
0062    */
0063   tAbstractVVTVertexPtr   vertexVVGR() const {return VVGRVertex_;}
0064 
0065   /**
0066    * Pointer to the object handling the \f$G\to SS\f$ vertex.
0067    */
0068   tAbstractSSTVertexPtr   vertexSSGR() const {return SSGRVertex_;}
0069 
0070   /**
0071    * Pointer to the object handling the \f$G\to f\bar{f}g\f$ vertex.
0072    */
0073   tAbstractFFVTVertexPtr  vertexFFGGR() const {return FFGGRVertex_;}
0074 
0075   /**
0076    * Pointer to the object handling the \f$G\to f\bar{f}W^\pm/Z^0/\gamma\f$ vertex.
0077    */
0078   tAbstractFFVTVertexPtr  vertexFFWGR() const {return FFWGRVertex_;}
0079 
0080   /**
0081    * Pointer to the object handling the \f$G\to W^+W^-Z^0/\gamma\f$ vertex.
0082    */
0083   tAbstractVVVTVertexPtr  vertexWWWGR() const {return WWWGRVertex_;}
0084 
0085   /**
0086    * Pointer to the object handling the \f$G\to ggg\f$ vertex.
0087    */
0088   tAbstractVVVTVertexPtr  vertexGGGGR() const {return GGGGRVertex_;}
0089   //@}
0090   
0091 public:
0092   
0093   /** @name Functions used by the persistent I/O system. */
0094   //@{
0095   /**
0096    * Function used to write out object persistently.
0097    * @param os the persistent output stream written to.
0098    */
0099   void persistentOutput(PersistentOStream & os) const;
0100 
0101   /**
0102    * Function used to read in object persistently.
0103    * @param is the persistent input stream read from.
0104    * @param version the version number of the object when written.
0105    */
0106   void persistentInput(PersistentIStream & is, int version);
0107   //@}
0108 
0109   /**
0110    * Standard Init function used to initialize the interfaces.
0111    */
0112   static void Init();
0113 
0114 protected:
0115 
0116   /** @name Standard Interfaced functions. */
0117   //@{
0118   /**
0119    * Initialize this object after the setup phase before saving an
0120    * EventGenerator to disk.
0121    * @throws InitException if object could not be initialized properly.
0122    */
0123   virtual void doinit();
0124   //@}
0125   
0126 protected:
0127   
0128   /** @name Clone Methods. */
0129   //@{
0130   /**
0131    * Make a simple clone of this object.
0132    * @return a pointer to the new object.
0133    */
0134   virtual IBPtr clone() const {return new_ptr(*this);}
0135 
0136   /** Make a clone of this object, possibly modifying the cloned object
0137    * to make it sane.
0138    * @return a pointer to the new object.
0139    */
0140   virtual IBPtr fullclone() const {return new_ptr(*this);}
0141   //@}
0142 
0143 private:
0144   
0145   /**
0146      * Private and non-existent assignment operator.
0147      */
0148   RSModel & operator=(const RSModel &) = delete;
0149 
0150 private:
0151   
0152   /**
0153    * Coupling of the graviton
0154    */
0155   Energy Lambda_pi_;
0156 
0157   /**
0158    * Pointer to the object handling the \f$G\to f\bar{f}\f$ vertex.
0159    */
0160   AbstractFFTVertexPtr  FFGRVertex_;
0161 
0162   /**
0163    * Pointer to the object handling the \f$G\to VV\f$ vertex.
0164    */
0165   AbstractVVTVertexPtr  VVGRVertex_;
0166 
0167   /**
0168    * Pointer to the object handling the \f$G\to SS\f$ vertex.
0169    */
0170   AbstractSSTVertexPtr  SSGRVertex_;
0171 
0172   /**
0173    * Pointer to the object handling the \f$G\to f\bar{f}g\f$ vertex.
0174    */
0175   AbstractFFVTVertexPtr FFGGRVertex_;
0176 
0177   /**
0178    * Pointer to the object handling the \f$G\to f\bar{f}W/Z^0\gamma\f$ vertex.
0179    */
0180   AbstractFFVTVertexPtr FFWGRVertex_;
0181 
0182   /**
0183    * Pointer to the object handling the \f$G\to W^+W^-Z^0\gamma\f$ vertex.
0184    */
0185   AbstractVVVTVertexPtr WWWGRVertex_;
0186 
0187   /**
0188    * Pointer to the object handling the \f$G\to ggg\f$ vertex.
0189    */
0190   AbstractVVVTVertexPtr GGGGRVertex_;
0191   
0192 };
0193 }
0194 
0195 #endif /* HERWIG_RSModel_H */