herwig is hosted by Hepforge, IPPP Durham
Herwig  7.1.5
MEChargedCurrentDIS.h
1 // -*- C++ -*-
2 #ifndef HERWIG_MEChargedCurrentDIS_H
3 #define HERWIG_MEChargedCurrentDIS_H
4 //
5 // This is the declaration of the MEChargedCurrentDIS 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 
30 
31 public:
32 
37 
44  virtual unsigned int orderInAlphaS() const;
45 
50  virtual unsigned int orderInAlphaEW() const;
51 
59  virtual double me2() const;
60 
64  virtual void getDiagrams() const;
65 
74  virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const;
75 
84  colourGeometries(tcDiagPtr diag) const;
85 
89  virtual void constructVertex(tSubProPtr);
91 
92 
93 public:
94 
101  void persistentOutput(PersistentOStream & os) const;
102 
108  void persistentInput(PersistentIStream & is, int version);
110 
117  static void Init();
118 
119 protected:
120 
131  double helicityME(vector<SpinorWaveFunction> & f1 ,
132  vector<SpinorWaveFunction> & f2,
133  vector<SpinorBarWaveFunction> & a1 ,
134  vector<SpinorBarWaveFunction> & a2,
135  bool lorder, bool qorder,
136  bool me) const;
137 
142  virtual double A(tcPDPtr lin, tcPDPtr lout, tcPDPtr qin, tcPDPtr qout,
143  Energy2 scale) const;
144 
145 protected:
146 
153  virtual IBPtr clone() const {return new_ptr(*this);}
154 
159  virtual IBPtr fullclone() const {return new_ptr(*this);}
161 
162 protected:
163 
171  virtual void doinit();
173 
174 private:
175 
181 
186  MEChargedCurrentDIS & operator=(const MEChargedCurrentDIS &) = delete;
187 
188 private:
189 
193  AbstractFFVVertexPtr _theFFWVertex;
194 
198  unsigned int _maxflavour;
199 
203  unsigned int _massopt;
204 
209 
218 
224 };
225 
226 }
227 
228 #include "ThePEG/Utilities/ClassTraits.h"
229 
230 namespace ThePEG {
231 
236 template <>
237 struct BaseClassTrait<Herwig::MEChargedCurrentDIS,1> {
239  typedef Herwig::DISBase NthBase;
240 };
241 
244 template <>
245 struct ClassTraits<Herwig::MEChargedCurrentDIS>
246  : public ClassTraitsBase<Herwig::MEChargedCurrentDIS> {
248  static string className() { return "Herwig::MEChargedCurrentDIS"; }
256  static string library() { return "HwMEDIS.so"; }
257 };
258 
261 }
262 
263 #endif /* HERWIG_MEChargedCurrentDIS_H */
unsigned int _maxflavour
The allowed flavours of the incoming quarks.
AbstractFFVVertexPtr _theFFWVertex
Pointer to the vertex for the helicity calculations.
tcPDPtr _wm
Pointer to the .
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
static ClassDescription< MEChargedCurrentDIS > initMEChargedCurrentDIS
The static object used to initialize the description of this class.
virtual IBPtr clone() const
Make a simple clone of this object.
The storage of the helicity amplitude expression for the matrix element of a hard process...
unsigned int _massopt
Option for the mass of the outgoing quarks.
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
tcPDPtr _wp
Pointers to the intermediates resonances.
vector< DiagPtr > DiagramVector
The MEChargedCurrentDIS class provides the matrix elements for charged current DIS.
-*- C++ -*-
ProductionMatrixElement _me
Matrix element for spin correlations.
The DISBase class is the base class for the implementation of DIS type processes including correction...
Definition: DISBase.h:23