herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MatchboxAmplitudelnuqqbar.h
1 // -*- C++ -*-
2 //
3 // MatchboxAmplitudelnuqqbar.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_MatchboxAmplitudelnuqqbar_H
10 #define Herwig_MatchboxAmplitudelnuqqbar_H
11 //
12 // This is the declaration of the MatchboxAmplitudelnuqqbar 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 ~MatchboxAmplitudelnuqqbar();
51 
56  virtual unsigned int orderInGs() const { return 0; }
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  MatchboxAmplitudelnuqqbar & operator=(const MatchboxAmplitudelnuqqbar &) = delete;
180 
181 };
182 
183 }
184 
185 #endif /* Herwig_MatchboxAmplitudelnuqqbar_H */
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 bool haveOneLoop() const
Return true, if this amplitude is capable of calculating one-loop (QCD) corrections.
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.
vector< vector< Complex > > theCKM
The ckm.
virtual bool isBDK() const
Return true, if one loop corrections are given in the conventions of BDK.
-*- C++ -*-
vector< PDPtr > PDVector
bool theDiagonal
True, if a diagonal CKM matrix should be assumed.
virtual Energy2 mu2() const
Return the value of the dimensional regularization parameter.
MatchboxCurrents.