herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
Scalar2FermionsDecayer.h
1// -*- C++ -*-
2#ifndef Herwig_Scalar2FermionsDecayer_H
3#define Herwig_Scalar2FermionsDecayer_H
4//
5// This is the declaration of the Scalar2FermionsDecayer class.
6//
7
8#include "Herwig/Decay/DecayIntegrator.h"
9#include "Herwig/Decay/PhaseSpaceMode.h"
10#include "ThePEG/Helicity/LorentzSpinorBar.h"
11
12namespace Herwig {
13
14using namespace ThePEG;
15
25
26public:
27
32
39 virtual int modeNumber(bool & cc, tcPDPtr parent,
40 const tPDVector & children) const;
41
51 double me2(const int ichan,const Particle & part,
52 const tPDVector & outgoing,
53 const vector<Lorentz5Momentum> & momenta,
54 MEOption meopt) const;
55
59 virtual void constructSpinInfo(const Particle & part,
61
70 bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const;
71
77 virtual void dataBaseOutput(ofstream & os,bool header) const;
78
79public:
80
88
94 void persistentInput(PersistentIStream & is, int version);
96
103 static void Init();
104
105protected:
106
113 virtual IBPtr clone() const;
114
119 virtual IBPtr fullclone() const;
121
122protected:
123
131 virtual void doinit();
132
136 virtual void doinitrun();
138
139private:
140
146
147public:
148
152 string setUpDecayMode(string arg);
153
154private:
155
159 vector<double> coupling_;
160
164 vector<long> incoming_;
165
169 vector<pair<long,long>> outgoing_;
170
174 vector<double> maxweight_;
175
180
184 mutable vector<Helicity::LorentzSpinor <SqrtEnergy> > wave_;
185
189 mutable vector<Helicity::LorentzSpinorBar<SqrtEnergy> > wavebar_;
190
191};
192
193}
194
195#endif /* Herwig_Scalar2FermionsDecayer_H */
Main class for Decayers implementing multi-channel phase space integration.
MEOption
Enum for the matrix element option.
The Scalar2FermionsDecayer class is designed for the decay of ascalar meson to two fermions,...
static void Init()
The standard Init function used to initialize the interfaces.
vector< Helicity::LorentzSpinor< SqrtEnergy > > wave_
Spinors for the decay products.
virtual int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
vector< double > coupling_
coupling for a 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.
Scalar2FermionsDecayer()
The default constructor.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
vector< long > incoming_
the PDG codes for the incoming particles
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
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.
string setUpDecayMode(string arg)
Set the parameters for a decay mode.
vector< double > maxweight_
maximum weight for a decay
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Scalar2FermionsDecayer & operator=(const Scalar2FermionsDecayer &)=delete
The assignment operator is private and must never be called.
vector< pair< long, long > > outgoing_
the PDG codes for the outgoing fermion-antifermion
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
RhoDMatrix rho_
Spin density matrix.
virtual void doinitrun()
Initialize this object to the begining of the run phase.
vector< Helicity::LorentzSpinorBar< SqrtEnergy > > wavebar_
barred spinors for the decay products
bool twoBodyMEcode(const DecayMode &dm, int &mecode, double &coupling) const
Specify the matrix element to be used in the running width calculation.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr