herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
TensorMesonVectorScalarDecayer.h
1// -*- C++ -*-
2//
3// TensorMesonVectorScalarDecayer.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_TensorMesonVectorScalarDecayer_H
10#define HERWIG_TensorMesonVectorScalarDecayer_H
11//
12// This is the declaration of the TensorMesonVectorScalarDecayer class.
13//
14#include "Herwig/Decay/DecayIntegrator.h"
15#include "ThePEG/Helicity/LorentzPolarizationVector.h"
16#include "Herwig/Decay/PhaseSpaceMode.h"
17
18namespace Herwig {
19using namespace ThePEG;
20
43
44public:
45
52 virtual int modeNumber(bool & cc, tcPDPtr parent,
53 const tPDVector & children) const;
54
64 double me2(const int ichan,const Particle & part,
65 const tPDVector & outgoing,
66 const vector<Lorentz5Momentum> & momenta,
67 MEOption meopt) const;
68
72 virtual void constructSpinInfo(const Particle & part,
74
83 bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const;
84
90 virtual void dataBaseOutput(ofstream & os,bool header) const;
91
92public:
93
101
107 void persistentInput(PersistentIStream & is, int version);
109
113 static void Init();
114
115protected:
116
123 virtual IBPtr clone() const {return new_ptr(*this);}
124
129 virtual IBPtr fullclone() const {return new_ptr(*this);}
131
132protected:
133
136
142 virtual void doinit();
143
147 virtual void doinitrun();
149
150private:
151
156
157public:
158
162 string setUpDecayMode(string arg);
163
164private:
165
169 vector<int> incoming_;
170
174 vector<pair<int,int> > outgoing_;
175
179 vector<double> coupling_;
180
184 vector<double> maxWeight_;
185
190 mutable vector<Helicity::LorentzTensor<double> > tensors_;
191
195 mutable vector<Helicity::LorentzPolarizationVector> vectors_;
196
201};
202
203}
204
205
206#endif /* HERWIG_TensorMesonVectorScalarDecayer_H */
Main class for Decayers implementing multi-channel phase space integration.
MEOption
Enum for the matrix element option.
The TensorMesonVectorScalarDecayer class handles the decay of a tensor meson to vector and a scalar m...
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
TensorMesonVectorScalarDecayer & operator=(const TensorMesonVectorScalarDecayer &)=delete
Private and non-existent assignment operator.
vector< double > coupling_
coupling for the decay
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
virtual int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
vector< Helicity::LorentzPolarizationVector > vectors_
Storage of the polarization vectors.
vector< double > maxWeight_
max weight ofr the decay
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
vector< int > incoming_
PDG codes for the incoming particles.
vector< Helicity::LorentzTensor< double > > tensors_
Storage of polarization tensors (incoming) to try and increase speed.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
string setUpDecayMode(string arg)
Set the parameters for a decay mode.
static void Init()
Standard Init function used to initialize the interfaces.
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.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
virtual void doinitrun()
Initialize this object to the begining of the run phase.
vector< pair< int, int > > outgoing_
PDG codes for the outgoing particles (tensor,scalar)
bool twoBodyMEcode(const DecayMode &dm, int &mecode, double &coupling) const
Specify the matrix element to be used in the running width calculation.
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