herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
TensorMeson2PScalarDecayer.h
1// -*- C++ -*-
2//
3// TensorMeson2PScalarDecayer.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_TensorMeson2PScalarDecayer_H
10#define HERWIG_TensorMeson2PScalarDecayer_H
11//
12// This is the declaration of the TensorMeson2PScalarDecayer class.
13//
14#include "Herwig/Decay/DecayIntegrator.h"
15#include "Herwig/Decay/PhaseSpaceMode.h"
16
17namespace Herwig {
18using namespace ThePEG;
19
47
48public:
49
56 virtual int modeNumber(bool & cc, tcPDPtr parent,
57 const tPDVector & children) const;
58
68 double me2(const int ichan,const Particle & part,
69 const tPDVector & outgoing,
70 const vector<Lorentz5Momentum> & momenta,
71 MEOption meopt) const;
72
76 virtual void constructSpinInfo(const Particle & part,
78
87 bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const;
88
94 virtual void dataBaseOutput(ofstream & os,bool header) const;
95
96public:
97
105
111 void persistentInput(PersistentIStream & is, int version);
113
117 static void Init();
118
119protected:
120
127 virtual IBPtr clone() const {return new_ptr(*this);}
128
133 virtual IBPtr fullclone() const {return new_ptr(*this);}
135
136protected:
137
145 virtual void doinit();
146
150 virtual void doinitrun();
152
153private:
154
159
160public:
161
165 string setUpDecayMode(string arg);
166
167private:
168
172 vector<int> incoming_;
173
177 vector<pair<int,int> > outgoing_;
178
182 vector<InvEnergy> coupling_;
183
187 vector<double> maxWeight_;
188
193 mutable vector<Helicity::LorentzTensor<double> > tensors_;
194
199
200};
201
202}
203
204
205#endif /* HERWIG_TensorMeson2PScalarDecayer_H */
Main class for Decayers implementing multi-channel phase space integration.
MEOption
Enum for the matrix element option.
The TensorMeson2PScalarDecayer class is designed for the decay of a tensor meson to two pseudoscalars...
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
vector< pair< int, int > > outgoing_
the PDG codes for the outgoing particles
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
vector< double > maxWeight_
the maximum weight for the decay
virtual int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
vector< int > incoming_
the PDG codes for the incoming particles
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
string setUpDecayMode(string arg)
Set the parameters for a decay mode.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
bool twoBodyMEcode(const DecayMode &dm, int &mecode, double &coupling) const
Specify the matrix element to be used in the running width calculation.
TensorMeson2PScalarDecayer & operator=(const TensorMeson2PScalarDecayer &)=delete
Private and non-existent assignment operator.
virtual IBPtr clone() const
Make a simple clone of this object.
RhoDMatrix rho_
Storage of the matrix.
vector< InvEnergy > coupling_
the coupling for the decay
static void Init()
Standard Init function used to initialize the interfaces.
virtual void doinitrun()
Initialize this object to the begining of the run phase.
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
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::LorentzTensor< double > > tensors_
Storage of polarization tensors to try and increase speed.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr