1 //--------------------------------------------------------------------------
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.
8 // Copyright Information: See EvtGen/COPYRIGHT
9 // Copyright (C) 1998 Caltech, UCSB
11 // Module: EvtSLBKPoleFF.cc
13 // Description: Routine to implement semileptonic form factors
14 // according to the model SLBKPoles
16 // Modification history:
18 // liheng October 20,2005 Module created
20 //------------------------------------------------------------------------
22 #include "EvtGenBase/EvtPatches.hh"
23 #include "EvtGenBase/EvtReport.hh"
24 #include "EvtGenModels/EvtSLBKPoleFF.hh"//modified
26 #include "EvtGenBase/EvtPDL.hh"
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
39 void EvtSLBKPoleFF::getscalarff(EvtId parent,EvtId daught,
40 double t, double mass, double *fpf,
43 // Form factors have a general form, with parameters passed in
44 // from the arguments.
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";
58 //double a_0, a_1, a_2, a_3, a_4, a_5, a_6, a_7;
60 f0 = SLBKPoleargs[0];//f0
61 af = SLBKPoleargs[1];//alpha
62 //bf = SLBKPoleargs[2];
63 double mass_star2 = SLBKPoleargs[3]*SLBKPoleargs[3];
65 *fpf = f0/(pow( 1.0 - (1.0+af)*(t/mass_star2) + (af*((t/mass_star2)*(t/mass_star2))),powf));//modified
67 f0 = SLBKPoleargs[0];//f0
68 af = SLBKPoleargs[2];//beta
69 //bf = SLBKPoleargs[6];
72 *f0f = f0/(pow( 1.0 - (t/mass_star2/af),powf));//modified
77 void EvtSLBKPoleFF::getvectorff(EvtId parent,EvtId daught,
78 double t, double mass, double *a1f,
79 double *a2f, double *vf, double *a0f ){
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);
89 report(INFO,"EvtGen")<<"Check the implementation of EvtSLBKPoleFF::getvectorff()!\n";
92 double mb=EvtPDL::getMeanMass(parent);
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");
102 static EvtId B0S=EvtPDL::getId("B*0");
103 static EvtId BPMS=EvtPDL::getId("B*+");
104 static EvtId BS0S=EvtPDL::getId("B_s*0");
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-");
113 static EvtId D0S=EvtPDL::getId("D*0");
114 static EvtId DPMS=EvtPDL::getId("D*+");
115 static EvtId DSPMS=EvtPDL::getId("D_s*+");
119 if(parent==B0||parent==B0B){
120 mass_star=EvtPDL::getMeanMass(B0S);
121 mass_star2=mass_star*mass_star;
123 if(parent==BP||parent==BM){
124 mass_star=EvtPDL::getMeanMass(BPMS);
125 mass_star2=mass_star*mass_star;
128 mass_star=EvtPDL::getMeanMass(BS0S);
129 mass_star2=mass_star*mass_star;
132 if(parent==D0||parent==D0B){
133 mass_star=EvtPDL::getMeanMass(D0S);
134 mass_star2=mass_star*mass_star;
136 if(parent==DP||parent==DM){
137 mass_star=EvtPDL::getMeanMass(DPMS);
138 mass_star2=mass_star*mass_star;
140 if(parent==DSP||parent==DSM){
141 mass_star=EvtPDL::getMeanMass(DSPMS);
142 mass_star2=mass_star*mass_star;
146 double f0,af,bf,powf;
148 f0 = SLBKPoleargs[2];//A1
149 af = SLBKPoleargs[6];//b'
152 *a1f = f0/(pow( 1.0 - af*t/mass_star2,powf));//modified
154 f0 = SLBKPoleargs[3];//A2
155 af = SLBKPoleargs[6];//b'
156 bf = SLBKPoleargs[7];//b''==0
159 *a2f = f0/(pow(1.0 - (af+bf)*(t/mass_star2) + (af*bf)*((t/mass_star2)*(t/mass_star2)),powf));//modified
161 f0 = SLBKPoleargs[0];//V0
162 af = SLBKPoleargs[4];//a
166 *vf = f0/(pow( 1.0 - (1.0+af)*(t/mass_star2) + af*(t/mass_star2)*(t/mass_star2),powf));//modified
168 f0 = SLBKPoleargs[1];//A0
169 af = SLBKPoleargs[5];//a'
173 *a0f = f0/(pow( 1.0 - (1.0+af)*(t/mb2) + af*((t/mb2)*(t/mb2)),powf));//modified
179 void EvtSLBKPoleFF::gettensorff(EvtId parent,EvtId daught,
180 double t, double mass, double *hf,
181 double *kf, double *bpf, double *bmf ){
183 if ( numSLBKPoleargs !=16 ) {
184 report(ERROR,"EvtGen") << "Problem in EvtSLBKPoleFF::gettensorff\n";
185 report(ERROR,"EvtGen") << "wrong number of arguements!!!\n";
188 report(INFO,"EvtGen")<<"Check the implementation of EvtSLBKPoleFF::gettensorff()!\n";
190 double mb=EvtPDL::getMeanMass(parent);
193 double f0,af,bf,powf;
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));
201 f0 = SLBKPoleargs[4];
202 af = SLBKPoleargs[5];
203 bf = SLBKPoleargs[6];
204 powf = SLBKPoleargs[7];
206 *kf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
208 f0 = SLBKPoleargs[8];
209 af = SLBKPoleargs[9];
210 bf = SLBKPoleargs[10];
211 powf = SLBKPoleargs[11];
213 *bpf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
215 f0 = SLBKPoleargs[12];
216 af = SLBKPoleargs[13];
217 bf = SLBKPoleargs[14];
218 powf = SLBKPoleargs[15];
220 *bmf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
224 void EvtSLBKPoleFF::getbaryonff(EvtId, EvtId, double, double, double*,
225 double*, double*, double*){
227 report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtSLBKPoleFF.\n";