herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
VectorMeson2MesonDecayer.h
1// -*- C++ -*-
2//
3// VectorMeson2MesonDecayer.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_VectorMeson2MesonDecayer_H
10#define HERWIG_VectorMeson2MesonDecayer_H
11//
12// This is the declaration of the VectorMeson2MesonDecayer class.
13//
14#include "Herwig/Decay/DecayIntegrator.h"
15#include "Herwig/Decay/PhaseSpaceMode.h"
16#include "ThePEG/Helicity/LorentzPolarizationVector.h"
17
18namespace Herwig {
19
20using namespace ThePEG;
21
52
53public:
54
59
66 virtual int modeNumber(bool & cc, tcPDPtr parent,
67 const tPDVector & children) const;
68
78 double me2(const int ichan,const Particle & part,
79 const tPDVector & outgoing,
80 const vector<Lorentz5Momentum> & momenta,
81 MEOption meopt) const;
82
86 virtual void constructSpinInfo(const Particle & part,
88
97 bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const;
98
104 virtual void dataBaseOutput(ofstream & os,bool header) const;
105
106public:
107
115
121 void persistentInput(PersistentIStream & is, int version);
123
127 static void Init();
128
129protected:
130
137 virtual IBPtr clone() const { return new_ptr(*this);}
138
143 virtual IBPtr fullclone() const { return new_ptr(*this);}
145
146protected:
147
155 virtual void doinit();
156
160 virtual void doinitrun();
162
163private:
164
169
170public:
171
175 string setUpDecayMode(string arg);
176
177private:
178
179
183 vector<long> incoming_;
184
188 vector<pair<long,long> > outgoing_;
189
193 vector<double> maxWeight_;
194
198 vector<double> coupling_;
199
204 mutable vector<Helicity::LorentzPolarizationVector> vectors_;
205
210};
211
212}
213
214
215#endif /* HERWIG_VectorMeson2MesonDecayer_H */
Main class for Decayers implementing multi-channel phase space integration.
MEOption
Enum for the matrix element option.
This class is the implementation for the decay of a vector meson to two scalar mesons,...
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
bool twoBodyMEcode(const DecayMode &dm, int &mecode, double &coupling) const
Specify the matrix element to be used in the running width calculation.
virtual void doinitrun()
Initialize this object to the begining of the run phase.
static void Init()
Standard Init function used to initialize the interfaces.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
RhoDMatrix rho_
Storage of the matrix.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
string setUpDecayMode(string arg)
Set the parameters for a decay mode.
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.
VectorMeson2MesonDecayer()
Default constructor.
vector< long > incoming_
the PDG codes for the incoming particles
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
vector< pair< long, long > > outgoing_
The PDG codes for the outgoing mesons.
VectorMeson2MesonDecayer & operator=(const VectorMeson2MesonDecayer &)=delete
Private and non-existent assignment operator.
vector< Helicity::LorentzPolarizationVector > vectors_
Storage of polarization tensors to try and increase speed.
vector< double > coupling_
the coupling for the decay
virtual int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
vector< double > maxWeight_
the maximum weight for the integration
virtual IBPtr clone() const
Make a simple clone of this object.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr