herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEGammaGamma2ff.h
1 // -*- C++ -*-
2 #ifndef HERWIG_MEGammaGamma2ff_H
3 #define HERWIG_MEGammaGamma2ff_H
4 //
5 // This is the declaration of the MEGammaGamma2ff class.
6 //
7 
8 #include "Herwig/MatrixElement/HwMEBase.h"
9 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
10 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
11 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
12 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
13 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh"
14 
15 namespace Herwig {
16 
17 using namespace ThePEG;
18 
26 class MEGammaGamma2ff: public HwMEBase {
27 
28 public:
29 
34 
41  virtual unsigned int orderInAlphaS() const;
42 
47  virtual unsigned int orderInAlphaEW() const;
48 
56  virtual double me2() const;
57 
61  virtual Energy2 scale() const;
62 
66  virtual void getDiagrams() const;
67 
76  virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const;
77 
86  colourGeometries(tcDiagPtr diag) const;
87 
91  virtual void constructVertex(tSubProPtr);
93 
94 public:
95 
102  void persistentOutput(PersistentOStream & os) const;
103 
109  void persistentInput(PersistentIStream & is, int version);
111 
118  static void Init();
119 
120 protected:
121 
130  double helicityME(vector<VectorWaveFunction> &p1,vector<VectorWaveFunction> &p2,
131  vector<SpinorBarWaveFunction> & f,
132  vector<SpinorWaveFunction> & fbar, bool calc) const;
133 protected:
134 
141  virtual IBPtr clone() const {return new_ptr(*this);}
142 
147  virtual IBPtr fullclone() const {return new_ptr(*this);}
149 
150 protected:
151 
159  virtual void doinit();
161 
162 private:
163 
168  MEGammaGamma2ff & operator=(const MEGammaGamma2ff &) = delete;
169 
170 private:
171 
175  int process_;
176 
180  AbstractFFVVertexPtr vertex_;
181 
186 
187 };
188 
189 }
190 
191 #endif /* HERWIG_MEGammaGamma2ff_H */
The MEGammaGamma2ff class provides the matrix elements for .
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
virtual IBPtr clone() const
Make a simple clone of this object.
ProductionMatrixElement me_
Matrix element.
The storage of the helicity amplitude expression for the matrix element of a hard process...
int process_
Which processes to include.
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
AbstractFFVVertexPtr vertex_
Pointer to the photon vertex.
vector< DiagPtr > DiagramVector
-*- C++ -*-
The HwMEBase class serves a number of purposes.
Definition: HwMEBase.h:35