Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef HERWIG_StrongHeavyBaryonDecayer_H
0003 #define HERWIG_StrongHeavyBaryonDecayer_H
0004 // This is the declaration of the StrongHeavyBaryonDecayer class.
0005 
0006 #include "Baryon1MesonDecayerBase.h"
0007 
0008 namespace Herwig {
0009 using namespace ThePEG;
0010 
0011 /** \ingroup Decay
0012  *
0013  *  The <code>StrongHeavyBaryonDecayer</code> class implements the strong
0014  *  decays of charm baryons using the results of hep-ph/9904421.
0015  *
0016  * @see Baryon1MesonDecayerBase.
0017  * 
0018  */
0019 class StrongHeavyBaryonDecayer: public Baryon1MesonDecayerBase {
0020 
0021 public:
0022 
0023   /**
0024    * Default constructor.
0025    */
0026   StrongHeavyBaryonDecayer();
0027 
0028   /**
0029    * Which of the possible decays is required
0030    * @param cc Is this mode the charge conjugate
0031    * @param parent The decaying particle
0032    * @param children The decay products
0033    */
0034   virtual int modeNumber(bool & cc, tcPDPtr parent, 
0035              const tPDVector & children) const;
0036 
0037   /**
0038    * Output the setup information for the particle database
0039    * @param os The stream to output the information to
0040    * @param header Whether or not to output the information for MySQL
0041    */
0042   virtual void dataBaseOutput(ofstream & os,bool header) const;
0043 
0044 public:
0045 
0046   /** @name Functions used by the persistent I/O system. */
0047   //@{
0048   /**
0049    * Function used to write out object persistently.
0050    * @param os the persistent output stream written to.
0051    */
0052   void persistentOutput(PersistentOStream & os) const;
0053 
0054   /**
0055    * Function used to read in object persistently.
0056    * @param is the persistent input stream read from.
0057    * @param version the version number of the object when written.
0058    */
0059   void persistentInput(PersistentIStream & is, int version);
0060   //@}
0061 
0062   /**
0063    * Standard Init function used to initialize the interfaces.
0064    */
0065   static void Init();
0066 
0067 protected:
0068 
0069   /**
0070    *  Coupling Members.
0071    */
0072   //@{
0073   /**
0074    * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a scalar.
0075    * @param imode The mode
0076    * @param m0 The mass of the decaying particle.
0077    * @param m1 The mass of the outgoing baryon.
0078    * @param m2 The mass of the outgoing meson.
0079    * @param A The coupling \f$A\f$ described above.
0080    * @param B The coupling \f$B\f$ described above.
0081    */
0082   virtual void halfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2,
0083                       Complex& A,Complex& B) const;
0084 
0085   /**
0086    * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a scalar.
0087    * This method must be implemented in any class inheriting from this one
0088    * which includes \f$\frac12\to\frac32+0\f$ or \f$\frac32\to\frac12+0\f$ decays. 
0089    * @param imode The mode
0090    * @param m0 The mass of the decaying particle.
0091    * @param m1 The mass of the outgoing baryon.
0092    * @param m2 The mass of the outgoing meson.
0093    * @param A The coupling \f$A\f$ described above.
0094    * @param B The coupling \f$B\f$ described above.
0095    */
0096   virtual void halfThreeHalfScalarCoupling(int imode, Energy m0, Energy m1, Energy m2,
0097                        Complex& A,Complex& B) const;
0098 
0099   /**
0100    * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a scalar. 
0101    * @param imode The mode
0102    * @param m0 The mass of the decaying particle.
0103    * @param m1 The mass of the outgoing baryon.
0104    * @param m2 The mass of the outgoing meson.
0105    * @param A The coupling \f$A\f$ described above.
0106    * @param B The coupling \f$B\f$ described above.
0107    */
0108   virtual void threeHalfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2,
0109                        Complex& A,Complex& B) const;
0110 
0111   /**
0112    * Couplings for spin-\f$\frac32\f$ to spin-\f$\frac32\f$ and a scalar.
0113    * This method must be implemented in any class inheriting from this one
0114    * which includes \f$\frac32\to\frac32+0\f$ decays. 
0115    * @param imode The mode
0116    * @param m0 The mass of the decaying particle.
0117    * @param m1 The mass of the outgoing baryon.
0118    * @param m2 The mass of the outgoing meson.
0119    * @param A1 The coupling \f$A_1\f$ described above.
0120    * @param A2 The coupling \f$A_2\f$ described above.
0121    * @param B1 The coupling \f$B_1\f$ described above.
0122    * @param B2 The coupling \f$B_2\f$ described above.
0123    */
0124   virtual void threeHalfThreeHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2,
0125                         Complex& A1,Complex& A2,
0126                         Complex& B1,Complex& B2) const;
0127   //@}
0128 
0129 protected:
0130 
0131   /** @name Clone Methods. */
0132   //@{
0133   /**
0134    * Make a simple clone of this object.
0135    * @return a pointer to the new object.
0136    */
0137   virtual IBPtr clone() const {return new_ptr(*this);}
0138 
0139   /** Make a clone of this object, possibly modifying the cloned object
0140    * to make it sane.
0141    * @return a pointer to the new object.
0142    */
0143   virtual IBPtr fullclone() const {return new_ptr(*this);}
0144   //@}
0145 
0146 protected:
0147 
0148   /** @name Standard Interfaced functions. */
0149   //@{
0150 
0151   /**
0152    * Initialize this object after the setup phase before saving and
0153    * EventGenerator to disk.
0154    * @throws InitException if object could not be initialized properly.
0155    */
0156   virtual void doinit();
0157 
0158   /**
0159    * Initialize this object to the begining of the run phase.
0160    */
0161   virtual void doinitrun();
0162   //@}
0163 
0164 private:
0165 
0166   /**
0167    * Private and non-existent assignment operator.
0168    */
0169   StrongHeavyBaryonDecayer & operator=(const StrongHeavyBaryonDecayer &) = delete;
0170 
0171 public:
0172 
0173   /**
0174    *   Set the parameters for a decay mode
0175    */
0176   string setUpDecayMode(string arg);
0177 
0178 private:
0179 
0180   /**
0181    * Strong coupling for the \f$\Sigma_c\to\Lambda_c\pi\f$.
0182    */
0183   InvEnergy _gsigma_clambda_cpi;
0184 
0185   /**
0186    * strong coupling for \f$\Xi^*_c\to\Xi_c\pi\f$.
0187    */
0188   InvEnergy _gxistar_cxi_cpi;
0189 
0190   /**
0191    * Strong coupling for \f$\Lambda_{c1}\to\Sigma_c\pi\f$.
0192    */
0193   double _flambda_c1sigma_cpi;
0194 
0195   /**
0196    * Strong coupling for \f$\Xi_{c1}\to\Xi'_c\pi\f$.
0197    */
0198   double _fxi_c1xi_cpi;
0199 
0200   /**
0201    * Strong coupling for \f$\Lambda_{c1}^*\to\Sigma_c\pi\f$.
0202    */
0203   InvEnergy2 _flambda_c1starsigma_cpi;
0204 
0205   /**
0206    * Strong couplng for \f$\Xi_{c1}^*\to\Xi'_c\pi\f$.
0207    */
0208   InvEnergy2 _fxi_c1starxi_cpi;
0209 
0210   /**
0211    * Strong coupling for the \f$\Sigma_b\to\Lambda_b\pi\f$.
0212    */
0213   InvEnergy _gsigma_blambda_bpi;
0214 
0215   /**
0216    * Strong coupling for \f$\Xi^*_b \to \Xi_b \pi\f$.
0217    */
0218   InvEnergy _gxistar_bxi_bpi;
0219 
0220   /**
0221    * Strong coupling for \f$\Lambda_{b1} \to \Sigma_b \pi\f$.
0222    */
0223   double _flambda_b1sigma_bpi;
0224 
0225   /**
0226    * Strong coupling for \f$\Xi_{b1}\to\Xi'_b\pi\f$.
0227    */
0228   double _fxi_b1xi_bpi;
0229 
0230   /**
0231    * Strong coupling for \f$\Lambda_{b1}^* \to \Sigma_b \pi\f$.
0232    */
0233   InvEnergy2 _flambda_b1starsigma_bpi;
0234 
0235   /**
0236    * Strong couplng for \f$\Xi_{b1}^*\to\Xi'_b\pi\f$.
0237    */
0238   InvEnergy2 _fxi_b1starxi_bpi;
0239 
0240 
0241   /**
0242    * PDG code for the incoming baryons
0243    */
0244   vector<int> incoming_;
0245 
0246   /**
0247    * PDG code for the outgoing particles
0248    */
0249   vector<pair<int,int> > outgoing_;
0250 
0251   /**
0252    * max weight
0253    */
0254   vector<double> maxWeight_;
0255 
0256   /**
0257    * The couplings for the different modes.
0258    */
0259   vector<double> _prefactor;
0260 
0261   /**
0262    * The type of matrix element
0263    */
0264   vector<int> modeType_;
0265 };
0266 
0267 }
0268 
0269 
0270 #endif /* HERWIG_StrongHeavyBaryonDecayer_H */