herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
Decay
WeakCurrents
ThreePionDefaultCurrent.h
1
// -*- C++ -*-
2
//
3
// ThreePionDefaultCurrent.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_ThreePionDefaultCurrent_H
10
#define HERWIG_ThreePionDefaultCurrent_H
11
//
12
// This is the declaration of the ThreePionDefaultCurrent class.
13
//
14
#include "WeakCurrent.h"
15
#include "Herwig/Utilities/Interpolator.h"
16
#include "Herwig/Utilities/Kinematics.h"
17
#include "ThePEG/StandardModel/StandardModelBase.h"
18
#include "Herwig/Decay/ResonanceHelpers.h"
19
#include <numeric>
20
21
namespace
Herwig
{
22
using namespace
ThePEG
;
23
43
class
ThreePionDefaultCurrent
:
public
WeakCurrent
{
44
49
friend
class
Defaulta1MatrixElement
;
50
51
public
:
52
56
ThreePionDefaultCurrent
();
57
71
virtual
vector<LorentzPolarizationVectorE>
72
current
(
tcPDPtr
resonance,
73
FlavourInfo
flavour,
74
const
int
imode,
const
int
ichan,Energy & scale,
75
const
tPDVector
&
outgoing
,
76
const
vector<Lorentz5Momentum> & momenta,
77
DecayIntegrator::MEOption
meopt)
const
;
78
84
virtual
bool
accept
(vector<int>
id
);
85
92
virtual
unsigned
int
decayMode
(vector<int>
id
);
93
102
virtual
tPDVector
particles
(
int
icharge,
unsigned
int
imode,
int
iq,
int
ia);
103
104
public
:
105
112
void
persistentOutput
(
PersistentOStream
& os)
const
;
113
119
void
persistentInput
(
PersistentIStream
& is,
int
version);
121
125
static
void
Init
();
126
127
public
:
128
149
virtual
bool
createMode
(
int
icharge,
tcPDPtr
resonance,
150
FlavourInfo
flavour,
151
unsigned
int
imode,PhaseSpaceModePtr mode,
152
unsigned
int
iloc,
int
ires,
153
PhaseSpaceChannel
phase, Energy upp );
155
162
virtual
void
dataBaseOutput
(ofstream & os,
bool
header,
bool
create)
const
;
163
176
double
threeBodyMatrixElement
(
const
int
imode,
const
Energy2 q2,
177
const
Energy2 s3,
const
Energy2 s2,
178
const
Energy2 s1,
const
Energy m1,
179
const
Energy m2,
const
Energy m3)
const
;
180
protected
:
181
188
virtual
IBPtr
clone
()
const
{
return
new_ptr(*
this
);}
189
194
virtual
IBPtr
fullclone
()
const
{
return
new_ptr(*
this
);}
196
197
protected
:
198
206
virtual
void
doinit
();
207
211
virtual
void
doinitrun
();
212
216
virtual
void
doupdate
();
218
219
private
:
220
224
ThreePionDefaultCurrent
&
operator=
(
const
ThreePionDefaultCurrent
&) =
delete
;
225
226
private
:
227
234
Complex
BrhoF123
(Energy2 q2,
int
ires)
const
{
235
if
(ires>=
int
(
_rhoF123wgts
.size()))
return
0.;
236
Complex
output(0.);
237
Complex
norm = std::accumulate(
_rhoF123wgts
.begin(),
238
_rhoF123wgts
.end(),
Complex
(0.));
239
unsigned
int
imin=0,imax=
_rhoF123wgts
.size();
240
if
(ires>0) {
241
imin=ires;
242
imax=imin+1;
243
}
244
for
(
unsigned
int
ix=imin;ix<imax;++ix)
245
output+=
_rhoF123wgts
[ix]*Resonance::BreitWignerPWave(q2,
_rhoF123masses
[ix],
246
_rhoF123widths
[ix],
_mpi
,
_mpi
);
247
return
output/norm;
248
}
249
255
Complex
a1BreitWigner
(Energy2 q2)
const
{
256
if
(!
_a1opt
)
257
return
Resonance::BreitWignera1(q2,
_a1mass
,
_a1width
);
258
Complex
ii(0.,1.);
259
Energy2 m2(
_a1mass
*
_a1mass
);
260
Energy q(
sqrt
(q2));
261
Energy width = (*_a1runinter)(q2);
262
return
m2/(m2-q2-ii*q*width);
263
}
264
269
void
inita1Width
(
int
iopt);
270
271
private
:
272
277
vector<double>
_rhoF123wgts
;
278
282
vector<Energy>
_a1runwidth
;
283
287
vector<Energy2>
_a1runq2
;
288
292
Interpolator<Energy,Energy2>::Ptr
_a1runinter
;
293
297
bool
_initializea1
;
298
302
Energy
_a1mass
;
303
307
Energy
_a1width
;
308
312
Energy
_fpi
;
313
317
Energy
_mpi
;
318
322
vector<Energy>
_rhoF123masses
;
323
327
vector<Energy>
_rhoF123widths
;
328
332
bool
_a1opt
;
333
337
Energy
_maxmass
;
338
342
Energy
_maxcalc
;
343
344
};
345
346
}
347
348
#endif
/* HERWIG_ThreePionDefaultCurrent_H */
Herwig::DecayIntegrator::MEOption
MEOption
Enum for the matrix element option.
Definition:
DecayIntegrator.h:72
Herwig::Interpolator::Ptr
Ptr< Interpolator< ValT, ArgT > >::pointer Ptr
Pointer to an Interpolator.
Definition:
Interpolator.h:38
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::ThreePionDefaultCurrent
The ThreePionDefaultCurrent class implements the currents from Z.Phys.C58:445 (1992),...
Definition:
ThreePionDefaultCurrent.h:43
Herwig::ThreePionDefaultCurrent::doinit
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
Herwig::ThreePionDefaultCurrent::operator=
ThreePionDefaultCurrent & operator=(const ThreePionDefaultCurrent &)=delete
Private and non-existent assignment operator.
Herwig::ThreePionDefaultCurrent::_fpi
Energy _fpi
The pion decay constant, .
Definition:
ThreePionDefaultCurrent.h:312
Herwig::ThreePionDefaultCurrent::_rhoF123wgts
vector< double > _rhoF123wgts
Parameters for the Breit-Wigner in the form factors.
Definition:
ThreePionDefaultCurrent.h:277
Herwig::ThreePionDefaultCurrent::_a1width
Energy _a1width
The width of the resonances.
Definition:
ThreePionDefaultCurrent.h:307
Herwig::ThreePionDefaultCurrent::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::ThreePionDefaultCurrent::_a1runwidth
vector< Energy > _a1runwidth
The width for the running width calculation.
Definition:
ThreePionDefaultCurrent.h:282
Herwig::ThreePionDefaultCurrent::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Definition:
ThreePionDefaultCurrent.h:188
Herwig::ThreePionDefaultCurrent::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::ThreePionDefaultCurrent::threeBodyMatrixElement
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 for the decay to calculate the running width
Herwig::ThreePionDefaultCurrent::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::ThreePionDefaultCurrent::doinitrun
virtual void doinitrun()
Initialize this object to the begining of the run phase.
Herwig::ThreePionDefaultCurrent::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::ThreePionDefaultCurrent::_maxcalc
Energy _maxcalc
The maximum mass when the running width was calculated.
Definition:
ThreePionDefaultCurrent.h:342
Herwig::ThreePionDefaultCurrent::_maxmass
Energy _maxmass
The maximum mass of the hadronic system.
Definition:
ThreePionDefaultCurrent.h:337
Herwig::ThreePionDefaultCurrent::BrhoF123
Complex BrhoF123(Energy2 q2, int ires) const
The Breit-Wigner for the form factors.
Definition:
ThreePionDefaultCurrent.h:234
Herwig::ThreePionDefaultCurrent::a1BreitWigner
Complex a1BreitWigner(Energy2 q2) const
Breit-Wigner
Definition:
ThreePionDefaultCurrent.h:255
Herwig::ThreePionDefaultCurrent::dataBaseOutput
virtual void dataBaseOutput(ofstream &os, bool header, bool create) const
Output the setup information for the particle database.
Herwig::ThreePionDefaultCurrent::_rhoF123widths
vector< Energy > _rhoF123widths
The widths for the form factors.
Definition:
ThreePionDefaultCurrent.h:327
Herwig::ThreePionDefaultCurrent::_rhoF123masses
vector< Energy > _rhoF123masses
The masses for the form factors.
Definition:
ThreePionDefaultCurrent.h:322
Herwig::ThreePionDefaultCurrent::_initializea1
bool _initializea1
Initialize the running width.
Definition:
ThreePionDefaultCurrent.h:297
Herwig::ThreePionDefaultCurrent::_a1mass
Energy _a1mass
The mass of the resonances.
Definition:
ThreePionDefaultCurrent.h:302
Herwig::ThreePionDefaultCurrent::Init
static void Init()
Standard Init function used to initialize the interfaces.
Herwig::ThreePionDefaultCurrent::_mpi
Energy _mpi
The pion mass.
Definition:
ThreePionDefaultCurrent.h:317
Herwig::ThreePionDefaultCurrent::particles
virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia)
The particles produced by the current.
Herwig::ThreePionDefaultCurrent::Defaulta1MatrixElement
friend class Defaulta1MatrixElement
The matrix element for the running width is a friend to keep some members private.
Definition:
ThreePionDefaultCurrent.h:49
Herwig::ThreePionDefaultCurrent::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition:
ThreePionDefaultCurrent.h:194
Herwig::ThreePionDefaultCurrent::decayMode
virtual unsigned int decayMode(vector< int > id)
Return the decay mode number for a given set of particles in the current.
Herwig::ThreePionDefaultCurrent::accept
virtual bool accept(vector< int > id)
Accept the decay.
Herwig::ThreePionDefaultCurrent::ThreePionDefaultCurrent
ThreePionDefaultCurrent()
Default constructor.
Herwig::ThreePionDefaultCurrent::_a1opt
bool _a1opt
Option for the width.
Definition:
ThreePionDefaultCurrent.h:332
Herwig::ThreePionDefaultCurrent::_a1runq2
vector< Energy2 > _a1runq2
The for the running width calculation.
Definition:
ThreePionDefaultCurrent.h:287
Herwig::ThreePionDefaultCurrent::_a1runinter
Interpolator< Energy, Energy2 >::Ptr _a1runinter
The interpolator for the running width calculation.
Definition:
ThreePionDefaultCurrent.h:292
Herwig::ThreePionDefaultCurrent::doupdate
virtual void doupdate()
Check sanity of the object during the setup phase.
Herwig::ThreePionDefaultCurrent::inita1Width
void inita1Width(int iopt)
Initialize the running width.
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::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