]>
Commit | Line | Data |
---|---|---|
da0e9ce3 | 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 | EvtSLBKPoleFF::EvtSLBKPoleFF(int numarg, double *arglist) {//modified | |
31 | numSLBKPoleargs = numarg;//modified | |
32 | for (int i=0; i<numarg; i++) { | |
33 | SLBKPoleargs[i] = arglist[i]; }//modified | |
34 | ||
35 | return; | |
36 | } | |
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 | if ( numSLBKPoleargs != 4 ) {//modified | |
47 | report(ERROR,"EvtGen") << "Problem in EvtSLBKPoleFF::getscalarff\n"; | |
48 | report(ERROR,"EvtGen") << "wrong number of arguments!\n"; | |
49 | report(ERROR,"EvtGen") << "number args:"<<numSLBKPoleargs<<" (expected 4)\n"; | |
50 | report(ERROR,"EvtGen") << "Parent:"<<EvtPDL::name(parent)<<"\n"; | |
51 | report(ERROR,"EvtGen") << "Daughter:"<<EvtPDL::name(daught)<<"\n"; | |
52 | ||
53 | } | |
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 | f0 = SLBKPoleargs[0];//f0 | |
61 | af = SLBKPoleargs[1];//alpha | |
62 | //bf = SLBKPoleargs[2]; | |
63 | double mass_star2 = SLBKPoleargs[3]*SLBKPoleargs[3]; | |
64 | powf = 1.0; | |
65 | *fpf = f0/(pow( 1.0 - (1.0+af)*(t/mass_star2) + (af*((t/mass_star2)*(t/mass_star2))),powf));//modified | |
66 | ||
67 | f0 = SLBKPoleargs[0];//f0 | |
68 | af = SLBKPoleargs[2];//beta | |
69 | //bf = SLBKPoleargs[6]; | |
70 | powf = 1.0; | |
71 | ||
72 | *f0f = f0/(pow( 1.0 - (t/mass_star2/af),powf));//modified | |
73 | ||
74 | return; | |
75 | } | |
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 | if ( numSLBKPoleargs !=8 ) {//modified | |
82 | report(ERROR,"EvtGen") << "Problem in EvtSLBKPoleFF::getvectorff\n";//modified | |
83 | report(ERROR,"EvtGen") << "wrong number of arguements!!!\n"; | |
84 | report(ERROR,"EvtGen") << numSLBKPoleargs<<"\n";//modified | |
85 | // printf("\n*********************%d*********************",numSLBKPoleargs); | |
86 | } | |
87 | ||
88 | ||
89 | report(INFO,"EvtGen")<<"Check the implementation of EvtSLBKPoleFF::getvectorff()!\n"; | |
90 | ||
91 | ||
92 | double mb=EvtPDL::getMeanMass(parent); | |
93 | double mb2 = mb*mb; | |
94 | ||
95 | //modified-begin | |
96 | static EvtId B0=EvtPDL::getId("B0"); | |
97 | static EvtId B0B=EvtPDL::getId("anti-B0"); | |
98 | static EvtId BP=EvtPDL::getId("B+"); | |
99 | static EvtId BM=EvtPDL::getId("B-"); | |
100 | static EvtId BS0=EvtPDL::getId("B_s0"); | |
101 | ||
102 | static EvtId B0S=EvtPDL::getId("B*0"); | |
103 | static EvtId BPMS=EvtPDL::getId("B*+"); | |
104 | static EvtId BS0S=EvtPDL::getId("B_s*0"); | |
105 | ||
106 | static EvtId D0=EvtPDL::getId("D0"); | |
107 | static EvtId D0B=EvtPDL::getId("anti-D0"); | |
108 | static EvtId DP=EvtPDL::getId("D+"); | |
109 | static EvtId DM=EvtPDL::getId("D-"); | |
110 | static EvtId DSP=EvtPDL::getId("D_s+"); | |
111 | static EvtId DSM=EvtPDL::getId("D_s-"); | |
112 | ||
113 | static EvtId D0S=EvtPDL::getId("D*0"); | |
114 | static EvtId DPMS=EvtPDL::getId("D*+"); | |
115 | static EvtId DSPMS=EvtPDL::getId("D_s*+"); | |
116 | ||
117 | double mass_star; | |
118 | double mass_star2; | |
119 | if(parent==B0||parent==B0B){ | |
120 | mass_star=EvtPDL::getMeanMass(B0S); | |
121 | mass_star2=mass_star*mass_star; | |
122 | } | |
123 | if(parent==BP||parent==BM){ | |
124 | mass_star=EvtPDL::getMeanMass(BPMS); | |
125 | mass_star2=mass_star*mass_star; | |
126 | } | |
127 | if(parent==BS0){ | |
128 | mass_star=EvtPDL::getMeanMass(BS0S); | |
129 | mass_star2=mass_star*mass_star; | |
130 | } | |
131 | ||
132 | if(parent==D0||parent==D0B){ | |
133 | mass_star=EvtPDL::getMeanMass(D0S); | |
134 | mass_star2=mass_star*mass_star; | |
135 | } | |
136 | if(parent==DP||parent==DM){ | |
137 | mass_star=EvtPDL::getMeanMass(DPMS); | |
138 | mass_star2=mass_star*mass_star; | |
139 | } | |
140 | if(parent==DSP||parent==DSM){ | |
141 | mass_star=EvtPDL::getMeanMass(DSPMS); | |
142 | mass_star2=mass_star*mass_star; | |
143 | } | |
144 | //modified-end | |
145 | ||
146 | double f0,af,bf,powf; | |
147 | ||
148 | f0 = SLBKPoleargs[2];//A1 | |
149 | af = SLBKPoleargs[6];//b' | |
150 | bf = 0;//0 | |
151 | powf = 1.0;//1.0 | |
152 | *a1f = f0/(pow( 1.0 - af*t/mass_star2,powf));//modified | |
153 | ||
154 | f0 = SLBKPoleargs[3];//A2 | |
155 | af = SLBKPoleargs[6];//b' | |
156 | bf = SLBKPoleargs[7];//b''==0 | |
157 | powf = 1.0;//1.0 | |
158 | ||
159 | *a2f = f0/(pow(1.0 - (af+bf)*(t/mass_star2) + (af*bf)*((t/mass_star2)*(t/mass_star2)),powf));//modified | |
160 | ||
161 | f0 = SLBKPoleargs[0];//V0 | |
162 | af = SLBKPoleargs[4];//a | |
163 | bf = 0;//0 | |
164 | powf = 1.0;//1.0 | |
165 | ||
166 | *vf = f0/(pow( 1.0 - (1.0+af)*(t/mass_star2) + af*(t/mass_star2)*(t/mass_star2),powf));//modified | |
167 | ||
168 | f0 = SLBKPoleargs[1];//A0 | |
169 | af = SLBKPoleargs[5];//a' | |
170 | bf = 0;//0 | |
171 | powf = 1.0;//1.0 | |
172 | ||
173 | *a0f = f0/(pow( 1.0 - (1.0+af)*(t/mb2) + af*((t/mb2)*(t/mb2)),powf));//modified | |
174 | return; | |
175 | } | |
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 | if ( numSLBKPoleargs !=16 ) { | |
184 | report(ERROR,"EvtGen") << "Problem in EvtSLBKPoleFF::gettensorff\n"; | |
185 | report(ERROR,"EvtGen") << "wrong number of arguements!!!\n"; | |
186 | } | |
187 | ||
188 | report(INFO,"EvtGen")<<"Check the implementation of EvtSLBKPoleFF::gettensorff()!\n"; | |
189 | ||
190 | double mb=EvtPDL::getMeanMass(parent); | |
191 | double mb2 = mb*mb; | |
192 | ||
193 | double f0,af,bf,powf; | |
194 | ||
195 | f0 = SLBKPoleargs[0]; | |
196 | af = SLBKPoleargs[1]; | |
197 | bf = SLBKPoleargs[2]; | |
198 | powf = SLBKPoleargs[3]; | |
199 | *hf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf)); | |
200 | ||
201 | f0 = SLBKPoleargs[4]; | |
202 | af = SLBKPoleargs[5]; | |
203 | bf = SLBKPoleargs[6]; | |
204 | powf = SLBKPoleargs[7]; | |
205 | ||
206 | *kf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf)); | |
207 | ||
208 | f0 = SLBKPoleargs[8]; | |
209 | af = SLBKPoleargs[9]; | |
210 | bf = SLBKPoleargs[10]; | |
211 | powf = SLBKPoleargs[11]; | |
212 | ||
213 | *bpf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf)); | |
214 | ||
215 | f0 = SLBKPoleargs[12]; | |
216 | af = SLBKPoleargs[13]; | |
217 | bf = SLBKPoleargs[14]; | |
218 | powf = SLBKPoleargs[15]; | |
219 | ||
220 | *bmf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf)); | |
221 | return; | |
222 | } | |
223 | ||
224 | void EvtSLBKPoleFF::getbaryonff(EvtId, EvtId, double, double, double*, | |
225 | double*, double*, double*){ | |
226 | ||
227 | report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtSLBKPoleFF.\n"; | |
228 | ::abort(); | |
229 | ||
230 | } | |
231 | ||
232 |