Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef Herwig_RPVFFZVertex_H
0003 #define Herwig_RPVFFZVertex_H
0004 //
0005 // This is the declaration of the RPVFFZVertex class.
0006 //
0007 
0008 #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h"
0009 #include "Herwig/Models/Susy/SusyBase.h"
0010 #include "Herwig/Models/Susy/MixingMatrix.fh"
0011 
0012 namespace Herwig {
0013 
0014 using namespace ThePEG;
0015 
0016 /**
0017  * Here is the documentation of the RPVFFZVertex class.
0018  *
0019  * @see \ref RPVFFZVertexInterfaces "The interfaces"
0020  * defined for RPVFFZVertex.
0021  */
0022 class RPVFFZVertex: public Helicity::FFVVertex {
0023 
0024 public:
0025 
0026   /**
0027    * The default constructor.
0028    */
0029   RPVFFZVertex();
0030 
0031   /**
0032    * Calculate the couplings.
0033    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0034    * @param part1 The ParticleData pointer for the first  particle.
0035    * @param part2 The ParticleData pointer for the second particle.
0036    * @param part3 The ParticleData pointer for the third  particle.
0037    */
0038   virtual void setCoupling(Energy2 q2, tcPDPtr part1,
0039                            tcPDPtr part2, tcPDPtr part3);
0040 
0041   /** @name Functions used by the persistent I/O system. */
0042   //@{
0043   /**
0044    * Function used to write out object persistently.
0045    * @param os the persistent output stream written to.
0046    */
0047   void persistentOutput(PersistentOStream & os) const;
0048 
0049   /**
0050    * Function used to read in object persistently.
0051    * @param is the persistent input stream read from.
0052    * @param version the version number of the object when written.
0053    */
0054   void persistentInput(PersistentIStream & is, int version);
0055   //@}
0056 
0057   /**
0058    * The standard Init function used to initialize the interfaces.
0059    * Called exactly once for each class by the class description system
0060    * before the main function starts or
0061    * when this class is dynamically loaded.
0062    */
0063   static void Init();
0064 
0065 protected:
0066 
0067   /** @name Clone Methods. */
0068   //@{
0069   /**
0070    * Make a simple clone of this object.
0071    * @return a pointer to the new object.
0072    */
0073   virtual IBPtr clone() const;
0074 
0075   /** Make a clone of this object, possibly modifying the cloned object
0076    * to make it sane.
0077    * @return a pointer to the new object.
0078    */
0079   virtual IBPtr fullclone() const;
0080   //@}
0081 
0082 protected:
0083 
0084   /** @name Standard Interfaced functions. */
0085   //@{
0086   /**
0087    * Initialize this object after the setup phase before saving an
0088    * EventGenerator to disk.
0089    * @throws InitException if object could not be initialized properly.
0090    */
0091   virtual void doinit();
0092   //@}
0093 
0094 private:
0095 
0096   /**
0097    * The assignment operator is private and must never be called.
0098    * In fact, it should not even be implemented.
0099    */
0100   RPVFFZVertex & operator=(const RPVFFZVertex &) = delete;
0101 
0102 private:
0103 
0104   /**
0105    * The value of \f$sin(\theta_W)\f$
0106    */
0107   double _sw;
0108   
0109   /**
0110    * The value of \f$cos(\theta_W)\f$
0111    */
0112   double _cw;
0113 
0114   /**
0115    * Store the neutralino mixing matrix
0116    */
0117   tMixingMatrixPtr _theN;
0118 
0119   /**
0120    * The U mixing matrix
0121    */
0122   tMixingMatrixPtr _theU;
0123 
0124   /**
0125    * The V mixing matrix
0126    */
0127   tMixingMatrixPtr _theV;
0128 
0129   /**
0130    * Store the id of the 1st neutralino when the coupling was last evaluated
0131    */
0132   long _id1last;
0133 
0134   /**
0135    * Store the id of the 2nd neutralino when the coupling was last evaluated
0136    */
0137   long _id2last;
0138 
0139   /**
0140    * Store the value at which the coupling when it was last evalutated
0141    */
0142   Energy2 _q2last;
0143 
0144   /**
0145    * Store the value of the coupling when it was last evalutated
0146    */
0147   Complex _couplast;
0148 
0149   /**
0150    * Store the value of the left-coupling when it was last evalutated
0151    */
0152   Complex _leftlast;
0153 
0154   /**
0155    * Store the value of the right-coupling when it was last evalutated
0156    */
0157   Complex _rightlast;
0158 
0159   /**
0160    *  The left couplings of the Standard Model fermions.
0161    */
0162   vector<double> _gl;
0163 
0164   /**
0165    *  The right couplings of the Standard Model fermions.
0166    */
0167   vector<double> _gr;
0168 
0169   /**
0170    * The ID of the gauge boson when the vertex was last evaluated
0171    */
0172   long _gblast;
0173 
0174   /**
0175    *  Switch controlling which subset of interactions to include
0176    */
0177   unsigned int _interactions;
0178 
0179 };
0180 
0181 }
0182 
0183 #endif /* Herwig_RPVFFZVertex_H */