]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TEvtGen/EvtGenModels/EvtSLBKPoleFF.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtSLBKPoleFF.cxx
CommitLineData
da0e9ce3 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: EvtSLBKPoleFF.cc
12//
13// Description: Routine to implement semileptonic form factors
14// according to the model SLBKPoles
15//
16// Modification history:
17//
18// liheng October 20,2005 Module created
19//
20//------------------------------------------------------------------------
21//
22#include "EvtGenBase/EvtPatches.hh"
23#include "EvtGenBase/EvtReport.hh"
24#include "EvtGenModels/EvtSLBKPoleFF.hh"//modified
25#include <string>
26#include "EvtGenBase/EvtPDL.hh"
27#include <math.h>
28#include <stdlib.h>
29
30EvtSLBKPoleFF::EvtSLBKPoleFF(int numarg, double *arglist) {//modified
31 numSLBKPoleargs = numarg;//modified
32 for (int i=0; i<numarg; i++) {
33 SLBKPoleargs[i] = arglist[i]; }//modified
34
35 return;
36}
37
38
39void EvtSLBKPoleFF::getscalarff(EvtId parent,EvtId daught,
40 double t, double mass, double *fpf,
41 double *f0f ) {
42
43// Form factors have a general form, with parameters passed in
44// from the arguments.
45
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";
52
53 }
54
55
56 double f0,af,powf;
57
58 //double a_0, a_1, a_2, a_3, a_4, a_5, a_6, a_7;
59
60 f0 = SLBKPoleargs[0];//f0
61 af = SLBKPoleargs[1];//alpha
62 //bf = SLBKPoleargs[2];
63 double mass_star2 = SLBKPoleargs[3]*SLBKPoleargs[3];
64 powf = 1.0;
65 *fpf = f0/(pow( 1.0 - (1.0+af)*(t/mass_star2) + (af*((t/mass_star2)*(t/mass_star2))),powf));//modified
66
67 f0 = SLBKPoleargs[0];//f0
68 af = SLBKPoleargs[2];//beta
69 //bf = SLBKPoleargs[6];
70 powf = 1.0;
71
72 *f0f = f0/(pow( 1.0 - (t/mass_star2/af),powf));//modified
73
74 return;
75}
76
77void EvtSLBKPoleFF::getvectorff(EvtId parent,EvtId daught,
78 double t, double mass, double *a1f,
79 double *a2f, double *vf, double *a0f ){
80
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);
86 }
87
88
89 report(INFO,"EvtGen")<<"Check the implementation of EvtSLBKPoleFF::getvectorff()!\n";
90
91
92 double mb=EvtPDL::getMeanMass(parent);
93 double mb2 = mb*mb;
94
95//modified-begin
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");
101
102 static EvtId B0S=EvtPDL::getId("B*0");
103 static EvtId BPMS=EvtPDL::getId("B*+");
104 static EvtId BS0S=EvtPDL::getId("B_s*0");
105
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-");
112
113 static EvtId D0S=EvtPDL::getId("D*0");
114 static EvtId DPMS=EvtPDL::getId("D*+");
115 static EvtId DSPMS=EvtPDL::getId("D_s*+");
116
117 double mass_star;
118 double mass_star2;
119 if(parent==B0||parent==B0B){
120 mass_star=EvtPDL::getMeanMass(B0S);
121 mass_star2=mass_star*mass_star;
122 }
123 if(parent==BP||parent==BM){
124 mass_star=EvtPDL::getMeanMass(BPMS);
125 mass_star2=mass_star*mass_star;
126 }
127 if(parent==BS0){
128 mass_star=EvtPDL::getMeanMass(BS0S);
129 mass_star2=mass_star*mass_star;
130 }
131
132 if(parent==D0||parent==D0B){
133 mass_star=EvtPDL::getMeanMass(D0S);
134 mass_star2=mass_star*mass_star;
135 }
136 if(parent==DP||parent==DM){
137 mass_star=EvtPDL::getMeanMass(DPMS);
138 mass_star2=mass_star*mass_star;
139 }
140 if(parent==DSP||parent==DSM){
141 mass_star=EvtPDL::getMeanMass(DSPMS);
142 mass_star2=mass_star*mass_star;
143 }
144//modified-end
145
146 double f0,af,bf,powf;
147
148 f0 = SLBKPoleargs[2];//A1
149 af = SLBKPoleargs[6];//b'
150 bf = 0;//0
151 powf = 1.0;//1.0
152 *a1f = f0/(pow( 1.0 - af*t/mass_star2,powf));//modified
153
154 f0 = SLBKPoleargs[3];//A2
155 af = SLBKPoleargs[6];//b'
156 bf = SLBKPoleargs[7];//b''==0
157 powf = 1.0;//1.0
158
159 *a2f = f0/(pow(1.0 - (af+bf)*(t/mass_star2) + (af*bf)*((t/mass_star2)*(t/mass_star2)),powf));//modified
160
161 f0 = SLBKPoleargs[0];//V0
162 af = SLBKPoleargs[4];//a
163 bf = 0;//0
164 powf = 1.0;//1.0
165
166 *vf = f0/(pow( 1.0 - (1.0+af)*(t/mass_star2) + af*(t/mass_star2)*(t/mass_star2),powf));//modified
167
168 f0 = SLBKPoleargs[1];//A0
169 af = SLBKPoleargs[5];//a'
170 bf = 0;//0
171 powf = 1.0;//1.0
172
173 *a0f = f0/(pow( 1.0 - (1.0+af)*(t/mb2) + af*((t/mb2)*(t/mb2)),powf));//modified
174 return;
175 }
176
177
178
179void EvtSLBKPoleFF::gettensorff(EvtId parent,EvtId daught,
180 double t, double mass, double *hf,
181 double *kf, double *bpf, double *bmf ){
182
183 if ( numSLBKPoleargs !=16 ) {
184 report(ERROR,"EvtGen") << "Problem in EvtSLBKPoleFF::gettensorff\n";
185 report(ERROR,"EvtGen") << "wrong number of arguements!!!\n";
186 }
187
188 report(INFO,"EvtGen")<<"Check the implementation of EvtSLBKPoleFF::gettensorff()!\n";
189
190 double mb=EvtPDL::getMeanMass(parent);
191 double mb2 = mb*mb;
192
193 double f0,af,bf,powf;
194
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));
200
201 f0 = SLBKPoleargs[4];
202 af = SLBKPoleargs[5];
203 bf = SLBKPoleargs[6];
204 powf = SLBKPoleargs[7];
205
206 *kf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
207
208 f0 = SLBKPoleargs[8];
209 af = SLBKPoleargs[9];
210 bf = SLBKPoleargs[10];
211 powf = SLBKPoleargs[11];
212
213 *bpf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
214
215 f0 = SLBKPoleargs[12];
216 af = SLBKPoleargs[13];
217 bf = SLBKPoleargs[14];
218 powf = SLBKPoleargs[15];
219
220 *bmf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
221 return;
222 }
223
224void EvtSLBKPoleFF::getbaryonff(EvtId, EvtId, double, double, double*,
225 double*, double*, double*){
226
227 report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtSLBKPoleFF.\n";
228 ::abort();
229
230}
231
232