herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
Decay
Dalitz
VectorTo3PseudoScalarDalitz.h
1
// -*- C++ -*-
2
#ifndef Herwig_VectorTo3PseudoScalarDalitz_H
3
#define Herwig_VectorTo3PseudoScalarDalitz_H
4
//
5
// This is the declaration of the VectorTo3PseudoScalarDalitz class.
6
//
7
8
#include "DalitzBase.h"
9
#include "ThePEG/Helicity/LorentzPolarizationVector.h"
10
11
namespace
Herwig
{
12
13
using namespace
ThePEG
;
14
21
class
VectorTo3PseudoScalarDalitz
:
public
DalitzBase
{
22
23
public
:
24
28
VectorTo3PseudoScalarDalitz
() :
coupling_
(1./GeV)
29
{}
30
40
virtual
double
me2
(
const
int
ichan,
const
Particle
& part,
41
const
tPDVector
&
outgoing
,
42
const
vector<Lorentz5Momentum> & momenta,
43
MEOption
meopt)
const
;
44
48
virtual
void
constructSpinInfo
(
const
Particle
& part,
49
ParticleVector
outgoing
)
const
;
50
56
virtual
void
dataBaseOutput
(ofstream & os,
bool
header)
const
;
57
63
virtual
WidthCalculatorBasePtr
threeBodyMEIntegrator
(
const
DecayMode
& dm)
const
;
64
78
virtual
double
threeBodyMatrixElement
(
const
int
imode
,
const
Energy2 q2,
79
const
Energy2 s3,
const
Energy2 s2,
const
80
Energy2 s1,
const
Energy m1,
81
const
Energy m2,
const
Energy m3)
const
;
82
83
public
:
84
91
void
persistentOutput
(
PersistentOStream
& os)
const
;
92
98
void
persistentInput
(
PersistentIStream
& is,
int
version);
100
107
static
void
Init
();
108
109
protected
:
110
117
virtual
IBPtr
clone
()
const
;
118
123
virtual
IBPtr
fullclone
()
const
;
125
126
protected
:
127
131
virtual
complex<InvEnergy2>
amplitude
(
int
ichan)
const
{
132
complex<InvEnergy2> amp(
ZERO
);
133
int
iloc=-1;
134
for
(
int
ix=0;ix<int(
resonances
().size());++ix) {
135
++iloc;
136
if
(
channel1
()>=0) {
137
if
(ix!=
channel1
() && ix!=
channel2
())
continue
;
138
}
139
if
(ichan>=0&&ichan!=iloc)
continue
;
140
amp +=
resAmp
(ix);
141
}
142
return
amp;
143
}
144
148
complex<InvEnergy2>
resAmp
(
unsigned
int
i)
const
;
149
150
private
:
151
156
VectorTo3PseudoScalarDalitz
&
operator=
(
const
VectorTo3PseudoScalarDalitz
&) =
delete
;
157
158
private
:
159
163
InvEnergy
coupling_
;
164
172
mutable
Energy
mD_
;
173
177
mutable
Energy
mOut_
[3];
178
182
mutable
Energy
m2_
[3][3];
184
189
mutable
vector<Helicity::LorentzPolarizationVector>
vectors_
;
190
194
mutable
RhoDMatrix
rho_
;
195
196
};
197
198
}
199
200
#endif
/* Herwig_VectorTo3PseudoScalarDalitz_H */
Herwig::DalitzBase
The DalitzBase class provides a base class for the implementation of three-body Dalitz decays.
Definition:
DalitzBase.h:22
Herwig::DalitzBase::resonances
const vector< DalitzResonancePtr > & resonances() const
Access to the resonances.
Definition:
DalitzBase.h:103
Herwig::DalitzBase::channel1
const int & channel1() const
Access to the first channel.
Definition:
DalitzBase.h:108
Herwig::DalitzBase::channel2
const int & channel2() const
Access to the second channel.
Definition:
DalitzBase.h:115
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::VectorTo3PseudoScalarDalitz
The VectorTo3PseudoScalarDalitz class provides a base class for the decay of vector mesons to 3 pseud...
Definition:
VectorTo3PseudoScalarDalitz.h:21
Herwig::VectorTo3PseudoScalarDalitz::Init
static void Init()
The standard Init function used to initialize the interfaces.
Herwig::VectorTo3PseudoScalarDalitz::rho_
RhoDMatrix rho_
Storage of the matrix.
Definition:
VectorTo3PseudoScalarDalitz.h:194
Herwig::VectorTo3PseudoScalarDalitz::mD_
Energy mD_
Storage of the kinematics.
Definition:
VectorTo3PseudoScalarDalitz.h:172
Herwig::VectorTo3PseudoScalarDalitz::vectors_
vector< Helicity::LorentzPolarizationVector > vectors_
Storage of polarization vectors to try and increase speed.
Definition:
VectorTo3PseudoScalarDalitz.h:189
Herwig::VectorTo3PseudoScalarDalitz::operator=
VectorTo3PseudoScalarDalitz & operator=(const VectorTo3PseudoScalarDalitz &)=delete
The assignment operator is private and must never be called.
Herwig::VectorTo3PseudoScalarDalitz::m2_
Energy m2_[3][3]
Masses of the children.
Definition:
VectorTo3PseudoScalarDalitz.h:182
Herwig::VectorTo3PseudoScalarDalitz::me2
virtual 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::VectorTo3PseudoScalarDalitz::VectorTo3PseudoScalarDalitz
VectorTo3PseudoScalarDalitz()
The default constructor.
Definition:
VectorTo3PseudoScalarDalitz.h:28
Herwig::VectorTo3PseudoScalarDalitz::mOut_
Energy mOut_[3]
Masses of the children.
Definition:
VectorTo3PseudoScalarDalitz.h:177
Herwig::VectorTo3PseudoScalarDalitz::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::VectorTo3PseudoScalarDalitz::amplitude
virtual complex< InvEnergy2 > amplitude(int ichan) const
Calculate the amplitude.
Definition:
VectorTo3PseudoScalarDalitz.h:131
Herwig::VectorTo3PseudoScalarDalitz::coupling_
InvEnergy coupling_
Coupling for the normalisation of the mode.
Definition:
VectorTo3PseudoScalarDalitz.h:163
Herwig::VectorTo3PseudoScalarDalitz::resAmp
complex< InvEnergy2 > resAmp(unsigned int i) const
Calculate the amplitude for the ith resonance.
Herwig::VectorTo3PseudoScalarDalitz::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Herwig::VectorTo3PseudoScalarDalitz::threeBodyMEIntegrator
virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode &dm) const
Method to return an object to calculate the 3 body partial width.
Herwig::VectorTo3PseudoScalarDalitz::constructSpinInfo
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
Herwig::VectorTo3PseudoScalarDalitz::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Herwig::VectorTo3PseudoScalarDalitz::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::VectorTo3PseudoScalarDalitz::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::VectorTo3PseudoScalarDalitz::dataBaseOutput
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
ThePEG::DecayMode
ThePEG::Particle
ThePEG::PersistentIStream
ThePEG::PersistentOStream
ThePEG::RhoDMatrix
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG::Helicity::outgoing
outgoing
ThePEG
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::tPDVector
vector< tPDPtr > tPDVector
ThePEG::ParticleVector
vector< PPtr > ParticleVector
ThePEG::ZERO
constexpr ZeroUnit ZERO
Generated on Thu Jun 20 2024 17:50:52 for Herwig by
1.9.6