herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
VectorMesonPScalarFermionsDecayer.h
1// -*- C++ -*-
2//
3// VectorMesonPScalarFermionsDecayer.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_VectorMesonPScalarFermionsDecayer_H
10#define HERWIG_VectorMesonPScalarFermionsDecayer_H
11//
12// This is the declaration of the VectorMesonPScalarFermionsDecayer class.
13//
14#include "Herwig/Decay/DecayIntegrator.h"
15#include "Herwig/Decay/PhaseSpaceMode.h"
16#include "ThePEG/Helicity/LorentzPolarizationVector.h"
17#include "ThePEG/Helicity/LorentzSpinorBar.h"
18
19namespace Herwig {
20using namespace ThePEG;
21
50
51public:
52
57
64 virtual int modeNumber(bool & cc, tcPDPtr parent,
65 const tPDVector & children) const;
66
76 double me2(const int ichan,const Particle & part,
77 const tPDVector & outgoing,
78 const vector<Lorentz5Momentum> & momenta,
79 MEOption meopt) const;
80
84 virtual void constructSpinInfo(const Particle & part,
86
92 virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const;
93
104 virtual InvEnergy threeBodydGammads(const int imode, const Energy2 q2,
105 const Energy2 s,
106 const Energy m1, const Energy m2,
107 const Energy m3) const;
108
114 virtual void dataBaseOutput(ofstream & os,bool header) const;
115
116public:
117
125
131 void persistentInput(PersistentIStream & is, int version);
133
137 static void Init();
138
139protected:
140
147 virtual IBPtr clone() const {return new_ptr(*this);}
148
153 virtual IBPtr fullclone() const {return new_ptr(*this);}
155
156protected:
157
165 virtual void doinit();
166
170 virtual void doinitrun();
172
173private:
174
179
180public:
181
185 string setUpDecayMode(string arg);
186
187private:
188
192 vector<InvEnergy> coupling_;
193
197 vector<int> incoming_;
198
202 vector<pair<long,long> > outgoing_;
203
207 vector<double> maxweight_;
208
212 vector<double> weight_;
213
217 vector<int> includeVMD_;
218
222 vector<int> VMDid_;
223
227 vector<Energy> VMDmass_;
228
232 vector<Energy> VMDwidth_;
233
238
242 mutable vector<Helicity::LorentzPolarizationVector> vectors_;
243
247 mutable vector<Helicity::LorentzSpinor <SqrtEnergy> > wave_;
248
252 mutable vector<Helicity::LorentzSpinorBar<SqrtEnergy> > wavebar_;
253};
254
255}
256
257
258#endif /* HERWIG_VectorMesonPScalarFermionsDecayer_H */
Main class for Decayers implementing multi-channel phase space integration.
int imode() const
The mode being used for this decay.
MEOption
Enum for the matrix element option.
The VectorMesonPScalarFermionsDecayer class is designed to perform the decay of a vector meson to a p...
virtual IBPtr clone() const
Make a simple clone of this object.
virtual InvEnergy threeBodydGammads(const int imode, const Energy2 q2, const Energy2 s, const Energy m1, const Energy m2, const Energy m3) const
The differential three body decay rate with one integral performed.
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
vector< pair< long, long > > outgoing_
PDG codes for the outgoing particles.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
vector< double > weight_
Relative weights for the two channels.
VectorMesonPScalarFermionsDecayer()
Default constructor.
vector< int > VMDid_
PDG code for the particle mass and width to use for the VMD form factor.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode &dm) const
Method to return an object to calculate the 3 body partial width.
vector< int > includeVMD_
Include the VMD form factor.
VectorMesonPScalarFermionsDecayer & operator=(const VectorMesonPScalarFermionsDecayer &)=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< Helicity::LorentzSpinorBar< SqrtEnergy > > wavebar_
Barred spinors for the fermions.
static void Init()
Standard Init function used to initialize the interfaces.
vector< Energy > VMDmass_
Mass for the VMD form factor.
vector< Energy > VMDwidth_
Width for the VMD form factor.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
vector< double > maxweight_
Maximum weight 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.
vector< Helicity::LorentzPolarizationVector > vectors_
Polarization vectors for the decaying particle.
virtual void doinitrun()
Initialize this object to the begining of the run phase.
string setUpDecayMode(string arg)
Set the parameters for a decay mode.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
vector< InvEnergy > coupling_
coupling for a decay
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
vector< Helicity::LorentzSpinor< SqrtEnergy > > wave_
Spinors for the fermions.
vector< int > incoming_
PDG codes for the incoming particle.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr