herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.2.1
Decay
WeakCurrents
FivePionCurrent.h
1
// -*- C++ -*-
2
//
3
// FivePionCurrent.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_FivePionCurrent_H
10
#define HERWIG_FivePionCurrent_H
11
//
12
// This is the declaration of the FivePionCurrent class.
13
//
14
15
#include "WeakDecayCurrent.h"
16
#include "ThePEG/Helicity/epsilon.h"
17
18
namespace
Herwig
{
19
20
using namespace
ThePEG
;
21
28
class
FivePionCurrent
:
public
WeakDecayCurrent
{
29
30
public
:
31
35
FivePionCurrent
();
36
53
virtual
bool
createMode(
int
icharge,
unsigned
int
imode,DecayPhaseSpaceModePtr mode,
54
unsigned
int
iloc,
unsigned
int
ires,
55
DecayPhaseSpaceChannelPtr phase,Energy upp);
56
65
virtual
tPDVector
particles(
int
icharge,
unsigned
int
imode,
int
iq,
int
ia);
67
78
virtual
vector<LorentzPolarizationVectorE>
79
current(
const
int
imode,
const
int
ichan,Energy & scale,
80
const
ParticleVector
& decay,
DecayIntegrator::MEOption
meopt)
const
;
81
87
virtual
bool
accept(vector<int>
id
);
88
94
virtual
unsigned
int
decayMode(vector<int>
id
);
95
102
virtual
void
dataBaseOutput(ofstream & os,
bool
header,
bool
create)
const
;
103
104
public
:
105
112
void
persistentOutput(
PersistentOStream
& os)
const
;
113
119
void
persistentInput(
PersistentIStream
& is,
int
version);
121
128
static
void
Init();
129
130
protected
:
131
141
Complex
rhoBreitWigner
(Energy2 scale)
const
{
142
Energy2 m2=
sqr
(_rhomass);
143
return
m2/(m2-scale-
Complex
(0.,1.)*_rhomass*_rhowidth);
144
}
145
150
Complex
a1BreitWigner
(Energy2 scale)
const
{
151
Energy2 m2=
sqr
(_a1mass);
152
return
m2/(m2-scale-
Complex
(0.,1.)*_a1mass*_a1width);
153
}
154
159
Complex
omegaBreitWigner
(Energy2 scale)
const
{
160
Energy2 m2=
sqr
(_omegamass);
161
return
m2/(m2-scale-
Complex
(0.,1.)*_omegamass*_omegawidth);
162
}
163
168
Complex
sigmaBreitWigner
(Energy2 scale)
const
{
169
Energy2 m2=
sqr
(_sigmamass);
170
return
m2/(m2-scale-
Complex
(0.,1.)*_sigmamass*_sigmawidth);
171
}
173
189
LorentzVector<complex<InvEnergy2>
>
190
rhoOmegaCurrent
(
unsigned
int
iopt,
191
const
Lorentz5Momentum & Q,
192
const
Lorentz5Momentum & q1,
193
const
Lorentz5Momentum & q2,
194
const
Lorentz5Momentum & q3,
195
const
Lorentz5Momentum & q4,
196
const
Lorentz5Momentum & q5)
const
{
197
// prefactor
198
complex<InvEnergy7> pre(_preomega*a1BreitWigner(Q.m2())*
199
omegaBreitWigner((q1+q2+q3).m2())*
200
rhoBreitWigner((q4+q5).m2()));
201
// omega piece
202
Complex
omega(-1.);
203
if
(_rhoomega) {
204
if
(iopt==1) omega=rhoBreitWigner((q2+q3).m2());
205
else
if
(iopt==2) omega=rhoBreitWigner((q1+q3).m2());
206
else
if
(iopt==3) omega=rhoBreitWigner((q1+q2).m2());
207
else
208
omega=rhoBreitWigner((q2+q3).m2())+rhoBreitWigner((q1+q3).m2())+
209
rhoBreitWigner((q1+q2).m2());
210
}
211
LorentzVector<complex<Energy3>
> omegacurrent(Helicity::epsilon(q1,q2,q3));
212
LorentzVector<complex<InvEnergy2>
> output =
213
pre * omega * Helicity::epsilon(q4-q5,omegacurrent,Q);
214
return
output;
215
}
216
228
LorentzVector<complex<InvEnergy2>
>
229
a1SigmaCurrent
(
unsigned
int
iopt,
230
const
Lorentz5Momentum & Q,
231
const
Lorentz5Momentum & q1,
232
const
Lorentz5Momentum & q2,
233
const
Lorentz5Momentum & q3,
234
const
Lorentz5Momentum & q4,
235
const
Lorentz5Momentum & q5)
const
{
236
Lorentz5Momentum pa1(q1+q2+q3);pa1.rescaleMass();
237
Energy2 ma12(pa1.m2());
238
complex<InvEnergy3> pre(_presigma*a1BreitWigner(Q.m2())*a1BreitWigner(ma12)*
239
sigmaBreitWigner((q4+q5).m2()));
240
Energy2 pdot[2]={q2*(q1-q3),q1*(q2-q3)};
241
LorentzPolarizationVectorE
rho[2] =
242
{(pdot[0]/ma12*pa1-q1+q3)*rhoBreitWigner((q1+q3).m2()),
243
(pdot[1]/ma12*pa1-q2+q3)*rhoBreitWigner((q2+q3).m2())};
244
LorentzPolarizationVectorE
total;
245
if
(iopt==1) total = rho[0];
246
else
if
(iopt==2) total = rho[1];
247
else
total = rho[0]+rho[1];
248
Complex
qdot = total * Q / Q.
m2
();
249
LorentzPolarizationVectorE
cq(Q);
250
cq = cq * qdot;
251
cq -= total;
252
return
pre * cq;
253
}
255
256
protected
:
257
264
virtual
IBPtr
clone
()
const
{
return
new_ptr(*
this
);}
265
270
virtual
IBPtr
fullclone
()
const
{
return
new_ptr(*
this
);}
272
273
protected
:
274
282
virtual
void
doinit();
284
285
private
:
286
291
FivePionCurrent
& operator=(
const
FivePionCurrent
&) =
delete
;
292
293
private
:
294
302
Energy
_rhomass
;
303
307
Energy
_a1mass
;
308
312
Energy
_omegamass
;
313
317
Energy
_sigmamass
;
318
322
Energy
_rhowidth
;
323
327
Energy
_a1width
;
328
332
Energy
_omegawidth
;
333
337
Energy
_sigmawidth
;
339
343
bool
_localparameters
;
344
348
bool
_rhoomega
;
349
357
Energy2
_c
;
358
362
double
_c0
;
363
367
InvEnergy
_fomegarhopi
;
368
372
double
_grhopipi
;
373
377
Energy
_garhopi
;
378
382
Energy
_faaf
;
383
387
Energy
_ffpipi
;
389
397
InvEnergy7
_preomega
;
398
402
InvEnergy3
_presigma
;
404
};
405
406
}
407
408
#endif
/* HERWIG_FivePionCurrent_H */
ThePEG::PersistentIStream
ThePEG::LorentzVector
Herwig::FivePionCurrent::rhoBreitWigner
Complex rhoBreitWigner(Energy2 scale) const
Methods to calculate the Breit-Wigner distributions for the various mesons.
Definition:
FivePionCurrent.h:141
Herwig::WeakDecayCurrent
The WeakDecayCurrent class is the base class for the hadronic currents produced in weak decays...
Definition:
WeakDecayCurrent.h:57
Herwig::FivePionCurrent
Here is the documentation of the FivePionCurrent class.
Definition:
FivePionCurrent.h:28
Herwig::FivePionCurrent::a1BreitWigner
Complex a1BreitWigner(Energy2 scale) const
Breit-Wigner for the .
Definition:
FivePionCurrent.h:150
ThePEG::Complex
std::complex< double > Complex
Herwig::FivePionCurrent::_localparameters
bool _localparameters
use local values of the particle masses
Definition:
FivePionCurrent.h:343
Herwig::FivePionCurrent::omegaBreitWigner
Complex omegaBreitWigner(Energy2 scale) const
Breit-Wigner for the .
Definition:
FivePionCurrent.h:159
Herwig::FivePionCurrent::_rhowidth
Energy _rhowidth
The width for the .
Definition:
FivePionCurrent.h:322
ThePEG::PersistentOStream
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
Herwig::FivePionCurrent::_c0
double _c0
The parameter.
Definition:
FivePionCurrent.h:362
Herwig::FivePionCurrent::_grhopipi
double _grhopipi
The parameter.
Definition:
FivePionCurrent.h:372
sqr
constexpr auto sqr(const T &x) -> decltype(x *x)
Herwig::FivePionCurrent::_preomega
InvEnergy7 _preomega
Values cached to avoid unnessacary calculations.
Definition:
FivePionCurrent.h:397
Herwig::FivePionCurrent::a1SigmaCurrent
LorentzVector< complex< InvEnergy2 > > a1SigmaCurrent(unsigned int iopt, const Lorentz5Momentum &Q, const Lorentz5Momentum &q1, const Lorentz5Momentum &q2, const Lorentz5Momentum &q3, const Lorentz5Momentum &q4, const Lorentz5Momentum &q5) const
The current.
Definition:
FivePionCurrent.h:229
Herwig::FivePionCurrent::_omegamass
Energy _omegamass
The mass of the for the current.
Definition:
FivePionCurrent.h:312
ThePEG
Herwig::FivePionCurrent::_sigmawidth
Energy _sigmawidth
The width.
Definition:
FivePionCurrent.h:337
Herwig::FivePionCurrent::_a1mass
Energy _a1mass
The mass of the for the current.
Definition:
FivePionCurrent.h:307
Herwig::FivePionCurrent::_rhoomega
bool _rhoomega
Option for the treatment of Breit-Wigners in decay.
Definition:
FivePionCurrent.h:348
Herwig::FivePionCurrent::_c
Energy2 _c
Normalisation parameters for the different currents.
Definition:
FivePionCurrent.h:357
Herwig::FivePionCurrent::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Definition:
FivePionCurrent.h:264
Herwig::FivePionCurrent::_presigma
InvEnergy3 _presigma
Prefactor for the current.
Definition:
FivePionCurrent.h:402
Herwig::DecayIntegrator::MEOption
MEOption
Enum for the matrix element option.
Definition:
DecayIntegrator.h:79
Herwig::FivePionCurrent::_a1width
Energy _a1width
The width.
Definition:
FivePionCurrent.h:327
ThePEG::tPDVector
vector< tPDPtr > tPDVector
Herwig::FivePionCurrent::rhoOmegaCurrent
LorentzVector< complex< InvEnergy2 > > rhoOmegaCurrent(unsigned int iopt, const Lorentz5Momentum &Q, const Lorentz5Momentum &q1, const Lorentz5Momentum &q2, const Lorentz5Momentum &q3, const Lorentz5Momentum &q4, const Lorentz5Momentum &q5) const
Currents for the different channels.
Definition:
FivePionCurrent.h:190
Herwig::FivePionCurrent::_garhopi
Energy _garhopi
The parameter.
Definition:
FivePionCurrent.h:377
Herwig::FivePionCurrent::_rhomass
Energy _rhomass
The masses and widths of the intermediate particles.
Definition:
FivePionCurrent.h:302
Herwig::FivePionCurrent::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition:
FivePionCurrent.h:270
Herwig::FivePionCurrent::_ffpipi
Energy _ffpipi
The parameter.
Definition:
FivePionCurrent.h:387
Herwig::FivePionCurrent::_sigmamass
Energy _sigmamass
The mass of the for the current.
Definition:
FivePionCurrent.h:317
Herwig::FivePionCurrent::_omegawidth
Energy _omegawidth
The width.
Definition:
FivePionCurrent.h:332
Herwig::FivePionCurrent::_faaf
Energy _faaf
The parameter.
Definition:
FivePionCurrent.h:382
Herwig::FivePionCurrent::_fomegarhopi
InvEnergy _fomegarhopi
The parameter.
Definition:
FivePionCurrent.h:367
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG::LorentzVector::m2
Value2 m2() const
ThePEG::ParticleVector
vector< PPtr > ParticleVector
Herwig::FivePionCurrent::sigmaBreitWigner
Complex sigmaBreitWigner(Energy2 scale) const
Breit-Wigner for the .
Definition:
FivePionCurrent.h:168
Generated on Sat Apr 11 2020 14:50:29 for Herwig by
1.8.13