EvtGen 2.2.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
Loading...
Searching...
No Matches
EvtMelikhovFF.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
22
23#include "EvtGenBase/EvtId.hh"
24#include "EvtGenBase/EvtPDL.hh"
26
27#include <cmath>
28#include <cstdlib>
29#include <string>
30
32{
33 m_whichfit = int( arg1 + 0.1 );
34}
35
36void EvtMelikhovFF::getvectorff( EvtId parent, EvtId, double t, double mass,
37 double* a1f, double* a2f, double* vf,
38 double* a0f )
39{
40 double ma1( 0.0 ), ra1( 0.0 ), na1( 0.0 );
41 double ma2( 0.0 ), ra2( 0.0 ), na2( 0.0 );
42 double mv( 0.0 ), rv( 0.0 ), nv( 0.0 );
43
44 if ( m_whichfit == 1 ) {
45 ma1 = 7.07;
46 ra1 = 0.27;
47 na1 = 2.65;
48 ma2 = 6.13;
49 ra2 = 0.25;
50 na2 = 2.17;
51 mv = 6.28;
52 rv = 0.30;
53 nv = 2.36;
54 }
55 if ( m_whichfit == 2 ) {
56 ma1 = 6.78;
57 ra1 = 0.20;
58 na1 = 2.65;
59 ma2 = 6.00;
60 ra2 = 0.19;
61 na2 = 2.34;
62 mv = 6.22;
63 rv = 0.20;
64 nv = 2.46;
65 }
66 if ( m_whichfit == 3 ) {
67 ma1 = 6.50;
68 ra1 = 0.21;
69 na1 = 2.70;
70 ma2 = 5.90;
71 ra2 = 0.20;
72 na2 = 2.45;
73 mv = 5.90;
74 rv = 0.21;
75 nv = 2.35;
76 }
77 if ( m_whichfit == 4 ) {
78 ma1 = 5.68;
79 ra1 = 0.29;
80 na1 = 1.67;
81 ma2 = 5.36;
82 ra2 = 0.28;
83 na2 = 1.67;
84 mv = 5.46;
85 rv = 0.29;
86 nv = 1.73;
87 }
88
89 double mb = EvtPDL::getMeanMass( parent );
90 //double w = ((mb*mb)+(mass*mass)-t)/(2.0*mb*mass);
91
92 double melr = mass / mb;
93 double mely = t / ( mb * mb );
94
95 *a1f = ( ( 1.0 + melr * melr - mely ) / ( 1 + melr ) ) * ra1 /
96 pow( 1.0 - ( t / ( ma1 * ma1 ) ), na1 );
97 *a2f = ( 1 + melr ) *
98 ( ( 1.0 - melr * melr - mely ) /
99 ( ( 1 + melr ) * ( 1 + melr ) - mely ) ) *
100 ra2 / pow( 1.0 - ( t / ( ma2 * ma2 ) ), na2 );
101 *vf = ( 1 + melr ) * rv / pow( 1.0 - ( t / ( mv * mv ) ), nv );
102 *a0f = 0.0;
103
104 return;
105}
106
107void EvtMelikhovFF::getscalarff( EvtId, EvtId, double, double, double*, double* )
108{
109 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
110 << "Not implemented :getvectorff in EvtMelikhovFF.\n";
111 ::abort();
112}
113
114void EvtMelikhovFF::gettensorff( EvtId, EvtId, double, double, double*, double*,
115 double*, double* )
116{
117 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
118 << "Not implemented :gettensorff in EvtMelikhovFF.\n";
119 ::abort();
120}
121
122void EvtMelikhovFF::getbaryonff( EvtId, EvtId, double, double, double*, double*,
123 double*, double* )
124{
125 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
126 << "Not implemented :getbaryonff in EvtMelikhovFF.\n";
127 ::abort();
128}
129
130void EvtMelikhovFF::getdiracff( EvtId, EvtId, double, double, double*, double*,
131 double*, double*, double*, double* )
132{
133 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
134 << "Not implemented :getdiracff in EvtMelikhovFF.\n";
135 ::abort();
136}
137
138void EvtMelikhovFF::getraritaff( EvtId, EvtId, double, double, double*, double*,
139 double*, double*, double*, double*, double*,
140 double* )
141{
142 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
143 << "Not implemented :getraritaff in EvtMelikhovFF.\n";
144 ::abort();
145}
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
Definition EvtReport.cpp:32
@ EVTGEN_ERROR
Definition EvtReport.hh:49
Definition EvtId.hh:27
void gettensorff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
void getdiracff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *) override
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
void getscalarff(EvtId, EvtId, double, double, double *, double *) override
void getraritaff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *, double *, double *) override
void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f) override
EvtMelikhovFF(double par1)
static double getMeanMass(EvtId i)
Definition EvtPDL.cpp:306