Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef HERWIG_RadiativeHyperonDecayer_H
0003 #define HERWIG_RadiativeHyperonDecayer_H
0004 //
0005 // This is the declaration of the RadiativeHyperonDecayer class.
0006 //
0007 
0008 #include "Baryon1MesonDecayerBase.h"
0009 
0010 namespace Herwig {
0011 
0012 using namespace ThePEG;
0013 
0014 /**
0015  * The RadiativeHyperonDecayer class provides the matrix elements
0016  * for the decay of hyperons in which a photon is produced using the 
0017  * model of Phys. Rev. D 59 (1999) 054019 [arXiv:hep-ph/9902431].
0018  *
0019  * @see \ref RadiativeHyperonDecayerInterfaces "The interfaces"
0020  * defined for RadiativeHyperonDecayer.
0021  */
0022 class RadiativeHyperonDecayer: public Baryon1MesonDecayerBase {
0023 
0024 public:
0025 
0026   /**
0027    * Which of the possible decays is required
0028    * @param cc Is this mode the charge conjugate
0029    * @param parent The decaying particle
0030    * @param children The decay products
0031    */
0032   virtual int modeNumber(bool & cc, tcPDPtr parent, 
0033              const tPDVector & children) const;
0034 
0035 
0036   /**
0037    * Output the setup information for the particle database
0038    * @param os The stream to output the information to
0039    * @param header Whether or not to output the information for MySQL
0040    */
0041   virtual void dataBaseOutput(ofstream & os,bool header) const;
0042 
0043 public:
0044 
0045   /** @name Functions used by the persistent I/O system. */
0046   //@{
0047   /**
0048    * Function used to write out object persistently.
0049    * @param os the persistent output stream written to.
0050    */
0051   void persistentOutput(PersistentOStream & os) const;
0052 
0053   /**
0054    * Function used to read in object persistently.
0055    * @param is the persistent input stream read from.
0056    * @param version the version number of the object when written.
0057    */
0058   void persistentInput(PersistentIStream & is, int version);
0059   //@}
0060 
0061   /**
0062    * The standard Init function used to initialize the interfaces.
0063    * Called exactly once for each class by the class description system
0064    * before the main function starts or
0065    * when this class is dynamically loaded.
0066    */
0067   static void Init();
0068 protected:
0069 
0070   /**
0071    *  Coupling Members.
0072    */
0073   //@{
0074 
0075   /**
0076    * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a vector.
0077    * This method must be implemented in any class inheriting from this one
0078    * which includes \f$\frac12\to\frac12+1\f$ decays. 
0079    * @param imode The mode
0080    * @param m0 The mass of the decaying particle.
0081    * @param m1 The mass of the outgoing baryon.
0082    * @param m2 The mass of the outgoing meson.
0083    * @param A1 The coupling \f$A_1\f$ described above.
0084    * @param A2 The coupling \f$A_2\f$ described above.
0085    * @param B1 The coupling \f$B_1\f$ described above.
0086    * @param B2 The coupling \f$B_2\f$ described above.
0087    */
0088   virtual void halfHalfVectorCoupling(int imode, Energy m0, Energy m1, Energy m2,
0089                       Complex& A1,Complex& A2,
0090                       Complex& B1,Complex& B2) const;
0091   //@}
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;
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;
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 private:
0129 
0130   /**
0131    * The assignment operator is private and must never be called.
0132    * In fact, it should not even be implemented.
0133    */
0134   RadiativeHyperonDecayer & operator=(const RadiativeHyperonDecayer &) = delete;
0135 
0136 public:
0137 
0138   /**
0139    *   Set the parameters for a decay mode
0140    */
0141   string setUpDecayMode(string arg);
0142 
0143 private:
0144 
0145   /**
0146    * PDG code for the incoming baryon.
0147    */
0148   vector<long> incomingB_;
0149 
0150   /**
0151    * PDG code for the outgoing baryon.
0152    */
0153   vector<long> outgoingB_;
0154 
0155   /**
0156    * The \f$A\f$ coefficient.
0157    */
0158   vector<InvEnergy> A_;
0159 
0160   /**
0161    * The \f$B\f$ coefficient.
0162    */
0163   vector<InvEnergy> B_;
0164 
0165   /**
0166    * the maximum weights for the decays
0167    */
0168   vector<double> maxweight_;
0169 };
0170 
0171 }
0172 
0173 #endif /* HERWIG_RadiativeHyperonDecayer_H */