herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEee2VectorMeson.h
1 // -*- C++ -*-
2 //
3 // MEee2VectorMeson.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_MEee2VectorMeson_H
10 #define HERWIG_MEee2VectorMeson_H
11 //
12 // This is the declaration of the MEee2VectorMeson class.
13 //
14 
15 #include "ThePEG/MatrixElement/MEBase.h"
16 #include "Herwig/PDT/GenericMassGenerator.fh"
17 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
18 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
19 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
20 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
21 
22 namespace Herwig {
23 
24 using namespace ThePEG;
25 
29 
38 class MEee2VectorMeson: public MEBase {
39 
40 public:
41 
45  MEee2VectorMeson() : coupling_(0.0012), lineShape_(false)
46  {}
47 
54  virtual unsigned int orderInAlphaS() const;
55 
60  virtual unsigned int orderInAlphaEW() const;
61 
69  virtual double me2() const;
70 
74  virtual Energy2 scale() const;
75 
83  virtual void setKinematics();
84 
89  virtual int nDim() const;
90 
99  virtual bool generateKinematics(const double * r);
100 
105  virtual CrossSection dSigHatDR() const;
106 
110  virtual void getDiagrams() const;
111 
120  virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const;
121 
130  colourGeometries(tcDiagPtr diag) const;
131 
135  virtual void constructVertex(tSubProPtr sub);
137 
138 
139 public:
140 
147  void persistentOutput(PersistentOStream & os) const;
148 
154  void persistentInput(PersistentIStream & is, int version);
156 
163  static void Init();
164 
165 protected:
166 
173  inline virtual IBPtr clone() const {return new_ptr(*this);}
174 
179  inline virtual IBPtr fullclone() const {return new_ptr(*this);}
181 
182 protected:
183 
191  virtual void doinit();
193 
194 private:
195 
199  ProductionMatrixElement HelicityME(vector<SpinorWaveFunction> fin,
200  vector<SpinorBarWaveFunction> ain,
201  vector<VectorWaveFunction> vout,double& me) const;
202 private:
203 
208  MEee2VectorMeson & operator=(const MEee2VectorMeson &) = delete;
209 
210 private:
211 
216 
220  double coupling_;
221 
226 
230  GenericMassGeneratorPtr massGen_;
231 
232 };
233 
234 }
235 
236 #endif /* HERWIG_MEee2VectorMeson_H */
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
PDPtr vector_
The vector meson being produced.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
double coupling_
The coupling.
The storage of the helicity amplitude expression for the matrix element of a hard process...
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
ThePEG::Ptr< ParticleData >::pointer PDPtr
MEee2VectorMeson()
The default constructor.
virtual IBPtr clone() const
Make a simple clone of this object.
vector< DiagPtr > DiagramVector
-*- C++ -*-
GenericMassGeneratorPtr massGen_
Pointer to the mass generator for the Higgs.
The MEee2VectorMeson class is designed to produce neutral vector mesons in collisions and is primari...
bool lineShape_
Use the mass generator for the line shape.