herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
EtaPiGammaGammaDecayer.h
1// -*- C++ -*-
2//
3// EtaPiGammaGammaDecayer.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_EtaPiGammaGammaDecayer_H
10#define HERWIG_EtaPiGammaGammaDecayer_H
11// This is the declaration of the EtaPiGammaGammaDecayer class.
12
13#include "Herwig/Decay/DecayIntegrator.h"
14#include "Herwig/Decay/PhaseSpaceMode.h"
15#include "ThePEG/StandardModel/StandardModelBase.h"
16#include "Herwig/Utilities/Kinematics.h"
17#include "ThePEG/Helicity/LorentzPolarizationVector.h"
18
19namespace Herwig {
20using namespace ThePEG;
21
64
65public:
66
71
78 virtual int modeNumber(bool & cc, tcPDPtr parent,
79 const tPDVector & children) const;
80
90 double me2(const int ichan,const Particle & part,
91 const tPDVector & outgoing,
92 const vector<Lorentz5Momentum> & momenta,
93 MEOption meopt) const;
94
98 virtual void constructSpinInfo(const Particle & part,
100
106 virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const;
107
121 virtual double threeBodyMatrixElement(const int imode, const Energy2 q2,
122 const Energy2 s3, const Energy2 s2,
123 const Energy2 s1, const Energy m1,
124 const Energy m2,const Energy m3) const;
125
131 virtual void dataBaseOutput(ofstream & os,bool header) const;
132
133public:
134
142
148 void persistentInput(PersistentIStream & is, int version);
150
154 static void Init();
155
156protected:
157
164 virtual IBPtr clone() const {return new_ptr(*this);}
165
170 virtual IBPtr fullclone() const {return new_ptr(*this);}
172
173protected:
174
182 virtual void doinit();
183
187 virtual void doinitrun();
189
190private:
191
196
197private:
198
203 InvEnergy _grhoomega;
204
208 Energy _fpi;
209
213 Energy _rhomass;
214
218 Energy _rhowidth;
219
223 double _grho;
224
228 Energy _mpi;
229
233 double _rhoconst;
234
239
244
249
253 double _theta;
254
258 double _etamax;
259
263 double _etapmax;
264
268 vector<InvEnergy2> _dconst;
269
273 vector<InvEnergy2> _econst;
274
279
283 mutable vector<Helicity::LorentzPolarizationVector> _vectors[2];
284};
285
286}
287
288
289#endif /* HERWIG_EtaPiGammaGammaDecayer_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 EtaPiGammaGammaDecayer class implements a VMD model matrix element for taken from hep-ph/0112150...
Energy _mpi
The mass of the pion.
bool _localparameters
Use local values of the mass and width.
double _etamax
the maximum weights for the decay.
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
EtaPiGammaGammaDecayer()
Default constructor.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
EtaPiGammaGammaDecayer & operator=(const EtaPiGammaGammaDecayer &)=delete
Private and non-existent assignment operator.
vector< InvEnergy2 > _econst
The prefactor for the function.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
RhoDMatrix _rho
Spin density matrix.
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...
static void Init()
Standard Init function used to initialize the interfaces.
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.
double _rhoconst
Constant for the running width calculation.
double _etapmax
the maximum weights for the decay.
double _ratiofpif0
Ratios of the decay constants .
Energy _rhowidth
The width of the .
virtual int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
Energy _fpi
The pion decay constant, .
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.
double _theta
the mixing angle, .
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
vector< Helicity::LorentzPolarizationVector > _vectors[2]
Polarization vectors for the photons.
double _ratiofpif8
Ratios of the decay constants .
virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode &dm) const
Method to return an object to calculate the 3 body partial width.
InvEnergy _grhoomega
The coupling of the to and a .
virtual IBPtr clone() const
Make a simple clone of this object.
double _grho
The coupling for the conversion of a rho to a photon, .
vector< InvEnergy2 > _dconst
The prefactor for the function.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr