Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // MPIXSecReweighter.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_MPIXSecReweighter_H
0010 #define Herwig_MPIXSecReweighter_H
0011 //
0012 // This is the declaration of the MPIXSecReweighter class.
0013 //
0014 
0015 #include "ThePEG/Handlers/StepHandler.h"
0016 
0017 namespace Herwig {
0018 
0019 using namespace ThePEG;
0020 
0021 /**
0022  * \ingroup UnderlyingEvent 
0023  *
0024  * \brief MPIXSecReweighter sets up the proper minimum bias cross
0025  * section.
0026  *
0027  */
0028 class MPIXSecReweighter: public StepHandler {
0029 
0030 public:
0031 
0032   /** @name Standard constructors and destructors. */
0033   //@{
0034   /**
0035    * The default constructor.
0036    */
0037   MPIXSecReweighter();
0038 
0039   /**
0040    * The destructor.
0041    */
0042   virtual ~MPIXSecReweighter();
0043   //@}
0044 
0045 public:
0046 
0047   /** @name Virtual functions required by the StepHandler class. */
0048   //@{
0049   /**
0050     * The main function called by the EventHandler class to
0051     * perform a step. Given the current state of an Event, this function
0052     * performs the event generation step and includes the result in a new
0053     * Step object int the Event record.
0054     * @param eh the EventHandler in charge of the Event generation.
0055     * @param tagged if not empty these are the only particles which should
0056     * be considered by the StepHandler.
0057     * @param hint a Hint object with possible information from previously
0058     * performed steps.
0059     * @throws Veto if the StepHandler requires the current step to be discarded.
0060     * @throws Stop if the generation of the current Event should be stopped
0061     * after this call.
0062     * @throws Exception if something goes wrong.
0063     */
0064   virtual void handle(EventHandler & eh, const tPVector & tagged,
0065               const Hint & hint);
0066   //@}
0067 
0068 public:
0069 
0070   /** @name Functions used by the persistent I/O system. */
0071   //@{
0072   /**
0073    * Function used to write out object persistently.
0074    * @param os the persistent output stream written to.
0075    */
0076   void persistentOutput(PersistentOStream & os) const;
0077 
0078   /**
0079    * Function used to read in object persistently.
0080    * @param is the persistent input stream read from.
0081    * @param version the version number of the object when written.
0082    */
0083   void persistentInput(PersistentIStream & is, int version);
0084   //@}
0085 
0086   /**
0087    * The standard Init function used to initialize the interfaces.
0088    * Called exactly once for each class by the class description system
0089    * before the main function starts or
0090    * when this class is dynamically loaded.
0091    */
0092   static void Init();
0093 
0094 protected:
0095 
0096   /** @name Clone Methods. */
0097   //@{
0098   /**
0099    * Make a simple clone of this object.
0100    * @return a pointer to the new object.
0101    */
0102   virtual IBPtr clone() const;
0103 
0104   /** Make a clone of this object, possibly modifying the cloned object
0105    * to make it sane.
0106    * @return a pointer to the new object.
0107    */
0108   virtual IBPtr fullclone() const;
0109   //@}
0110 
0111 private:
0112 
0113   /**
0114    * The assignment operator is private and must never be called.
0115    * In fact, it should not even be implemented.
0116    */
0117   MPIXSecReweighter & operator=(const MPIXSecReweighter &) = delete;
0118 
0119   /**
0120    * The sum of weights currently accumulated.
0121    */
0122   double sumWeights;
0123 
0124   /**
0125    * The integrated (ME) cross section currently accumulated.
0126    */
0127   CrossSection xSec;
0128 
0129 };
0130 
0131 }
0132 
0133 #endif /* Herwig_MPIXSecReweighter_H */