herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
EtaPiPiGammaDecayer.h
1// -*- C++ -*-
2//
3// EtaPiPiGammaDecayer.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_EtaPiPiGammaDecayer_H
10#define HERWIG_EtaPiPiGammaDecayer_H
11// This is the declaration of the EtaPiPiGammaDecayer class.
12
13#include "Herwig/Utilities/Kinematics.h"
14#include "Herwig/Decay/DecayIntegrator.h"
15#include "Herwig/Decay/PhaseSpaceMode.h"
16#include "ThePEG/Helicity/LorentzPolarizationVector.h"
17#include "Herwig/Decay/FormFactors/OmnesFunction.fh"
18
19namespace Herwig {
20using namespace ThePEG;
21
57
58public:
59
64
71 virtual int modeNumber(bool & cc, tcPDPtr parent,
72 const tPDVector & children) const;
73
83 double me2(const int ichan,const Particle & part,
84 const tPDVector & outgoing,
85 const vector<Lorentz5Momentum> & momenta,
86 MEOption meopt) const;
87
91 virtual void constructSpinInfo(const Particle & part,
93
99 virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const;
100
114 virtual double threeBodyMatrixElement(const int imode,const Energy2 q2,
115 const Energy2 s3,const Energy2 s2,
116 const Energy2 s1,const Energy m1,
117 const Energy m2,const Energy m3) const;
118
124 virtual void dataBaseOutput(ofstream & os,bool header) const;
125
126public:
127
135
141 void persistentInput(PersistentIStream & is, int version);
143
147 static void Init();
148
149protected:
150
157 virtual IBPtr clone() const {return new_ptr(*this);}
158
163 virtual IBPtr fullclone() const {return new_ptr(*this);}
165
166protected:
167
170
176 virtual void doinit();
177
181 virtual void doinitrun();
183
184private:
185
190
191private:
192
196 Energy _fpi;
197
201 vector<int> _incoming;
202
206 vector<double> _coupling;
207
211 vector<double> _maxweight;
212
216 vector<int> _option;
217
221 InvEnergy2 _aconst;
222
226 double _cconst;
227
231 Energy _mrho;
232
236 Energy _rhowidth;
237
241 double _rhoconst;
242
246 Energy _mpi;
247
252
256 OmnesFunctionPtr omnesFunction_;
257
262
266 mutable vector<Helicity::LorentzPolarizationVector> _vectors;
267};
268}
269
270#endif /* HERWIG_EtaPiPiGammaDecayer_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 EtaPiPiGammaDecayer class implements the decay of the or to using either a VMD type model or a...
RhoDMatrix _rho
Spin densit matrix.
virtual IBPtr clone() const
Make a simple clone of this object.
EtaPiPiGammaDecayer & operator=(const EtaPiPiGammaDecayer &)=delete
Private and non-existent assignment operator.
virtual double threeBodyMatrixElement(const int imode, const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy m1, const Energy m2, const Energy m3) const
The matrix element to be integrated for the three-body decays as a function of the invariant masses o...
vector< double > _coupling
Coupling for the decay, .
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
double _rhoconst
Constant for the running width.
vector< double > _maxweight
The maximum weight.
virtual void doinitrun()
Initialize this object to the begining of the run phase.
static void Init()
Standard Init function used to initialize the interfaces.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
double _cconst
The constants for the Omnes function form.
OmnesFunctionPtr omnesFunction_
Object calculating the Omnes function.
vector< Helicity::LorentzPolarizationVector > _vectors
Polarization vectors for the photon.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
EtaPiPiGammaDecayer()
Default constructor.
Energy _fpi
the pion decay constant, .
virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode &dm) const
Method to return an object to calculate the 3 body partial width.
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.
InvEnergy2 _aconst
The constants for the omnes function form.
vector< int > _incoming
the PDG code for the incoming particle
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
bool _localparameters
Use local values of the parameters.
vector< int > _option
The option for the energy dependence of the prefactor.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr