herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
TVVDecayer.h
1// -*- C++ -*-
2//
3// TVVDecayer.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_TVVDecayer_H
10#define HERWIG_TVVDecayer_H
11//
12// This is the declaration of the TVVDecayer class.
13//
14
15#include "GeneralTwoBodyDecayer.h"
16#include "ThePEG/Repository/EventGenerator.h"
17#include "ThePEG/Helicity/Vertex/Vector/VVVVertex.h"
18#include "ThePEG/Helicity/Vertex/Tensor/VVTVertex.h"
19#include "ThePEG/Helicity/Vertex/Tensor/VVVTVertex.h"
20
21namespace Herwig {
22using namespace ThePEG;
23using Helicity::VVTVertexPtr;
24
35
36public:
37
42
54 double me2(const int ichan,const Particle & part,
55 const tPDVector & outgoing,
56 const vector<Lorentz5Momentum> & momenta,
57 MEOption meopt) const;
58
62 virtual void constructSpinInfo(const Particle & part,
64
71 virtual Energy partialWidth(PMPair inpart, PMPair outa,
72 PMPair outb) const;
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
98 vector<VertexBasePtr>,
99 map<ShowerInteraction,VertexBasePtr> &,
100 const vector<map<ShowerInteraction,VertexBasePtr> > &,
101 map<ShowerInteraction,VertexBasePtr>);
102
104
105public:
106
114
120 void persistentInput(PersistentIStream & is, int version);
122
129 static void Init();
130
131protected:
132
139 virtual IBPtr clone() const;
140
145 virtual IBPtr fullclone() const;
147
148private:
149
154 TVVDecayer & operator=(const TVVDecayer &) = delete;
155
156private:
157
161 vector<AbstractVVTVertexPtr> vertex_;
162
166 vector<VVTVertexPtr> perturbativeVertex_;
167
171 map<ShowerInteraction,AbstractVVVVertexPtr> outgoingVertex1_;
172
176 map<ShowerInteraction,AbstractVVVVertexPtr> outgoingVertex2_;
177
181 map<ShowerInteraction,AbstractVVVTVertexPtr> fourPointVertex_;
182
187
191 mutable vector<Helicity::TensorWaveFunction> tensors_;
192
196 mutable vector<Helicity::VectorWaveFunction> vectors_[2];
197
202
206 mutable vector<Helicity::TensorWaveFunction> tensors3_;
207
211 mutable vector<Helicity::VectorWaveFunction> vectors3_[2];
212
216 mutable vector<Helicity::VectorWaveFunction> gluon_;
217
218};
219
220}
221
222#endif /* HERWIG_TVVDecayer_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 TVVDecayer class implements the decay of a tensor to 2 vector bosons in a general model.
Definition: TVVDecayer.h:34
RhoDMatrix rho_
Spin density matrix.
Definition: TVVDecayer.h:186
virtual IBPtr clone() const
Make a simple clone of this object.
vector< Helicity::VectorWaveFunction > vectors3_[2]
Polarization vectors of outgoing vector bosons.
Definition: TVVDecayer.h:211
vector< VVTVertexPtr > perturbativeVertex_
Pointer to the perturbative vertex.
Definition: TVVDecayer.h:166
virtual double threeBodyME(const int, const Particle &inpart, const ParticleVector &decay, ShowerInteraction inter, MEOption meopt)
Three-body matrix element including additional QCD radiation.
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.
virtual POWHEGType hasPOWHEGCorrection()
Has a POWHEG style correction.
Definition: TVVDecayer.h:76
RhoDMatrix rho3_
Spin density matrix for 3 body decay.
Definition: TVVDecayer.h:201
TVVDecayer & operator=(const TVVDecayer &)=delete
The assignment operator is private and must never be called.
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.
vector< Helicity::TensorWaveFunction > tensors3_
Tensor wavefunction for 3 body decay.
Definition: TVVDecayer.h:206
vector< Helicity::VectorWaveFunction > gluon_
Vector wavefunction for 3 body decay.
Definition: TVVDecayer.h:216
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
vector< AbstractVVTVertexPtr > vertex_
Abstract pointer to AbstractVVTVertex.
Definition: TVVDecayer.h:161
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb) const
Function to return partial Width.
static void Init()
The standard Init function used to initialize the interfaces.
map< ShowerInteraction, AbstractVVVTVertexPtr > fourPointVertex_
Abstract pointer to AbstractVVVTVertex for QCD radiation from 4 point vertex.
Definition: TVVDecayer.h:181
vector< Helicity::VectorWaveFunction > vectors_[2]
Polarization vectors of outgoing vector bosons.
Definition: TVVDecayer.h:196
map< ShowerInteraction, AbstractVVVVertexPtr > outgoingVertex1_
Abstract pointer to AbstractVVVVertex for QCD radiation from outgoing vector.
Definition: TVVDecayer.h:171
map< ShowerInteraction, AbstractVVVVertexPtr > outgoingVertex2_
Abstract pointer to AbstractVVVVertex for QCD radiation from outgoing vector.
Definition: TVVDecayer.h:176
TVVDecayer()
The default constructor.
Definition: TVVDecayer.h:41
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
vector< Helicity::TensorWaveFunction > tensors_
Polarization tensors of decaying particle.
Definition: TVVDecayer.h:191
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