Converting TEvtGen to native cmake
[u/mrichter/AliRoot.git] / TEvtGen / EvtGen / EvtGenModels / EvtBaryonPCRFF.cpp
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   static EvtId LAMCP=EvtPDL::getId("Lambda_c+");
42   static EvtId LAMCM=EvtPDL::getId("anti-Lambda_c-");
43   static EvtId LAMC1P=EvtPDL::getId("Lambda_c(2593)+");
44   static EvtId LAMC1M=EvtPDL::getId("anti-Lambda_c(2593)-");
45   static EvtId LAMB=EvtPDL::getId("Lambda_b0");
46   static EvtId LAMBB=EvtPDL::getId("anti-Lambda_b0");
47
48   double F1, F2, F3, G1, G2, G3;
49
50   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     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       double MLamB = EvtPDL::getMass(parent);
61       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       double rho2 = 3.*md*md/(2.*k2*aLLp2);  
73       
74       // w = scalar product of the 4 velocities of the Lb and Lc.
75       double w = 0.5*(MLamB*MLamB + MLamC*MLamC - q2)/MLamB/MLamC;
76
77       double I = pow(aL*aLp/aLLp2, 1.5)*exp(-rho2*(w*w-1.));
78
79       // Calculate the form factors
80       F1 = I*( 1.0 + (md/aLLp2)*( (aLp2/mq)+(aL2/mQ) ) );
81       F2 = -I*( (md/mq)*(aLp2/aLLp2) - aL2*aLp2/(4.*aLLp2*mq*mQ) );
82       F3 = -I*md*aL2/(mQ*aLLp2);
83
84       G1 = I*( 1.0 - (aL2*aLp2)/(12.*aLLp2*mq*mQ) );
85       G2 = -I*( md*aLp2/(mq*aLLp2) 
86                 + (aL2*aLp2)/(12.*aLLp2*mq*mQ)*(1.+12.*md*md/aLLp2) );
87       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       *f1 = F1;
91       *f2 = F2;
92       *f3 = F3;
93       *g1 = G1;
94       *g2 = G2;
95       *g3 = G3;
96
97     }
98
99     else if( daught==LAMC1P || daught==LAMC1M ) {
100
101       double mQ = 5.28; 
102       double mq = 1.89;
103       double md = 0.40;
104       double MLamB = EvtPDL::getMass(parent);
105       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       double rho2 = 3.*md*md/(2.*k2*aLLp2);  
117
118       // w = scalar product of the 4 velocities of the Lb and Lc.
119       double w = 0.5*(MLamB*MLamB + MLamC*MLamC - q2)/MLamB/MLamC;
120       
121       double I = pow(aL*aLp/aLLp2, 2.5)*exp(-rho2*(w*w-1.));
122
123       // Calculate the form factors
124       F1 = I*aL/6.0*( 3.0/mq - 1.0/mQ );
125       F2 = -I*( 2.0*md/aL - aL/(2.0*mq) + 2.*md*md*aL/(mQ*aLLp2) 
126                 - (md*aL/(6.*mq*mQ*aLLp2))*( 3.*aL2 - 2.*aLp2));
127       F3 = I*2.*md*md*aL/(mQ*aLLp2);
128
129       G1 = I*( 2.0*md/aL - aL/(6.*mQ) 
130                + (md*aL/(6.*mq*mQ*aLLp2))*( 3.*aL2 - 2.*aLp2));
131       G2 = I*( -2.*md/aL + aL/(2.*mq) + aL/(3.*mQ) );
132       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       *f1 = F1;
136       *f2 = F2;
137       *f3 = F3;
138       *g1 = G1;
139       *g2 = G2;
140       *g3 = G3;
141     }
142   }
143
144   else {
145     *f1 = 1.0;
146     *f2 = 1.0;
147     *f3 = 0.0;
148     *g1 = 1.0;
149     *g2 = 1.0;
150     *g3 = 0.0;
151   }
152
153   return ;
154 }
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   static EvtId LAMB=EvtPDL::getId("Lambda_b0");
164   static EvtId LAMBB=EvtPDL::getId("anti-Lambda_b0");
165   static EvtId LAMC2P=EvtPDL::getId("Lambda_c(2625)+");
166   static EvtId LAMC2M=EvtPDL::getId("anti-Lambda_c(2625)-");
167
168   double F1, F2, F3, F4, G1, G2, G3, G4;
169
170   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     if( daught==LAMC2P|| daught==LAMC2M ) {
175       
176       double mQ = 5.28; 
177       double mq = 1.89;
178       double md = 0.40;
179       double MLamB = EvtPDL::getMass(parent);
180       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       double rho2 = 3.*md*md/(2.*k2*aLLp2);  
192
193       // w = scalar product of the 4 velocities of the Lb and Lc.
194       double w = 0.5*(MLamB*MLamB + MLamC*MLamC - q2)/MLamB/MLamC;
195       
196       double I = -(1./sqrt(3.))*pow(aL*aLp/aLLp2, 2.5)*exp(-rho2*(w*w-1.));
197     
198       // Calculate the form factors
199       F1 = I*3.0*md/aL*( 1.0 + (md/aLLp2)*( (aLp2/mq)+(aL2/mQ) ) );
200       F2 = -I*( (3.*md*md/mq)*(aLp2/(aLLp2*aL2)) - 5.*aL*aLp2*md/(4.*aLLp2*mq*mQ) );
201       F3 = -I*( 3.*md*md*aL/(mQ*aLLp2) + aL/(2.*mQ) );
202       F4 = I*aL/mQ;
203
204       G1 = I*( 3.0*md/aL - (aL/(2.*mQ))*(1. + 3.*md*aLp2/(2.*aLLp2*mq) ) );
205       G2 = -I*( (3.*md*md/mq)*(aLp2/(aLLp2*aL)) + aL*aLp2*md/(4.*aLLp2*aLLp2*mq*mQ)*(aLLp2+12.*md*md) );
206       G3 = I*aL/(mQ*aLLp2)*( aLLp2/2. + 3.*md*md + aLp2*md/(mq*aLLp2)*(aLLp2+6.*md*md) );
207       G4 = -I*( aL/mQ + md/(mq*mQ)*aLp2*aL/aLLp2 );
208        
209       // Set form factors to be passed to the amplitude calc.
210       *f1 = F1;
211       *f2 = F2;
212       *f3 = F3;
213       *f4 = F4;
214       *g1 = G1;
215       *g2 = G2;
216       *g3 = G3;
217       *g4 = G4;
218     }
219   }
220   
221   else {
222     *f1 = 1.0;
223     *f2 = 1.0;
224     *f3 = 0.0;
225     *f4 = 0.0;
226     *g1 = 1.0;
227     *g2 = 1.0;
228     *g3 = 0.0;
229     *g4 = 0.0;
230
231   }
232
233   return ;
234
235
236 }
237
238 void EvtBaryonPCRFF::getscalarff(EvtId, EvtId, double, double, double*, double*) {
239
240   report(ERROR,"EvtGen") << "Not implemented :getscalarff in EvtBaryonPCRFF.\n";  
241   ::abort();
242
243 }
244
245 void EvtBaryonPCRFF::getvectorff(EvtId, EvtId, double, double, double*, double*,
246                                  double*, double*) {
247
248   report(ERROR,"EvtGen") << "Not implemented :getvectorff in EvtBaryonPCRFF.\n";  
249   ::abort();
250
251 }
252
253 void EvtBaryonPCRFF::gettensorff(EvtId, EvtId, double, double, double*, double*,
254                                  double*, double*) {
255
256   report(ERROR,"EvtGen") << "Not implemented :gettensorff in EvtBaryonPCRFF.\n";  
257   ::abort();
258
259 }
260
261 void EvtBaryonPCRFF::getbaryonff(EvtId, EvtId, double, double, double*, 
262                                  double*, double*, double*){
263   
264   report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtBaryonPCRFF.\n";  
265   ::abort();
266
267 }