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: EvtSLPoleFF.cc
13 // Description: Routine to implement semileptonic form factors
14 // according to the model SLPoles
16 // Modification history:
18 // DJL April 17,1998 Module created
20 //------------------------------------------------------------------------
22 #include "EvtGenBase/EvtPatches.hh"
23 #include "EvtGenBase/EvtReport.hh"
24 #include "EvtGenModels/EvtSLPoleFF.hh"
26 #include "EvtGenBase/EvtPDL.hh"
30 EvtSLPoleFF::EvtSLPoleFF(int numarg, double *arglist) {
31 //arg - maybe ignore the last argument - if odd ... Sigh
32 numSLPoleargs = numarg - (numarg % 2);
33 for (int i=0; i<numSLPoleargs; i++) {
34 SLPoleargs[i] = arglist[i]; }
40 void EvtSLPoleFF::getscalarff(EvtId parent,EvtId,
41 double t, double, double *fpf,
44 // Form factors have a general form, with parameters passed in
45 // from the arguements.
47 if ( numSLPoleargs !=8 ) {
48 report(ERROR,"EvtGen") << "Problem in EvtSLPoleFF::getscalarff\n";
49 report(ERROR,"EvtGen") << "wrong number of arguements!!!\n";
52 double mb=EvtPDL::getMeanMass(parent);
61 *fpf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
68 *f0f = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
73 void EvtSLPoleFF::getvectorff(EvtId parent,EvtId,
74 double t, double, double *a1f,
75 double *a2f, double *vf, double *a0f ){
77 if ( numSLPoleargs !=16 ) {
78 report(ERROR,"EvtGen") << "Problem in EvtSLPoleFF::getvectorff\n";
79 report(ERROR,"EvtGen") << "wrong number of arguements!!!\n";
80 report(ERROR,"EvtGen") << numSLPoleargs<<"\n";
83 double mb=EvtPDL::getMeanMass(parent);
92 *a1f = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
99 *a2f = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
104 powf = SLPoleargs[11];
106 *vf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
111 powf = SLPoleargs[15];
113 *a0f = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
119 void EvtSLPoleFF::gettensorff(EvtId parent,EvtId,
120 double t, double, double *hf,
121 double *kf, double *bpf, double *bmf ){
123 if ( numSLPoleargs !=16 ) {
124 report(ERROR,"EvtGen") << "Problem in EvtSLPoleFF::gettensorff\n";
125 report(ERROR,"EvtGen") << "wrong number of arguements!!!\n";
128 double mb=EvtPDL::getMeanMass(parent);
131 double f0,af,bf,powf;
136 powf = SLPoleargs[3];
137 *hf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
142 powf = SLPoleargs[7];
144 *kf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
149 powf = SLPoleargs[11];
151 *bpf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
156 powf = SLPoleargs[15];
158 *bmf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
163 void EvtSLPoleFF::getbaryonff(EvtId, EvtId, double, double, double*,
164 double*, double*, double*){
166 report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtSLPoleFF.\n";