BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtSLBKPoleFF.cc
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2//
3// Environment:
4// This software is part of the EvtGen package developed jointly
5// for the BaBar and CLEO collaborations. If you use all or part
6// of it, please give an appropriate acknowledgement.
7//
8// Copyright Information: See EvtGen/COPYRIGHT
9// Copyright (C) 1998 Caltech, UCSB
10//
11// Module: EvtSLBKPoleFF.cc
12//
13// Description: Routine to implement semileptonic form factors
14// according to the model SLBKPoles
15//
16// Modification history:
17//
18// liheng October 20,2005 Module created
19//
20//------------------------------------------------------------------------
21//
22#include "EvtSLBKPoleFF.hh" //modified
26#include <math.h>
27#include <stdlib.h>
28#include <string>
29
30EvtSLBKPoleFF::EvtSLBKPoleFF( int numarg, double* arglist ) { // modified
31 numSLBKPoleargs = numarg; // modified
32 for ( int i = 0; i < numarg; i++ ) { SLBKPoleargs[i] = arglist[i]; } // modified
33
34 return;
35}
36
37void EvtSLBKPoleFF::getscalarff( EvtId parent, EvtId daught, double t, double mass,
38 double* fpf, double* f0f ) {
39
40 // Form factors have a general form, with parameters passed in
41 // from the arguments.
42
43 if ( numSLBKPoleargs != 4 )
44 { // modified
45 report( ERROR, "EvtGen" ) << "Problem in EvtSLBKPoleFF::getscalarff\n";
46 report( ERROR, "EvtGen" ) << "wrong number of arguments!\n";
47 report( ERROR, "EvtGen" ) << "number args:" << numSLBKPoleargs << " (expected 4)\n";
48 report( ERROR, "EvtGen" ) << "Parent:" << EvtPDL::name( parent ) << "\n";
49 report( ERROR, "EvtGen" ) << "Daughter:" << EvtPDL::name( daught ) << "\n";
50 }
51
52 double f0, af, powf;
53
54 // double a_0, a_1, a_2, a_3, a_4, a_5, a_6, a_7;
55
56 f0 = SLBKPoleargs[0]; // f0
57 af = SLBKPoleargs[1]; // alpha
58 // bf = SLBKPoleargs[2];
59 double mass_star2 = SLBKPoleargs[3] * SLBKPoleargs[3];
60 powf = 1.0;
61 *fpf = f0 / ( pow( 1.0 - ( 1.0 + af ) * ( t / mass_star2 ) +
62 ( af * ( ( t / mass_star2 ) * ( t / mass_star2 ) ) ),
63 powf ) ); // modified
64
65 f0 = SLBKPoleargs[0]; // f0
66 af = SLBKPoleargs[2]; // beta
67 // bf = SLBKPoleargs[6];
68 powf = 1.0;
69
70 *f0f = f0 / ( pow( 1.0 - ( t / mass_star2 / af ), powf ) ); // modified
71
72 return;
73}
74
75void EvtSLBKPoleFF::getvectorff( EvtId parent, EvtId daught, double t, double mass,
76 double* a1f, double* a2f, double* vf, double* a0f ) {
77
78 if ( numSLBKPoleargs != 8 )
79 { // modified
80 report( ERROR, "EvtGen" ) << "Problem in EvtSLBKPoleFF::getvectorff\n"; // modified
81 report( ERROR, "EvtGen" ) << "wrong number of arguements!!!\n";
82 report( ERROR, "EvtGen" ) << numSLBKPoleargs << "\n"; // modified
83 // printf("\n*********************%d*********************",numSLBKPoleargs);
84 }
85
86 report( INFO, "EvtGen" ) << "Check the implementation of EvtSLBKPoleFF::getvectorff()!\n";
87
88 double mb = EvtPDL::getMeanMass( parent );
89 double mb2 = mb * mb;
90
91 // modified-begin
92 static EvtId B0 = EvtPDL::getId( "B0" );
93 static EvtId B0B = EvtPDL::getId( "anti-B0" );
94 static EvtId BP = EvtPDL::getId( "B+" );
95 static EvtId BM = EvtPDL::getId( "B-" );
96 static EvtId BS0 = EvtPDL::getId( "B_s0" );
97
98 static EvtId B0S = EvtPDL::getId( "B*0" );
99 static EvtId BPMS = EvtPDL::getId( "B*+" );
100 static EvtId BS0S = EvtPDL::getId( "B_s*0" );
101
102 static EvtId D0 = EvtPDL::getId( "D0" );
103 static EvtId D0B = EvtPDL::getId( "anti-D0" );
104 static EvtId DP = EvtPDL::getId( "D+" );
105 static EvtId DM = EvtPDL::getId( "D-" );
106 static EvtId DSP = EvtPDL::getId( "D_s+" );
107 static EvtId DSM = EvtPDL::getId( "D_s-" );
108
109 static EvtId D0S = EvtPDL::getId( "D*0" );
110 static EvtId DPMS = EvtPDL::getId( "D*+" );
111 static EvtId DSPMS = EvtPDL::getId( "D_s*+" );
112
113 double mass_star;
114 double mass_star2;
115 if ( parent == B0 || parent == B0B )
116 {
117 mass_star = EvtPDL::getMeanMass( B0S );
118 mass_star2 = mass_star * mass_star;
119 }
120 if ( parent == BP || parent == BM )
121 {
122 mass_star = EvtPDL::getMeanMass( BPMS );
123 mass_star2 = mass_star * mass_star;
124 }
125 if ( parent == BS0 )
126 {
127 mass_star = EvtPDL::getMeanMass( BS0S );
128 mass_star2 = mass_star * mass_star;
129 }
130
131 if ( parent == D0 || parent == D0B )
132 {
133 mass_star = EvtPDL::getMeanMass( D0S );
134 mass_star2 = mass_star * mass_star;
135 }
136 if ( parent == DP || parent == DM )
137 {
138 mass_star = EvtPDL::getMeanMass( DPMS );
139 mass_star2 = mass_star * mass_star;
140 }
141 if ( parent == DSP || parent == DSM )
142 {
143 mass_star = EvtPDL::getMeanMass( DSPMS );
144 mass_star2 = mass_star * mass_star;
145 }
146 // modified-end
147
148 double f0, af, bf, powf;
149
150 f0 = SLBKPoleargs[2]; // A1
151 af = SLBKPoleargs[6]; // b'
152 bf = 0; // 0
153 powf = 1.0; // 1.0
154 *a1f = f0 / ( pow( 1.0 - af * t / mass_star2, powf ) ); // modified
155
156 f0 = SLBKPoleargs[3]; // A2
157 af = SLBKPoleargs[6]; // b'
158 bf = SLBKPoleargs[7]; // b''==0
159 powf = 1.0; // 1.0
160
161 *a2f = f0 / ( pow( 1.0 - ( af + bf ) * ( t / mass_star2 ) +
162 ( af * bf ) * ( ( t / mass_star2 ) * ( t / mass_star2 ) ),
163 powf ) ); // modified
164
165 f0 = SLBKPoleargs[0]; // V0
166 af = SLBKPoleargs[4]; // a
167 bf = 0; // 0
168 powf = 1.0; // 1.0
169
170 *vf = f0 / ( pow( 1.0 - ( 1.0 + af ) * ( t / mass_star2 ) +
171 af * ( t / mass_star2 ) * ( t / mass_star2 ),
172 powf ) ); // modified
173
174 f0 = SLBKPoleargs[1]; // A0
175 af = SLBKPoleargs[5]; // a'
176 bf = 0; // 0
177 powf = 1.0; // 1.0
178
179 *a0f = f0 / ( pow( 1.0 - ( 1.0 + af ) * ( t / mb2 ) + af * ( ( t / mb2 ) * ( t / mb2 ) ),
180 powf ) ); // modified
181 return;
182}
183
184void EvtSLBKPoleFF::gettensorff( EvtId parent, EvtId daught, double t, double mass, double* hf,
185 double* kf, double* bpf, double* bmf ) {
186
187 if ( numSLBKPoleargs != 16 )
188 {
189 report( ERROR, "EvtGen" ) << "Problem in EvtSLBKPoleFF::gettensorff\n";
190 report( ERROR, "EvtGen" ) << "wrong number of arguements!!!\n";
191 }
192
193 report( INFO, "EvtGen" ) << "Check the implementation of EvtSLBKPoleFF::gettensorff()!\n";
194
195 double mb = EvtPDL::getMeanMass( parent );
196 double mb2 = mb * mb;
197
198 double f0, af, bf, powf;
199
200 f0 = SLBKPoleargs[0];
201 af = SLBKPoleargs[1];
202 bf = SLBKPoleargs[2];
203 powf = SLBKPoleargs[3];
204 *hf = f0 / ( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ), powf ) );
205
206 f0 = SLBKPoleargs[4];
207 af = SLBKPoleargs[5];
208 bf = SLBKPoleargs[6];
209 powf = SLBKPoleargs[7];
210
211 *kf = f0 / ( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ), powf ) );
212
213 f0 = SLBKPoleargs[8];
214 af = SLBKPoleargs[9];
215 bf = SLBKPoleargs[10];
216 powf = SLBKPoleargs[11];
217
218 *bpf = f0 / ( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ), powf ) );
219
220 f0 = SLBKPoleargs[12];
221 af = SLBKPoleargs[13];
222 bf = SLBKPoleargs[14];
223 powf = SLBKPoleargs[15];
224
225 *bmf = f0 / ( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ), powf ) );
226 return;
227}
228
229void EvtSLBKPoleFF::getbaryonff( EvtId, EvtId, double, double, double*, double*, double*,
230 double* ) {
231
232 report( ERROR, "EvtGen" ) << "Not implemented :getbaryonff in EvtSLBKPoleFF.\n";
233 ::abort();
234}
double mass
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:34
@ ERROR
Definition EvtReport.hh:49
@ INFO
Definition EvtReport.hh:52
Definition EvtId.hh:27
static double getMeanMass(EvtId i)
Definition EvtPDL.hh:43
static std::string name(EvtId i)
Definition EvtPDL.hh:70
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
void gettensorff(EvtId parent, EvtId daught, double t, double mass, double *hf, double *kf, double *bp, double *bm)
void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f)
EvtSLBKPoleFF(int numarg, double *arglist)
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *)
void getscalarff(EvtId parent, EvtId daught, double t, double mass, double *fpf, double *f0f)
int t()
Definition t.c:1