Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef HERWIG_RadiativeHeavyBaryonDecayer_H
0003 #define HERWIG_RadiativeHeavyBaryonDecayer_H
0004 //
0005 // This is the declaration of the RadiativeHeavyBaryonDecayer class.
0006 //
0007 
0008 #include "Baryon1MesonDecayerBase.h"
0009 
0010 namespace Herwig {
0011 using namespace Herwig;
0012 
0013 /** \ingroup Decay
0014  *
0015  * The RadiativeHeavyBaryonDecayer class is designed for the radiative decay
0016  * of a baryon containing a heavy quark to another baryon containing a heavy quark.
0017  * There are four types of transition supported
0018  *
0019  * - \f$\frac12^-\to\frac12^+\f$ \f$E1\f$ transition
0020  * \f[\mathcal{M} = A_{E1}\bar{B}\gamma^\mu\gamma_5B^*F^{\mu\nu}p_{0\mu}\f]
0021  *
0022  * - \f$\frac12^+\to\frac12^+\f$ \f$M1\f$ transition
0023  * \f[\mathcal{M} = A_{M1}\bar{B}\sigma^{\mu\nu}B^*F^{\mu\nu}\f]
0024  *
0025  * - \f$\frac32^-\to\frac12^+\f$ \f$E1\f$ transition
0026  * \f[\mathcal{M} = A_{E1}\bar{B}B^*_\nu F^{\mu\nu}p_{0\mu}\f]
0027  *
0028  * - \f$\frac32^+\to\frac12^+\f$ \f$M1\f$ transition
0029  * \f[\mathcal{M} = A_{M1}\bar{B}\gamma_\mu\gamma_5B^*_\nu F^{\mu\nu}\f]
0030  *
0031  * where \f$p_0\f$ is the momentum of the decaying baryon \f$B^*\f$ is the field for
0032  * the decaying baryon, \f$B\f$ is the field for the baryon produced in the decay and
0033  * \f$F^{\mu\nu}\f$ is the electromagnetic field strength tensor.
0034  *
0035  */
0036 class RadiativeHeavyBaryonDecayer: public Baryon1MesonDecayerBase {
0037 
0038 public:
0039 
0040   /**
0041    * Which of the possible decays is required
0042    * @param cc Is this mode the charge conjugate
0043    * @param parent The decaying particle
0044    * @param children The decay products
0045    */
0046   virtual int modeNumber(bool & cc, tcPDPtr parent, 
0047              const tPDVector & children) const;
0048 
0049   /**
0050    * Output the setup information for the particle database
0051    * @param os The stream to output the information to
0052    * @param header Whether or not to output the information for MySQL
0053    */
0054   virtual void dataBaseOutput(ofstream & os,bool header) const;
0055 
0056 public:
0057 
0058   /** @name Functions used by the persistent I/O system. */
0059   //@{
0060   /**
0061    * Function used to write out object persistently.
0062    * @param os the persistent output stream written to.
0063    */
0064   void persistentOutput(PersistentOStream & os) const;
0065 
0066   /**
0067    * Function used to read in object persistently.
0068    * @param is the persistent input stream read from.
0069    * @param version the version number of the object when written.
0070    */
0071   void persistentInput(PersistentIStream & is, int version);
0072   //@}
0073 
0074   /**
0075    * The standard Init function used to initialize the interfaces.
0076    * Called exactly once for each class by the class description system
0077    * before the main function starts or
0078    * when this class is dynamically loaded.
0079    */
0080   static void Init();
0081 
0082 protected:
0083 
0084   /**
0085    *  Coupling Members.
0086    */
0087   //@{
0088   /**
0089    * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a vector.
0090    * @param imode The mode
0091    * @param m0 The mass of the decaying particle.
0092    * @param m1 The mass of the outgoing baryon.
0093    * @param m2 The mass of the outgoing meson.
0094    * @param A1 The coupling \f$A_1\f$ described above.
0095    * @param A2 The coupling \f$A_2\f$ described above.
0096    * @param B1 The coupling \f$B_1\f$ described above.
0097    * @param B2 The coupling \f$B_2\f$ described above.
0098    */
0099   virtual void halfHalfVectorCoupling(int imode,Energy m0,Energy m1,Energy m2,
0100                       Complex& A1,Complex& A2,
0101                       Complex& B1,Complex& B2) const;
0102 
0103   /**
0104    * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a vector.
0105    * @param imode The mode
0106    * @param m0 The mass of the decaying particle.
0107    * @param m1 The mass of the outgoing baryon.
0108    * @param m2 The mass of the outgoing meson.
0109    * @param A1 The coupling \f$A_1\f$ described above.
0110    * @param A2 The coupling \f$A_2\f$ described above.
0111    * @param A3 The coupling \f$A_3\f$ described above.
0112    * @param B1 The coupling \f$B_1\f$ described above.
0113    * @param B2 The coupling \f$B_2\f$ described above.
0114    * @param B3 The coupling \f$B_3\f$ described above.
0115    */
0116   virtual void threeHalfHalfVectorCoupling(int imode,Energy m0,Energy m1,Energy m2,
0117                        Complex& A1,Complex& A2,Complex& A3,
0118                        Complex& B1,Complex& B2,Complex& B3) const;
0119   //@}
0120 
0121 protected:
0122 
0123   /** @name Clone Methods. */
0124   //@{
0125   /**
0126    * Make a simple clone of this object.
0127    * @return a pointer to the new object.
0128    */
0129   virtual IBPtr clone() const {return new_ptr(*this);}
0130 
0131   /** Make a clone of this object, possibly modifying the cloned object
0132    * to make it sane.
0133    * @return a pointer to the new object.
0134    */
0135   virtual IBPtr fullclone() const {return new_ptr(*this);}
0136   //@}
0137 
0138 protected:
0139 
0140   /** @name Standard Interfaced functions. */
0141   //@{
0142   /**
0143    * Initialize this object after the setup phase before saving and
0144    * EventGenerator to disk.
0145    * @throws InitException if object could not be initialized properly.
0146    */
0147   virtual void doinit();
0148 
0149   /**
0150    * Initialize this object. Called in the run phase just before
0151    * a run begins.
0152    */
0153   virtual void doinitrun();
0154   //@}
0155 
0156 private:
0157 
0158   /**
0159    * The assignment operator is private and must never be called.
0160    * In fact, it should not even be implemented.
0161    */
0162   RadiativeHeavyBaryonDecayer & operator=(const RadiativeHeavyBaryonDecayer &) = delete;
0163 
0164 public:
0165 
0166   /**
0167    *   Set the parameters for a decay mode
0168    */
0169   string setUpDecayMode(string arg);
0170 
0171 private:
0172 
0173   /**
0174    *  The \f$M1\f$ coupling
0175    */
0176   vector<InvEnergy>  M1Coupling_;
0177 
0178   /**
0179    *  The \f$E1\f$ coupling
0180    */
0181   vector<InvEnergy2> E1Coupling_;
0182 
0183   /**
0184    * PDG code for the incoming baryons
0185    */
0186   vector<int> incoming_;
0187 
0188   /**
0189    * PDG code for the outgoing baryons
0190    */
0191   vector<int> outgoing_;
0192 
0193   /**
0194    * The type of matrix element
0195    */
0196   vector<int> modeType_;
0197 
0198   /**
0199    * max weight
0200    */
0201   vector<double> maxWeight_;
0202 };
0203 
0204 }
0205 
0206 #endif /* HERWIG_RadiativeHeavyBaryonDecayer_H */