herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
SSVDecayer.h
1 // -*- C++ -*-
2 //
3 // SSVDecayer.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_SSVDecayer_H
10 #define HERWIG_SSVDecayer_H
11 //
12 // This is the declaration of the SSVDecayer 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/Helicity/Vertex/Scalar/VVSSVertex.h"
19 #include "ThePEG/Repository/EventGenerator.h"
20 
21 namespace Herwig {
22 using namespace ThePEG;
23 using Helicity::VSSVertexPtr;
24 
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;
64 
69  POWHEGType output = FSR;
70  for(auto vertex : vertex_) {
71  if(vertex->orderInAllCouplings()!=1) {
72  output = No;
73  break;
74  }
75  }
76  return output;
77  }
78 
82  virtual double threeBodyME(const int , const Particle & inpart,
83  const ParticleVector & decay,
84  ShowerInteraction inter,
85  MEOption meopt);
86 
90  virtual void setDecayInfo(PDPtr incoming, PDPair outgoing,
91  vector<VertexBasePtr>,
92  map<ShowerInteraction,VertexBasePtr> &,
93  const vector<map<ShowerInteraction,VertexBasePtr> > &,
94  map<ShowerInteraction,VertexBasePtr>);
96 
97 public:
98 
105  void persistentOutput(PersistentOStream & os) const;
106 
112  void persistentInput(PersistentIStream & is, int version);
114 
121  static void Init();
122 
123 protected:
124 
131  virtual IBPtr clone() const;
132 
137  virtual IBPtr fullclone() const;
139 
140 private:
141 
146  SSVDecayer & operator=(const SSVDecayer &) = delete;
147 
148 private:
149 
153  vector<AbstractVSSVertexPtr> vertex_;
154 
158  map<ShowerInteraction,AbstractVSSVertexPtr> incomingVertex_;
159 
163  map<ShowerInteraction,AbstractVSSVertexPtr> outgoingVertexS_;
164 
168  map<ShowerInteraction,AbstractVVVVertexPtr> outgoingVertexV_;
169 
173  map<ShowerInteraction,AbstractVVSSVertexPtr> fourPointVertex_;
174 
178  mutable RhoDMatrix rho_;
179 
184 
188  mutable vector<Helicity::VectorWaveFunction> vector_;
189 
193  mutable RhoDMatrix rho3_;
194 
199 
204 
208  mutable vector<Helicity::VectorWaveFunction> vector3_;
209 
213  mutable vector<Helicity::VectorWaveFunction> gluon_;
214 
215 };
216 
217 }
218 
219 #endif /* HERWIG_SSVDecayer_H */
Helicity::ScalarWaveFunction scal_
Scalar wavefunction for 3 body decay.
Definition: SSVDecayer.h:203
RhoDMatrix rho_
Spinor density matrix.
Definition: SSVDecayer.h:178
map< ShowerInteraction, AbstractVSSVertexPtr > incomingVertex_
Abstract pointer to AbstractVSSVertex for QCD radiation from incoming scalar.
Definition: SSVDecayer.h:158
RhoDMatrix rho3_
Spin density matrix for 3 body decay.
Definition: SSVDecayer.h:193
The SSVDecayer class implements the decay of a scalar to a vector and a scalar in a general model...
Definition: SSVDecayer.h:34
ShowerInteraction
Handy header file to be included in all Shower classes.
map< ShowerInteraction, AbstractVVSSVertexPtr > fourPointVertex_
Abstract pointer to AbstractVVSSVertex for QCD radiation from 4 point vertex.
Definition: SSVDecayer.h:173
SSVDecayer()
The default constructor.
Definition: SSVDecayer.h:41
map< ShowerInteraction, AbstractVVVVertexPtr > outgoingVertexV_
Abstract pointer to AbstractVVVVertex for QCD radiation from outgoing vector.
Definition: SSVDecayer.h:168
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.
Helicity::ScalarWaveFunction swave_
Scalar wavefunction.
Definition: SSVDecayer.h:183
MEOption
Enum for the matrix element option.
vector< Helicity::VectorWaveFunction > vector_
Vector wavefunction.
Definition: SSVDecayer.h:188
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: HwDecayerBase.h:76
vector< AbstractVSSVertexPtr > vertex_
Abstract pointer to AbstractFFVVertex.
Definition: SSVDecayer.h:153
vector< Helicity::VectorWaveFunction > gluon_
Vector wavefunction for 3 body decay.
Definition: SSVDecayer.h:213
pair< PDPtr, PDPtr > PDPair
ThePEG::Ptr< ParticleData >::pointer PDPtr
Helicity::ScalarWaveFunction swave3_
Scalar wavefunction for 3 body decay.
Definition: SSVDecayer.h:198
vector< Helicity::VectorWaveFunction > vector3_
Vector wavefunction for 3 body decay.
Definition: SSVDecayer.h:208
-*- C++ -*-
map< ShowerInteraction, AbstractVSSVertexPtr > outgoingVertexS_
Abstract pointer to AbstractVSSVertex for QCD radiation from outgoing scalar.
Definition: SSVDecayer.h:163
vector< PPtr > ParticleVector
virtual POWHEGType hasPOWHEGCorrection()
Has a POWHEG style correction.
Definition: SSVDecayer.h:68