herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MatchboxInsertionOperator.h
1 // -*- C++ -*-
2 //
3 // MatchboxInsertionOperator.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2019 The Herwig Collaboration
5 //
6 // Herwig is licenced under version 3 of the GPL, see COPYING for details.
7 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
8 //
9 #ifndef HERWIG_MatchboxInsertionOperator_H
10 #define HERWIG_MatchboxInsertionOperator_H
11 //
12 // This is the declaration of the MatchboxInsertionOperator class.
13 //
14 
15 #include "ThePEG/Handlers/HandlerBase.h"
16 #include "ThePEG/Handlers/StandardXComb.h"
17 #include "ThePEG/Handlers/LastXCombInfo.h"
18 #include "Herwig/MatrixElement/Matchbox/InsertionOperators/MatchboxInsertionOperator.fh"
19 #include "Herwig/MatrixElement/Matchbox/Utility/LastMatchboxXCombInfo.h"
20 #include "Herwig/MatrixElement/Matchbox/Base/MatchboxMEBase.fh"
21 #include "Herwig/MatrixElement/Matchbox/MatchboxFactory.fh"
22 
23 namespace Herwig {
24 
25 using namespace ThePEG;
26 
37  public HandlerBase,
38  public LastXCombInfo<StandardXComb>,
39  public LastMatchboxXCombInfo {
40 
41 public:
42 
49 
53  virtual ~MatchboxInsertionOperator();
55 
56 public:
57 
61  Ptr<MatchboxFactory>::tptr factory() const;
62 
65 
70  virtual bool apply(const cPDVector&) const = 0;
71 
76  Ptr<MatchboxMEBase>::tptr lastBorn() const ;
77 
82  virtual void setXComb(tStdXCombPtr xc) {
83  theLastXComb = xc;
84  lastMatchboxXComb(xc);
85  }
86 
87 
91  virtual void setAlpha(double )const {assert(false);}
92 
93 
94 
99  virtual int nDimAdditional() const { return 0; }
100 
102 
105 
106 
111  virtual bool isDRbar() const;
117  virtual bool isDR() const;
122  virtual bool isCS() const;
127  virtual bool isBDK() const;
132  virtual bool isExpanded() const;
136  virtual double oneLoopDoublePole() const { return 0.; }
137 
141  virtual double oneLoopSinglePole() const { return 0.; }
142 
144 
147 
153  virtual double me2() const = 0;
154 
160  virtual CrossSection dSigHatDR() const;
161 
162 
167  virtual CrossSection dSigHatDRAlphaDiff(double alpha) const{
168  setAlpha(alpha);
169  CrossSection res=dSigHatDR();
170  setAlpha(1.);
171  return res-dSigHatDR();
172  }
173 
175 
178 
184  virtual void flushCaches() {}
185 
189  Ptr<MatchboxInsertionOperator>::ptr cloneMe() const {
190  return dynamic_ptr_cast<Ptr<MatchboxInsertionOperator>::ptr>(clone());
191  }
192 
196  virtual void cloneDependencies(const std::string& prefix = "");
197 
199 
200 public:
201 
208  void persistentOutput(PersistentOStream & os) const;
209 
215  void persistentInput(PersistentIStream & is, int version);
217 
224  static void Init();
225 
226 
227 // If needed, insert declarations of virtual function defined in the
228 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
229 
230 private:
231 
236  MatchboxInsertionOperator & operator=(const MatchboxInsertionOperator &) = delete;
237 
238 };
239 
240 }
241 
242 #endif /* HERWIG_MatchboxInsertionOperator_H */
virtual int nDimAdditional() const
Return the number of additional random variables needed to calculate this virtual correction...
Ptr< MatchboxInsertionOperator >::ptr cloneMe() const
Clone this insertion operator.
virtual double oneLoopSinglePole() const
If defined, return the coefficient of the pole in epsilon.
virtual void flushCaches()
Inform this matrix element that a new phase space point is about to be generated, so all caches shoul...
virtual void setXComb(tStdXCombPtr xc)
Set the XComb object steering the Born matrix element this class represents virtual corrections to...
virtual double oneLoopDoublePole() const
If defined, return the coefficient of the pole in epsilon^2.
Provide easy access to MatchboxXComb XComb extensions.
vector< cPDPtr > cPDVector
MatchboxInsertionOperator is the base class for insertion operators.
-*- C++ -*-
virtual void setAlpha(double) const
Set parameters for new alpha parameter.
virtual CrossSection dSigHatDRAlphaDiff(double alpha) const
Evaluate the difference of dSigHatDR with and without alpha parameter.