herwig is hosted by Hepforge, IPPP Durham
Herwig  7.1.5
VSSDecayer.h
1 // -*- C++ -*-
2 //
3 // VSSDecayer.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2017 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_VSSDecayer_H
10 #define HERWIG_VSSDecayer_H
11 //
12 // This is the declaration of the VSSDecayer class.
13 //
14 
15 #include "GeneralTwoBodyDecayer.h"
16 #include "ThePEG/Helicity/Vertex/Scalar/VSSVertex.h"
17 #include "ThePEG/Helicity/Vertex/Vector/VVVVertex.h"
18 #include "ThePEG/Repository/EventGenerator.h"
19 
20 namespace Herwig {
21 using namespace ThePEG;
22 using Helicity::VSSVertexPtr;
23 
35 
36 public:
37 
42 
53  virtual double me2(const int ichan, const Particle & part,
54  const ParticleVector & decay, MEOption meopt) const;
55 
62  virtual Energy partialWidth(PMPair inpart, PMPair outa,
63  PMPair outb) const;
67  virtual POWHEGType hasPOWHEGCorrection() {return FSR;}
68 
72  virtual double threeBodyME(const int , const Particle & inpart,
73  const ParticleVector & decay,MEOption meopt);
74 
78  void identifyVertices(const int iscal, const int ianti,
79  const Particle & inpart, const ParticleVector & decay,
80  AbstractVSSVertexPtr & abstractOutgoingVertexS,
81  AbstractVSSVertexPtr & abstractOutgoingVertexA);
83 
84 public:
85 
92  void persistentOutput(PersistentOStream & os) const;
93 
99  void persistentInput(PersistentIStream & is, int version);
101 
108  static void Init();
109 
110 protected:
111 
118  virtual IBPtr clone() const;
119 
124  virtual IBPtr fullclone() const;
126 
127 protected:
128 
136  virtual void doinit();
138 
139 private:
140 
146 
151  VSSDecayer & operator=(const VSSDecayer &) = delete;
152 
153 private:
154 
158  AbstractVSSVertexPtr _abstractVertex;
159 
163  VSSVertexPtr _perturbativeVertex;
164 
168  AbstractVVVVertexPtr _abstractIncomingVertex;
169 
173  AbstractVSSVertexPtr _abstractOutgoingVertex1;
174 
178  AbstractVSSVertexPtr _abstractOutgoingVertex2;
179 
183  mutable RhoDMatrix _rho;
184 
188  mutable vector<Helicity::VectorWaveFunction> _vectors;
189 
193  mutable RhoDMatrix _rho3;
194 
198  mutable vector<Helicity::VectorWaveFunction> _vector3;
199 
203  mutable vector<Helicity::VectorWaveFunction> _gluon;
204 
205 };
206 
207 }
208 
209 #include "ThePEG/Utilities/ClassTraits.h"
210 
211 namespace ThePEG {
212 
217 template <>
218 struct BaseClassTrait<Herwig::VSSDecayer,1> {
220  typedef Herwig::GeneralTwoBodyDecayer NthBase;
221 };
222 
225 template <>
226 struct ClassTraits<Herwig::VSSDecayer>
227  : public ClassTraitsBase<Herwig::VSSDecayer> {
229  static string className() { return "Herwig::VSSDecayer"; }
230 };
231 
234 }
235 
236 
237 #endif /* HERWIG_VSSDecayer_H */
AbstractVSSVertexPtr _abstractOutgoingVertex1
Abstract pointer to AbstractFFVVertex for QCD radiation from outgoing scalar.
Definition: VSSDecayer.h:173
AbstractVVVVertexPtr _abstractIncomingVertex
Abstract pointer to AbstractVVVVertex for QCD radiation from incoming vector.
Definition: VSSDecayer.h:168
VSSVertexPtr _perturbativeVertex
Pointer to the perturbative vertex.
Definition: VSSDecayer.h:163
RhoDMatrix _rho
Spin density matrix.
Definition: VSSDecayer.h:183
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
The GeneralTwoBodyDecayer class is designed to be the base class for 2 body decays for some general m...
pair< tcPDPtr, Energy > PMPair
A ParticleData ptr and (possible) mass pair.
vector< Helicity::VectorWaveFunction > _gluon
Vector wavefunction for 3 body decay.
Definition: VSSDecayer.h:203
MEOption
Enum for the matrix element option.
vector< Helicity::VectorWaveFunction > _vectors
Polarization vectors for the decaying particle.
Definition: VSSDecayer.h:188
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: HwDecayerBase.h:78
RhoDMatrix _rho3
Spin density matrix for 3 body decay.
Definition: VSSDecayer.h:193
VSSDecayer()
The default constructor.
Definition: VSSDecayer.h:41
AbstractVSSVertexPtr _abstractOutgoingVertex2
Abstract pointer to AbstractFFVVertex for QCD radiation from outgoing scalar.
Definition: VSSDecayer.h:178
AbstractVSSVertexPtr _abstractVertex
Abstract pointer to AbstractVSSVertex.
Definition: VSSDecayer.h:158
-*- C++ -*-
vector< PPtr > ParticleVector
vector< Helicity::VectorWaveFunction > _vector3
Vector wavefunction for 3 body decay.
Definition: VSSDecayer.h:198
static ClassDescription< VSSDecayer > initVSSDecayer
The static object used to initialize the description of this class.
Definition: VSSDecayer.h:145
The VSSDecayer class implements the decay of a vector to 2 scalars in a general model.
Definition: VSSDecayer.h:34
virtual POWHEGType hasPOWHEGCorrection()
Has a POWHEG style correction.
Definition: VSSDecayer.h:67