herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
TensorMesonTensorPScalarDecayer.h
1// -*- C++ -*-
2//
3// TensorMesonTensorPScalarDecayer.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_TensorMesonTensorPScalarDecayer_H
10#define HERWIG_TensorMesonTensorPScalarDecayer_H
11//
12// This is the declaration of the TensorMesonTensorPScalarDecayer 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
44
45public:
46
53 virtual int modeNumber(bool & cc, tcPDPtr parent,
54 const tPDVector & children) const;
55
65 double me2(const int ichan,const Particle & part,
66 const tPDVector & outgoing,
67 const vector<Lorentz5Momentum> & momenta,
68 MEOption meopt) const;
69
73 virtual void constructSpinInfo(const Particle & part,
75
84 bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const;
85
91 virtual void dataBaseOutput(ofstream & os,bool header) const;
92
93public:
94
102
108 void persistentInput(PersistentIStream & is, int version);
110
114 static void Init();
115
116protected:
117
124 virtual IBPtr clone() const {return new_ptr(*this);}
125
130 virtual IBPtr fullclone() const {return new_ptr(*this);}
132
133protected:
134
137
143 virtual void doinit();
144
148 virtual void doinitrun();
150
151private:
152
157
158public:
159
163 string setUpDecayMode(string arg);
164
165private:
166
170 vector<int> incoming_;
171
175 vector<pair<int,int> > outgoing_;
176
180 vector<InvEnergy> coupling_;
181
185 vector<double> maxWeight_;
186
191 mutable vector<Helicity::LorentzTensor<double> > tensors_in_;
192
197 mutable vector<Helicity::LorentzTensor<double> > tensors_out_;
198
203};
204
205}
206
207
208#endif /* HERWIG_TensorMesonTensorPScalarDecayer_H */
Main class for Decayers implementing multi-channel phase space integration.
MEOption
Enum for the matrix element option.
The TensorMesonTensorPScalarDecayer class handles the decay of a tensor meson to tensor and a scalar ...
string setUpDecayMode(string arg)
Set the parameters for a decay mode.
TensorMesonTensorPScalarDecayer & operator=(const TensorMesonTensorPScalarDecayer &)=delete
Private and non-existent assignment operator.
virtual int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
vector< double > maxWeight_
max weight ofr the decay
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
vector< pair< int, int > > outgoing_
PDG codes for the outgoing particles (tensor,scalar)
static void Init()
Standard Init function used to initialize the interfaces.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
virtual IBPtr clone() const
Make a simple clone of this object.
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
vector< Helicity::LorentzTensor< double > > tensors_out_
Storage of polarization tensors(outgoing) to try and increase speed.
vector< Helicity::LorentzTensor< double > > tensors_in_
Storage of polarization tensors (incoming) to try and increase speed.
vector< int > incoming_
PDG codes for the incoming particles.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
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.
vector< InvEnergy > coupling_
coupling for the decay
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.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr