Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:24:01

0001 // -*- C++ -*-
0002 //
0003 // BtoSGammaDecayer.h is a part of Herwig - A multi-purpose Monte Carlo event generator
0004 // Copyright (C) 2002-2019 The Herwig Collaboration
0005 //
0006 // Herwig is licenced under version 3 of the GPL, see COPYING for details.
0007 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
0008 //
0009 #ifndef HERWIG_BtoSGammaDecayer_H
0010 #define HERWIG_BtoSGammaDecayer_H
0011 //
0012 // This is the declaration of the BtoSGammaDecayer class.
0013 //
0014 
0015 #include "PartonicDecayerBase.h"
0016 #include "Herwig/Decay/FormFactors/BtoSGammaHadronicMass.h"
0017 
0018 namespace Herwig {
0019 
0020 using namespace ThePEG;
0021 
0022 /**
0023  * Here is the documentation of the BtoSGammaDecayer class.
0024  *
0025  */
0026 class BtoSGammaDecayer: public PartonicDecayerBase {
0027 
0028 public:
0029 
0030   /** @name Virtual functions required by the Decayer class. */
0031   //@{
0032   /**
0033    * Check if this decayer can perfom the decay for a particular mode.
0034    * Uses the modeNumber member but can be overridden
0035    * @param parent The decaying particle
0036    * @param children The decay products
0037    */
0038   virtual bool accept(tcPDPtr parent, const tPDVector & children) const;
0039 
0040   /**
0041    * For a given decay mode and a given particle instance, perform the
0042    * decay and return the decay products. As this is the base class this
0043    * is not implemented.
0044    * @return The vector of particles produced in the decay.
0045    */
0046   virtual ParticleVector decay(const Particle & 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 
0057 public:
0058 
0059   /** @name Functions used by the persistent I/O system. */
0060   //@{
0061   /**
0062    * Function used to write out object persistently.
0063    * @param os the persistent output stream written to.
0064    */
0065   void persistentOutput(PersistentOStream & os) const;
0066 
0067   /**
0068    * Function used to read in object persistently.
0069    * @param is the persistent input stream read from.
0070    * @param version the version number of the object when written.
0071    */
0072   void persistentInput(PersistentIStream & is, int version);
0073   //@}
0074 
0075   /**
0076    * The standard Init function used to initialize the interfaces.
0077    * Called exactly once for each class by the class description system
0078    * before the main function starts or
0079    * when this class is dynamically loaded.
0080    */
0081   static void Init();
0082 
0083 protected:
0084 
0085   /** @name Clone Methods. */
0086   //@{
0087   /**
0088    * Make a simple clone of this object.
0089    * @return a pointer to the new object.
0090    */
0091   virtual IBPtr clone() const;
0092 
0093   /** Make a clone of this object, possibly modifying the cloned object
0094    * to make it sane.
0095    * @return a pointer to the new object.
0096    */
0097   virtual IBPtr fullclone() const;
0098   //@}
0099 
0100 private:
0101 
0102   /**
0103    * The assignment operator is private and must never be called.
0104    * In fact, it should not even be implemented.
0105    */
0106   BtoSGammaDecayer & operator=(const BtoSGammaDecayer &) = delete;
0107 
0108 private:
0109 
0110   /**
0111    *  Pointer to the object which generates the hadronic mass spectrum
0112    */
0113   BtoSGammaHadronicMassPtr _hadronicmass;
0114 };
0115 
0116 }
0117 
0118 #endif /* HERWIG_BtoSGammaDecayer_H */