Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef HERWIG_SSGVNVVertex_H
0003 #define HERWIG_SSGVNVVertex_H
0004 //
0005 // This is the declaration of the SSGVNVVertex class.
0006 //
0007 
0008 #include "ThePEG/Helicity/Vertex/Vector/RFVVertex.h"
0009 #include "MixingMatrix.h"
0010 
0011 namespace Herwig {
0012 
0013 using namespace ThePEG;
0014 
0015 /**
0016  * The SSGVNVVertex class implements the coupling of the gravitino
0017  * to a gaugino and the assoicated gauge boson.
0018  *
0019  * @see \ref SSGVNVVertexInterfaces "The interfaces"
0020  * defined for SSGVNVVertex.
0021  */
0022 class SSGVNVVertex: public Helicity::RFVVertex {
0023 
0024 public:
0025 
0026   /**
0027    * The default constructor.
0028    */
0029   SSGVNVVertex();
0030 
0031   /**
0032    * Calculate the couplings. This method is virtual and must be implemented in 
0033    * classes inheriting from this.
0034    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0035    * @param part1 The ParticleData pointer for the first  particle.
0036    * @param part2 The ParticleData pointer for the second particle.
0037    * @param part3 The ParticleData pointer for the third  particle.
0038    */
0039   virtual void setCoupling(Energy2 q2,tcPDPtr part1,
0040                tcPDPtr part2,tcPDPtr part3);
0041 
0042 public:
0043 
0044   /** @name Functions used by the persistent I/O system. */
0045   //@{
0046   /**
0047    * Function used to write out object persistently.
0048    * @param os the persistent output stream written to.
0049    */
0050   void persistentOutput(PersistentOStream & os) const;
0051 
0052   /**
0053    * Function used to read in object persistently.
0054    * @param is the persistent input stream read from.
0055    * @param version the version number of the object when written.
0056    */
0057   void persistentInput(PersistentIStream & is, int version);
0058   //@}
0059 
0060   /**
0061    * The standard Init function used to initialize the interfaces.
0062    * Called exactly once for each class by the class description system
0063    * before the main function starts or
0064    * when this class is dynamically loaded.
0065    */
0066   static void Init();
0067 
0068 protected:
0069 
0070   /** @name Clone Methods. */
0071   //@{
0072   /**
0073    * Make a simple clone of this object.
0074    * @return a pointer to the new object.
0075    */
0076   virtual IBPtr clone() const;
0077 
0078   /** Make a clone of this object, possibly modifying the cloned object
0079    * to make it sane.
0080    * @return a pointer to the new object.
0081    */
0082   virtual IBPtr fullclone() const;
0083   //@}
0084 
0085 protected:
0086 
0087   /** @name Standard Interfaced functions. */
0088   //@{
0089   /**
0090    * Initialize this object after the setup phase before saving an
0091    * EventGenerator to disk.
0092    * @throws InitException if object could not be initialized properly.
0093    */
0094   virtual void doinit();
0095   //@}
0096 
0097 private:
0098 
0099   /**
0100    * The assignment operator is private and must never be called.
0101    * In fact, it should not even be implemented.
0102    */
0103   SSGVNVVertex & operator=(const SSGVNVVertex &) = delete;
0104 
0105 private:
0106 
0107   /**
0108    *  \f$\sin\theta_W\f$
0109    */
0110   double sw_;
0111 
0112   /**
0113    *  \f$\sin\theta_W\f$
0114    */
0115   double cw_;
0116 
0117   /**
0118    * The value of \f$\sin\beta\f$ 
0119    */
0120   double sb_;
0121 
0122   /**
0123    * The value of \f$\cos\beta\f$ 
0124    */
0125   double cb_;
0126 
0127   /**
0128    *  The Z mass
0129    */  
0130   Energy mz_;
0131   
0132   /**
0133    * Pointer to the neutralino mixing matrix
0134    */
0135   tMixingMatrixPtr nmix_;
0136 
0137   /**
0138    *  The Planck mass
0139    */
0140   Energy MPlanck_;
0141 
0142 };
0143 
0144 }
0145 
0146 #endif /* HERWIG_SSGVNVVertex_H */