Line data Source code
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: EvtSLPoleFF.cc
12 : //
13 : // Description: Routine to implement semileptonic form factors
14 : // according to the model SLPoles
15 : //
16 : // Modification history:
17 : //
18 : // DJL April 17,1998 Module created
19 : //
20 : //------------------------------------------------------------------------
21 : //
22 : #include "EvtGenBase/EvtPatches.hh"
23 : #include "EvtGenBase/EvtReport.hh"
24 : #include "EvtGenModels/EvtSLPoleFF.hh"
25 : #include <string>
26 : #include "EvtGenBase/EvtPDL.hh"
27 : #include <math.h>
28 : #include <stdlib.h>
29 :
30 0 : EvtSLPoleFF::EvtSLPoleFF(int numarg, double *arglist) {
31 : //arg - maybe ignore the last argument - if odd ... Sigh
32 0 : numSLPoleargs = numarg - (numarg % 2);
33 0 : for (int i=0; i<numSLPoleargs; i++) {
34 0 : SLPoleargs[i] = arglist[i]; }
35 :
36 0 : return;
37 0 : }
38 :
39 :
40 : void EvtSLPoleFF::getscalarff(EvtId parent,EvtId,
41 : double t, double, double *fpf,
42 : double *f0f ) {
43 :
44 : // Form factors have a general form, with parameters passed in
45 : // from the arguements.
46 :
47 0 : if ( numSLPoleargs !=8 ) {
48 0 : report(Severity::Error,"EvtGen") << "Problem in EvtSLPoleFF::getscalarff\n";
49 0 : report(Severity::Error,"EvtGen") << "wrong number of arguements!!!\n";
50 0 : }
51 :
52 0 : double mb=EvtPDL::getMeanMass(parent);
53 0 : double mb2 = mb*mb;
54 :
55 : double f0,af,bf,powf;
56 :
57 0 : f0 = SLPoleargs[0];
58 0 : af = SLPoleargs[1];
59 0 : bf = SLPoleargs[2];
60 0 : powf = SLPoleargs[3];
61 0 : *fpf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
62 :
63 0 : f0 = SLPoleargs[4];
64 0 : af = SLPoleargs[5];
65 0 : bf = SLPoleargs[6];
66 0 : powf = SLPoleargs[7];
67 :
68 0 : *f0f = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
69 :
70 : return;
71 0 : }
72 :
73 : void EvtSLPoleFF::getvectorff(EvtId parent,EvtId,
74 : double t, double, double *a1f,
75 : double *a2f, double *vf, double *a0f ){
76 :
77 0 : if ( numSLPoleargs !=16 ) {
78 0 : report(Severity::Error,"EvtGen") << "Problem in EvtSLPoleFF::getvectorff\n";
79 0 : report(Severity::Error,"EvtGen") << "wrong number of arguements!!!\n";
80 0 : report(Severity::Error,"EvtGen") << numSLPoleargs<<"\n";
81 0 : }
82 :
83 0 : double mb=EvtPDL::getMeanMass(parent);
84 0 : double mb2 = mb*mb;
85 :
86 : double f0,af,bf,powf;
87 :
88 0 : f0 = SLPoleargs[0];
89 0 : af = SLPoleargs[1];
90 0 : bf = SLPoleargs[2];
91 0 : powf = SLPoleargs[3];
92 0 : *a1f = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
93 :
94 0 : f0 = SLPoleargs[4];
95 0 : af = SLPoleargs[5];
96 0 : bf = SLPoleargs[6];
97 0 : powf = SLPoleargs[7];
98 :
99 0 : *a2f = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
100 :
101 0 : f0 = SLPoleargs[8];
102 0 : af = SLPoleargs[9];
103 0 : bf = SLPoleargs[10];
104 0 : powf = SLPoleargs[11];
105 :
106 0 : *vf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
107 :
108 0 : f0 = SLPoleargs[12];
109 0 : af = SLPoleargs[13];
110 0 : bf = SLPoleargs[14];
111 0 : powf = SLPoleargs[15];
112 :
113 0 : *a0f = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
114 : return;
115 0 : }
116 :
117 :
118 :
119 : void EvtSLPoleFF::gettensorff(EvtId parent,EvtId,
120 : double t, double, double *hf,
121 : double *kf, double *bpf, double *bmf ){
122 :
123 0 : if ( numSLPoleargs !=16 ) {
124 0 : report(Severity::Error,"EvtGen") << "Problem in EvtSLPoleFF::gettensorff\n";
125 0 : report(Severity::Error,"EvtGen") << "wrong number of arguements!!!\n";
126 0 : }
127 :
128 0 : double mb=EvtPDL::getMeanMass(parent);
129 0 : double mb2 = mb*mb;
130 :
131 : double f0,af,bf,powf;
132 :
133 0 : f0 = SLPoleargs[0];
134 0 : af = SLPoleargs[1];
135 0 : bf = SLPoleargs[2];
136 0 : powf = SLPoleargs[3];
137 0 : *hf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
138 :
139 0 : f0 = SLPoleargs[4];
140 0 : af = SLPoleargs[5];
141 0 : bf = SLPoleargs[6];
142 0 : powf = SLPoleargs[7];
143 :
144 0 : *kf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
145 :
146 0 : f0 = SLPoleargs[8];
147 0 : af = SLPoleargs[9];
148 0 : bf = SLPoleargs[10];
149 0 : powf = SLPoleargs[11];
150 :
151 0 : *bpf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
152 :
153 0 : f0 = SLPoleargs[12];
154 0 : af = SLPoleargs[13];
155 0 : bf = SLPoleargs[14];
156 0 : powf = SLPoleargs[15];
157 :
158 0 : *bmf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
159 : return;
160 0 : }
161 :
162 :
163 : void EvtSLPoleFF::getbaryonff(EvtId, EvtId, double, double, double*,
164 : double*, double*, double*){
165 :
166 0 : report(Severity::Error,"EvtGen") << "Not implemented :getbaryonff in EvtSLPoleFF.\n";
167 0 : ::abort();
168 :
169 : }
170 :
171 : void EvtSLPoleFF::getdiracff(EvtId, EvtId, double, double, double*, double*,
172 : double*, double*, double*, double*) {
173 :
174 0 : report(Severity::Error,"EvtGen") << "Not implemented :getdiracff in EvtSLPoleFF.\n";
175 0 : ::abort();
176 :
177 : }
178 :
179 : void EvtSLPoleFF::getraritaff(EvtId, EvtId, double, double, double*, double*,
180 : double*, double*, double*, double*, double*, double*) {
181 :
182 0 : report(Severity::Error,"EvtGen") << "Not implemented :getraritaff in EvtSLPoleFF.\n";
183 0 : ::abort();
184 :
185 : }
186 :
|