Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef HERWIG_RPV_H
0003 #define HERWIG_RPV_H
0004 //
0005 // This is the declaration of the RPV class.
0006 //
0007 
0008 #include "Herwig/Models/Susy/MSSM.h"
0009 #include "RPV.fh"
0010 
0011 namespace Herwig {
0012 
0013 using namespace ThePEG;
0014 
0015 /**
0016  * Here is the documentation of the RPV class.
0017  *
0018  * @see \ref RPVInterfaces "The interfaces"
0019  * defined for RPV.
0020  */
0021 class RPV: public MSSM {
0022 
0023 public:
0024 
0025   /**
0026    * The default constructor.
0027    */
0028   RPV() : lambdaLLE_(3,vector<vector<double> >(3,vector<double>(3,0.))),
0029       lambdaLQD_(3,vector<vector<double> >(3,vector<double>(3,0.))),
0030       lambdaUDD_(3,vector<vector<double> >(3,vector<double>(3,0.))),
0031       triLinearOnly_(false)
0032   {}
0033 
0034 
0035   /**
0036    *  LLE couplings
0037    */
0038   const vector<vector<vector<double> > > & lambdaLLE() {return lambdaLLE_;}
0039 
0040   /**
0041    * LQD couplings
0042    */
0043   const vector<vector<vector<double> > > & lambdaLQD() {return lambdaLQD_;}
0044 
0045   /**
0046    * UDD couplings
0047    */
0048   const vector<vector<vector<double> > > & lambdaUDD() {return lambdaUDD_;}
0049 
0050   /**
0051    *  Sneutrino vevs
0052    */
0053   const vector<Energy> & sneutrinoVEVs() {return vnu_;}
0054 
0055   /**
0056    *  Bilinear coupings
0057    */
0058   const vector<Energy> & epsilon() {return epsilon_;}
0059 
0060   /**
0061    *  Blinear soft terms
0062    */
0063   const vector<Energy> & epsilonB() {return epsB_;}
0064 
0065 public:
0066 
0067   /** @name Functions used by the persistent I/O system. */
0068   //@{
0069   /**
0070    * Function used to write out object persistently.
0071    * @param os the persistent output stream written to.
0072    */
0073   void persistentOutput(PersistentOStream & os) const;
0074 
0075   /**
0076    * Function used to read in object persistently.
0077    * @param is the persistent input stream read from.
0078    * @param version the version number of the object when written.
0079    */
0080   void persistentInput(PersistentIStream & is, int version);
0081   //@}
0082 
0083   /**
0084    * The standard Init function used to initialize the interfaces.
0085    * Called exactly once for each class by the class description system
0086    * before the main function starts or
0087    * when this class is dynamically loaded.
0088    */
0089   static void Init();
0090   
0091 protected:
0092 
0093   /** @name Standard Interfaced functions. */
0094   //@{
0095   /**
0096    * Initialize this object after the setup phase before saving an
0097    * EventGenerator to disk.
0098    * @throws InitException if object could not be initialized properly.
0099    */
0100   virtual void doinit();
0101   //@}
0102 
0103 protected:
0104 
0105   /**
0106    *  Extract the parameters from the input blocks
0107    */
0108   virtual void extractParameters(bool checkModel=true);
0109 
0110   /**
0111    *  Create the mixing matrices for the model
0112    */
0113   virtual void createMixingMatrices();
0114 
0115 protected:
0116 
0117   /** @name Clone Methods. */
0118   //@{
0119   /**
0120    * Make a simple clone of this object.
0121    * @return a pointer to the new object.
0122    */
0123   virtual IBPtr clone() const {return new_ptr(*this);}
0124 
0125   /** Make a clone of this object, possibly modifying the cloned object
0126    * to make it sane.
0127    * @return a pointer to the new object.
0128    */
0129   virtual IBPtr fullclone() const {return new_ptr(*this);}
0130   //@}
0131 
0132 private:
0133 
0134   /**
0135    * The assignment operator is private and must never be called.
0136    * In fact, it should not even be implemented.
0137    */
0138   RPV & operator=(const RPV &) = delete;
0139 
0140 private:
0141 
0142   /**
0143    *  Trillinear couplings
0144    */
0145   //@
0146   /**
0147    *  LLE couplings
0148    */
0149   vector<vector<vector<double> > > lambdaLLE_;
0150 
0151   /**
0152    * LQD couplings
0153    */
0154   vector<vector<vector<double> > > lambdaLQD_;
0155 
0156   /**
0157    * UDD couplings
0158    */
0159   vector<vector<vector<double> > > lambdaUDD_;
0160   //@
0161 
0162   /**
0163    *  Sneutrino vevs
0164    */
0165   vector<Energy> vnu_;
0166 
0167   /**
0168    *  The bilinear parameters
0169    */
0170   vector<Energy> epsilon_;
0171 
0172   /**
0173    *  The bilinear soft terms
0174    */
0175   vector<Energy> epsB_;
0176 
0177   /**
0178    *  Squark mixing matrices
0179    */
0180   //@{
0181   /**
0182    *  For up-type squarks
0183    */
0184   MixingMatrixPtr upSquarkMix_;
0185 
0186   /**
0187    *  For down-type squarks
0188    */
0189   MixingMatrixPtr downSquarkMix_;
0190   //@}
0191 
0192   /**
0193    *  New vertices
0194    */
0195   //@{
0196   /**
0197    *  LLE vertex
0198    */
0199   AbstractFFSVertexPtr LLEVertex_;
0200 
0201   /**
0202    *  LQD vertex
0203    */
0204   AbstractFFSVertexPtr LQDVertex_;
0205 
0206   /**
0207    *  UDD vertex
0208    */
0209   AbstractFFSVertexPtr UDDVertex_;
0210   //@}
0211 
0212   /**
0213    *  Switch to only do trilinears
0214    */
0215   bool triLinearOnly_;
0216 };
0217 
0218 }
0219 
0220 #endif /* HERWIG_RPV_H */