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: 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 0 : EvtBCVFF::EvtBCVFF(int idV, int fit) {
36 :
37 0 : idVector = idV;
38 0 : whichfit = fit;
39 : //cout<<"==== EvtBCVFF:: idVector="<<idVector<<" whichfit="<<whichfit<<endl;
40 0 : return;
41 0 : }
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 0 : if(whichfit == 0) {
49 0 : *vf = 0;
50 0 : *a0f = 0;
51 0 : *a1f = 1;
52 0 : *a2f=0;
53 :
54 0 : return;
55 : };
56 :
57 0 : if( idVector == EvtPDL::getId("J/psi").getId() ) { // Bc -> J/psi
58 0 : if(whichfit == 1) { // SR form factor set from [Kiselev, hep-ph/0211021]
59 : double Mbc = 6.277, Mpsi=3.0967; // Experimental values
60 0 : double Mpole2 = 4.5*4.5, den = 1./(1.-q2/Mpole2);
61 0 : double FV = 0.11*den,
62 0 : FAp = -0.074*den,
63 0 : FA0 = 5.9*den,
64 0 : FAm = 0.12*den;
65 0 : *vf = (Mbc + Mpsi)*FV;
66 0 : *a2f = -(Mbc+Mpsi)*FAp;
67 0 : *a1f = FA0/(Mbc+Mpsi);
68 0 : *a0f = (q2*FAm + (Mbc+Mpsi)*(*a1f)-(Mbc-Mpsi)*(*a2f))/(2*Mpsi);
69 : return;
70 : }
71 0 : else if(whichfit == 2) { // form factor set from [Ebert, hep-ph/0306306]
72 0 : *vf = (0.49077824756158533 - 0.0012925655191347828*q2)/(1 - 0.06292520325875656*q2);
73 0 : *a0f = (0.4160345034630221 - 0.0024720095310225023*q2)/(1 - 0.061603451915567785*q2);
74 0 : *a1f = (0.4970212860605933 - 0.0067519730024654745*q2)/(1 - 0.050487026667172176*q2);
75 0 : *a2f = (0.7315284919705497 + 0.0014263826220727142*q2 - 0.0006946090066269195*q2*q2)/(1 - 0.04885587273651653*q2);
76 0 : return;
77 : };
78 : }
79 0 : else if(idVector == EvtPDL::getId("psi(2S)").getId()) { // Bc -> psi((2S)
80 0 : if(whichfit == 1) {
81 : ////cout<<"BC2:: psi2S, Kiselev, q2="<<q2<<endl;
82 0 : double Mbc = 6.277, Mpsi=3.0967, Mpsi2S = 3.686, kappa = Mpsi/Mpsi2S; // Experimental values
83 0 : double Mpole2 = 4.5*4.5, den=1./(1.-q2/Mpole2);
84 0 : double FV = 0.11*den*kappa/3.1,
85 0 : FAp = -0.074*den*kappa/4.9,
86 0 : FA0 = 5.9*den*kappa/3.5,
87 0 : FAm = 0.12*den*kappa/2.3;
88 0 : *vf = (Mbc + Mpsi2S)*FV;
89 0 : *a2f = -(Mbc+Mpsi2S)*FAp;
90 0 : *a1f = FA0/(Mbc+Mpsi2S);
91 0 : *a0f = (q2*FAm + (Mbc+Mpsi2S)*(*a1f)-(Mbc-Mpsi2S)*(*a2f))/(2*Mpsi2S);
92 : return;
93 : }
94 0 : else if(whichfit == 2) {
95 : ////cout<<"BC2:: psi2S, Ebert, q2="<<q2<<endl;
96 0 : *vf = (0.24177223968739653 - 0.053589051007278135*q2)/(1 - 0.0977848994260899*q2);
97 0 : *a0f = (0.23996026570086615 - 0.03530198514007337*q2)/(1 - 0.09371162519983989*q2);
98 0 : *a1f = (0.17418379258849329 - 0.004129699022085851*q2*q2)/(1 + 0.06607665248402918*q2);
99 0 : *a2f = (0.1352376939112041 - 0.040361722565209444*q2 + 0.003343515369431853*q2*q2)/(1 - 0.1463698128333418*q2);
100 0 : return;
101 : };
102 : }
103 : else {
104 0 : report(Severity::Error,"EvtGen") << "Not implemented :getbaryonff in EvtBCVFF.\n";
105 0 : ::abort();
106 : };
107 0 : }
108 :
109 :
110 : void EvtBCVFF::getscalarff(EvtId, EvtId, double, double, double*,
111 : double*){
112 :
113 0 : report(Severity::Error,"EvtGen") << "Not implemented :getbaryonff in EvtBCVFF.\n";
114 0 : ::abort();
115 :
116 : }
117 :
118 :
119 :
120 : void EvtBCVFF::gettensorff(EvtId, EvtId, double, double, double*,
121 : double*, double*, double*){
122 :
123 0 : report(Severity::Error,"EvtGen") << "Not implemented :getbaryonff in EvtBCVFF.\n";
124 0 : ::abort();
125 :
126 : }
127 :
128 :
129 :
130 : void EvtBCVFF::getbaryonff(EvtId, EvtId, double, double, double*,
131 : double*, double*, double*){
132 :
133 0 : report(Severity::Error,"EvtGen") << "Not implemented :getbaryonff in EvtBCVFF.\n";
134 0 : ::abort();
135 :
136 : }
137 :
138 : void EvtBCVFF::getdiracff(EvtId, EvtId, double, double, double*, double*,
139 : double*, double*, double*, double*) {
140 :
141 0 : report(Severity::Error,"EvtGen") << "Not implemented :getdiracff in EvtBCVFF.\n";
142 0 : ::abort();
143 :
144 : }
145 :
146 : void EvtBCVFF::getraritaff(EvtId, EvtId, double, double, double*, double*,
147 : double*, double*, double*, double*, double*, double*) {
148 :
149 0 : report(Severity::Error,"EvtGen") << "Not implemented :getraritaff in EvtBCVFF.\n";
150 0 : ::abort();
151 :
152 : }
153 :
|