herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
Decay
WeakCurrents
TwoPionPhotonCurrent.h
1
// -*- C++ -*-
2
//
3
// TwoPionPhotonCurrent.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_TwoPionPhotonCurrent_H
10
#define HERWIG_TwoPionPhotonCurrent_H
11
//
12
// This is the declaration of the TwoPionPhotonCurrent class.
13
//
14
#include "WeakCurrent.h"
15
16
namespace
Herwig
{
17
using namespace
ThePEG
;
18
60
class
TwoPionPhotonCurrent
:
public
WeakCurrent
{
61
62
public
:
63
67
TwoPionPhotonCurrent
();
68
75
void
persistentOutput
(
PersistentOStream
& os)
const
;
76
82
void
persistentInput
(
PersistentIStream
& is,
int
version);
84
88
static
void
Init
();
89
90
public
:
91
112
virtual
bool
createMode
(
int
icharge,
tcPDPtr
resonance,
113
FlavourInfo
flavour,
114
unsigned
int
imode,PhaseSpaceModePtr mode,
115
unsigned
int
iloc,
int
ires,
116
PhaseSpaceChannel
phase, Energy upp );
117
127
virtual
tPDVector
particles
(
int
icharge,
unsigned
int
imode,
int
iq,
int
ia);
129
143
virtual
vector<LorentzPolarizationVectorE>
144
current
(
tcPDPtr
resonance,
145
FlavourInfo
flavour,
146
const
int
imode,
const
int
ichan,Energy & scale,
147
const
tPDVector
&
outgoing
,
148
const
vector<Lorentz5Momentum> & momenta,
149
DecayIntegrator::MEOption
meopt)
const
;
150
154
virtual
void
constructSpinInfo
(
ParticleVector
decay)
const
;
155
161
virtual
bool
accept
(vector<int>
id
);
162
169
virtual
unsigned
int
decayMode
(vector<int>
id
);
170
177
virtual
void
dataBaseOutput
(ofstream & os,
bool
header,
bool
create)
const
;
178
179
protected
:
180
187
virtual
IBPtr
clone
()
const
{
return
new_ptr(*
this
);}
188
193
virtual
IBPtr
fullclone
()
const
{
return
new_ptr(*
this
);}
195
196
private
:
197
201
TwoPionPhotonCurrent
&
operator=
(
const
TwoPionPhotonCurrent
&) =
delete
;
202
203
private
:
204
210
complex<InvEnergy>
FFunction
(Energy2 q2)
const
{
211
complex<InvEnergy2> output(
ZERO
);
212
for
(
unsigned
int
ix=0; ix<
_resweights
.size();++ix) {
213
output -=
_resweights
[ix]*
BreitWigner
(q2,ix);
214
}
215
return
output*
_grho
*
_grhoomegapi
*
sqrt
(2.);
216
}
217
225
complex<InvEnergy2>
BreitWigner
(Energy2 q2,
unsigned
int
ires)
const
{
226
static
const
Complex
ii(0.,1.);
227
complex<Energy2> denom;
228
if
(ires<
_rhomasses
.size()) {
229
denom = q2-
_rhomasses
[ires]*
_rhomasses
[ires]+ii*
_rhomasses
[ires]*
_rhowidths
[ires];
230
}
231
else
if
(ires==10) {
232
denom = q2-
_omegamass
*
_omegamass
+ii*
_omegamass
*
_omegawidth
;
233
}
234
else
assert(
false
);
235
return
1./denom;
236
}
237
238
private
:
239
243
Energy2
_grho
;
244
248
InvEnergy
_grhoomegapi
;
249
253
vector<double>
_resweights
;
254
258
vector<Energy>
_rhomasses
;
259
263
vector<Energy>
_rhowidths
;
264
268
Energy
_omegamass
;
269
273
Energy
_omegawidth
;
274
279
Energy
_intmass
;
280
285
Energy
_intwidth
;
286
287
};
288
289
}
290
291
292
#endif
/* HERWIG_TwoPionPhotonCurrent_H */
Herwig::DecayIntegrator::MEOption
MEOption
Enum for the matrix element option.
Definition:
DecayIntegrator.h:72
Herwig::PhaseSpaceChannel
This class is designed to store the information needed for a given phase-space channel for use by the...
Definition:
PhaseSpaceChannel.h:52
Herwig::TwoPionPhotonCurrent
This class implements the decay current for via an intermediate .
Definition:
TwoPionPhotonCurrent.h:60
Herwig::TwoPionPhotonCurrent::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Definition:
TwoPionPhotonCurrent.h:187
Herwig::TwoPionPhotonCurrent::_omegawidth
Energy _omegawidth
The width.
Definition:
TwoPionPhotonCurrent.h:273
Herwig::TwoPionPhotonCurrent::_intmass
Energy _intmass
Mass for the intermediate in the phase-space, this is a technical parameter to improve the phase-spac...
Definition:
TwoPionPhotonCurrent.h:279
Herwig::TwoPionPhotonCurrent::current
virtual vector< LorentzPolarizationVectorE > current(tcPDPtr resonance, FlavourInfo flavour, const int imode, const int ichan, Energy &scale, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, DecayIntegrator::MEOption meopt) const
Hadronic current.
Herwig::TwoPionPhotonCurrent::TwoPionPhotonCurrent
TwoPionPhotonCurrent()
Default constructor.
Herwig::TwoPionPhotonCurrent::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::TwoPionPhotonCurrent::_resweights
vector< double > _resweights
Weights of the different rho resonances in the current.
Definition:
TwoPionPhotonCurrent.h:253
Herwig::TwoPionPhotonCurrent::_grhoomegapi
InvEnergy _grhoomegapi
Coupling of the rho to the omega and a pion, .
Definition:
TwoPionPhotonCurrent.h:248
Herwig::TwoPionPhotonCurrent::constructSpinInfo
virtual void constructSpinInfo(ParticleVector decay) const
Construct the SpinInfo for the decay products.
Herwig::TwoPionPhotonCurrent::Init
static void Init()
Standard Init function used to initialize the interfaces.
Herwig::TwoPionPhotonCurrent::BreitWigner
complex< InvEnergy2 > BreitWigner(Energy2 q2, unsigned int ires) const
Fixed width Breit wigner.
Definition:
TwoPionPhotonCurrent.h:225
Herwig::TwoPionPhotonCurrent::decayMode
virtual unsigned int decayMode(vector< int > id)
Return the decay mode number for a given set of particles in the current.
Herwig::TwoPionPhotonCurrent::_rhowidths
vector< Energy > _rhowidths
Widths of the resonances.
Definition:
TwoPionPhotonCurrent.h:263
Herwig::TwoPionPhotonCurrent::_omegamass
Energy _omegamass
The mass.
Definition:
TwoPionPhotonCurrent.h:268
Herwig::TwoPionPhotonCurrent::FFunction
complex< InvEnergy > FFunction(Energy2 q2) const
Calculate the function at a given scale.
Definition:
TwoPionPhotonCurrent.h:210
Herwig::TwoPionPhotonCurrent::accept
virtual bool accept(vector< int > id)
Accept the decay.
Herwig::TwoPionPhotonCurrent::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition:
TwoPionPhotonCurrent.h:193
Herwig::TwoPionPhotonCurrent::operator=
TwoPionPhotonCurrent & operator=(const TwoPionPhotonCurrent &)=delete
Private and non-existent assignment operator.
Herwig::TwoPionPhotonCurrent::_rhomasses
vector< Energy > _rhomasses
Masses of the resonances.
Definition:
TwoPionPhotonCurrent.h:258
Herwig::TwoPionPhotonCurrent::_grho
Energy2 _grho
Coupling of the rho to the photon, .
Definition:
TwoPionPhotonCurrent.h:243
Herwig::TwoPionPhotonCurrent::createMode
virtual bool createMode(int icharge, tcPDPtr resonance, FlavourInfo flavour, unsigned int imode, PhaseSpaceModePtr mode, unsigned int iloc, int ires, PhaseSpaceChannel phase, Energy upp)
Complete the construction of the decay mode for integration.classes inheriting from this one.
Herwig::TwoPionPhotonCurrent::dataBaseOutput
virtual void dataBaseOutput(ofstream &os, bool header, bool create) const
Output the setup information for the particle database.
Herwig::TwoPionPhotonCurrent::_intwidth
Energy _intwidth
Width for the intermediate in the phase-space, this is a technical parameter to improve the phase-spa...
Definition:
TwoPionPhotonCurrent.h:285
Herwig::TwoPionPhotonCurrent::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::TwoPionPhotonCurrent::particles
virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia)
The particles produced by the current.
Herwig::WeakCurrent
The WeakCurrent class is the base class for the hadronic currents produced in weak decays.
Definition:
WeakCurrent.h:59
ThePEG::PersistentIStream
ThePEG::PersistentOStream
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG::Helicity::outgoing
outgoing
ThePEG
ThePEG::sqrt
double sqrt(int x)
ThePEG::Complex
std::complex< double > Complex
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::tPDVector
vector< tPDPtr > tPDVector
ThePEG::ParticleVector
vector< PPtr > ParticleVector
ThePEG::ZERO
constexpr ZeroUnit ZERO
ThePEG::tcPDPtr
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
Herwig::FlavourInfo
Definition:
IsoSpin.h:46
Generated on Thu Jun 20 2024 17:50:52 for Herwig by
1.9.6