herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
DipoleMIOperator.h
1 // -*- C++ -*-
2 //
3 // DipoleMIOperator.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_DipoleMIOperator_H
10 #define HERWIG_DipoleMIOperator_H
11 //
12 // This is the declaration of the DipoleMIOperator class.
13 //
14 
15 #include "Herwig/MatrixElement/Matchbox/InsertionOperators/MatchboxInsertionOperator.h"
16 #include "Herwig/MatrixElement/Matchbox/Base/MatchboxMEBase.h"
17 
18 namespace Herwig {
19 
20 using namespace ThePEG;
21 
34 
35 public:
36 
43 
47  virtual ~DipoleMIOperator();
49 
50 public:
51 
56  virtual void setXComb(tStdXCombPtr xc);
57 
62  virtual bool apply(const cPDVector&) const;
63 
68  bool apply(tcPDPtr) const;
69 
74  vector<int> NLightJetVec() const;
75 
80  vector<int> NHeavyJetVec() const;
81 
86  vector<int> NLightBornVec() const;
87 
92  vector<int> NHeavyBornVec() const;
93 
98  vector<int> NLightProtonVec() const;
99 
105  virtual double me2() const;
106 
110  virtual double oneLoopDoublePole() const;
111 
115  virtual double oneLoopSinglePole() const;
116 
117 public:
118 
122  template <class T>
123  inline T rootOfKallen (T a, T b, T c) const {
124  return sqrt( a*a + b*b + c*c - 2.*( a*b+a*c+b*c ) ); }
125 
126 public:
127 
134  void persistentOutput(PersistentOStream & os) const;
135 
141  void persistentInput(PersistentIStream & is, int version);
143 
150  static void Init();
151 
152 protected:
153 
160  virtual IBPtr clone() const;
161 
166  virtual IBPtr fullclone() const;
168 
169 private:
170 
174  double CA;
175 
179  double CF;
180 
184  double gammaQuark;
185 
189  double gammaGluon;
190 
208  double betaZero;
209 
213  double KQuark;
214 
218  double KGluon;
219 
220 private:
221 
225  // double Vj(const ParticleData&, const ParticleData&, Energy2, double, bool=false) const;
226  double Vj(const ParticleData&, const ParticleData&, Energy2, double, double, int, bool=false) const;
227 
231  double VsDoublePole(const ParticleData&, const ParticleData&) const;
232 
236  double VsSinglePole(const ParticleData&, const ParticleData&, Energy2) const;
237 
241  double GammaQuark(const ParticleData&) const;
242 
246  double GammaGluon() const;
247 
251  double GammaQuarkSinglePole(const ParticleData&) const;
252 
256  double GammaGluonSinglePole() const;
257 
258 private:
259 
264  DipoleMIOperator & operator=(const DipoleMIOperator &) = delete;
265 
266 };
267 
268 }
269 
270 #endif /* HERWIG_DipoleMIOperator_H */
double sqrt(int x)
T rootOfKallen(T a, T b, T c) const
Triangular / Kallen function.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
double betaZero
The Matchbox convention is =.
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
vector< cPDPtr > cPDVector
MatchboxInsertionOperator is the base class for insertion operators.
-*- C++ -*-
DipoleMIOperator implements the I() insertion operator for the massive case. DipoleMIOperator does on...