Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef Herwig_RPVWWHVertex_H
0003 #define Herwig_RPVWWHVertex_H
0004 //
0005 // This is the declaration of the RPVWWHVertex class.
0006 //
0007 
0008 #include "ThePEG/Helicity/Vertex/Scalar/VVSVertex.h"
0009 
0010 namespace Herwig {
0011 
0012 using namespace ThePEG;
0013 
0014 /**
0015  * The RPVWWHVertex class implements the couplings of a pair of gauge bosons to scalars in 
0016  * the R-parity violating MSSM.
0017  */
0018 class RPVWWHVertex: public Helicity::VVSVertex {
0019 
0020 public:
0021 
0022   /**
0023    * The default constructor.
0024    */
0025   RPVWWHVertex();
0026 
0027   /**
0028    * Calculate the coupling for the vertex
0029    * @param q2 The scale to at which evaluate the coupling.
0030    * @param particle1 The first particle in the vertex.
0031    * @param particle2 The second particle in the vertex.
0032    * @param particle3 The third particle in the vertex.
0033    */
0034   virtual void setCoupling(Energy2 q2, tcPDPtr particle1, tcPDPtr particle2,
0035                tcPDPtr particle3);
0036 
0037 public:
0038 
0039   /** @name Functions used by the persistent I/O system. */
0040   //@{
0041   /**
0042    * Function used to write out object persistently.
0043    * @param os the persistent output stream written to.
0044    */
0045   void persistentOutput(PersistentOStream & os) const;
0046 
0047   /**
0048    * Function used to read in object persistently.
0049    * @param is the persistent input stream read from.
0050    * @param version the version number of the object when written.
0051    */
0052   void persistentInput(PersistentIStream & is, int version);
0053   //@}
0054 
0055   /**
0056    * The standard Init function used to initialize the interfaces.
0057    * Called exactly once for each class by the class description system
0058    * before the main function starts or
0059    * when this class is dynamically loaded.
0060    */
0061   static void Init();
0062 
0063 protected:
0064 
0065   /** @name Clone Methods. */
0066   //@{
0067   /**
0068    * Make a simple clone of this object.
0069    * @return a pointer to the new object.
0070    */
0071   virtual IBPtr clone() const;
0072 
0073   /** Make a clone of this object, possibly modifying the cloned object
0074    * to make it sane.
0075    * @return a pointer to the new object.
0076    */
0077   virtual IBPtr fullclone() const;
0078   //@}
0079 
0080 protected:
0081 
0082   /** @name Standard Interfaced functions. */
0083   //@{
0084   /**
0085    * Initialize this object after the setup phase before saving an
0086    * EventGenerator to disk.
0087    * @throws InitException if object could not be initialized properly.
0088    */
0089   virtual void doinit();
0090   //@}
0091 
0092 private:
0093 
0094   /**
0095    * The assignment operator is private and must never be called.
0096    * In fact, it should not even be implemented.
0097    */
0098   RPVWWHVertex & operator=(const RPVWWHVertex &) = delete;
0099 
0100 private:
0101 
0102   /**
0103    *  The factors for the various interactions
0104    */
0105   vector<vector<complex<Energy> > > couplings_; 
0106 
0107   /**
0108    *  last value of the coupling
0109    */
0110   double coupLast_;
0111 
0112   /**
0113    *  last value of the scale
0114    */
0115   Energy2 q2Last_;
0116 
0117 };
0118 
0119 }
0120 
0121 #endif /* Herwig_RPVWWHVertex_H */