herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
PScalar4FermionsDecayer.h
1// -*- C++ -*-
2//
3// PScalar4FermionsDecayer.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_PScalar4FermionsDecayer_H
10#define HERWIG_PScalar4FermionsDecayer_H
11// This is the declaration of the PScalar4FermionsDecayer class.
12
13#include "Herwig/Decay/DecayIntegrator.h"
14#include "Herwig/Decay/PhaseSpaceMode.h"
15#include "ThePEG/Helicity/LorentzSpinorBar.h"
16
17namespace Herwig {
18using namespace ThePEG;
19
45
46public:
47
52
59 virtual int modeNumber(bool & cc, tcPDPtr parent,
60 const tPDVector & children) const;
61
71 double me2(const int ichan,const Particle & part,
72 const tPDVector & outgoing,
73 const vector<Lorentz5Momentum> & momenta,
74 MEOption meopt) const;
75
79 virtual void constructSpinInfo(const Particle & part,
81
87 virtual void dataBaseOutput(ofstream & os,bool header) const;
88
89public:
90
98
104 void persistentInput(PersistentIStream & is, int version);
106
110 static void Init();
111
112protected:
113
120 virtual IBPtr clone() const {return new_ptr(*this);}
121
126 virtual IBPtr fullclone() const {return new_ptr(*this);}
128
129protected:
130
133
139 virtual void doinit();
140
144 virtual void doinitrun();
146
147private:
148
153
154public:
155
159 string setUpDecayMode(string arg);
160
161private:
162
166 vector<InvEnergy> coupling_;
167
171 vector<int> incoming_;
172
176 vector<pair<long,long> > outgoing_;
177
181 vector<double> maxweight_;
182
186 vector<int> includeVMD_;
187
191 vector<int> VMDid_;
192
196 vector<Energy> VMDmass_;
197
201 vector<Energy> VMDwidth_;
202
207
211 mutable vector<Helicity::LorentzSpinor <SqrtEnergy> > wave_[2];
212
216 mutable vector<Helicity::LorentzSpinorBar<SqrtEnergy> > wavebar_[2];
217};
218
219}
220
221
222#endif /* HERWIG_PScalar4FermionsDecayer_H */
Main class for Decayers implementing multi-channel phase space integration.
MEOption
Enum for the matrix element option.
The PScalar4FermionsDecayer class is designed for the decay of the neutral pion to four leptons,...
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
vector< int > includeVMD_
Include the VMD factor.
virtual IBPtr clone() const
Make a simple clone of this object.
vector< double > maxweight_
maximum weight for a decay
vector< Energy > VMDwidth_
Width of the particle for the VMD factor.
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.
vector< Helicity::LorentzSpinorBar< SqrtEnergy > > wavebar_[2]
Barred spinors for the decay products.
virtual int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
string setUpDecayMode(string arg)
Set the parameters for a decay mode.
vector< Helicity::LorentzSpinor< SqrtEnergy > > wave_[2]
Spinors for the decay products.
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
vector< int > VMDid_
PDG code of the particle for the VMD factor.
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.
static void Init()
Standard Init function used to initialize the interfaces.
vector< Energy > VMDmass_
Mass of the particle for the VMD factor.
vector< int > incoming_
the PDG codes for the incoming particle
vector< InvEnergy > coupling_
coupling for a decay
PScalar4FermionsDecayer()
Default constructor.
virtual void doinitrun()
Initialize this object to the begining of the run phase.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
RhoDMatrix rho_
Spin density matrix.
PScalar4FermionsDecayer & operator=(const PScalar4FermionsDecayer &)=delete
Private and non-existent assignment operator.
vector< pair< long, long > > outgoing_
the PDG codes for the first outgoing fermion
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr