Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef Herwig_RPVFFSVertex_H
0003 #define Herwig_RPVFFSVertex_H
0004 //
0005 // This is the declaration of the RPVFFSVertex class.
0006 //
0007 
0008 #include "ThePEG/Helicity/Vertex/Scalar/FFSVertex.h"
0009 #include "RPV.h"
0010 
0011 namespace Herwig {
0012 
0013 using namespace ThePEG;
0014 
0015 /**
0016  * Here is the documentation of the RPVFFSVertex class.
0017  *
0018  * @see \ref RPVFFSVertexInterfaces "The interfaces"
0019  * defined for RPVFFSVertex.
0020  */
0021 class RPVFFSVertex: public Helicity::FFSVertex {
0022 
0023 public:
0024 
0025   /**
0026    * The default constructor.
0027    */
0028   RPVFFSVertex();
0029   
0030   /**
0031    * Calculate the coupling for the vertex
0032    * @param q2 The scale to at which evaluate the coupling.
0033    * @param particle1 The first particle in the vertex.
0034    * @param particle2 The second particle in the vertex.
0035    * @param particle3 The third particle in the vertex.
0036    */
0037   virtual void setCoupling(Energy2 q2, tcPDPtr particle1, tcPDPtr particle2,
0038                tcPDPtr particle3);
0039 
0040 public:
0041 
0042   /** @name Functions used by the persistent I/O system. */
0043   //@{
0044   /**
0045    * Function used to write out object persistently.
0046    * @param os the persistent output stream written to.
0047    */
0048   void persistentOutput(PersistentOStream & os) const;
0049 
0050   /**
0051    * Function used to read in object persistently.
0052    * @param is the persistent input stream read from.
0053    * @param version the version number of the object when written.
0054    */
0055   void persistentInput(PersistentIStream & is, int version);
0056   //@}
0057 
0058   /**
0059    * The standard Init function used to initialize the interfaces.
0060    * Called exactly once for each class by the class description system
0061    * before the main function starts or
0062    * when this class is dynamically loaded.
0063    */
0064   static void Init();
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;
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;
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 protected:
0096 
0097   /**
0098    *    Neutralino-sfermion-fermion
0099    */
0100   void neutralinoSfermionCoupling(Energy2 q2, tcPDPtr fermion, tcPDPtr gaugino,
0101                   tcPDPtr sfermion);
0102 
0103   /**
0104    *    Chargino-sfermion-fermion
0105    */
0106   void charginoSfermionCoupling(Energy2 q2, tcPDPtr fermion, tcPDPtr gaugino,
0107                 tcPDPtr sfermion);
0108 
0109   /**
0110    *  Higgs to SM fermions
0111    */
0112   void higgsFermionCoupling(Energy2 q2, tcPDPtr f1, tcPDPtr f2, tcPDPtr higgs);
0113 
0114   /**
0115    *  Higgs to gauginos (general slepton case with mixing)
0116    */
0117   void higgsGauginoCoupling(Energy2 q2, tcPDPtr f1, tcPDPtr f2, tcPDPtr higgs);
0118 
0119 private:
0120 
0121   /**
0122    * The assignment operator is private and must never be called.
0123    * In fact, it should not even be implemented.
0124    */
0125   RPVFFSVertex & operator=(const RPVFFSVertex &) = delete;
0126 
0127 private:
0128 
0129   /**
0130    *  Which interactions to include
0131    */
0132   unsigned int interactions_;
0133 
0134   /**
0135    *  Mixing Matrices
0136    */
0137   //@{  
0138   /**
0139    * Pointer to stop mixing matrix
0140    */
0141   tMixingMatrixPtr _stop;
0142 
0143   /**
0144    * Pointer to sbottom mixing matrix
0145    */
0146   tMixingMatrixPtr _sbot;
0147 
0148   /**
0149    * Pointer to stau mixing matrix 
0150    */
0151   tMixingMatrixPtr _stau;
0152 
0153   /**
0154    * Pointer to U chargino mixing matrix 
0155    */
0156   tMixingMatrixPtr _umix;
0157 
0158   /**
0159    * Pointer to V chargino mixing matrix
0160    */
0161   tMixingMatrixPtr _vmix;
0162   
0163   /**
0164    * Pointer to the neutralino mixing matrix
0165    */
0166   tMixingMatrixPtr _nmix;
0167 
0168   /**
0169    *  Neutral scalar Higgs mixing matrix
0170    */
0171   MixingMatrixPtr _mixH;
0172 
0173   /**
0174    *  Neutral pseudoscalar Higgs mixing matrix
0175    */
0176   MixingMatrixPtr _mixP;
0177 
0178   /**
0179    *  Charged Higgs mixing matrix
0180    */
0181   MixingMatrixPtr _mixC;
0182   //@}
0183 
0184   /**
0185    * The mass of the \f$W\f$.
0186    */
0187   Energy mw_;
0188 
0189   /**
0190    * The energy scale at which the coupling 
0191    * was last evaluated 
0192    */
0193   Energy2 _q2last;
0194 
0195   /**
0196    * The value of the coupling at the scale last evaluated
0197    */
0198   Complex _couplast;
0199   
0200   /**
0201    * Store the value of the left coupling when it was last evaluated
0202    */
0203   Complex _leftlast;
0204   
0205   /**
0206    * Store the value of the right coupling when it was last evaluated
0207    */
0208   Complex _rightlast;
0209 
0210   /**
0211    * Store the id of the last gaugino to be evaluated
0212    */
0213   long _id1last;
0214   
0215   /**
0216    * Store the id of the last SM fermion to be evaluated
0217    */
0218   long _id2last;
0219 
0220   /**
0221    * Store the id of the last scalar to be evaluated
0222    */
0223   long _id3last;
0224 
0225   /**
0226    *  Include Yukawa's ? in neutralino/chargino interactions
0227    */
0228   bool yukawa_;
0229  
0230   /**
0231    * Pointer to the Susy Model object
0232    */
0233   tRPVPtr model_;
0234 
0235   /**
0236    * \f$\sin(\theta_w)\f$
0237    */
0238   double _sw;
0239 
0240   /**
0241    * \f$\cos(\theta_w)\f$
0242    */
0243   double _cw;
0244 
0245   /**
0246    * \f$\sin(\beta)\f$
0247    */
0248   double _sb;
0249 
0250   /**
0251    * \f$\cos(\beta)\f$
0252    */
0253   double _cb;
0254 
0255   /**
0256    *  VEV for down type Higgs
0257    */
0258   Energy vd_;
0259 
0260   /**
0261    *  VEV for up   type Higgs
0262    */
0263   Energy vu_;
0264 
0265   /**
0266    *  Values of the masses
0267    */
0268   pair<Energy,Energy> _massLast;
0269 
0270   /**
0271    *  OCCHL
0272    */
0273   vector<vector<vector<Complex> > > OCCHL_;
0274 
0275   /**
0276    *  ONNHL
0277    */
0278   vector<vector<vector<Complex> > > ONNHL_;
0279 
0280   /**
0281    *  OCCAL
0282    */
0283   vector<vector<vector<Complex> > > OCCAL_;
0284 
0285   /**
0286    *  ONNAL
0287    */
0288   vector<vector<vector<Complex> > > ONNAL_;
0289 
0290   /**
0291    *  OCNSL
0292    */
0293   vector<vector<vector<Complex> > > OCNSL_;
0294 
0295   /**
0296    *   OCNSR
0297    */
0298   vector<vector<vector<Complex> > > OCNSR_;
0299 };
0300 
0301 }
0302 
0303 #endif /* Herwig_RPVFFSVertex_H */