Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef HERWIG_SU3BaryonOctetOctetPhotonDecayer_H
0003 #define HERWIG_SU3BaryonOctetOctetPhotonDecayer_H
0004 // This is the declaration of the SU3BaryonOctetOctetPhotonDecayer class.
0005 
0006 #include "Baryon1MesonDecayerBase.h"
0007 
0008 namespace Herwig {
0009 using namespace ThePEG;
0010 
0011 /** \ingroup Decay
0012  *
0013  *  The <code>SU3BaryonOctetOctetPhotonDecayer</code> class performs the decay of 
0014  *  a baryon octet to a different baryon octet and a photon.
0015  *
0016  *  The Lagrangian is taken to be
0017  * \f[
0018  *  ir_d\left[ {\rm tr}\left(\bar{R}\sigma_{\mu\nu}\{f^{\mu\nu}_+,B\}\right)
0019  *            +{\rm tr}\left(\bar{B}\sigma_{\mu\nu}\{f^{\mu\nu}_+,R\}\right)
0020  *            \right]
0021  * +ir_f\left[ {\rm tr}\left(\bar{R}\sigma_{\mu\nu}[f^{\mu\nu}_+,B] \right)
0022  *            +{\rm tr}\left(\bar{B}\sigma_{\mu\nu}[f^{\mu\nu}_+,R] \right)
0023  *            \right],
0024  * \f]
0025  *  where \f$B\f$ is the matrix field for the ground state baryon multiplet, \f$R\f$
0026  *  is the 
0027  *  matrix field for the excited baryon multiplet and \f$f^{\mu\nu}_+\f$ is the chiral
0028  * field strength tensor for the electromagentic field given by
0029  * \f[ f^{\mu\nu}_+ = Q F^{\mu\nu} = \left(\begin{array}{ccc}\frac23&0&0\\
0030  *                                                           0&-\frac13&0\\
0031  *                                                           0&0&-\frac13
0032  *     \end{array}\right) F^{\mu\nu},\f]
0033  * where \f$F^{\mu\nu}\f$ is the electromagentic field strength tensor.
0034  * This form is used for the case where both baryon multiplets have the same parity and
0035  * an additional \f$\gamma_5\f$ is added for the case where the multiplets have 
0036  * opposite parity.
0037  *
0038  * For the decay of spin-\f$\frac32\f$ baryons we use the form
0039  * \f[
0040  *  ir_d\left[ {\rm tr}\left(\bar{R}^\mu\gamma_\nu\{f^{\mu\nu}_+,B\}\right)
0041  *            +{\rm tr}\left(\bar{B}\gamma_\nu\{f^{\mu\nu}_+,R^\mu\}\right)
0042  *            \right]
0043  * +ir_f\left[ {\rm tr}\left(\bar{R}^\mu\gamma_\nu[f^{\mu\nu}_+,B] \right)
0044  *            +{\rm tr}\left(\bar{B}\gamma_\nu[f^{\mu\nu}_+,R^\mu] \right)
0045  *            \right],
0046  * \f]
0047  *  where \f$R^\mu\f$ is the matrix field for the excited baryon multiplet.
0048  *  This form is used when the baryon's have the same parity and this form with
0049  *  an additional \f$\gamma_5\f$ when they have opposite parity.
0050  *
0051  *  This is one of a number of decayers based on \f$SU(3)\f$ symmetry which are
0052  *  intended for the decay of excited baryons.
0053  *
0054  * @see Baryon1MesonDecayerBase
0055  * @see SU3BaryonOctetOctetPhotonDecayer
0056  * @see SU3BaryonDecupletOctetPhotonDecayer
0057  * @see SU3BaryonDecupletOctetScalarDecayer
0058  * @see SU3BaryonSingletOctetPhotonDecayer
0059  * @see SU3BaryonSingletOctetScalarDecayer
0060  * @see SU3BaryonOctetDecupletScalarDecayer
0061  * @see SU3BaryonOctetOctetScalarDecayer
0062  * 
0063  */
0064 class SU3BaryonOctetOctetPhotonDecayer: public Baryon1MesonDecayerBase {
0065 
0066 public:
0067 
0068   /**
0069    * Default constructor.
0070    */
0071   SU3BaryonOctetOctetPhotonDecayer();
0072 
0073   /**
0074    * Which of the possible decays is required
0075    * @param cc Is this mode the charge conjugate
0076    * @param parent The decaying particle
0077    * @param children The decay products
0078    */
0079   virtual int modeNumber(bool & cc, tcPDPtr parent, 
0080              const tPDVector & children) const;
0081 
0082   /**
0083    * Output the setup information for the particle database
0084    * @param os The stream to output the information to
0085    * @param header Whether or not to output the information for MySQL
0086    */
0087   virtual void dataBaseOutput(ofstream & os,bool header) const;
0088 
0089 public:
0090 
0091   /** @name Functions used by the persistent I/O system. */
0092   //@{
0093   /**
0094    * Function used to write out object persistently.
0095    * @param os the persistent output stream written to.
0096    */
0097   void persistentOutput(PersistentOStream & os) const;
0098 
0099   /**
0100    * Function used to read in object persistently.
0101    * @param is the persistent input stream read from.
0102    * @param version the version number of the object when written.
0103    */
0104   void persistentInput(PersistentIStream & is, int version);
0105   //@}
0106 
0107   /**
0108    * Standard Init function used to initialize the interfaces.
0109    */
0110   static void Init();
0111 
0112 protected:
0113 
0114   /**
0115    *  Coupling Members.
0116    */
0117   //@{
0118   /**
0119    * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a vector.
0120    * @param imode The mode
0121    * @param m0 The mass of the decaying particle.
0122    * @param m1 The mass of the outgoing baryon.
0123    * @param m2 The mass of the outgoing meson.
0124    * @param A1 The coupling \f$A_1\f$ described above.
0125    * @param A2 The coupling \f$A_2\f$ described above.
0126    * @param B1 The coupling \f$B_1\f$ described above.
0127    * @param B2 The coupling \f$B_2\f$ described above.
0128    */
0129   virtual void halfHalfVectorCoupling(int imode,Energy m0,Energy m1,Energy m2,
0130                       Complex& A1,Complex& A2,
0131                       Complex& B1,Complex& B2) const;
0132 
0133   /**
0134    * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a vector.
0135    * @param imode The mode
0136    * @param m0 The mass of the decaying particle.
0137    * @param m1 The mass of the outgoing baryon.
0138    * @param m2 The mass of the outgoing meson.
0139    * @param A1 The coupling \f$A_1\f$ described above.
0140    * @param A2 The coupling \f$A_2\f$ described above.
0141    * @param A3 The coupling \f$A_3\f$ described above.
0142    * @param B1 The coupling \f$B_1\f$ described above.
0143    * @param B2 The coupling \f$B_2\f$ described above.
0144    * @param B3 The coupling \f$B_3\f$ described above.
0145    */
0146   virtual void threeHalfHalfVectorCoupling(int imode,Energy m0,Energy m1,Energy m2,
0147                        Complex& A1,Complex& A2,Complex& A3,
0148                        Complex& B1,Complex& B2,Complex& B3) const;
0149   //@}
0150 
0151 protected:
0152 
0153   /** @name Clone Methods. */
0154   //@{
0155   /**
0156    * Make a simple clone of this object.
0157    * @return a pointer to the new object.
0158    */
0159   virtual IBPtr clone() const {return new_ptr(*this);}
0160 
0161   /** Make a clone of this object, possibly modifying the cloned object
0162    * to make it sane.
0163    * @return a pointer to the new object.
0164    */
0165   virtual IBPtr fullclone() const {return new_ptr(*this);}
0166   //@}
0167 
0168 protected:
0169 
0170   /** @name Standard Interfaced functions. */
0171   //@{
0172 
0173   /**
0174    * Initialize this object after the setup phase before saving and
0175    * EventGenerator to disk.
0176    * @throws InitException if object could not be initialized properly.
0177    */
0178   virtual void doinit();
0179 
0180   /**
0181    * Initialize this object to the begining of the run phase.
0182    */
0183   virtual void doinitrun();
0184   //@}
0185 
0186 private:
0187 
0188   /**
0189    * Private and non-existent assignment operator.
0190    */
0191   SU3BaryonOctetOctetPhotonDecayer & 
0192   operator=(const SU3BaryonOctetOctetPhotonDecayer &) = delete;
0193 
0194 private:
0195 
0196   /**
0197    * set-up the modes
0198    */
0199   void setupModes(unsigned int) const;
0200 
0201 private:
0202 
0203   /**
0204    * The couplings of comutator term.
0205    */
0206   InvEnergy _lf;
0207 
0208   /**
0209    * The couplings of anticomutator term.
0210    */
0211   InvEnergy _ld;
0212 
0213   /**
0214    * the relative parities of the two baryon multiplets
0215    */
0216   bool _parity;
0217 
0218   /**
0219    * PDG codes for the lower lying baryon octet baryons
0220    */
0221   //@{
0222   /**
0223    *  The PDG code for the \f$p\f$-like member of the outgoing octet.
0224    */
0225   int _proton;
0226 
0227   /**
0228    *  The PDG code for the \f$n\f$-like member of the outgoing octet.
0229    */
0230   int _neutron;
0231 
0232   /**
0233    *  The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet.
0234    */
0235   int _sigma0;
0236 
0237   /**
0238    *  The PDG code for the  \f$\Sigma^+\f$-like member of the outgoing octet.
0239    */
0240   int _sigmap;
0241 
0242   /**
0243    *  The PDG code for the  \f$\Sigma^-\f$-like member of the outgoing octet.
0244    */
0245   int _sigmam;
0246 
0247   /**
0248    *  The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet.
0249    */
0250   int _lambda;
0251 
0252   /**
0253    *  The PDG code for the \f$\Xi^0\f$-like member of the outgoing octet.
0254    */
0255   int _xi0;
0256 
0257   /**
0258    *  The PDG code for the \f$\Xi^-\f$-like member of the outgoing octet.
0259    */
0260   int _xim;
0261   //@}
0262 
0263 
0264   /**
0265    * PDG codes for the higher  baryon octet baryons
0266    */
0267   //@{
0268   /**
0269    *  The PDG code for the \f$p\f$-like member of the outgoing octet.
0270    */
0271   int _eproton;
0272 
0273   /**
0274    *  The PDG code for the \f$n\f$-like member of the outgoing octet.
0275    */
0276   int _eneutron;
0277 
0278   /**
0279    *  The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet.
0280    */
0281   int _esigma0;
0282 
0283   /**
0284    *  The PDG code for the  \f$\Sigma^+\f$-like member of the outgoing octet.
0285    */
0286   int _esigmap;
0287 
0288   /**
0289    *  The PDG code for the  \f$\Sigma^-\f$-like member of the outgoing octet.
0290    */
0291   int _esigmam;
0292 
0293   /**
0294    *  The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet.
0295    */
0296   int _elambda;
0297 
0298   /**
0299    *  The PDG code for the \f$\Xi^0\f$-like member of the outgoing octet.
0300    */
0301   int _exi0;
0302 
0303   /**
0304    *  The PDG code for the \f$\Xi^-\f$-like member of the outgoing octet.
0305    */
0306   int _exim;
0307   //@}
0308 
0309   /**
0310    * PDG code for the incoming baryons
0311    */
0312   mutable vector<int> _incomingB;
0313 
0314   /**
0315    * PDG code for the outgoing baryons
0316    */
0317   mutable vector<int> _outgoingB;
0318 
0319   /**
0320    * the maximum weight for the various modes
0321    */
0322   vector<double> _maxweight;
0323 
0324   /**
0325    * The couplings for the different modes.
0326    */
0327   mutable vector<InvEnergy> _prefactor;
0328 };
0329 
0330 }
0331 
0332 
0333 #endif /* HERWIG_SU3BaryonOctetOctetPhotonDecayer_H */