Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // DecayRadiationGenerator.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_DecayRadiationGenerator_H
0010 #define HERWIG_DecayRadiationGenerator_H
0011 //
0012 // This is the declaration of the DecayRadiationGenerator class.
0013 //
0014 
0015 #include "ThePEG/Interface/Interfaced.h"
0016 #include "Herwig/Decay/DecayIntegrator.fh"
0017 #include "DecayRadiationGenerator.fh"
0018 
0019 namespace Herwig {
0020 
0021 using namespace ThePEG;
0022 
0023 /**
0024  * The DecayRadiationGenerator class is the base class for classes generating
0025  * QED radiation in particle decays in Herwig. Classes implementing specific
0026  * algorithms must inherit from this class and implement the virtual generatePhotons
0027  * member.
0028  * 
0029  * @see \ref DecayRadiationGeneratorInterfaces "The interfaces"
0030  * defined for DecayRadiationGenerator.
0031  */
0032 class DecayRadiationGenerator: public Interfaced {
0033 
0034 public:
0035 
0036   /**
0037    *  Member to generate the photons in the decay. This must be implemented
0038    *  in classes inheriting from this one to produce the radiation.
0039    * @param p The decaying particle
0040    * @param children The decay products
0041    * @param decayer The decayer which would normally generate this decay
0042    * @return The decay products with additional radiation
0043    */
0044   virtual ParticleVector generatePhotons(const Particle & p,
0045                      ParticleVector children,
0046                      tDecayIntegratorPtr decayer)=0;
0047 
0048 public:
0049 
0050   /**
0051    * The standard Init function used to initialize the interfaces.
0052    * Called exactly once for each class by the class description system
0053    * before the main function starts or
0054    * when this class is dynamically loaded.
0055    */
0056   static void Init();
0057 
0058 private:
0059 
0060   /**
0061    * The assignment operator is private and must never be called.
0062    * In fact, it should not even be implemented.
0063    */
0064   DecayRadiationGenerator & operator=(const DecayRadiationGenerator &) = delete;
0065 
0066 };
0067 
0068 }
0069 
0070 #endif /* HERWIG_DecayRadiationGenerator_H */