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