Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // MergerBase.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_MergerBase_H
0010 #define HERWIG_MergerBase_H
0011 //
0012 // This is the declaration of the MergerBase class.
0013 //
0014 
0015 #include "ThePEG/Handlers/HandlerBase.h"
0016 #include "ThePEG/MatrixElement/MEBase.h"
0017 #include "Herwig/MatrixElement/Matchbox/Utility/LastMatchboxXCombInfo.h"
0018 #include "Herwig/MatrixElement/Matchbox/Utility/MatchboxXComb.h"
0019 
0020 #include "MatchboxMEBase.fh"
0021 
0022 namespace Herwig {
0023 
0024 using namespace ThePEG;
0025 class MergerBase;
0026   
0027 ThePEG_DECLARE_POINTERS(MergerBase,MergerBasePtr);
0028 
0029 /**
0030  * \ingroup Matchbox
0031  * \author Johannes Bellm
0032  *
0033  * \brief MergerBase is the base class MergingHelpers.
0034  *
0035  * @see \ref MergerBaseInterfaces "The interfaces"
0036  * defined for MergerBase.
0037  */
0038 class MergerBase: public HandlerBase {
0039 
0040 public:
0041 
0042   /**
0043    * The default constructor.
0044    */
0045   MergerBase();
0046 
0047     /// define the ME region for a particle vector.
0048   virtual bool matrixElementRegion(PVector incoming,
0049                                    PVector outcoming,
0050                                    Energy winnerScale,
0051                                    Energy cutscale) const = 0;
0052     /// cross section of as given by the merging
0053   virtual CrossSection MergingDSigDR()  = 0;
0054     /// set the current xcomb, called from ME
0055   virtual void setXComb( tStdXCombPtr) = 0;
0056     /// set the current ME
0057   virtual void setME(Ptr<MatchboxMEBase>::ptr) = 0;
0058     /// set kinematics, called from ME
0059   virtual void setKinematics() = 0;
0060     ///  clear kinematics, called from ME
0061   virtual void clearKinematics() = 0;
0062     /// generate kinematics, called from ME
0063   virtual bool generateKinematics( const double * ) = 0;
0064     /**
0065      * flush all chaches of the subleading nodes.
0066      * Note: this is called not from the ME but before the first 
0067      * kinematics is generated.
0068      **/
0069   virtual void flushCaches() = 0;
0070     /// return the current maximum legs, the shower should veto
0071   virtual size_t maxLegs() const = 0;
0072     /// return the current merging scale,
0073   virtual Energy mergingScale() const = 0;
0074   //@}
0075 
0076 public:
0077 
0078   /**
0079    * The standard Init function used to initialize the interfaces.
0080    * Called exactly once for each class by the class description system
0081    * before the main function starts or
0082    * when this class is dynamically loaded.
0083    */
0084   static void Init();
0085 
0086 
0087 
0088 };
0089 
0090 
0091 
0092 }
0093 
0094 #endif /* HERWIG_MergerBase_H */