herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
Decay
FormFactors
BtoSGammaKagan.h
1
// -*- C++ -*-
2
//
3
// BtoSGammaKagan.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_BtoSGammaKagan_H
10
#define HERWIG_BtoSGammaKagan_H
11
//
12
// This is the declaration of the BtoSGammaKagan class.
13
//
14
15
#include "Herwig/Utilities/Interpolator.h"
16
#include "BtoSGammaHadronicMass.h"
17
#include "ThePEG/Config/Complex.h"
18
#include "ThePEG/Config/Constants.h"
19
20
namespace
Herwig
{
21
22
using namespace
ThePEG
;
23
using namespace
ThePEG::Constants
;
24
30
class
BtoSGammaKagan
:
public
BtoSGammaHadronicMass
{
31
35
friend
struct
KaganIntegrand
;
36
37
public
:
38
42
BtoSGammaKagan
();
43
51
virtual
Energy
hadronicMass
(Energy mb,Energy mquark);
52
59
virtual
void
dataBaseOutput
(ofstream & os,
bool
header,
bool
create)
const
;
60
61
public
:
62
69
void
persistentOutput
(
PersistentOStream
& os)
const
;
70
76
void
persistentInput
(
PersistentIStream
& is,
int
version);
78
85
static
void
Init
();
86
87
public
:
88
98
double
operator ()
(
double
x)
const
{
99
if
(
_iopt
==0) {
100
double
reg(
realG
(x/
_zratio
)),img(
imagG
(x/
_zratio
));
101
return
16./27.*(1.-x)*(
_zratio
*
_zratio
/x/x*(
sqr
(reg)+
sqr
(img))+
_zratio
/x*reg+0.25);
102
}
103
else
{
104
return
-8./9.*
_zratio
*(
realG
(x/
_zratio
)+0.5*x/
_zratio
);
105
}
106
}
107
typedef
double
ValType;
108
typedef
double
ArgType;
109
114
InvEnergy
smeared
(Energy kp)
const
{
115
InvEnergy fermi =
exponentialFermiFunction
(kp,
_fermilambda
,
_fermia
,
116
_ferminorm
,
_fermilambda1
);
117
if
(
_iopt
==1) fermi *=
KNLO
(
_MB
*
_y
/(
_mb
+kp))*
_MB
/(
_mb
+kp);
118
return
fermi;
119
}
121
122
protected
:
123
130
virtual
IBPtr
clone
()
const
{
return
new_ptr(*
this
);}
131
136
virtual
IBPtr
fullclone
()
const
{
return
new_ptr(*
this
);}
138
139
protected
:
140
148
virtual
void
doinit
();
149
154
virtual
void
doinitrun
();
156
157
private
:
158
163
BtoSGammaKagan
&
operator=
(
const
BtoSGammaKagan
&) =
delete
;
164
165
private
:
166
174
double
Delta
(
double
y,
double
alphaS
)
const
{
175
if
(y>
_ycut
)
return
0.;
176
double
ln(log(1.-y));
177
return
-4./3./
pi
/(1.-y)*
alphaS
*(ln+1.75)*exp(-2.*
alphaS
/3./
pi
*ln*(ln+3.5));
178
}
179
183
double
semiLeptonicf
()
const
{
184
double
z2=
sqr
(
_zratio
);
185
return
1.-8.*
_zratio
*(1.-z2)-
sqr
(z2)-12.*z2*log(
_zratio
);
186
}
187
193
double
s22
(
double
y)
const
{
return
(*
_s22inter
)(y);}
194
200
double
s27
(
double
y)
const
{
return
(*
_s27inter
)(y);}
201
206
double
s77
(
double
y)
const
{
207
if
(y>
_ycut
) y=
_ycut
;
208
return
1./3.*(7.+y*(1.-2.*y)-2.*(1.+y)*log(1.-y));
209
}
210
215
double
s78
(
double
y)
const
{
216
if
(y>
_ycut
) y=
_ycut
;
217
return
8./9.*((1.-y)/y*log(1.-y)+1.+0.25*y*y);
218
}
219
224
double
s88
(
double
y)
const
{
225
double
ratio(
_mb
/
_ms
),y2(
sqr
(y));
226
if
(y>
_ycut
) y=
_ycut
;
227
return
1./27.*(2.*(2.-2.*y+y2)/y*(log(1.-y)+2.*log(ratio))-2.*y2-y-8.*(1.-y)/y);
228
}
229
233
double
realG
(
double
t)
const
{
234
if
(t<4.) {
235
double
at(atan(
sqrt
(t/(4.-t))));
236
return
-2.*
sqr
(at);
237
}
238
else
{
239
double
ln(log(0.5*(
sqrt
(t)+
sqrt
(t-4.))));
240
return
2.*(
sqr
(ln)-0.25*
sqr
(
pi
));
241
}
242
}
243
247
double
imagG
(
double
t)
const
{
248
if
(t<4.)
return
0.;
249
else
return
-2.*
pi
*log(0.5*(
sqrt
(t)+
sqrt
(t-4.)));
250
}
251
256
double
alphaS
(Energy Q) {
257
double
lo(1.-0.5*
_beta0
*
_alphaSZ
/
pi
*log(
_mz
/Q));
258
return
_alphaSZ
/lo*(1.-0.25*
_beta1
/
_beta0
*
_alphaSZ
/
pi
*log(lo)/lo);
259
}
260
264
void
calculateWilsonCoefficients
();
265
269
double
KNLO
(
double
y)
const
{
270
return
_delta
*
Delta
(y,
_alphaSM
)
271
+
_alphaSM
/
pi
*(
s22
(y)*
sqr
(
_c20
)+
s77
(y)*
sqr
(
_c70
)
272
+
s88
(y)*
sqr
(
_c80
)+
s78
(y)*
_c70
*
_c80
273
+
s27
(y)*
_c20
*(
_c70
-
_c80
/3.));
274
}
276
277
private
:
278
279
283
bool
_initialize
;
284
292
Energy
_mt
;
293
297
Energy
_mb
;
298
302
Energy
_mc
;
303
307
Energy
_ms
;
308
312
double
_msovermb
;
313
317
double
_zratio
;
319
323
Energy2
_lambda2
;
324
332
Energy
_mw
;
333
337
Energy
_mz
;
338
342
Energy
_MB
;
344
350
double
_c20
;
351
355
double
_c70
;
356
360
double
_c80
;
361
365
double
_beta0
;
366
370
double
_beta1
;
371
375
double
_alpha
;
376
380
double
_alphaSZ
;
381
385
Energy
_mub
;
386
390
double
_alphaSM
;
391
395
double
_ckm
;
399
double
_delta
;
401
409
Interpolator<double,double>::Ptr
_s22inter
;
410
414
Interpolator<double,double>::Ptr
_s27inter
;
415
419
Interpolator<InvEnergy,Energy>::Ptr
_pmHinter
;
420
424
vector<Energy>
_mHinter
;
425
429
vector<InvEnergy>
_spectrum
;
430
434
InvEnergy
_spectmax
;
435
439
unsigned
int
_maxtry
;
441
449
Energy
_fermilambda
;
450
454
double
_fermia
;
455
459
InvEnergy
_ferminorm
;
460
464
Energy2
_fermilambda1
;
466
474
double
_ycut
;
475
479
double
_y
;
480
484
double
_deltacut
;
485
489
unsigned
int
_nsfunct
;
490
494
unsigned
int
_nspect
;
495
499
unsigned
int
_iopt
;
501
502
};
503
508
struct
KaganIntegrand
{
509
513
KaganIntegrand
(Ptr<BtoSGammaKagan>::pointer in) :
_kagan
(in) {};
514
518
InvEnergy
operator ()
(Energy arg)
const
{
return
_kagan
->smeared(arg);}
520
typedef
InvEnergy
ValType
;
522
typedef
Energy
ArgType
;
523
527
Ptr<BtoSGammaKagan>::pointer
_kagan
;
528
};
529
}
530
531
#endif
/* HERWIG_BtoSGammaKagan_H */
Herwig::BtoSGammaHadronicMass
The BtoSGammaHadronicMass class is the base class for the implementation of models of the hadronic ma...
Definition:
BtoSGammaHadronicMass.h:34
Herwig::BtoSGammaHadronicMass::exponentialFermiFunction
InvEnergy exponentialFermiFunction(Energy scale, Energy lambda, double a, InvEnergy norm, Energy2 lambda1) const
Exponential function of the form, , where taken from hep-ph/9805303.
Definition:
BtoSGammaHadronicMass.h:114
Herwig::BtoSGammaKagan
The BtoSGammaKagan class implements the model of hep-ph/9805303 for the hadronic mass spectrum in de...
Definition:
BtoSGammaKagan.h:30
Herwig::BtoSGammaKagan::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::BtoSGammaKagan::operator()
double operator()(double x) const
Members which return integrands.
Definition:
BtoSGammaKagan.h:98
Herwig::BtoSGammaKagan::BtoSGammaKagan
BtoSGammaKagan()
The default constructor.
Herwig::BtoSGammaKagan::_spectmax
InvEnergy _spectmax
Maximum value of the spectrum for unweighting.
Definition:
BtoSGammaKagan.h:434
Herwig::BtoSGammaKagan::_ckm
double _ckm
The CKM perfactor for the decay.
Definition:
BtoSGammaKagan.h:395
Herwig::BtoSGammaKagan::_alphaSM
double _alphaSM
the strong coupling at the renormalisation scale .
Definition:
BtoSGammaKagan.h:390
Herwig::BtoSGammaKagan::KNLO
double KNLO(double y) const
The function at parton level from hep-ph/9805303.
Definition:
BtoSGammaKagan.h:269
Herwig::BtoSGammaKagan::semiLeptonicf
double semiLeptonicf() const
Kinematic function from semi-leptonic decay for normaalisation.
Definition:
BtoSGammaKagan.h:183
Herwig::BtoSGammaKagan::_nsfunct
unsigned int _nsfunct
Number of points for the interpolation of the s functions.
Definition:
BtoSGammaKagan.h:489
Herwig::BtoSGammaKagan::_mc
Energy _mc
charm quark mass
Definition:
BtoSGammaKagan.h:302
Herwig::BtoSGammaKagan::_mub
Energy _mub
The renormalisation scale.
Definition:
BtoSGammaKagan.h:385
Herwig::BtoSGammaKagan::doinit
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
Herwig::BtoSGammaKagan::_fermia
double _fermia
The power from from hep-ph/9805303.
Definition:
BtoSGammaKagan.h:454
Herwig::BtoSGammaKagan::s77
double s77(double y) const
function from hep-ph/9805303
Definition:
BtoSGammaKagan.h:206
Herwig::BtoSGammaKagan::_c80
double _c80
The leading order coefficient.
Definition:
BtoSGammaKagan.h:360
Herwig::BtoSGammaKagan::dataBaseOutput
virtual void dataBaseOutput(ofstream &os, bool header, bool create) const
Output the setup information for the particle database.
Herwig::BtoSGammaKagan::doinitrun
virtual void doinitrun()
Initialize this object.
Herwig::BtoSGammaKagan::_alphaSZ
double _alphaSZ
The strong coupling at the Z mass.
Definition:
BtoSGammaKagan.h:380
Herwig::BtoSGammaKagan::_delta
double _delta
Pre-factor for the correction term involving .
Definition:
BtoSGammaKagan.h:399
Herwig::BtoSGammaKagan::_beta1
double _beta1
Second -function coefficient.
Definition:
BtoSGammaKagan.h:370
Herwig::BtoSGammaKagan::_c70
double _c70
The leading order coefficient.
Definition:
BtoSGammaKagan.h:355
Herwig::BtoSGammaKagan::_nspect
unsigned int _nspect
Number of points for the interpolation of the spectrum.
Definition:
BtoSGammaKagan.h:494
Herwig::BtoSGammaKagan::_ycut
double _ycut
Techincal parameters for the integration of the spectrum.
Definition:
BtoSGammaKagan.h:474
Herwig::BtoSGammaKagan::_pmHinter
Interpolator< InvEnergy, Energy >::Ptr _pmHinter
Interpolator for the spectrum.
Definition:
BtoSGammaKagan.h:419
Herwig::BtoSGammaKagan::imagG
double imagG(double t) const
The imaginary part of the function from hep-ph/9805303.
Definition:
BtoSGammaKagan.h:247
Herwig::BtoSGammaKagan::_y
double _y
Value of the energy fraction for which the integral is being performed.
Definition:
BtoSGammaKagan.h:479
Herwig::BtoSGammaKagan::_iopt
unsigned int _iopt
The function currently being integrated.
Definition:
BtoSGammaKagan.h:499
Herwig::BtoSGammaKagan::_c20
double _c20
The leading order coefficient.
Definition:
BtoSGammaKagan.h:350
Herwig::BtoSGammaKagan::_deltacut
double _deltacut
Cut-off on the photon energies.
Definition:
BtoSGammaKagan.h:484
Herwig::BtoSGammaKagan::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition:
BtoSGammaKagan.h:136
Herwig::BtoSGammaKagan::_mb
Energy _mb
bottom quark mass
Definition:
BtoSGammaKagan.h:297
Herwig::BtoSGammaKagan::_zratio
double _zratio
The ratio of the charm to bottom quark masses squared, .
Definition:
BtoSGammaKagan.h:317
Herwig::BtoSGammaKagan::s88
double s88(double y) const
function from hep-ph/9805303
Definition:
BtoSGammaKagan.h:224
Herwig::BtoSGammaKagan::_mt
Energy _mt
Quark masses and related parameters.
Definition:
BtoSGammaKagan.h:292
Herwig::BtoSGammaKagan::_fermilambda
Energy _fermilambda
Parameters for the Fermi function.
Definition:
BtoSGammaKagan.h:449
Herwig::BtoSGammaKagan::_initialize
bool _initialize
Initialisation of mass spectrum.
Definition:
BtoSGammaKagan.h:283
Herwig::BtoSGammaKagan::alphaS
double alphaS(Energy Q)
Strong coupling at the scale .
Definition:
BtoSGammaKagan.h:256
Herwig::BtoSGammaKagan::_alpha
double _alpha
The electromagentic coupling.
Definition:
BtoSGammaKagan.h:375
Herwig::BtoSGammaKagan::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::BtoSGammaKagan::_msovermb
double _msovermb
Ratio of the strange quark mass to the bottom quark mass.
Definition:
BtoSGammaKagan.h:312
Herwig::BtoSGammaKagan::_s22inter
Interpolator< double, double >::Ptr _s22inter
Interpolators for the integrate functions and related parameters.
Definition:
BtoSGammaKagan.h:409
Herwig::BtoSGammaKagan::_ms
Energy _ms
strange quark mass
Definition:
BtoSGammaKagan.h:307
Herwig::BtoSGammaKagan::_mw
Energy _mw
Masses of other particles.
Definition:
BtoSGammaKagan.h:332
Herwig::BtoSGammaKagan::s22
double s22(double y) const
function from hep-ph/9805303.
Definition:
BtoSGammaKagan.h:193
Herwig::BtoSGammaKagan::calculateWilsonCoefficients
void calculateWilsonCoefficients()
Calculate the wilson coefficients we need.
Herwig::BtoSGammaKagan::_MB
Energy _MB
Mass of the decaying B meson.
Definition:
BtoSGammaKagan.h:342
Herwig::BtoSGammaKagan::s78
double s78(double y) const
function from hep-ph/9805303
Definition:
BtoSGammaKagan.h:215
Herwig::BtoSGammaKagan::Init
static void Init()
The standard Init function used to initialize the interfaces.
Herwig::BtoSGammaKagan::_mHinter
vector< Energy > _mHinter
Values of for the interpolation of the spectrum.
Definition:
BtoSGammaKagan.h:424
Herwig::BtoSGammaKagan::_fermilambda1
Energy2 _fermilambda1
scale related to the kinetic energy of the b quark.
Definition:
BtoSGammaKagan.h:464
Herwig::BtoSGammaKagan::_beta0
double _beta0
First -function coefficient.
Definition:
BtoSGammaKagan.h:365
Herwig::BtoSGammaKagan::Delta
double Delta(double y, double alphaS) const
The derivative of the Sudakov form-factor from hep-ph/9805303.
Definition:
BtoSGammaKagan.h:174
Herwig::BtoSGammaKagan::_maxtry
unsigned int _maxtry
Maximum number of tries for unweighting.
Definition:
BtoSGammaKagan.h:439
Herwig::BtoSGammaKagan::_mz
Energy _mz
the Z mass
Definition:
BtoSGammaKagan.h:337
Herwig::BtoSGammaKagan::realG
double realG(double t) const
The real part of the function from hep-ph/9805303.
Definition:
BtoSGammaKagan.h:233
Herwig::BtoSGammaKagan::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Definition:
BtoSGammaKagan.h:130
Herwig::BtoSGammaKagan::_ferminorm
InvEnergy _ferminorm
The normalisation from hep-ph/9805303.
Definition:
BtoSGammaKagan.h:459
Herwig::BtoSGammaKagan::s27
double s27(double y) const
function from hep-ph/9805303.
Definition:
BtoSGammaKagan.h:200
Herwig::BtoSGammaKagan::smeared
InvEnergy smeared(Energy kp) const
Operator to return the integrand of the smeared function or Fermi function depending on the value of ...
Definition:
BtoSGammaKagan.h:114
Herwig::BtoSGammaKagan::_s27inter
Interpolator< double, double >::Ptr _s27inter
Interpolator for the function.
Definition:
BtoSGammaKagan.h:414
Herwig::BtoSGammaKagan::operator=
BtoSGammaKagan & operator=(const BtoSGammaKagan &)=delete
The assignment operator is private and must never be called.
Herwig::BtoSGammaKagan::_lambda2
Energy2 _lambda2
The hadronic parameter from hep-ph/9805303.
Definition:
BtoSGammaKagan.h:323
Herwig::BtoSGammaKagan::_spectrum
vector< InvEnergy > _spectrum
Values of the differential rate for the interpolation of the spectrum.
Definition:
BtoSGammaKagan.h:429
Herwig::BtoSGammaKagan::hadronicMass
virtual Energy hadronicMass(Energy mb, Energy mquark)
Returns the hadronic mass.
Herwig::Interpolator::Ptr
Ptr< Interpolator< ValT, ArgT > >::pointer Ptr
Pointer to an Interpolator.
Definition:
Interpolator.h:38
ThePEG::PersistentIStream
ThePEG::PersistentOStream
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG::Constants
ThePEG::Constants::pi
constexpr double pi
ThePEG
ThePEG::sqrt
double sqrt(int x)
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::sqr
constexpr auto sqr(const T &x) -> decltype(x *x)
Herwig::KaganIntegrand
A struct for the integrand which can access the dimensional value member of the BtoSGammaKagan class.
Definition:
BtoSGammaKagan.h:508
Herwig::KaganIntegrand::ArgType
Energy ArgType
Argument type for GaussianIntegrator.
Definition:
BtoSGammaKagan.h:522
Herwig::KaganIntegrand::_kagan
Ptr< BtoSGammaKagan >::pointer _kagan
A pointer to the form factor to supply the integrand.
Definition:
BtoSGammaKagan.h:527
Herwig::KaganIntegrand::ValType
InvEnergy ValType
Return type for GaussianIntegrator.
Definition:
BtoSGammaKagan.h:520
Herwig::KaganIntegrand::KaganIntegrand
KaganIntegrand(Ptr< BtoSGammaKagan >::pointer in)
The constructor.
Definition:
BtoSGammaKagan.h:513
Herwig::KaganIntegrand::operator()
InvEnergy operator()(Energy arg) const
Get the function value.
Definition:
BtoSGammaKagan.h:518
Generated on Thu Jun 20 2024 17:50:52 for Herwig by
1.9.6