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:
9 : // Copyright (C) 1998 Caltech, UCSB
10 : //
11 : // Module: EvtBaryonVminusAFF.cc
12 : //
13 : // Description: Routine to implement semileptonic form factors
14 : // according to the model BaryonVminusA
15 : //
16 : // Modification history:
17 : //
18 : // R.J. Tesarek May 28, 2004 Module created
19 : // Karen Gibson 1/20/2006 Module updated for 1/2+->1/2+,
20 : // 1/2+->1/2-, 1/2+->3/2- Lambda decays
21 : //
22 : //--------------------------------------------------------------------------
23 : #include "EvtGenBase/EvtPatches.hh"
24 : #include "EvtGenBase/EvtReport.hh"
25 : #include "EvtGenModels/EvtBaryonPCRFF.hh"
26 : #include "EvtGenBase/EvtPDL.hh"
27 : #include "EvtGenBase/EvtId.hh"
28 : #include "EvtGenBase/EvtIdSet.hh"
29 : #include "EvtGenBase/EvtConst.hh"
30 : #include <string>
31 : #include <math.h>
32 : #include <stdlib.h>
33 : using std::endl;
34 :
35 : void EvtBaryonPCRFF::getdiracff(EvtId parent, EvtId daught,
36 : double q2, double /* mass */ ,
37 : double *f1, double *f2, double *f3,
38 : double *g1, double *g2, double *g3 ) {
39 :
40 : // Baryons (partial list 5/28/04)
41 0 : static EvtId LAMCP=EvtPDL::getId("Lambda_c+");
42 0 : static EvtId LAMCM=EvtPDL::getId("anti-Lambda_c-");
43 0 : static EvtId LAMC1P=EvtPDL::getId("Lambda_c(2593)+");
44 0 : static EvtId LAMC1M=EvtPDL::getId("anti-Lambda_c(2593)-");
45 0 : static EvtId LAMB=EvtPDL::getId("Lambda_b0");
46 0 : static EvtId LAMBB=EvtPDL::getId("anti-Lambda_b0");
47 :
48 : double F1, F2, F3, G1, G2, G3;
49 :
50 0 : if( parent==LAMB || parent==LAMBB ) {
51 : // Implement constituent quark model form factors predicted
52 : // by M. Pervin, W. Roberst, and S. Capstick, Phys. Rev. C72, 035201 (2005)
53 :
54 0 : if( daught==LAMCP|| daught==LAMCM ) {
55 :
56 : // Parameters needed in the calculation;
57 : double mQ = 5.28;
58 : double mq = 1.89;
59 : double md = 0.40;
60 0 : double MLamB = EvtPDL::getMass(parent);
61 0 : double MLamC = EvtPDL::getMass(daught);
62 :
63 : double aL = 0.59;
64 : double aLp = 0.55;
65 :
66 : double aL2 = aL*aL;
67 : double aLp2 = aLp*aLp;
68 : double aLLp2 = 0.5*(aL2+aLp2);
69 :
70 : // relativistic correction factor
71 : double k2 = 1.0;
72 0 : double rho2 = 3.*md*md/(2.*k2*aLLp2);
73 :
74 : // w = scalar product of the 4 velocities of the Lb and Lc.
75 0 : double w = 0.5*(MLamB*MLamB + MLamC*MLamC - q2)/MLamB/MLamC;
76 :
77 0 : double I = pow(aL*aLp/aLLp2, 1.5)*exp(-rho2*(w*w-1.));
78 :
79 : // Calculate the form factors
80 0 : F1 = I*( 1.0 + (md/aLLp2)*( (aLp2/mq)+(aL2/mQ) ) );
81 0 : F2 = -I*( (md/mq)*(aLp2/aLLp2) - aL2*aLp2/(4.*aLLp2*mq*mQ) );
82 0 : F3 = -I*md*aL2/(mQ*aLLp2);
83 :
84 0 : G1 = I*( 1.0 - (aL2*aLp2)/(12.*aLLp2*mq*mQ) );
85 0 : G2 = -I*( md*aLp2/(mq*aLLp2)
86 0 : + (aL2*aLp2)/(12.*aLLp2*mq*mQ)*(1.+12.*md*md/aLLp2) );
87 0 : G3 = I*( md*aL2/(mQ*aLLp2) + md*md*aL2*aLp2/(mq*mQ*aLLp2*aLLp2) );
88 :
89 : // Set form factors to be passed to the amplitude calc.
90 0 : *f1 = F1;
91 0 : *f2 = F2;
92 0 : *f3 = F3;
93 0 : *g1 = G1;
94 0 : *g2 = G2;
95 0 : *g3 = G3;
96 :
97 0 : }
98 :
99 0 : else if( daught==LAMC1P || daught==LAMC1M ) {
100 :
101 : double mQ = 5.28;
102 : double mq = 1.89;
103 : double md = 0.40;
104 0 : double MLamB = EvtPDL::getMass(parent);
105 0 : double MLamC = EvtPDL::getMass(daught);
106 :
107 : double aL = 0.59;
108 : double aLp = 0.47;
109 :
110 : double aL2 = aL*aL;
111 : double aLp2 = aLp*aLp;
112 : double aLLp2 = 0.5*(aL2+aLp2);
113 :
114 : // relativistic correction factor
115 : double k2 = 1.0;
116 0 : double rho2 = 3.*md*md/(2.*k2*aLLp2);
117 :
118 : // w = scalar product of the 4 velocities of the Lb and Lc.
119 0 : double w = 0.5*(MLamB*MLamB + MLamC*MLamC - q2)/MLamB/MLamC;
120 :
121 0 : double I = pow(aL*aLp/aLLp2, 2.5)*exp(-rho2*(w*w-1.));
122 :
123 : // Calculate the form factors
124 0 : F1 = I*aL/6.0*( 3.0/mq - 1.0/mQ );
125 0 : F2 = -I*( 2.0*md/aL - aL/(2.0*mq) + 2.*md*md*aL/(mQ*aLLp2)
126 0 : - (md*aL/(6.*mq*mQ*aLLp2))*( 3.*aL2 - 2.*aLp2));
127 0 : F3 = I*2.*md*md*aL/(mQ*aLLp2);
128 :
129 0 : G1 = I*( 2.0*md/aL - aL/(6.*mQ)
130 0 : + (md*aL/(6.*mq*mQ*aLLp2))*( 3.*aL2 - 2.*aLp2));
131 0 : G2 = I*( -2.*md/aL + aL/(2.*mq) + aL/(3.*mQ) );
132 0 : G3 = I*aL/(3.*mQ)*( 1.0 - (md/(2.*mq*aLLp2))*( 3.*aL2 - 2.*aLp2));
133 :
134 : // Set form factors to be passed to the amplitude calc.
135 0 : *f1 = F1;
136 0 : *f2 = F2;
137 0 : *f3 = F3;
138 0 : *g1 = G1;
139 0 : *g2 = G2;
140 0 : *g3 = G3;
141 0 : }
142 : }
143 :
144 : else {
145 0 : *f1 = 1.0;
146 0 : *f2 = 1.0;
147 0 : *f3 = 0.0;
148 0 : *g1 = 1.0;
149 0 : *g2 = 1.0;
150 0 : *g3 = 0.0;
151 : }
152 :
153 : return ;
154 0 : }
155 :
156 :
157 : void EvtBaryonPCRFF::getraritaff( EvtId parent, EvtId daught,
158 : double q2, double /* mass */,
159 : double *f1, double *f2, double *f3, double *f4,
160 : double *g1, double *g2, double *g3, double *g4 ) {
161 :
162 : // Baryons (partial list 5/28/04)
163 0 : static EvtId LAMB=EvtPDL::getId("Lambda_b0");
164 0 : static EvtId LAMBB=EvtPDL::getId("anti-Lambda_b0");
165 0 : static EvtId LAMC2P=EvtPDL::getId("Lambda_c(2625)+");
166 0 : static EvtId LAMC2M=EvtPDL::getId("anti-Lambda_c(2625)-");
167 :
168 : double F1, F2, F3, F4, G1, G2, G3, G4;
169 :
170 0 : if( parent==LAMB || parent==LAMBB ) {
171 : // Implement constituent quark model form factors predicted
172 : // by M. Pervin, W. Roberst, and S. Capstick, Phys. Rev. C72, 035201 (2005)
173 :
174 0 : if( daught==LAMC2P|| daught==LAMC2M ) {
175 :
176 : double mQ = 5.28;
177 : double mq = 1.89;
178 : double md = 0.40;
179 0 : double MLamB = EvtPDL::getMass(parent);
180 0 : double MLamC = EvtPDL::getMass(daught);
181 :
182 : double aL = 0.59;
183 : double aLp = 0.47;
184 :
185 : double aL2 = aL*aL;
186 : double aLp2 = aLp*aLp;
187 : double aLLp2 = 0.5*(aL2+aLp2);
188 :
189 : // relativistic correction factor
190 : double k2 = 1.0;
191 0 : double rho2 = 3.*md*md/(2.*k2*aLLp2);
192 :
193 : // w = scalar product of the 4 velocities of the Lb and Lc.
194 0 : double w = 0.5*(MLamB*MLamB + MLamC*MLamC - q2)/MLamB/MLamC;
195 :
196 0 : double I = -(1./sqrt(3.))*pow(aL*aLp/aLLp2, 2.5)*exp(-rho2*(w*w-1.));
197 :
198 : // Calculate the form factors
199 0 : F1 = I*3.0*md/aL*( 1.0 + (md/aLLp2)*( (aLp2/mq)+(aL2/mQ) ) );
200 0 : F2 = -I*( (3.*md*md/mq)*(aLp2/(aLLp2*aL2)) - 5.*aL*aLp2*md/(4.*aLLp2*mq*mQ) );
201 0 : F3 = -I*( 3.*md*md*aL/(mQ*aLLp2) + aL/(2.*mQ) );
202 0 : F4 = I*aL/mQ;
203 :
204 0 : G1 = I*( 3.0*md/aL - (aL/(2.*mQ))*(1. + 3.*md*aLp2/(2.*aLLp2*mq) ) );
205 0 : G2 = -I*( (3.*md*md/mq)*(aLp2/(aLLp2*aL)) + aL*aLp2*md/(4.*aLLp2*aLLp2*mq*mQ)*(aLLp2+12.*md*md) );
206 0 : G3 = I*aL/(mQ*aLLp2)*( aLLp2/2. + 3.*md*md + aLp2*md/(mq*aLLp2)*(aLLp2+6.*md*md) );
207 0 : G4 = -I*( aL/mQ + md/(mq*mQ)*aLp2*aL/aLLp2 );
208 :
209 : // Set form factors to be passed to the amplitude calc.
210 0 : *f1 = F1;
211 0 : *f2 = F2;
212 0 : *f3 = F3;
213 0 : *f4 = F4;
214 0 : *g1 = G1;
215 0 : *g2 = G2;
216 0 : *g3 = G3;
217 0 : *g4 = G4;
218 0 : }
219 : }
220 :
221 : else {
222 0 : *f1 = 1.0;
223 0 : *f2 = 1.0;
224 0 : *f3 = 0.0;
225 0 : *f4 = 0.0;
226 0 : *g1 = 1.0;
227 0 : *g2 = 1.0;
228 0 : *g3 = 0.0;
229 0 : *g4 = 0.0;
230 :
231 : }
232 :
233 : return ;
234 :
235 :
236 0 : }
237 :
238 : void EvtBaryonPCRFF::getscalarff(EvtId, EvtId, double, double, double*, double*) {
239 :
240 0 : report(Severity::Error,"EvtGen") << "Not implemented :getscalarff in EvtBaryonPCRFF.\n";
241 0 : ::abort();
242 :
243 : }
244 :
245 : void EvtBaryonPCRFF::getvectorff(EvtId, EvtId, double, double, double*, double*,
246 : double*, double*) {
247 :
248 0 : report(Severity::Error,"EvtGen") << "Not implemented :getvectorff in EvtBaryonPCRFF.\n";
249 0 : ::abort();
250 :
251 : }
252 :
253 : void EvtBaryonPCRFF::gettensorff(EvtId, EvtId, double, double, double*, double*,
254 : double*, double*) {
255 :
256 0 : report(Severity::Error,"EvtGen") << "Not implemented :gettensorff in EvtBaryonPCRFF.\n";
257 0 : ::abort();
258 :
259 : }
260 :
261 : void EvtBaryonPCRFF::getbaryonff(EvtId, EvtId, double, double, double*,
262 : double*, double*, double*){
263 :
264 0 : report(Severity::Error,"EvtGen") << "Not implemented :getbaryonff in EvtBaryonPCRFF.\n";
265 0 : ::abort();
266 :
267 : }
|