Fix bug in building local list of valid files.
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtBCVFF.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: See EvtGen/COPYRIGHT
9 //      Copyright (C) 1998      Caltech, UCSB
10 //
11 // Module: EvtBCVFF.cc
12 //
13 // Description: form factors for B->Vlnu 
14 //
15 // Modification history:
16 //
17 //    AVL Jul 6, Module created
18 //
19 //------------------------------------------------------------------------
20 // 
21 #include "EvtGenBase/EvtPatches.hh"
22 #include "EvtGenBase/EvtPatches.hh"
23 #include "EvtGenBase/EvtReport.hh"
24 #include "EvtGenModels/EvtBCVFF.hh"
25
26 #include "EvtGenBase/EvtId.hh"
27 #include <string>
28 #include <math.h>
29 #include "EvtGenBase/EvtPDL.hh"
30 #include <stdlib.h>
31 #include <iostream>
32
33 using namespace std;
34
35 EvtBCVFF::EvtBCVFF(int idV, int fit) {
36
37   idVector = idV;
38   whichfit = fit;
39   //cout<<"==== EvtBCVFF:: idVector="<<idVector<<" whichfit="<<whichfit<<endl;
40   return;
41 }
42
43 void EvtBCVFF::getvectorff(EvtId,EvtId,
44                            double t, double, double *a1f,
45                            double *a2f, double *vf, double *a0f ){
46   double q2=t;
47
48   if(whichfit == 0) {
49     *vf = 0;
50     *a0f = 0;
51     *a1f = 1;
52     *a2f=0;
53     
54     return;
55   };
56
57   if( idVector == EvtPDL::getId("J/psi").getId() ) { // Bc -> J/psi
58       if(whichfit == 1) { // SR form factor set from [Kiselev, hep-ph/0211021]
59         double Mbc = 6.277, Mpsi=3.0967; // Experimental values
60         double Mpole2 = 4.5*4.5, den = 1./(1.-q2/Mpole2);
61         double FV = 0.11*den,
62         FAp = -0.074*den,
63         FA0 = 5.9*den,
64         FAm = 0.12*den;
65         *vf = (Mbc + Mpsi)*FV;
66         *a2f = -(Mbc+Mpsi)*FAp;
67         *a1f = FA0/(Mbc+Mpsi);
68         *a0f = (q2*FAm + (Mbc+Mpsi)*(*a1f)-(Mbc-Mpsi)*(*a2f))/(2*Mpsi);    
69         return;
70       }
71       else if(whichfit == 2) {  // form factor set from  [Ebert, hep-ph/0306306] 
72         *vf = (0.49077824756158533 - 0.0012925655191347828*q2)/(1 - 0.06292520325875656*q2);
73         *a0f = (0.4160345034630221 - 0.0024720095310225023*q2)/(1 - 0.061603451915567785*q2);
74         *a1f = (0.4970212860605933 - 0.0067519730024654745*q2)/(1 - 0.050487026667172176*q2);
75         *a2f = (0.7315284919705497 + 0.0014263826220727142*q2 -  0.0006946090066269195*q2*q2)/(1 - 0.04885587273651653*q2);
76         return;
77       };
78   }
79   else if(idVector == EvtPDL::getId("psi(2S)").getId()) { // Bc -> psi((2S)
80       if(whichfit == 1) {
81         ////cout<<"BC2:: psi2S, Kiselev, q2="<<q2<<endl;
82         double Mbc = 6.277, Mpsi=3.0967, Mpsi2S = 3.686, kappa = Mpsi/Mpsi2S; // Experimental values
83         double Mpole2 = 4.5*4.5, den=1./(1.-q2/Mpole2);
84         double FV = 0.11*den*kappa/3.1,
85         FAp = -0.074*den*kappa/4.9,
86         FA0 = 5.9*den*kappa/3.5,
87         FAm = 0.12*den*kappa/2.3;
88         *vf = (Mbc + Mpsi2S)*FV;
89         *a2f = -(Mbc+Mpsi2S)*FAp;
90         *a1f = FA0/(Mbc+Mpsi2S);
91         *a0f = (q2*FAm + (Mbc+Mpsi2S)*(*a1f)-(Mbc-Mpsi2S)*(*a2f))/(2*Mpsi2S);  
92         return;
93       }
94       else if(whichfit == 2) {
95         ////cout<<"BC2:: psi2S, Ebert, q2="<<q2<<endl;
96         *vf  =  (0.24177223968739653 - 0.053589051007278135*q2)/(1 - 0.0977848994260899*q2);
97         *a0f = (0.23996026570086615 - 0.03530198514007337*q2)/(1 - 0.09371162519983989*q2);
98         *a1f = (0.17418379258849329 - 0.004129699022085851*q2*q2)/(1 + 0.06607665248402918*q2);
99         *a2f = (0.1352376939112041 - 0.040361722565209444*q2 + 0.003343515369431853*q2*q2)/(1 - 0.1463698128333418*q2);
100         return;
101       };
102   }
103   else {
104   report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtBCVFF.\n";  
105     ::abort();
106   };
107 }
108
109
110 void EvtBCVFF::getscalarff(EvtId, EvtId, double, double, double*, 
111                                double*){
112   
113   report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtBCVFF.\n";  
114   ::abort();
115
116 }
117
118
119
120 void EvtBCVFF::gettensorff(EvtId, EvtId, double, double, double*, 
121                                double*, double*, double*){
122   
123   report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtBCVFF.\n";  
124   ::abort();
125
126 }
127
128
129
130 void EvtBCVFF::getbaryonff(EvtId, EvtId, double, double, double*, 
131                                double*, double*, double*){
132   
133   report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtBCVFF.\n";  
134   ::abort();
135
136 }
137
138 void EvtBCVFF::getdiracff(EvtId, EvtId, double, double, double*, double*,
139                                double*, double*, double*, double*) {
140   
141   report(ERROR,"EvtGen") << "Not implemented :getdiracff in EvtBCVFF.\n";
142   ::abort();
143
144 }
145
146 void EvtBCVFF::getraritaff(EvtId, EvtId, double, double, double*, double*, 
147                                 double*, double*, double*, double*, double*, double*) {
148   
149   report(ERROR,"EvtGen") << "Not implemented :getraritaff in EvtBCVFF.\n";
150   ::abort();
151
152 }
153