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: 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 "EvtGenBase/EvtPatches.hh"
23 : #include "EvtGenBase/EvtReport.hh"
24 : #include "EvtGenModels/EvtSLBKPoleFF.hh"//modified
25 : #include <string>
26 : #include "EvtGenBase/EvtPDL.hh"
27 : #include <math.h>
28 : #include <stdlib.h>
29 :
30 0 : EvtSLBKPoleFF::EvtSLBKPoleFF(int numarg, double *arglist) {//modified
31 0 : numSLBKPoleargs = numarg;//modified
32 0 : for (int i=0; i<numarg; i++) {
33 0 : SLBKPoleargs[i] = arglist[i]; }//modified
34 :
35 0 : return;
36 0 : }
37 :
38 :
39 : void EvtSLBKPoleFF::getscalarff(EvtId parent,EvtId daught,
40 : double t, double /*mass*/, double *fpf,
41 : double *f0f ) {
42 :
43 : // Form factors have a general form, with parameters passed in
44 : // from the arguments.
45 :
46 0 : if ( numSLBKPoleargs != 4 ) {//modified
47 0 : report(Severity::Error,"EvtGen") << "Problem in EvtSLBKPoleFF::getscalarff\n";
48 0 : report(Severity::Error,"EvtGen") << "wrong number of arguments!\n";
49 0 : report(Severity::Error,"EvtGen") << "number args:"<<numSLBKPoleargs<<" (expected 4)\n";
50 0 : report(Severity::Error,"EvtGen") << "Parent:"<<EvtPDL::name(parent)<<"\n";
51 0 : report(Severity::Error,"EvtGen") << "Daughter:"<<EvtPDL::name(daught)<<"\n";
52 :
53 0 : }
54 :
55 :
56 : double f0,af,powf;
57 :
58 : //double a_0, a_1, a_2, a_3, a_4, a_5, a_6, a_7;
59 :
60 0 : f0 = SLBKPoleargs[0];//f0
61 0 : af = SLBKPoleargs[1];//alpha
62 : //bf = SLBKPoleargs[2];
63 0 : double mass_star2 = SLBKPoleargs[3]*SLBKPoleargs[3];
64 : powf = 1.0;
65 0 : *fpf = f0/(pow( 1.0 - (1.0+af)*(t/mass_star2) + (af*((t/mass_star2)*(t/mass_star2))),powf));//modified
66 :
67 0 : f0 = SLBKPoleargs[0];//f0
68 0 : af = SLBKPoleargs[2];//beta
69 : //bf = SLBKPoleargs[6];
70 : powf = 1.0;
71 :
72 0 : *f0f = f0/(pow( 1.0 - (t/mass_star2/af),powf));//modified
73 :
74 : return;
75 0 : }
76 :
77 : void EvtSLBKPoleFF::getvectorff(EvtId parent,EvtId /*daught*/,
78 : double t, double /*mass*/, double *a1f,
79 : double *a2f, double *vf, double *a0f ){
80 :
81 0 : if ( numSLBKPoleargs !=8 ) {//modified
82 0 : report(Severity::Error,"EvtGen") << "Problem in EvtSLBKPoleFF::getvectorff\n";//modified
83 0 : report(Severity::Error,"EvtGen") << "wrong number of arguements!!!\n";
84 0 : report(Severity::Error,"EvtGen") << numSLBKPoleargs<<"\n";//modified
85 : // printf("\n*********************%d*********************",numSLBKPoleargs);
86 0 : }
87 :
88 :
89 0 : report(Severity::Info,"EvtGen")<<"Check the implementation of EvtSLBKPoleFF::getvectorff()!\n";
90 :
91 :
92 0 : double mb=EvtPDL::getMeanMass(parent);
93 0 : double mb2 = mb*mb;
94 :
95 : //modified-begin
96 0 : static EvtId B0=EvtPDL::getId("B0");
97 0 : static EvtId B0B=EvtPDL::getId("anti-B0");
98 0 : static EvtId BP=EvtPDL::getId("B+");
99 0 : static EvtId BM=EvtPDL::getId("B-");
100 0 : static EvtId BS0=EvtPDL::getId("B_s0");
101 :
102 0 : static EvtId B0S=EvtPDL::getId("B*0");
103 0 : static EvtId BPMS=EvtPDL::getId("B*+");
104 0 : static EvtId BS0S=EvtPDL::getId("B_s*0");
105 :
106 0 : static EvtId D0=EvtPDL::getId("D0");
107 0 : static EvtId D0B=EvtPDL::getId("anti-D0");
108 0 : static EvtId DP=EvtPDL::getId("D+");
109 0 : static EvtId DM=EvtPDL::getId("D-");
110 0 : static EvtId DSP=EvtPDL::getId("D_s+");
111 0 : static EvtId DSM=EvtPDL::getId("D_s-");
112 :
113 0 : static EvtId D0S=EvtPDL::getId("D*0");
114 0 : static EvtId DPMS=EvtPDL::getId("D*+");
115 0 : static EvtId DSPMS=EvtPDL::getId("D_s*+");
116 :
117 : double mass_star=0.0;
118 : double mass_star2=0.0;
119 0 : if(parent==B0||parent==B0B){
120 0 : mass_star=EvtPDL::getMeanMass(B0S);
121 0 : mass_star2=mass_star*mass_star;
122 0 : }
123 0 : if(parent==BP||parent==BM){
124 0 : mass_star=EvtPDL::getMeanMass(BPMS);
125 0 : mass_star2=mass_star*mass_star;
126 0 : }
127 0 : if(parent==BS0){
128 0 : mass_star=EvtPDL::getMeanMass(BS0S);
129 0 : mass_star2=mass_star*mass_star;
130 0 : }
131 :
132 0 : if(parent==D0||parent==D0B){
133 0 : mass_star=EvtPDL::getMeanMass(D0S);
134 0 : mass_star2=mass_star*mass_star;
135 0 : }
136 0 : if(parent==DP||parent==DM){
137 0 : mass_star=EvtPDL::getMeanMass(DPMS);
138 0 : mass_star2=mass_star*mass_star;
139 0 : }
140 0 : if(parent==DSP||parent==DSM){
141 0 : mass_star=EvtPDL::getMeanMass(DSPMS);
142 0 : mass_star2=mass_star*mass_star;
143 0 : }
144 : //modified-end
145 :
146 : double f0,af,bf,powf;
147 :
148 0 : f0 = SLBKPoleargs[2];//A1
149 0 : af = SLBKPoleargs[6];//b'
150 : bf = 0;//0
151 : powf = 1.0;//1.0
152 0 : *a1f = f0/(pow( 1.0 - af*t/mass_star2,powf));//modified
153 :
154 0 : f0 = SLBKPoleargs[3];//A2
155 0 : af = SLBKPoleargs[6];//b'
156 0 : bf = SLBKPoleargs[7];//b''==0
157 : powf = 1.0;//1.0
158 :
159 0 : *a2f = f0/(pow(1.0 - (af+bf)*(t/mass_star2) + (af*bf)*((t/mass_star2)*(t/mass_star2)),powf));//modified
160 :
161 0 : f0 = SLBKPoleargs[0];//V0
162 0 : af = SLBKPoleargs[4];//a
163 : bf = 0;//0
164 : powf = 1.0;//1.0
165 :
166 0 : *vf = f0/(pow( 1.0 - (1.0+af)*(t/mass_star2) + af*(t/mass_star2)*(t/mass_star2),powf));//modified
167 :
168 0 : f0 = SLBKPoleargs[1];//A0
169 0 : af = SLBKPoleargs[5];//a'
170 : bf = 0;//0
171 : powf = 1.0;//1.0
172 :
173 0 : *a0f = f0/(pow( 1.0 - (1.0+af)*(t/mb2) + af*((t/mb2)*(t/mb2)),powf));//modified
174 : return;
175 0 : }
176 :
177 :
178 :
179 : void EvtSLBKPoleFF::gettensorff(EvtId parent,EvtId /*daught*/,
180 : double t, double /*mass*/, double *hf,
181 : double *kf, double *bpf, double *bmf ){
182 :
183 0 : if ( numSLBKPoleargs !=16 ) {
184 0 : report(Severity::Error,"EvtGen") << "Problem in EvtSLBKPoleFF::gettensorff\n";
185 0 : report(Severity::Error,"EvtGen") << "wrong number of arguements!!!\n";
186 0 : }
187 :
188 0 : report(Severity::Info,"EvtGen")<<"Check the implementation of EvtSLBKPoleFF::gettensorff()!\n";
189 :
190 0 : double mb=EvtPDL::getMeanMass(parent);
191 0 : double mb2 = mb*mb;
192 :
193 : double f0,af,bf,powf;
194 :
195 0 : f0 = SLBKPoleargs[0];
196 0 : af = SLBKPoleargs[1];
197 0 : bf = SLBKPoleargs[2];
198 0 : powf = SLBKPoleargs[3];
199 0 : *hf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
200 :
201 0 : f0 = SLBKPoleargs[4];
202 0 : af = SLBKPoleargs[5];
203 0 : bf = SLBKPoleargs[6];
204 0 : powf = SLBKPoleargs[7];
205 :
206 0 : *kf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
207 :
208 0 : f0 = SLBKPoleargs[8];
209 0 : af = SLBKPoleargs[9];
210 0 : bf = SLBKPoleargs[10];
211 0 : powf = SLBKPoleargs[11];
212 :
213 0 : *bpf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
214 :
215 0 : f0 = SLBKPoleargs[12];
216 0 : af = SLBKPoleargs[13];
217 0 : bf = SLBKPoleargs[14];
218 0 : powf = SLBKPoleargs[15];
219 :
220 0 : *bmf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
221 : return;
222 0 : }
223 :
224 : void EvtSLBKPoleFF::getbaryonff(EvtId, EvtId, double, double, double*,
225 : double*, double*, double*){
226 :
227 0 : report(Severity::Error,"EvtGen") << "Not implemented :getbaryonff in EvtSLBKPoleFF.\n";
228 0 : ::abort();
229 :
230 : }
231 :
232 : void EvtSLBKPoleFF::getdiracff(EvtId, EvtId, double, double, double*, double*,
233 : double*, double*, double*, double*) {
234 :
235 0 : report(Severity::Error,"EvtGen") << "Not implemented :getdiracff in EvtSLBKPoleFF.\n";
236 0 : ::abort();
237 :
238 : }
239 :
240 : void EvtSLBKPoleFF::getraritaff(EvtId, EvtId, double, double, double*, double*,
241 : double*, double*, double*, double*, double*, double*) {
242 :
243 0 : report(Severity::Error,"EvtGen") << "Not implemented :getraritaff in EvtSLBKPoleFF.\n";
244 0 : ::abort();
245 :
246 : }
247 :
248 :
|