herwig is hosted by Hepforge, IPPP Durham
Herwig  7.1.5
MatchboxInsertionOperator.h
1 // -*- C++ -*-
2 //
3 // MatchboxInsertionOperator.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2017 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 
66  void factory(Ptr<MatchboxFactory>::tptr f);
67 
70 
75  virtual bool apply(const cPDVector&) const = 0;
76 
81  Ptr<MatchboxMEBase>::tptr lastBorn() const ;
82 
87  virtual void setXComb(tStdXCombPtr xc) {
88  theLastXComb = xc;
89  lastMatchboxXComb(xc);
90  }
91 
92 
96  virtual void setAlpha(double )const {assert(false);}
97 
98 
99 
104  virtual int nDimAdditional() const { return 0; }
105 
107 
110 
111 
116  virtual bool isDRbar() const;
122  virtual bool isDR() const;
127  virtual bool isCS() const;
132  virtual bool isBDK() const;
137  virtual bool isExpanded() const;
141  virtual double oneLoopDoublePole() const { return 0.; }
142 
146  virtual double oneLoopSinglePole() const { return 0.; }
147 
149 
152 
158  virtual double me2() const = 0;
159 
165  virtual CrossSection dSigHatDR() const;
166 
167 
172  virtual CrossSection dSigHatDRAlphaDiff(double alpha) const{
173  setAlpha(alpha);
174  CrossSection res=dSigHatDR();
175  setAlpha(1.);
176  return res-dSigHatDR();
177  }
178 
180 
183 
189  virtual void flushCaches() {}
190 
194  Ptr<MatchboxInsertionOperator>::ptr cloneMe() const {
195  return dynamic_ptr_cast<Ptr<MatchboxInsertionOperator>::ptr>(clone());
196  }
197 
201  virtual void cloneDependencies(const std::string& prefix = "");
202 
204 
205 public:
206 
213  void persistentOutput(PersistentOStream & os) const;
214 
220  void persistentInput(PersistentIStream & is, int version);
222 
229  static void Init();
230 
231 
232 // If needed, insert declarations of virtual function defined in the
233 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
234 
235 private:
236 
240  Ptr<MatchboxFactory>::tptr theFactory;
241 
242 
243 private:
244 
249  MatchboxInsertionOperator & operator=(const MatchboxInsertionOperator &) = delete;
250 
251 };
252 
253 }
254 
255 #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...
Ptr< MatchboxFactory >::tptr theFactory
The factory which produced this matrix element.
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.