herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
VVSDecayer.h
1 // -*- C++ -*-
2 #ifndef THEPEG_VVSDecayer_H
3 #define THEPEG_VVSDecayer_H
4 //
5 // This is the declaration of the VVSDecayer class.
6 //
7 
8 #include "GeneralTwoBodyDecayer.h"
9 #include "ThePEG/Helicity/Vertex/Scalar/VVSVertex.h"
10 #include "ThePEG/Repository/EventGenerator.h"
11 
12 namespace Herwig {
13 using namespace ThePEG;
14 using Helicity::VVSVertexPtr;
15 
27 
28 public:
29 
34 
45  virtual double me2(const int ichan, const Particle & part,
46  const ParticleVector & decay, MEOption meopt) const;
47 
54  virtual Energy partialWidth(PMPair inpart, PMPair outa,
55  PMPair outb) const;
56 
60  virtual void setDecayInfo(PDPtr incoming, PDPair outgoing,
61  vector<VertexBasePtr>,
62  map<ShowerInteraction,VertexBasePtr> &,
63  const vector<map<ShowerInteraction,VertexBasePtr> > &,
64  map<ShowerInteraction,VertexBasePtr>);
65 
70  POWHEGType output = FSR;
71  for(auto vertex : vertex_) {
72  if(vertex->orderInAllCouplings()!=1) {
73  output = No;
74  break;
75  }
76  }
77  return output;
78  }
79 
83  virtual double threeBodyME(const int , const Particle & inpart,
84  const ParticleVector & decay,
85  ShowerInteraction inter, MEOption meopt);
87 
88 public:
89 
96  void persistentOutput(PersistentOStream & os) const;
97 
103  void persistentInput(PersistentIStream & is, int version);
105 
112  static void Init();
113 
114 protected:
115 
122  virtual IBPtr clone() const;
123 
128  virtual IBPtr fullclone() const;
130 
131 private:
132 
137  VVSDecayer & operator=(const VVSDecayer &) = delete;
138 
139 private:
140 
144  vector<AbstractVVSVertexPtr> vertex_;
145 
149  vector<VVSVertexPtr> perturbativeVertex_;
150 
154  map<ShowerInteraction,AbstractVVVVertexPtr> incomingVertex_;
155 
159  map<ShowerInteraction,AbstractVVVVertexPtr> outgoingVertexV_;
160 
164  map<ShowerInteraction,AbstractVSSVertexPtr> outgoingVertexS_;
165 
169  mutable RhoDMatrix rho_;
170 
174  mutable vector<Helicity::VectorWaveFunction> vectors_[2];
175 
176 private:
177 
185  mutable RhoDMatrix rho3_;
186 
190  mutable vector<Helicity::VectorWaveFunction> vectors3_[2];
191 
195  mutable vector<Helicity::VectorWaveFunction> gluon_;
197 };
198 
199 }
200 
201 #endif /* THEPEG_VVSDecayer_H */
ShowerInteraction
Handy header file to be included in all Shower classes.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
The GeneralTwoBodyDecayer class is designed to be the base class for 2 body decays for some general m...
virtual POWHEGType hasPOWHEGCorrection()
Has a POWHEG style correction.
Definition: VVSDecayer.h:69
pair< tcPDPtr, Energy > PMPair
A ParticleData ptr and (possible) mass pair.
MEOption
Enum for the matrix element option.
vector< AbstractVVSVertexPtr > vertex_
Abstract pointer to AbstractVVSVertex.
Definition: VVSDecayer.h:144
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: HwDecayerBase.h:76
map< ShowerInteraction, AbstractVVVVertexPtr > incomingVertex_
Abstract pointer to AbstractVVVVertex for QCD radiation from incoming vector.
Definition: VVSDecayer.h:154
pair< PDPtr, PDPtr > PDPair
map< ShowerInteraction, AbstractVSSVertexPtr > outgoingVertexS_
Abstract pointer to AbstractVVVVertex for QCD radiation from the second outgoing vector.
Definition: VVSDecayer.h:164
vector< Helicity::VectorWaveFunction > gluon_
Vector wavefunction for 3 body decay.
Definition: VVSDecayer.h:195
ThePEG::Ptr< ParticleData >::pointer PDPtr
map< ShowerInteraction, AbstractVVVVertexPtr > outgoingVertexV_
Abstract pointer to AbstractVVVVertex for QCD radiation from the first outgoing vector.
Definition: VVSDecayer.h:159
RhoDMatrix rho3_
Members for the POWHEG correction.
Definition: VVSDecayer.h:185
-*- C++ -*-
vector< VVSVertexPtr > perturbativeVertex_
Pointer to the perturbative vertex.
Definition: VVSDecayer.h:149
VVSDecayer()
The default constructor.
Definition: VVSDecayer.h:33
vector< PPtr > ParticleVector
RhoDMatrix rho_
Spin density matrix.
Definition: VVSDecayer.h:169
The VVSDecayer class implements the decay of a vector to a vector and a scalar in a general model...
Definition: VVSDecayer.h:26