herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
Decay
WeakCurrents
OneKaonTwoPionDefaultCurrent.h
1
// -*- C++ -*-
2
//
3
// OneKaonTwoPionDefaultCurrent.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_OneKaonTwoPionDefaultCurrent_H
10
#define HERWIG_OneKaonTwoPionDefaultCurrent_H
11
//
12
// This is the declaration of the OneKaonTwoPionDefaultCurrent 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
OneKaonTwoPionDefaultCurrent
:
public
WeakCurrent
{
44
45
public
:
46
50
OneKaonTwoPionDefaultCurrent
();
51
65
virtual
vector<LorentzPolarizationVectorE>
66
current
(
tcPDPtr
resonance,
67
FlavourInfo
flavour,
68
const
int
imode,
const
int
ichan,Energy & scale,
69
const
tPDVector
&
outgoing
,
70
const
vector<Lorentz5Momentum> & momenta,
71
DecayIntegrator::MEOption
meopt)
const
;
72
78
virtual
bool
accept
(vector<int>
id
);
79
86
virtual
unsigned
int
decayMode
(vector<int>
id
);
87
96
virtual
tPDVector
particles
(
int
icharge,
unsigned
int
imode,
int
iq,
int
ia);
97
98
public
:
99
106
void
persistentOutput
(
PersistentOStream
& os)
const
;
107
113
void
persistentInput
(
PersistentIStream
& is,
int
version);
115
119
static
void
Init
();
120
121
public
:
122
143
virtual
bool
createMode
(
int
icharge,
tcPDPtr
resonance,
144
FlavourInfo
flavour,
145
unsigned
int
imode,PhaseSpaceModePtr mode,
146
unsigned
int
iloc,
int
ires,
147
PhaseSpaceChannel
phase, Energy upp );
149
156
virtual
void
dataBaseOutput
(ofstream & os,
bool
header,
bool
create)
const
;
157
158
protected
:
159
166
virtual
IBPtr
clone
()
const
{
return
new_ptr(*
this
);}
167
172
virtual
IBPtr
fullclone
()
const
{
return
new_ptr(*
this
);}
174
175
protected
:
176
182
virtual
void
doinit
();
183
184
private
:
185
189
OneKaonTwoPionDefaultCurrent
&
operator=
(
const
OneKaonTwoPionDefaultCurrent
&) =
delete
;
190
191
private
:
192
199
Complex
BrhoF123
(Energy2 q2,
int
ires)
const
{
200
if
(ires>=
int
(
_rhoF123wgts
.size()))
return
0.;
201
Complex
output(0.);
202
Complex
norm = std::accumulate(
_rhoF123wgts
.begin(),
203
_rhoF123wgts
.end(),
Complex
(0.));
204
unsigned
int
imin=0,imax=
_rhoF123wgts
.size();
205
if
(ires>0) {
206
imin=ires;
207
imax=imin+1;
208
}
209
for
(
unsigned
int
ix=imin;ix<imax;++ix)
210
output+=
_rhoF123wgts
[ix]*Resonance::BreitWignerPWave(q2,
_rhoF123masses
[ix],
211
_rhoF123widths
[ix],
_mpi
,
_mpi
);
212
return
output/norm;
213
}
214
221
Complex
BKstarF123
(Energy2 q2,
int
ires)
const
{
222
if
(ires>=
int
(
_kstarF123wgts
.size()))
return
0.;
223
Complex
output(0.);
224
Complex
norm = std::accumulate(
_kstarF123wgts
.begin(),
225
_kstarF123wgts
.end(),
Complex
(0.));
226
unsigned
int
imin=0,imax=
_kstarF123wgts
.size();
227
if
(ires>0) {
228
imin=ires;
229
imax=imin+1;
230
}
231
assert(imax<=
_kstarF123wgts
.size());
232
for
(
unsigned
int
ix=imin;ix<imax;++ix)
233
output+=
_kstarF123wgts
[ix]*Resonance::BreitWignerPWave(q2,
_kstarF123masses
[ix],
234
_kstarF123widths
[ix],
_mpi
,
_mK
);
235
return
output/norm;
236
}
237
245
Complex
FKrho
(Energy2 si,Energy2 sj,
int
ires)
const
{
246
Complex
output;
247
if
(ires<0)
248
output =
_rhoKstarwgt
*
BKstarF123
(si,-1)+
BrhoF123
(sj,-1);
249
else
if
(ires%2==0)
250
output=
_rhoKstarwgt
*
BKstarF123
(si,ires/2);
251
else
if
(ires%2==1)
252
output=
BrhoF123
(sj,ires/2);
253
return
output/(1.+
_rhoKstarwgt
);
254
}
255
256
private
:
257
262
vector<double>
_rhoF123wgts
;
263
268
vector<double>
_kstarF123wgts
;
269
274
vector<double>
_kstarF5wgts
;
275
279
double
_rhoKstarwgt
;
280
284
Energy
_k1mass
;
285
289
Energy
_k1width
;
290
294
Energy
_fpi
;
295
299
Energy
_mpi
;
300
304
Energy
_mK
;
305
309
vector<Energy>
_rhoF123masses
;
310
314
vector<Energy>
_rhoF123widths
;
315
319
vector<Energy>
_kstarF123masses
;
320
324
vector<Energy>
_kstarF5masses
;
325
329
vector<Energy>
_kstarF123widths
;
330
334
vector<Energy>
_kstarF5widths
;
335
};
336
337
}
338
339
#endif
/* HERWIG_OneKaonTwoPionDefaultCurrent_H */
Herwig::DecayIntegrator::MEOption
MEOption
Enum for the matrix element option.
Definition:
DecayIntegrator.h:72
Herwig::OneKaonTwoPionDefaultCurrent
The OneKaonTwoPionDefaultCurrent class implements the currents from Z.Phys.C58:445 (1992),...
Definition:
OneKaonTwoPionDefaultCurrent.h:43
Herwig::OneKaonTwoPionDefaultCurrent::BrhoF123
Complex BrhoF123(Energy2 q2, int ires) const
The Breit-Wigner for the form factors.
Definition:
OneKaonTwoPionDefaultCurrent.h:199
Herwig::OneKaonTwoPionDefaultCurrent::_rhoF123wgts
vector< double > _rhoF123wgts
Parameters for the Breit-Wigner in the form factors.
Definition:
OneKaonTwoPionDefaultCurrent.h:262
Herwig::OneKaonTwoPionDefaultCurrent::doinit
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
Herwig::OneKaonTwoPionDefaultCurrent::_rhoF123widths
vector< Energy > _rhoF123widths
The widths for the form factors.
Definition:
OneKaonTwoPionDefaultCurrent.h:314
Herwig::OneKaonTwoPionDefaultCurrent::operator=
OneKaonTwoPionDefaultCurrent & operator=(const OneKaonTwoPionDefaultCurrent &)=delete
Private and non-existent assignment operator.
Herwig::OneKaonTwoPionDefaultCurrent::_mK
Energy _mK
The kaon mass.
Definition:
OneKaonTwoPionDefaultCurrent.h:304
Herwig::OneKaonTwoPionDefaultCurrent::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::OneKaonTwoPionDefaultCurrent::Init
static void Init()
Standard Init function used to initialize the interfaces.
Herwig::OneKaonTwoPionDefaultCurrent::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition:
OneKaonTwoPionDefaultCurrent.h:172
Herwig::OneKaonTwoPionDefaultCurrent::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::OneKaonTwoPionDefaultCurrent::_rhoF123masses
vector< Energy > _rhoF123masses
The masses for the form factors.
Definition:
OneKaonTwoPionDefaultCurrent.h:309
Herwig::OneKaonTwoPionDefaultCurrent::_kstarF123masses
vector< Energy > _kstarF123masses
The masses for the form factors.
Definition:
OneKaonTwoPionDefaultCurrent.h:319
Herwig::OneKaonTwoPionDefaultCurrent::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::OneKaonTwoPionDefaultCurrent::particles
virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia)
The particles produced by the current.
Herwig::OneKaonTwoPionDefaultCurrent::accept
virtual bool accept(vector< int > id)
Accept the decay.
Herwig::OneKaonTwoPionDefaultCurrent::_k1width
Energy _k1width
The width of the resonances.
Definition:
OneKaonTwoPionDefaultCurrent.h:289
Herwig::OneKaonTwoPionDefaultCurrent::_kstarF5widths
vector< Energy > _kstarF5widths
The widths for the form factors.
Definition:
OneKaonTwoPionDefaultCurrent.h:334
Herwig::OneKaonTwoPionDefaultCurrent::decayMode
virtual unsigned int decayMode(vector< int > id)
Return the decay mode number for a given set of particles in the current.
Herwig::OneKaonTwoPionDefaultCurrent::OneKaonTwoPionDefaultCurrent
OneKaonTwoPionDefaultCurrent()
Default constructor.
Herwig::OneKaonTwoPionDefaultCurrent::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Definition:
OneKaonTwoPionDefaultCurrent.h:166
Herwig::OneKaonTwoPionDefaultCurrent::_kstarF123widths
vector< Energy > _kstarF123widths
The widths for the form factors.
Definition:
OneKaonTwoPionDefaultCurrent.h:329
Herwig::OneKaonTwoPionDefaultCurrent::_kstarF5masses
vector< Energy > _kstarF5masses
The masses for the form factors.
Definition:
OneKaonTwoPionDefaultCurrent.h:324
Herwig::OneKaonTwoPionDefaultCurrent::_k1mass
Energy _k1mass
The mass of the resonances.
Definition:
OneKaonTwoPionDefaultCurrent.h:284
Herwig::OneKaonTwoPionDefaultCurrent::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::OneKaonTwoPionDefaultCurrent::_kstarF123wgts
vector< double > _kstarF123wgts
Parameters for the Breit-Wigner in the form factors.
Definition:
OneKaonTwoPionDefaultCurrent.h:268
Herwig::OneKaonTwoPionDefaultCurrent::_rhoKstarwgt
double _rhoKstarwgt
The relative weight of the and where needed.
Definition:
OneKaonTwoPionDefaultCurrent.h:279
Herwig::OneKaonTwoPionDefaultCurrent::dataBaseOutput
virtual void dataBaseOutput(ofstream &os, bool header, bool create) const
Output the setup information for the particle database.
Herwig::OneKaonTwoPionDefaultCurrent::_fpi
Energy _fpi
The pion decay constant, .
Definition:
OneKaonTwoPionDefaultCurrent.h:294
Herwig::OneKaonTwoPionDefaultCurrent::BKstarF123
Complex BKstarF123(Energy2 q2, int ires) const
The Breit-Wigner for the form factors.
Definition:
OneKaonTwoPionDefaultCurrent.h:221
Herwig::OneKaonTwoPionDefaultCurrent::FKrho
Complex FKrho(Energy2 si, Energy2 sj, int ires) const
Mixed Breit Wigner for the form factor.
Definition:
OneKaonTwoPionDefaultCurrent.h:245
Herwig::OneKaonTwoPionDefaultCurrent::_kstarF5wgts
vector< double > _kstarF5wgts
Parameters for the Breit-Wigner in the form factors.
Definition:
OneKaonTwoPionDefaultCurrent.h:274
Herwig::OneKaonTwoPionDefaultCurrent::_mpi
Energy _mpi
The pion mass.
Definition:
OneKaonTwoPionDefaultCurrent.h:299
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::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::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