Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef Herwig_VectorCurrentDecayConstructor_H
0003 #define Herwig_VectorCurrentDecayConstructor_H
0004 //
0005 // This is the declaration of the VectorCurrentDecayConstructor class.
0006 //
0007 
0008 #include "NBodyDecayConstructorBase.h"
0009 #include "Herwig/Decay/WeakCurrents/WeakCurrent.h"
0010 
0011 namespace Herwig {
0012 
0013 using namespace ThePEG;
0014 
0015 /**
0016  * The VectorCurrentDecayConstructor class constructs the decay of low mass vector bosons via the weak currents.
0017  *
0018  * @see \ref VectorCurrentDecayConstructorInterfaces "The interfaces"
0019  * defined for VectorCurrentDecayConstructor.
0020  */
0021 class VectorCurrentDecayConstructor: public NBodyDecayConstructorBase {
0022 
0023 public:
0024 
0025   /**
0026    * The default constructor.
0027    */
0028   VectorCurrentDecayConstructor() : massCut_(2.*GeV)
0029   {}
0030   
0031   /**
0032    * Function used to determine allowed decaymodes, to be implemented
0033    * in derived class.
0034    *@param part vector of ParticleData pointers containing particles in model
0035    */
0036   virtual void DecayList(const set<PDPtr,MassOrdering> & part);
0037 
0038   /**
0039    * Number of outgoing lines. Required for correct ordering (do this one next-to-last)
0040    */
0041   virtual unsigned int numBodies() const { return 999; }
0042 
0043   /**
0044    *  Cut off
0045    */
0046   Energy massCut() const { return massCut_;}
0047 
0048 public:
0049 
0050   /** @name Functions used by the persistent I/O system. */
0051   //@{
0052   /**
0053    * Function used to write out object persistently.
0054    * @param os the persistent output stream written to.
0055    */
0056   void persistentOutput(PersistentOStream & os) const;
0057 
0058   /**
0059    * Function used to read in object persistently.
0060    * @param is the persistent input stream read from.
0061    * @param version the version number of the object when written.
0062    */
0063   void persistentInput(PersistentIStream & is, int version);
0064   //@}
0065 
0066   /**
0067    * The standard Init function used to initialize the interfaces.
0068    * Called exactly once for each class by the class description system
0069    * before the main function starts or
0070    * when this class is dynamically loaded.
0071    */
0072   static void Init();
0073 
0074 protected:
0075 
0076   /** @name Clone Methods. */
0077   //@{
0078   /**
0079    * Make a simple clone of this object.
0080    * @return a pointer to the new object.
0081    */
0082   virtual IBPtr clone() const;
0083 
0084   /** Make a clone of this object, possibly modifying the cloned object
0085    * to make it sane.
0086    * @return a pointer to the new object.
0087    */
0088   virtual IBPtr fullclone() const;
0089   //@}
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 private:
0104 
0105   /**
0106    * The assignment operator is private and must never be called.
0107    * In fact, it should not even be implemented.
0108    */
0109   VectorCurrentDecayConstructor & operator=(const VectorCurrentDecayConstructor &) = delete;
0110 
0111 private:
0112 
0113   /**
0114    * Model Pointer
0115    */
0116   Ptr<Herwig::StandardModel>::pointer model_;
0117 
0118   /**
0119    *  Cut-off on the mass difference
0120    */
0121   Energy massCut_;
0122 
0123   /**
0124    *  The current for the mode
0125    */
0126   vector<WeakCurrentPtr> current_;
0127 };
0128 
0129 }
0130 
0131 #endif /* Herwig_VectorCurrentDecayConstructor_H */