herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
TensorMesonVectorVectorDecayer.h
1// -*- C++ -*-
2//
3// TensorMesonVectorVectorDecayer.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_TensorMesonVectorVectorDecayer_H
10#define HERWIG_TensorMesonVectorVectorDecayer_H
11//
12// This is the declaration of the TensorMesonVectorVectorDecayer class.
13//
14#include "Herwig/Decay/DecayIntegrator.h"
15#include "Herwig/Decay/PhaseSpaceMode.h"
16#include "ThePEG/Helicity/LorentzTensor.h"
17
18namespace Herwig {
19using namespace ThePEG;
20
49
50public:
51
58 virtual int modeNumber(bool & cc, tcPDPtr parent,
59 const tPDVector & children) const;
60
70 double me2(const int ichan,const Particle & part,
71 const tPDVector & outgoing,
72 const vector<Lorentz5Momentum> & momenta,
73 MEOption meopt) const;
74
78 virtual void constructSpinInfo(const Particle & part,
80
89 bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const;
90
96 virtual void dataBaseOutput(ofstream & os,bool header) const;
97
98public:
99
107
113 void persistentInput(PersistentIStream & is, int version);
115
119 static void Init();
120
121protected:
122
129 virtual IBPtr clone() const {return new_ptr(*this);}
130
135 virtual IBPtr fullclone() const {return new_ptr(*this);}
137
138protected:
139
147 virtual void doinit();
148
152 virtual void doinitrun();
154
155private:
156
161
162public:
163
167 string setUpDecayMode(string arg);
168
169private:
170
174 vector<int> incoming_;
175
179 vector<pair<int,int> > outgoing_;
180
184 vector<Energy> coupling_;
185
189 vector<double> maxWeight_;
190
195 mutable vector<Helicity::LorentzTensor<double> > tensors_;
196
200 mutable vector<Helicity::LorentzPolarizationVector > vectors_[2];
201
206
207};
208
209}
210
211#endif /* HERWIG_TensorMesonVectorVectorDecayer_H */
Main class for Decayers implementing multi-channel phase space integration.
MEOption
Enum for the matrix element option.
The TensorMesonVectorVectorDecayer class is designed to simulate the decay of a tensor meson to two s...
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
virtual IBPtr clone() const
Make a simple clone of this object.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
vector< Helicity::LorentzPolarizationVector > vectors_[2]
Storage of the polarization vectors.
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 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.
TensorMesonVectorVectorDecayer & operator=(const TensorMesonVectorVectorDecayer &)=delete
Private and non-existent assignment operator.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
vector< Helicity::LorentzTensor< double > > tensors_
Storage of polarization tensors to try and increase speed.
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.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
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.
bool twoBodyMEcode(const DecayMode &dm, int &mecode, double &coupling) const
Specify the matrix element to be used in the running width calculation.
vector< Energy > coupling_
the coupling for the decay
vector< pair< int, int > > outgoing_
the PDG codes for the outgoing particles
string setUpDecayMode(string arg)
Set the parameters for a decay mode.
vector< int > incoming_
the PDG codes for the incoming particles
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr