Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:23:58

0001 // -*- C++ -*-
0002 #ifndef HERWIG_NonLeptonicHyperonDecayer_H
0003 #define HERWIG_NonLeptonicHyperonDecayer_H
0004 //
0005 // This is the declaration of the NonLeptonicHyperonDecayer class.
0006 //
0007 #include "Baryon1MesonDecayerBase.h"
0008 
0009 namespace Herwig {
0010 using namespace ThePEG;
0011 
0012 /** \ingroup Decay
0013  *
0014  *  This is a general class for the non-leptonic decay of hyperons. The
0015  *  decays are given in terms of the invariant amplitudes
0016  *  \f[\bar{u}_{B_j} \left\{A+B\gamma_5\right\}u_{B_i}\f]
0017  *  where \f$B_j\f$ is the outgoing baryon and \f$B_i\f$ is the incoming baryon.
0018  *
0019  *  The default amplitudes are taken from the fit in hep-ph/9902351, 
0020  *  N.B. due to the sign conventions in hep-ph/9902351 the B amplitudes
0021  *  have the opposite sign.
0022  *
0023  * @see Baryon1MesonDecayerBase
0024  * 
0025  */
0026 class NonLeptonicHyperonDecayer: public Baryon1MesonDecayerBase {
0027 
0028 public:
0029 
0030   /**
0031    * Default constructor.
0032    */
0033   NonLeptonicHyperonDecayer();
0034 
0035   /**
0036    * Which of the possible decays is required
0037    * @param cc Is this mode the charge conjugate
0038    * @param parent The decaying particle
0039    * @param children The decay products
0040    */
0041   virtual int modeNumber(bool & cc, tcPDPtr parent, 
0042              const tPDVector & children) const;
0043 
0044 
0045   /**
0046    * Output the setup information for the particle database
0047    * @param os The stream to output the information to
0048    * @param header Whether or not to output the information for MySQL
0049    */
0050   virtual void dataBaseOutput(ofstream & os,bool header) const;
0051 
0052 public:
0053 
0054   /** @name Functions used by the persistent I/O system. */
0055   //@{
0056   /**
0057    * Function used to write out object persistently.
0058    * @param os the persistent output stream written to.
0059    */
0060   void persistentOutput(PersistentOStream & os) const;
0061 
0062   /**
0063    * Function used to read in object persistently.
0064    * @param is the persistent input stream read from.
0065    * @param version the version number of the object when written.
0066    */
0067   void persistentInput(PersistentIStream & is, int version);
0068   //@}
0069 
0070   /**
0071    * Standard Init function used to initialize the interfaces.
0072    */
0073   static void Init();
0074 
0075 protected:
0076 
0077   /**
0078    *  Coupling Members.
0079    */
0080   //@{
0081   /**
0082    * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a scalar.
0083    * @param imode The mode
0084    * @param m0 The mass of the decaying particle.
0085    * @param m1 The mass of the outgoing baryon.
0086    * @param m2 The mass of the outgoing meson.
0087    * @param A The coupling \f$A\f$ described above.
0088    * @param B The coupling \f$B\f$ described above.
0089    */
0090   virtual void halfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2,
0091                       Complex& A,Complex& B) const;
0092 
0093 protected:
0094 
0095   /** @name Clone Methods. */
0096   //@{
0097   /**
0098    * Make a simple clone of this object.
0099    * @return a pointer to the new object.
0100    */
0101   virtual IBPtr clone() const {return new_ptr(*this);}
0102 
0103   /** Make a clone of this object, possibly modifying the cloned object
0104    * to make it sane.
0105    * @return a pointer to the new object.
0106    */
0107   virtual IBPtr fullclone() const {return new_ptr(*this);}
0108   //@}
0109 
0110 protected:
0111 
0112   /** @name Standard Interfaced functions. */
0113   //@{
0114 
0115   /**
0116    * Initialize this object after the setup phase before saving and
0117    * EventGenerator to disk.
0118    * @throws InitException if object could not be initialized properly.
0119    */
0120   virtual void doinit();
0121 
0122   /**
0123    * Initialize this object to the begining of the run phase.
0124    */
0125   virtual void doinitrun();
0126   //@}
0127 
0128 protected:
0129 
0130   /**
0131    * Private and non-existent assignment operator.
0132    */
0133   NonLeptonicHyperonDecayer & operator=(const NonLeptonicHyperonDecayer &) = delete;
0134 
0135 public:
0136 
0137   /**
0138    *   Set the parameters for a decay mode
0139    */
0140   string setUpDecayMode(string arg);
0141 
0142 private:
0143 
0144   /**
0145    * PDG code for the incoming baryon.
0146    */
0147   vector<long> incoming_;
0148 
0149   /**
0150    * PDG code for the outgoing baryon.
0151    */
0152   vector<pair<long,long> > outgoing_;
0153 
0154   /**
0155    * The \f$A\f$ coefficient.
0156    */
0157   vector<double> a_;
0158 
0159   /**
0160    * The \f$B\f$ coefficient.
0161    */
0162   vector<double> b_;
0163 
0164   /**
0165    * the maximum weights for the decays
0166    */
0167   vector<double> maxweight_;
0168 };
0169 
0170 }
0171 
0172 
0173 #endif /* HERWIG_NonLeptonicHyperonDecayer_H */