Back to home page

EIC code displayed by LXR

 
 

    


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

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