herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEPP2GammaJet.h
1 // -*- C++ -*-
2 //
3 // MEPP2GammaJet.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_MEPP2GammaJet_H
10 #define HERWIG_MEPP2GammaJet_H
11 //
12 // This is the declaration of the MEPP2GammaJet class.
13 //
14 
15 #include "Herwig/MatrixElement/HwMEBase.h"
16 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
17 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
18 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
19 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
20 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
21 
22 namespace Herwig {
23 
24 using namespace ThePEG;
25 using namespace ThePEG::Helicity;
26 
34 class MEPP2GammaJet: public HwMEBase {
35 
36 public:
37 
41  MEPP2GammaJet();
42 
49  virtual unsigned int orderInAlphaS() const;
50 
55  virtual unsigned int orderInAlphaEW() const;
56 
64  virtual double me2() const;
65 
69  virtual Energy2 scale() const;
70 
74  virtual void getDiagrams() const;
75 
84  virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const;
85 
94  colourGeometries(tcDiagPtr diag) const;
95 
99  virtual void constructVertex(tSubProPtr);
101 
102 
103 public:
104 
111  void persistentOutput(PersistentOStream & os) const;
112 
118  void persistentInput(PersistentIStream & is, int version);
120 
127  static void Init();
128 
129 protected:
130 
137  virtual IBPtr clone() const { return new_ptr(*this); }
138 
143  virtual IBPtr fullclone() const { return new_ptr(*this); }
145 
146 protected:
147 
155  virtual void doinit();
156 
166  virtual void rebind(const TranslationMap & trans)
167  ;
168 
174  virtual IVector getReferences();
176 
177 private:
178 
191  double qqbarME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain,
192  vector<VectorWaveFunction> & gout, vector<VectorWaveFunction> & pout,
193  bool me) const;
194 
203  double qgME(vector<SpinorWaveFunction> & fin,vector<VectorWaveFunction> & gin,
204  vector<VectorWaveFunction> & pout,vector<SpinorBarWaveFunction> & fout,
205  bool me) const;
206 
215  double qbargME(vector<SpinorBarWaveFunction> & ain, vector<VectorWaveFunction> & gin,
216  vector<VectorWaveFunction> & pout, vector<SpinorWaveFunction> & aout,
217  bool me) const;
219 
220 private:
221 
226  MEPP2GammaJet & operator=(const MEPP2GammaJet &) = delete;
227 
228 private:
229 
233  AbstractFFVVertexPtr _gluonvertex;
234 
238  AbstractFFVVertexPtr _photonvertex;
239 
244 
248  unsigned int _processopt;
249 
254 
259 };
260 
261 }
262 
263 #endif /* HERWIG_MEPP2GammaJet_H */
AbstractFFVVertexPtr _gluonvertex
Pointer to the quark-antiquark-gluon vertex.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
unsigned int _processopt
Option for which processes to include.
virtual IBPtr clone() const
Make a simple clone of this object.
int _maxflavour
Maximum PDG code of the quarks allowed.
The storage of the helicity amplitude expression for the matrix element of a hard process...
ProductionMatrixElement _me
Matrix element for spin correlations.
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
vector< DiagPtr > DiagramVector
-*- C++ -*-
The HwMEBase class serves a number of purposes.
Definition: HwMEBase.h:35
vector< IBPtr > IVector
double scalePreFactor_
Scale prefactor.
The MEPP2GammaJet class implements the matrix element for photon+jet production in hadron-hadron coll...
Definition: MEPP2GammaJet.h:34
AbstractFFVVertexPtr _photonvertex
Pointer to the quark-antiquark-photon vertex.