herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
SSSDecayer.h
1// -*- C++ -*-
2//
3// SSSDecayer.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_SSSDecayer_H
10#define HERWIG_SSSDecayer_H
11//
12// This is the declaration of the SSSDecayer class.
13//
14
15#include "GeneralTwoBodyDecayer.h"
16#include "ThePEG/Repository/EventGenerator.h"
17#include "ThePEG/Helicity/Vertex/Scalar/SSSVertex.h"
18#include "ThePEG/Helicity/Vertex/Scalar/VSSVertex.h"
19
20namespace Herwig {
21using namespace ThePEG;
22using Helicity::SSSVertexPtr;
23
34
35public:
36
41
53 double me2(const int ichan,const Particle & part,
54 const tPDVector & outgoing,
55 const vector<Lorentz5Momentum> & momenta,
56 MEOption meopt) const;
57
61 virtual void constructSpinInfo(const Particle & part,
63
70 virtual Energy partialWidth(PMPair inpart, PMPair outa,
71 PMPair outb) const;
72
77 POWHEGType output = FSR;
78 for(auto vertex : vertex_) {
79 if(vertex->orderInAllCouplings()!=1) {
80 output = No;
81 break;
82 }
83 }
84 return output;
85 }
86
90 virtual double threeBodyME(const int , const Particle & inpart,
91 const ParticleVector & decay,
92 ShowerInteraction inter, MEOption meopt);
93
97 void identifyVertices(const int iscal, const int ianti,
98 const Particle & inpart, const ParticleVector & decay,
99 AbstractVSSVertexPtr & abstractOutgoingVertexS,
100 AbstractVSSVertexPtr & abstractOutgoingVertexA,
101 ShowerInteraction inter);
102
107 vector<VertexBasePtr>,
108 map<ShowerInteraction,VertexBasePtr> &,
109 const vector<map<ShowerInteraction,VertexBasePtr> > &,
110 map<ShowerInteraction,VertexBasePtr>);
112
113public:
114
122
128 void persistentInput(PersistentIStream & is, int version);
130
137 static void Init();
138
139protected:
140
147 virtual IBPtr clone() const;
148
153 virtual IBPtr fullclone() const;
155
156private:
157
162 SSSDecayer & operator=(const SSSDecayer &) = delete;
163
164private:
165
169 vector<AbstractSSSVertexPtr> vertex_;
170
174 vector<SSSVertexPtr> perturbativeVertex_;
175
179 map<ShowerInteraction,AbstractVSSVertexPtr> incomingVertex_;
180
184 map<ShowerInteraction,AbstractVSSVertexPtr> outgoingVertex1_;
185
189 map<ShowerInteraction,AbstractVSSVertexPtr> outgoingVertex2_;
190
195
200
205
210
214 mutable vector<Helicity::VectorWaveFunction> gluon_;
215
216};
217
218}
219
220#endif /* HERWIG_SSSDecayer_H */
MEOption
Enum for the matrix element option.
The GeneralTwoBodyDecayer class is designed to be the base class for 2 body decays for some general m...
virtual ParticleVector decay(const Particle &parent, const tPDVector &children) const
For a given decay mode and a given particle instance, perform the decay and return the decay products...
pair< tcPDPtr, Energy > PMPair
A ParticleData ptr and (possible) mass pair.
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: HwDecayerBase.h:76
The SSDecayer class implements the decay of a scalar to 2 scalars in a general model.
Definition: SSSDecayer.h:33
vector< SSSVertexPtr > perturbativeVertex_
Pointer to the perturbative vertex.
Definition: SSSDecayer.h:174
map< ShowerInteraction, AbstractVSSVertexPtr > incomingVertex_
Abstract pointer to AbstractVSSVertex for QCD radiation from incoming scalar.
Definition: SSSDecayer.h:179
static void Init()
The standard Init function used to initialize the interfaces.
RhoDMatrix rho3_
Spin density matrix for 3 body decay.
Definition: SSSDecayer.h:204
map< ShowerInteraction, AbstractVSSVertexPtr > outgoingVertex2_
Abstract pointer to AbstractVSSVertex for QCD radiation from outgoing scalar.
Definition: SSSDecayer.h:189
SSSDecayer()
The default constructor.
Definition: SSSDecayer.h:40
virtual double threeBodyME(const int, const Particle &inpart, const ParticleVector &decay, ShowerInteraction inter, MEOption meopt)
Three-body matrix element including additional QCD radiation.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Helicity::ScalarWaveFunction swave_
Scalar wavefunctions.
Definition: SSSDecayer.h:199
virtual POWHEGType hasPOWHEGCorrection()
Has a POWHEG style correction.
Definition: SSSDecayer.h:76
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Helicity::ScalarWaveFunction swave3_
Scalar wavefunction for 3 body decay.
Definition: SSSDecayer.h:209
double me2(const int ichan, const Particle &part, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, MEOption meopt) const
Return the matrix element squared for a given mode and phase-space channel.
SSSDecayer & operator=(const SSSDecayer &)=delete
The assignment operator is private and must never be called.
vector< AbstractSSSVertexPtr > vertex_
Abstract pointer to AbstractSSSVertex.
Definition: SSSDecayer.h:169
vector< Helicity::VectorWaveFunction > gluon_
Vector wavefunction for 3 body decay.
Definition: SSSDecayer.h:214
RhoDMatrix rho_
Spin density matrix.
Definition: SSSDecayer.h:194
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb) const
Function to return partial Width.
void identifyVertices(const int iscal, const int ianti, const Particle &inpart, const ParticleVector &decay, AbstractVSSVertexPtr &abstractOutgoingVertexS, AbstractVSSVertexPtr &abstractOutgoingVertexA, ShowerInteraction inter)
Indentify outgoing vertices for the scalar and anti scalar.
virtual IBPtr clone() const
Make a simple clone of this object.
virtual void setDecayInfo(PDPtr incoming, PDPair outgoing, vector< VertexBasePtr >, map< ShowerInteraction, VertexBasePtr > &, const vector< map< ShowerInteraction, VertexBasePtr > > &, map< ShowerInteraction, VertexBasePtr >)
Set the information on the decay.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
map< ShowerInteraction, AbstractVSSVertexPtr > outgoingVertex1_
Abstract pointer to AbstractVSSVertex for QCD radiation from outgoing scalar.
Definition: SSSDecayer.h:184
ShowerInteraction
Handy header file to be included in all Shower classes.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::pointer PDPtr
pair< PDPtr, PDPtr > PDPair