herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MatchboxAmplitudelnuqqbarg.h
1 // -*- C++ -*-
2 //
3 // MatchboxAmplitudelnuqqbarg.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_MatchboxAmplitudelnuqqbarg_H
10 #define Herwig_MatchboxAmplitudelnuqqbarg_H
11 //
12 // This is the declaration of the MatchboxAmplitudelnuqqbarg class.
13 //
14 
15 #include "Herwig/MatrixElement/Matchbox/Base/MatchboxAmplitude.h"
16 #include "Herwig/MatrixElement/Matchbox/Builtin/Amplitudes/MatchboxCurrents.h"
17 #include "ThePEG/StandardModel/StandardModelBase.h"
18 #include "ThePEG/Interface/ClassDocumentation.h"
19 #include "ThePEG/EventRecord/Particle.h"
20 #include "ThePEG/Repository/UseRandom.h"
21 #include "ThePEG/Repository/EventGenerator.h"
22 #include "ThePEG/Utilities/DescribeClass.h"
23 #include "ThePEG/Persistency/PersistentOStream.h"
24 #include "ThePEG/Persistency/PersistentIStream.h"
25 #include "ThePEG/PDT/EnumParticles.h"
26 #include "Herwig/MatrixElement/Matchbox/Utility/SU2Helper.h"
27 
28 namespace Herwig {
29 
30 using namespace ThePEG;
31 
39 
40 public:
41 
46 
50  virtual ~MatchboxAmplitudelnuqqbarg();
51 
56  virtual unsigned int orderInGs() const { return 1; }
57 
62  virtual unsigned int orderInGem() const { return 2; }
63 
68  virtual bool haveOneLoop() const { return true; }
69 
73  virtual bool canHandle(const PDVector&) const;
74 
79  virtual void prepareAmplitudes(Ptr<MatchboxMEBase>::tcptr);
80 
85  virtual Complex evaluate(size_t, const vector<int>&, Complex&);
86 
91  virtual Complex evaluateOneLoop(size_t, const vector<int>&);
92 
97  virtual bool isBDK() const { return true; }
98 
104  virtual Energy2 mu2() const { return lastSHat(); }
105 
109  virtual void flushCaches() {
112  }
113 
118  void persistentOutput(PersistentOStream & os) const;
119 
125  void persistentInput(PersistentIStream & is, int version);
126 
133  static void Init();
134 
135 protected:
136 
141  virtual IBPtr clone() const;
142 
147  virtual IBPtr fullclone() const;
148 
154  virtual void doinit();
155 
160  virtual void doinitrun();
161 
162 private:
163 
169 
173  vector< vector<Complex> > theCKM;
174 
179  MatchboxAmplitudelnuqqbarg & operator=(const MatchboxAmplitudelnuqqbarg &) = delete;
180 
181 };
182 
183 }
184 
185 #endif /* Herwig_MatchboxAmplitudelnuqqbarg_H */
virtual bool isBDK() const
Return true, if one loop corrections are given in the conventions of BDK.
virtual bool haveOneLoop() const
Return true, if this amplitude is capable of calculating one-loop (QCD) corrections.
std::complex< double > Complex
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
MatchboxAmplitude is the base class for amplitude implementations inside Matchbox.
virtual unsigned int orderInGem() const
Return the (tree-level) order in in which this matrix element is given.
virtual void flushCaches()
Flush all cashes.
virtual unsigned int orderInGs() const
Return the (tree-level) order in in which this matrix element is given.
virtual void flushCaches()
Flush all cashes.
bool theDiagonal
True, if a diagonal CKM matrix should be assumed.
-*- C++ -*-
vector< PDPtr > PDVector
vector< vector< Complex > > theCKM
The ckm.
MatchboxCurrents.
virtual Energy2 mu2() const
Return the value of the dimensional regularization parameter.