herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MENeutralCurrentDIS.h
1 // -*- C++ -*-
2 #ifndef HERWIG_MENeutralCurrentDIS_H
3 #define HERWIG_MENeutralCurrentDIS_H
4 //
5 // This is the declaration of the MENeutralCurrentDIS class.
6 //
7 
8 #include "DISBase.h"
9 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh"
10 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
11 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
12 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
13 
14 namespace Herwig {
15 
16 using namespace ThePEG;
17 
28 
29 public:
30 
35 
42  virtual unsigned int orderInAlphaS() const;
43 
48  virtual unsigned int orderInAlphaEW() const;
49 
57  virtual double me2() const;
58 
62  virtual void getDiagrams() const;
63 
72  virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const;
73 
82  colourGeometries(tcDiagPtr diag) const;
83 
87  virtual void constructVertex(tSubProPtr);
89 
90 public:
91 
98  void persistentOutput(PersistentOStream & os) const;
99 
105  void persistentInput(PersistentIStream & is, int version);
107 
114  static void Init();
115 
116 protected:
117 
128  double helicityME(vector<SpinorWaveFunction> & f1 ,
129  vector<SpinorWaveFunction> & f2,
130  vector<SpinorBarWaveFunction> & a1 ,
131  vector<SpinorBarWaveFunction> & a2,
132  bool lorder, bool qorder,
133  bool me) const;
134 
135 
139  inline unsigned int gammaZOption() const {return _gammaZ;}
140 
145  virtual double A(tcPDPtr lin, tcPDPtr lout, tcPDPtr qin, tcPDPtr qout,
146  Energy2 scale) const;
147 
148 protected:
149 
157  virtual void doinit();
159 
160 protected:
161 
168  virtual IBPtr clone() const {return new_ptr(*this);}
169 
174  virtual IBPtr fullclone() const {return new_ptr(*this);}
176 
177 private:
178 
183  MENeutralCurrentDIS & operator=(const MENeutralCurrentDIS &) = delete;
184 
185 private:
186 
194  AbstractFFVVertexPtr _theFFZVertex;
195 
199  AbstractFFVVertexPtr _theFFPVertex;
201 
210 
216 
225 
230 
234  unsigned int _gammaZ;
236 
241 
249  double _sinW;
250 
254  double _cosW;
255 
259  Energy2 _mz2;
261 
262 };
263 
264 }
265 
266 #endif /* HERWIG_MENeutralCurrentDIS_H */
AbstractFFVVertexPtr _theFFPVertex
Pointer to the photon vertex.
int _minflavour
Switches to control the particles in the hard process.
unsigned int gammaZOption() const
Option for treatment of terms.
AbstractFFVVertexPtr _theFFZVertex
Pointer to the vertices for the helicity calculations.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
int _maxflavour
Maximum flavour of the incoming quarks.
The MENeutralCurrentDIS class provides the matrix elements for neutral current DIS.
tcPDPtr _z0
Pointers to the intermediate resonances.
The storage of the helicity amplitude expression for the matrix element of a hard process...
double _sinW
Electroweak parameters.
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
unsigned int _gammaZ
Whether to include both and or only one.
vector< DiagPtr > DiagramVector
-*- C++ -*-
ProductionMatrixElement _me
Matrix element for spin correlations.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
virtual IBPtr clone() const
Make a simple clone of this object.
Energy2 _mz2
The square of the Z mass.
tcPDPtr _gamma
Pointer to the photon ParticleData object.
The DISBase class is the base class for the implementation of DIS type processes including correction...
Definition: DISBase.h:23