00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "EvtGenBase/EvtPatches.hh"
00023 #include "EvtGenBase/EvtReport.hh"
00024 #include "EvtGenModels/EvtSLBKPoleFF.hh"
00025 #include <string>
00026 #include "EvtGenBase/EvtPDL.hh"
00027 #include <math.h>
00028 #include <stdlib.h>
00029
00030 EvtSLBKPoleFF::EvtSLBKPoleFF(int numarg, double *arglist) {
00031 numSLBKPoleargs = numarg;
00032 for (int i=0; i<numarg; i++) {
00033 SLBKPoleargs[i] = arglist[i]; }
00034
00035 return;
00036 }
00037
00038
00039 void EvtSLBKPoleFF::getscalarff(EvtId parent,EvtId daught,
00040 double t, double mass, double *fpf,
00041 double *f0f ) {
00042
00043
00044
00045
00046 if ( numSLBKPoleargs != 4 ) {
00047 report(ERROR,"EvtGen") << "Problem in EvtSLBKPoleFF::getscalarff\n";
00048 report(ERROR,"EvtGen") << "wrong number of arguments!\n";
00049 report(ERROR,"EvtGen") << "number args:"<<numSLBKPoleargs<<" (expected 4)\n";
00050 report(ERROR,"EvtGen") << "Parent:"<<EvtPDL::name(parent)<<"\n";
00051 report(ERROR,"EvtGen") << "Daughter:"<<EvtPDL::name(daught)<<"\n";
00052
00053 }
00054
00055
00056 double f0,af,powf;
00057
00058
00059
00060 f0 = SLBKPoleargs[0];
00061 af = SLBKPoleargs[1];
00062
00063 double mass_star2 = SLBKPoleargs[3]*SLBKPoleargs[3];
00064 powf = 1.0;
00065 *fpf = f0/(pow( 1.0 - (1.0+af)*(t/mass_star2) + (af*((t/mass_star2)*(t/mass_star2))),powf));
00066
00067 f0 = SLBKPoleargs[0];
00068 af = SLBKPoleargs[2];
00069
00070 powf = 1.0;
00071
00072 *f0f = f0/(pow( 1.0 - (t/mass_star2/af),powf));
00073
00074 return;
00075 }
00076
00077 void EvtSLBKPoleFF::getvectorff(EvtId parent,EvtId daught,
00078 double t, double mass, double *a1f,
00079 double *a2f, double *vf, double *a0f ){
00080
00081 if ( numSLBKPoleargs !=8 ) {
00082 report(ERROR,"EvtGen") << "Problem in EvtSLBKPoleFF::getvectorff\n";
00083 report(ERROR,"EvtGen") << "wrong number of arguements!!!\n";
00084 report(ERROR,"EvtGen") << numSLBKPoleargs<<"\n";
00085
00086 }
00087
00088
00089 report(INFO,"EvtGen")<<"Check the implementation of EvtSLBKPoleFF::getvectorff()!\n";
00090
00091
00092 double mb=EvtPDL::getMeanMass(parent);
00093 double mb2 = mb*mb;
00094
00095
00096 static EvtId B0=EvtPDL::getId("B0");
00097 static EvtId B0B=EvtPDL::getId("anti-B0");
00098 static EvtId BP=EvtPDL::getId("B+");
00099 static EvtId BM=EvtPDL::getId("B-");
00100 static EvtId BS0=EvtPDL::getId("B_s0");
00101
00102 static EvtId B0S=EvtPDL::getId("B*0");
00103 static EvtId BPMS=EvtPDL::getId("B*+");
00104 static EvtId BS0S=EvtPDL::getId("B_s*0");
00105
00106 static EvtId D0=EvtPDL::getId("D0");
00107 static EvtId D0B=EvtPDL::getId("anti-D0");
00108 static EvtId DP=EvtPDL::getId("D+");
00109 static EvtId DM=EvtPDL::getId("D-");
00110 static EvtId DSP=EvtPDL::getId("D_s+");
00111 static EvtId DSM=EvtPDL::getId("D_s-");
00112
00113 static EvtId D0S=EvtPDL::getId("D*0");
00114 static EvtId DPMS=EvtPDL::getId("D*+");
00115 static EvtId DSPMS=EvtPDL::getId("D_s*+");
00116
00117 double mass_star;
00118 double mass_star2;
00119 if(parent==B0||parent==B0B){
00120 mass_star=EvtPDL::getMeanMass(B0S);
00121 mass_star2=mass_star*mass_star;
00122 }
00123 if(parent==BP||parent==BM){
00124 mass_star=EvtPDL::getMeanMass(BPMS);
00125 mass_star2=mass_star*mass_star;
00126 }
00127 if(parent==BS0){
00128 mass_star=EvtPDL::getMeanMass(BS0S);
00129 mass_star2=mass_star*mass_star;
00130 }
00131
00132 if(parent==D0||parent==D0B){
00133 mass_star=EvtPDL::getMeanMass(D0S);
00134 mass_star2=mass_star*mass_star;
00135 }
00136 if(parent==DP||parent==DM){
00137 mass_star=EvtPDL::getMeanMass(DPMS);
00138 mass_star2=mass_star*mass_star;
00139 }
00140 if(parent==DSP||parent==DSM){
00141 mass_star=EvtPDL::getMeanMass(DSPMS);
00142 mass_star2=mass_star*mass_star;
00143 }
00144
00145
00146 double f0,af,bf,powf;
00147
00148 f0 = SLBKPoleargs[2];
00149 af = SLBKPoleargs[6];
00150 bf = 0;
00151 powf = 1.0;
00152 *a1f = f0/(pow( 1.0 - af*t/mass_star2,powf));
00153
00154 f0 = SLBKPoleargs[3];
00155 af = SLBKPoleargs[6];
00156 bf = SLBKPoleargs[7];
00157 powf = 1.0;
00158
00159 *a2f = f0/(pow(1.0 - (af+bf)*(t/mass_star2) + (af*bf)*((t/mass_star2)*(t/mass_star2)),powf));
00160
00161 f0 = SLBKPoleargs[0];
00162 af = SLBKPoleargs[4];
00163 bf = 0;
00164 powf = 1.0;
00165
00166 *vf = f0/(pow( 1.0 - (1.0+af)*(t/mass_star2) + af*(t/mass_star2)*(t/mass_star2),powf));
00167
00168 f0 = SLBKPoleargs[1];
00169 af = SLBKPoleargs[5];
00170 bf = 0;
00171 powf = 1.0;
00172
00173 *a0f = f0/(pow( 1.0 - (1.0+af)*(t/mb2) + af*((t/mb2)*(t/mb2)),powf));
00174 return;
00175 }
00176
00177
00178
00179 void EvtSLBKPoleFF::gettensorff(EvtId parent,EvtId daught,
00180 double t, double mass, double *hf,
00181 double *kf, double *bpf, double *bmf ){
00182
00183 if ( numSLBKPoleargs !=16 ) {
00184 report(ERROR,"EvtGen") << "Problem in EvtSLBKPoleFF::gettensorff\n";
00185 report(ERROR,"EvtGen") << "wrong number of arguements!!!\n";
00186 }
00187
00188 report(INFO,"EvtGen")<<"Check the implementation of EvtSLBKPoleFF::gettensorff()!\n";
00189
00190 double mb=EvtPDL::getMeanMass(parent);
00191 double mb2 = mb*mb;
00192
00193 double f0,af,bf,powf;
00194
00195 f0 = SLBKPoleargs[0];
00196 af = SLBKPoleargs[1];
00197 bf = SLBKPoleargs[2];
00198 powf = SLBKPoleargs[3];
00199 *hf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
00200
00201 f0 = SLBKPoleargs[4];
00202 af = SLBKPoleargs[5];
00203 bf = SLBKPoleargs[6];
00204 powf = SLBKPoleargs[7];
00205
00206 *kf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
00207
00208 f0 = SLBKPoleargs[8];
00209 af = SLBKPoleargs[9];
00210 bf = SLBKPoleargs[10];
00211 powf = SLBKPoleargs[11];
00212
00213 *bpf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
00214
00215 f0 = SLBKPoleargs[12];
00216 af = SLBKPoleargs[13];
00217 bf = SLBKPoleargs[14];
00218 powf = SLBKPoleargs[15];
00219
00220 *bmf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
00221 return;
00222 }
00223
00224 void EvtSLBKPoleFF::getbaryonff(EvtId, EvtId, double, double, double*,
00225 double*, double*, double*){
00226
00227 report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtSLBKPoleFF.\n";
00228 ::abort();
00229
00230 }
00231
00232