herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
PseudoTensorMesonVectorVectorDecayer.h
1// -*- C++ -*-
2//
3// PseudoTensorMesonVectorVectorDecayer.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_PseudoTensorMesonVectorVectorDecayer_H
10#define HERWIG_PseudoTensorMesonVectorVectorDecayer_H
11//
12// This is the declaration of the PseudoTensorMesonVectorVectorDecayer 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
41
42public:
43
50 virtual int modeNumber(bool & cc, tcPDPtr parent,
51 const tPDVector & children) const;
52
62 double me2(const int ichan,const Particle & part,
63 const tPDVector & outgoing,
64 const vector<Lorentz5Momentum> & momenta,
65 MEOption meopt) const;
66
70 virtual void constructSpinInfo(const Particle & part,
72
81 bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const;
82
88 virtual void dataBaseOutput(ofstream & os,bool header) const;
89
90public:
91
99
105 void persistentInput(PersistentIStream & is, int version);
107
111 static void Init();
112
113protected:
114
121 virtual IBPtr clone() const {return new_ptr(*this);}
122
127 virtual IBPtr fullclone() const {return new_ptr(*this);}
129
130protected:
131
134
140 virtual void doinit();
141
145 virtual void doinitrun();
147
148private:
149
154
155public:
156
160 string setUpDecayMode(string arg);
161
162private:
163
167 vector<int> incoming_;
168
172 vector<pair<int,int> > outgoing_;
173
177 vector<InvEnergy> coupling_;
178
182 vector<double> maxWeight_;
183
188 mutable vector<Helicity::LorentzTensor<double> > tensors_;
189
193 mutable vector<Helicity::LorentzPolarizationVector> vectors_[2];
194
199};
200
201}
202
203
204#endif /* HERWIG_PseudoTensorMesonVectorVectorDecayer_H */
Main class for Decayers implementing multi-channel phase space integration.
MEOption
Enum for the matrix element option.
The PseudoTensorMesonVectorVectorDecayer class handles the decay of a pseudotensor meson to two vecto...
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 int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
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.
bool twoBodyMEcode(const DecayMode &dm, int &mecode, double &coupling) const
Specify the matrix element to be used in the running width calculation.
PseudoTensorMesonVectorVectorDecayer & operator=(const PseudoTensorMesonVectorVectorDecayer &)=delete
Private and non-existent assignment operator.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
virtual IBPtr clone() const
Make a simple clone of this object.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
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.
vector< int > incoming_
PDG codes for the incoming particles.
vector< pair< int, int > > outgoing_
PDG codes for the outgoing particles (tensor,scalar)
static void Init()
Standard Init function used to initialize the interfaces.
vector< Helicity::LorentzTensor< double > > tensors_
Storage of polarization tensors (incoming) to try and increase speed.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
vector< Helicity::LorentzPolarizationVector > vectors_[2]
Storage of the polarization vectors.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr