herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
Decay
VectorMeson
a1SimpleDecayer.h
1
// -*- C++ -*-
2
//
3
// a1SimpleDecayer.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_a1SimpleDecayer_H
10
#define HERWIG_a1SimpleDecayer_H
11
//
12
// This is the declaration of the a1SimpleDecayer class.
13
//
14
15
#include "Herwig/Decay/DecayIntegrator.h"
16
#include "Herwig/Decay/PhaseSpaceMode.h"
17
#include "ThePEG/Helicity/LorentzPolarizationVector.h"
18
#include "Herwig/Decay/ResonanceHelpers.h"
19
20
namespace
Herwig
{
21
22
using namespace
ThePEG
;
23
31
class
a1SimpleDecayer
:
public
DecayIntegrator
{
32
33
public
:
34
38
a1SimpleDecayer
();
39
46
virtual
int
modeNumber
(
bool
& cc,
tcPDPtr
parent,
47
const
tPDVector
& children)
const
;
48
58
double
me2
(
const
int
ichan,
const
Particle
& part,
59
const
tPDVector
&
outgoing
,
60
const
vector<Lorentz5Momentum> & momenta,
61
MEOption
meopt)
const
;
62
66
virtual
void
constructSpinInfo
(
const
Particle
& part,
67
ParticleVector
outgoing
)
const
;
68
74
virtual
WidthCalculatorBasePtr
threeBodyMEIntegrator
(
const
DecayMode
& dm)
const
;
75
89
virtual
double
threeBodyMatrixElement
(
const
int
imode
,
const
Energy2 q2,
90
const
Energy2 s3,
const
Energy2 s2,
91
const
Energy2 s1,
const
Energy m1,
92
const
Energy m2,
const
Energy m3)
const
;
93
99
virtual
void
dataBaseOutput
(ofstream & os,
bool
header)
const
;
100
101
public
:
102
109
void
persistentOutput
(
PersistentOStream
& os)
const
;
110
116
void
persistentInput
(
PersistentIStream
& is,
int
version);
118
125
static
void
Init
();
126
127
protected
:
128
135
virtual
IBPtr
clone
()
const
{
return
new_ptr(*
this
);}
136
141
virtual
IBPtr
fullclone
()
const
{
return
new_ptr(*
this
);}
143
144
145
protected
:
146
154
virtual
void
doinit
();
155
160
virtual
void
doinitrun
();
162
163
private
:
164
171
Complex
rhoFormFactor
(Energy2 q2,
int
ires)
const
{
172
Complex
output(0.),norm(0.);
173
for
(
unsigned
int
ix=0;ix<3;++ix) norm +=
_rhowgts
[ix];
174
if
(ires<0) {
175
for
(
unsigned
int
ix=0;ix<3;++ix)
176
output+=
_rhowgts
[ix]*Resonance::BreitWignerPWave(q2,
_rhomass
[ix],
_rhowidth
[ix],
_mpi
,
_mpi
);
177
}
178
else
{
179
assert(ires<3);
180
output=
_rhowgts
[ires]*Resonance::BreitWignerPWave(q2,
_rhomass
[ires],
_rhowidth
[ires],
_mpi
,
_mpi
);
181
}
182
return
output/norm;
183
}
184
185
private
:
186
191
a1SimpleDecayer
&
operator=
(
const
a1SimpleDecayer
&) =
delete
;
192
193
private
:
194
198
vector<Energy>
_rhomass
;
199
203
vector<Energy>
_rhowidth
;
204
208
vector<double>
_rhowgts
;
209
213
bool
_localparameters
;
214
218
InvEnergy
_coupling
;
219
223
double
_onemax
;
224
228
double
_twomax
;
229
233
double
_threemax
;
234
238
vector<double>
_onewgts
;
239
243
vector<double>
_twowgts
;
244
248
vector<double>
_threewgts
;
249
253
Energy
_mpi
;
254
258
mutable
RhoDMatrix
_rho
;
259
263
mutable
vector<Helicity::LorentzPolarizationVector>
_vectors
;
264
265
};
266
267
}
268
269
#endif
/* HERWIG_a1SimpleDecayer_H */
Herwig::DecayIntegrator
Main class for Decayers implementing multi-channel phase space integration.
Definition:
DecayIntegrator.h:60
Herwig::DecayIntegrator::imode
int imode() const
The mode being used for this decay.
Definition:
DecayIntegrator.h:118
Herwig::DecayIntegrator::MEOption
MEOption
Enum for the matrix element option.
Definition:
DecayIntegrator.h:72
Herwig::a1SimpleDecayer
The a1SimpleDecayer class provides a simple model of the decay of the meson to three pions including...
Definition:
a1SimpleDecayer.h:31
Herwig::a1SimpleDecayer::modeNumber
virtual int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
Herwig::a1SimpleDecayer::doinitrun
virtual void doinitrun()
Initialize this object.
Herwig::a1SimpleDecayer::_mpi
Energy _mpi
The pion mass.
Definition:
a1SimpleDecayer.h:253
Herwig::a1SimpleDecayer::_rhowgts
vector< double > _rhowgts
Weights for the different resonances.
Definition:
a1SimpleDecayer.h:208
Herwig::a1SimpleDecayer::_rho
RhoDMatrix _rho
Spin Density matrix.
Definition:
a1SimpleDecayer.h:258
Herwig::a1SimpleDecayer::_rhowidth
vector< Energy > _rhowidth
The widths.
Definition:
a1SimpleDecayer.h:203
Herwig::a1SimpleDecayer::doinit
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
Herwig::a1SimpleDecayer::me2
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.
Herwig::a1SimpleDecayer::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition:
a1SimpleDecayer.h:141
Herwig::a1SimpleDecayer::dataBaseOutput
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
Herwig::a1SimpleDecayer::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::a1SimpleDecayer::_twowgts
vector< double > _twowgts
Weights for the channels for the two charged pion channel.
Definition:
a1SimpleDecayer.h:243
Herwig::a1SimpleDecayer::_localparameters
bool _localparameters
Use local values of the parameters.
Definition:
a1SimpleDecayer.h:213
Herwig::a1SimpleDecayer::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Definition:
a1SimpleDecayer.h:135
Herwig::a1SimpleDecayer::threeBodyMatrixElement
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...
Herwig::a1SimpleDecayer::_onemax
double _onemax
Maximum weight for the one charged pion channel.
Definition:
a1SimpleDecayer.h:223
Herwig::a1SimpleDecayer::_rhomass
vector< Energy > _rhomass
The masses.
Definition:
a1SimpleDecayer.h:198
Herwig::a1SimpleDecayer::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::a1SimpleDecayer::_coupling
InvEnergy _coupling
The overall coupling for the decay.
Definition:
a1SimpleDecayer.h:218
Herwig::a1SimpleDecayer::operator=
a1SimpleDecayer & operator=(const a1SimpleDecayer &)=delete
The assignment operator is private and must never be called.
Herwig::a1SimpleDecayer::threeBodyMEIntegrator
virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode &dm) const
Method to return an object to calculate the 3 body partial width.
Herwig::a1SimpleDecayer::Init
static void Init()
The standard Init function used to initialize the interfaces.
Herwig::a1SimpleDecayer::a1SimpleDecayer
a1SimpleDecayer()
The default constructor.
Herwig::a1SimpleDecayer::_onewgts
vector< double > _onewgts
Weights for the channels for the one charged pion channel.
Definition:
a1SimpleDecayer.h:238
Herwig::a1SimpleDecayer::_vectors
vector< Helicity::LorentzPolarizationVector > _vectors
Polarization vectors.
Definition:
a1SimpleDecayer.h:263
Herwig::a1SimpleDecayer::_twomax
double _twomax
Maximum weight for the two charged pion channel.
Definition:
a1SimpleDecayer.h:228
Herwig::a1SimpleDecayer::rhoFormFactor
Complex rhoFormFactor(Energy2 q2, int ires) const
The form factors.
Definition:
a1SimpleDecayer.h:171
Herwig::a1SimpleDecayer::_threemax
double _threemax
Maximum weight for the three charged pion channel.
Definition:
a1SimpleDecayer.h:233
Herwig::a1SimpleDecayer::_threewgts
vector< double > _threewgts
Weights for the channels for the three charged pion channel.
Definition:
a1SimpleDecayer.h:248
Herwig::a1SimpleDecayer::constructSpinInfo
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
ThePEG::DecayMode
ThePEG::Particle
ThePEG::PersistentIStream
ThePEG::PersistentOStream
ThePEG::RhoDMatrix
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG::Helicity::outgoing
outgoing
ThePEG
ThePEG::Complex
std::complex< double > Complex
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::tPDVector
vector< tPDPtr > tPDVector
ThePEG::ParticleVector
vector< PPtr > ParticleVector
ThePEG::tcPDPtr
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
Generated on Thu Jun 20 2024 17:50:52 for Herwig by
1.9.6