EvtGen
2.2.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
Toggle main menu visibility
Loading...
Searching...
No Matches
src
EvtGenBase
EvtSemiLeptonicScalarAmp.cpp
Go to the documentation of this file.
1
2
/***********************************************************************
3
* Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4
* *
5
* This file is part of EvtGen. *
6
* *
7
* EvtGen is free software: you can redistribute it and/or modify *
8
* it under the terms of the GNU General Public License as published by *
9
* the Free Software Foundation, either version 3 of the License, or *
10
* (at your option) any later version. *
11
* *
12
* EvtGen is distributed in the hope that it will be useful, *
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15
* GNU General Public License for more details. *
16
* *
17
* You should have received a copy of the GNU General Public License *
18
* along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19
***********************************************************************/
20
21
#include "
EvtGenBase/EvtSemiLeptonicScalarAmp.hh
"
22
23
#include "
EvtGenBase/EvtAmp.hh
"
24
#include "
EvtGenBase/EvtDiracSpinor.hh
"
25
#include "
EvtGenBase/EvtGenKine.hh
"
26
#include "
EvtGenBase/EvtId.hh
"
27
#include "
EvtGenBase/EvtPDL.hh
"
28
#include "
EvtGenBase/EvtParticle.hh
"
29
#include "
EvtGenBase/EvtReport.hh
"
30
#include "
EvtGenBase/EvtSemiLeptonicFF.hh
"
31
#include "
EvtGenBase/EvtTensor4C.hh
"
32
#include "
EvtGenBase/EvtVector4C.hh
"
33
34
void
EvtSemiLeptonicScalarAmp::CalcAmp
(
EvtParticle
* parent,
EvtAmp
& amp,
35
EvtSemiLeptonicFF
* FormFactors )
36
{
37
static
const
EvtId
EM =
EvtPDL::getId
(
"e-"
);
38
static
const
EvtId
MUM =
EvtPDL::getId
(
"mu-"
);
39
static
const
EvtId
TAUM =
EvtPDL::getId
(
"tau-"
);
40
static
const
EvtId
EP =
EvtPDL::getId
(
"e+"
);
41
static
const
EvtId
MUP =
EvtPDL::getId
(
"mu+"
);
42
static
const
EvtId
TAUP =
EvtPDL::getId
(
"tau+"
);
43
44
//Add the lepton and neutrino 4 momenta to find q2
45
46
EvtVector4R
q = parent->
getDaug
( 1 )->
getP4
() + parent->
getDaug
( 2 )->
getP4
();
47
double
q2 = ( q.
mass2
() );
48
49
double
fpf, f0f;
50
double
mesonmass = parent->
getDaug
( 0 )->
mass
();
51
double
parentmass = parent->
mass
();
52
53
FormFactors->
getscalarff
( parent->
getId
(), parent->
getDaug
( 0 )->
getId
(),
54
q2, mesonmass, &fpf, &f0f );
55
56
EvtVector4R
p4b;
57
p4b.
set
( parent->
mass
(), 0.0, 0.0, 0.0 );
58
EvtVector4R
p4meson = parent->
getDaug
( 0 )->
getP4
();
59
double
mdiffoverq2;
60
mdiffoverq2 = parentmass * parentmass - mesonmass * mesonmass;
61
mdiffoverq2 = mdiffoverq2 / q2;
62
63
EvtVector4C
l1, l2;
64
65
EvtId
l_num = parent->
getDaug
( 1 )->
getId
();
66
EvtVector4C
tds;
67
68
if
( l_num == EM || l_num == MUM || l_num == TAUM ) {
69
tds =
EvtVector4C
(
70
fpf * ( p4b + p4meson - ( mdiffoverq2 * ( p4b - p4meson ) ) ) +
71
+f0f * mdiffoverq2 * ( p4b - p4meson ) );
72
73
l1 =
EvtLeptonVACurrent
( parent->
getDaug
( 1 )->
spParent
( 0 ),
74
parent->
getDaug
( 2 )->
spParentNeutrino
() );
75
l2 =
EvtLeptonVACurrent
( parent->
getDaug
( 1 )->
spParent
( 1 ),
76
parent->
getDaug
( 2 )->
spParentNeutrino
() );
77
}
else
{
78
if
( l_num == EP || l_num == MUP || l_num == TAUP ) {
79
tds =
EvtVector4C
(
80
fpf * ( p4b + p4meson - ( mdiffoverq2 * ( p4b - p4meson ) ) ) +
81
+f0f * mdiffoverq2 * ( p4b - p4meson ) );
82
83
l1 =
EvtLeptonVACurrent
( parent->
getDaug
( 2 )->
spParentNeutrino
(),
84
parent->
getDaug
( 1 )->
spParent
( 0 ) );
85
l2 =
EvtLeptonVACurrent
( parent->
getDaug
( 2 )->
spParentNeutrino
(),
86
parent->
getDaug
( 1 )->
spParent
( 1 ) );
87
}
else
{
88
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
89
<<
"dfnb89agngri wrong lepton number\n"
;
90
}
91
}
92
93
amp.
vertex
( 0, l1 * tds );
94
amp.
vertex
( 1, l2 * tds );
95
}
EvtAmp.hh
EvtLeptonVACurrent
EvtVector4C EvtLeptonVACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
Definition
EvtDiracSpinor.cpp:178
EvtDiracSpinor.hh
EvtGenKine.hh
EvtId.hh
EvtPDL.hh
EvtParticle.hh
EvtReport.hh
EvtGenReport
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
Definition
EvtReport.cpp:32
EVTGEN_ERROR
@ EVTGEN_ERROR
Definition
EvtReport.hh:49
EvtSemiLeptonicFF.hh
EvtSemiLeptonicScalarAmp.hh
EvtTensor4C.hh
EvtVector4C.hh
EvtAmp
Definition
EvtAmp.hh:29
EvtAmp::vertex
void vertex(const EvtComplex &)
Definition
EvtAmp.cpp:453
EvtId
Definition
EvtId.hh:27
EvtPDL::getId
static EvtId getId(const std::string &name)
Definition
EvtPDL.cpp:283
EvtParticle
Definition
EvtParticle.hh:45
EvtParticle::getId
EvtId getId() const
Definition
EvtParticle.cpp:124
EvtParticle::spParentNeutrino
virtual EvtDiracSpinor spParentNeutrino() const
Definition
EvtParticle.cpp:684
EvtParticle::spParent
virtual EvtDiracSpinor spParent(int) const
Definition
EvtParticle.cpp:660
EvtParticle::getP4
const EvtVector4R & getP4() const
Definition
EvtParticle.cpp:144
EvtParticle::getDaug
EvtParticle * getDaug(const int i)
Definition
EvtParticle.hh:173
EvtParticle::mass
double mass() const
Definition
EvtParticle.cpp:159
EvtSemiLeptonicFF
Definition
EvtSemiLeptonicFF.hh:26
EvtSemiLeptonicFF::getscalarff
virtual void getscalarff(EvtId parent, EvtId daught, double t, double mass, double *fpf, double *fmf)=0
EvtSemiLeptonicScalarAmp::CalcAmp
void CalcAmp(EvtParticle *parent, EvtAmp &, EvtSemiLeptonicFF *FormFactors) override
Definition
EvtSemiLeptonicScalarAmp.cpp:34
EvtVector4C
Definition
EvtVector4C.hh:30
EvtVector4R
Definition
EvtVector4R.hh:29
EvtVector4R::mass2
double mass2() const
Definition
EvtVector4R.hh:100
EvtVector4R::set
void set(int i, double d)
Definition
EvtVector4R.hh:168
Generated by
1.17.0