herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
VectorMeson2FermionDecayer.h
1// -*- C++ -*-
2//
3// VectorMeson2FermionDecayer.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_VectorMeson2FermionDecayer_H
10#define HERWIG_VectorMeson2FermionDecayer_H
11// This is the declaration of the VectorMeson2FermionDecayer class.
12
13#include "Herwig/Decay/DecayIntegrator.h"
14#include "Herwig/Decay/PhaseSpaceMode.h"
15#include "ThePEG/Helicity/LorentzPolarizationVector.h"
16#include "ThePEG/Helicity/LorentzSpinorBar.h"
17
18namespace Herwig {
19using namespace ThePEG;
20
47
48public:
49
54
61 virtual int modeNumber(bool & cc, tcPDPtr parent,
62 const tPDVector & children) const;
63
73 double me2(const int ichan,const Particle & part,
74 const tPDVector & outgoing,
75 const vector<Lorentz5Momentum> & momenta,
76 MEOption meopt) const;
77
81 virtual void constructSpinInfo(const Particle & part,
83
92 bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const;
93
99 virtual void dataBaseOutput(ofstream & os,bool header) const;
100
101public:
102
110
116 void persistentInput(PersistentIStream & is, int version);
118
122 static void Init();
123
124protected:
125
132 virtual IBPtr clone() const {return new_ptr(*this);}
133
138 virtual IBPtr fullclone() const {return new_ptr(*this);}
140
141protected:
142
150 virtual void doinit();
151
155 virtual void doinitrun();
157
158private:
159
164
165public:
166
170 string setUpDecayMode(string arg);
171
172private:
173
177 vector<double> coupling_;
178
182 vector<long> incoming_;
183
187 vector<pair<long,long>> outgoing_;
188
192 vector<double> maxweight_;
193
198
202 mutable vector<Helicity::LorentzPolarizationVector> vectors_;
203
207 mutable vector<Helicity::LorentzSpinor <SqrtEnergy> > wave_;
208
212 mutable vector<Helicity::LorentzSpinorBar<SqrtEnergy> > wavebar_;
213};
214
215}
216
217
218#endif /* HERWIG_VectorMeson2FermionDecayer_H */
Main class for Decayers implementing multi-channel phase space integration.
MEOption
Enum for the matrix element option.
The VectorMeson2FermionDecayer class is designed for the decay of a vector meson to a fermion-antifer...
vector< Helicity::LorentzSpinor< SqrtEnergy > > wave_
Spinors for the decay products.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
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.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
vector< double > maxweight_
maximum weight for a decay
VectorMeson2FermionDecayer()
Default constructor.
vector< long > incoming_
the PDG codes for the incoming particles
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.
vector< pair< long, long > > outgoing_
the PDG codes for the outgoing fermion-antifermion
virtual void doinitrun()
Initialize this object to the begining of the run phase.
virtual int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
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.
VectorMeson2FermionDecayer & operator=(const VectorMeson2FermionDecayer &)=delete
Private and non-existent assignment operator.
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
static void Init()
Standard Init function used to initialize the interfaces.
vector< Helicity::LorentzPolarizationVector > vectors_
Polarization vectors for the decaying particle.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
vector< double > coupling_
coupling for a decay
vector< Helicity::LorentzSpinorBar< SqrtEnergy > > wavebar_
barred spinors for the decay products
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr