Fix bug in building local list of valid files.
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtSLBKPoleFF.cpp
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
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
34
35    return;
36 }
37
38
39 void 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
77 void 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=0.0;
118   double mass_star2=0.0;
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
179 void 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
224 void 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 void EvtSLBKPoleFF::getdiracff(EvtId, EvtId, double, double, double*, double*,
233                                double*, double*, double*, double*) {
234   
235   report(ERROR,"EvtGen") << "Not implemented :getdiracff in EvtSLBKPoleFF.\n";
236   ::abort();
237
238 }
239
240 void EvtSLBKPoleFF::getraritaff(EvtId, EvtId, double, double, double*, double*, 
241                                 double*, double*, double*, double*, double*, double*) {
242   
243   report(ERROR,"EvtGen") << "Not implemented :getraritaff in EvtSLBKPoleFF.\n";
244   ::abort();
245
246 }
247
248