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
EvtSLPoleFF.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/EvtPDL.hh"
25
26#include <math.h>
27#include <stdlib.h>
28#include <string>
29
30EvtSLPoleFF::EvtSLPoleFF( int numarg, double* arglist )
31{
32 //arg - maybe ignore the last argument - if odd ... Sigh
33 m_numSLPoleargs = numarg - ( numarg % 2 );
34 for ( int i = 0; i < m_numSLPoleargs; i++ ) {
35 m_SLPoleargs[i] = arglist[i];
36 }
37
38 return;
39}
40
41void EvtSLPoleFF::getscalarff( EvtId parent, EvtId, double t, double,
42 double* fpf, double* f0f )
43{
44 // Form factors have a general form, with parameters passed in
45 // from the arguements.
46
47 if ( m_numSLPoleargs != 8 ) {
48 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
49 << "Problem in EvtSLPoleFF::getscalarff\n";
50 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
51 << "wrong number of arguements!!!\n";
52 }
53
54 double mb = EvtPDL::getMeanMass( parent );
55 double mb2 = mb * mb;
56
57 double f0, af, bf, powf;
58
59 f0 = m_SLPoleargs[0];
60 af = m_SLPoleargs[1];
61 bf = m_SLPoleargs[2];
62 powf = m_SLPoleargs[3];
63 *fpf = f0 /
64 ( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
65 powf ) );
66
67 f0 = m_SLPoleargs[4];
68 af = m_SLPoleargs[5];
69 bf = m_SLPoleargs[6];
70 powf = m_SLPoleargs[7];
71
72 *f0f = f0 /
73 ( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
74 powf ) );
75
76 return;
77}
78
79void EvtSLPoleFF::getvectorff( EvtId parent, EvtId, double t, double,
80 double* a1f, double* a2f, double* vf, double* a0f )
81{
82 if ( m_numSLPoleargs != 16 ) {
83 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
84 << "Problem in EvtSLPoleFF::getvectorff\n";
85 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
86 << "wrong number of arguements!!!\n";
87 EvtGenReport( EVTGEN_ERROR, "EvtGen" ) << m_numSLPoleargs << "\n";
88 }
89
90 double mb = EvtPDL::getMeanMass( parent );
91 double mb2 = mb * mb;
92
93 double f0, af, bf, powf;
94
95 f0 = m_SLPoleargs[0];
96 af = m_SLPoleargs[1];
97 bf = m_SLPoleargs[2];
98 powf = m_SLPoleargs[3];
99 *a1f = f0 /
100 ( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
101 powf ) );
102
103 f0 = m_SLPoleargs[4];
104 af = m_SLPoleargs[5];
105 bf = m_SLPoleargs[6];
106 powf = m_SLPoleargs[7];
107
108 *a2f = f0 /
109 ( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
110 powf ) );
111
112 f0 = m_SLPoleargs[8];
113 af = m_SLPoleargs[9];
114 bf = m_SLPoleargs[10];
115 powf = m_SLPoleargs[11];
116
117 *vf = f0 /
118 ( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
119 powf ) );
120
121 f0 = m_SLPoleargs[12];
122 af = m_SLPoleargs[13];
123 bf = m_SLPoleargs[14];
124 powf = m_SLPoleargs[15];
125
126 *a0f = f0 /
127 ( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
128 powf ) );
129 return;
130}
131
132void EvtSLPoleFF::gettensorff( EvtId parent, EvtId, double t, double,
133 double* hf, double* kf, double* bpf, double* bmf )
134{
135 if ( m_numSLPoleargs != 16 ) {
136 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
137 << "Problem in EvtSLPoleFF::gettensorff\n";
138 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
139 << "wrong number of arguements!!!\n";
140 }
141
142 double mb = EvtPDL::getMeanMass( parent );
143 double mb2 = mb * mb;
144
145 double f0, af, bf, powf;
146
147 f0 = m_SLPoleargs[0];
148 af = m_SLPoleargs[1];
149 bf = m_SLPoleargs[2];
150 powf = m_SLPoleargs[3];
151 *hf = f0 /
152 ( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
153 powf ) );
154
155 f0 = m_SLPoleargs[4];
156 af = m_SLPoleargs[5];
157 bf = m_SLPoleargs[6];
158 powf = m_SLPoleargs[7];
159
160 *kf = f0 /
161 ( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
162 powf ) );
163
164 f0 = m_SLPoleargs[8];
165 af = m_SLPoleargs[9];
166 bf = m_SLPoleargs[10];
167 powf = m_SLPoleargs[11];
168
169 *bpf = f0 /
170 ( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
171 powf ) );
172
173 f0 = m_SLPoleargs[12];
174 af = m_SLPoleargs[13];
175 bf = m_SLPoleargs[14];
176 powf = m_SLPoleargs[15];
177
178 *bmf = f0 /
179 ( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
180 powf ) );
181 return;
182}
183
184void EvtSLPoleFF::getbaryonff( EvtId, EvtId, double, double, double*, double*,
185 double*, double* )
186{
187 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
188 << "Not implemented :getbaryonff in EvtSLPoleFF.\n";
189 ::abort();
190}
191
192void EvtSLPoleFF::getdiracff( EvtId, EvtId, double, double, double*, double*,
193 double*, double*, double*, double* )
194{
195 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
196 << "Not implemented :getdiracff in EvtSLPoleFF.\n";
197 ::abort();
198}
199
200void EvtSLPoleFF::getraritaff( EvtId, EvtId, double, double, double*, double*,
201 double*, double*, double*, double*, double*,
202 double* )
203{
204 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
205 << "Not implemented :getraritaff in EvtSLPoleFF.\n";
206 ::abort();
207}
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
Definition EvtReport.cpp:32
@ EVTGEN_ERROR
Definition EvtReport.hh:49
Definition EvtId.hh:27
static double getMeanMass(EvtId i)
Definition EvtPDL.cpp:306
int m_numSLPoleargs
void getraritaff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *, double *, double *) override
void gettensorff(EvtId parent, EvtId daught, double t, double mass, double *hf, double *kf, double *bp, double *bm) override
double m_SLPoleargs[16]
void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f) 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 parent, EvtId daught, double t, double mass, double *fpf, double *f0f) override
EvtSLPoleFF(int numarg, double *arglist)