Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef Herwig_BranchingRatioReweighter_H
0003 #define Herwig_BranchingRatioReweighter_H
0004 //
0005 // This is the declaration of the BranchingRatioReweighter class.
0006 //
0007 
0008 #include "ThePEG/Handlers/StepHandler.h"
0009 
0010 namespace Herwig {
0011 
0012 using namespace ThePEG;
0013 
0014 /**
0015  * \ingroup Decay
0016  * The BranchingRatioReweighter class is designed to reweight events
0017  * where some decay modes of a particle, or many particles, have been
0018  * switched off in order to improve the statistics.
0019  *
0020  * @see \ref BranchingRatioReweighterInterfaces "The interfaces"
0021  * defined for BranchingRatioReweighter.
0022  */
0023 class BranchingRatioReweighter: public StepHandler {
0024 
0025 public:
0026 
0027   /**
0028    * The default constructor.
0029    */
0030   BranchingRatioReweighter();
0031 
0032 public:
0033 
0034   /** @name Virtual functions required by the StepHandler class. */
0035   //@{
0036   /**
0037     * The main function called by the EventHandler class to
0038     * perform a step. Given the current state of an Event, this function
0039     * performs the event generation step and includes the result in a new
0040     * Step object int the Event record.
0041     * @param eh the EventHandler in charge of the Event generation.
0042     * @param tagged if not empty these are the only particles which should
0043     * be considered by the StepHandler.
0044     * @param hint a Hint object with possible information from previously
0045     * performed steps.
0046     * @throws Veto if the StepHandler requires the current step to be discarded.
0047     * @throws Stop if the generation of the current Event should be stopped
0048     * after this call.
0049     * @throws Exception if something goes wrong.
0050     */
0051   virtual void handle(EventHandler & eh, const tPVector & tagged,
0052               const Hint & hint);
0053   //@}
0054 
0055 public:
0056 
0057   /**
0058    * The standard Init function used to initialize the interfaces.
0059    * Called exactly once for each class by the class description system
0060    * before the main function starts or
0061    * when this class is dynamically loaded.
0062    */
0063   static void Init();
0064 
0065 protected:
0066 
0067   /** @name Clone Methods. */
0068   //@{
0069   /**
0070    * Make a simple clone of this object.
0071    * @return a pointer to the new object.
0072    */
0073   virtual IBPtr clone() const;
0074 
0075   /** Make a clone of this object, possibly modifying the cloned object
0076    * to make it sane.
0077    * @return a pointer to the new object.
0078    */
0079   virtual IBPtr fullclone() const;
0080   //@}
0081 
0082 private:
0083 
0084   /**
0085    * The assignment operator is private and must never be called.
0086    * In fact, it should not even be implemented.
0087    */
0088   BranchingRatioReweighter & operator=(const BranchingRatioReweighter &) = delete;
0089 
0090 };
0091 
0092 }
0093 
0094 #endif /* Herwig_BranchingRatioReweighter_H */