]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenModels/EvtSLPoleFF.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtSLPoleFF.cxx
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: EvtSLPoleFF.cc
12 //
13 // Description: Routine to implement semileptonic form factors
14 //              according to the model SLPoles
15 //
16 // Modification history:
17 //
18 //    DJL       April 17,1998       Module created
19 //
20 //------------------------------------------------------------------------
21 // 
22 #include "EvtGenBase/EvtPatches.hh"
23 #include "EvtGenBase/EvtReport.hh"
24 #include "EvtGenModels/EvtSLPoleFF.hh"
25 #include <string>
26 #include "EvtGenBase/EvtPDL.hh"
27 #include <math.h>
28 #include <stdlib.h>
29
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]; }
35
36    return;
37 }
38
39
40 void EvtSLPoleFF::getscalarff(EvtId parent,EvtId,
41                        double t, double, double *fpf,
42                             double *f0f ) {
43
44 // Form factors have a general form, with parameters passed in
45 // from the arguements.
46
47    if ( numSLPoleargs !=8 ) {
48      report(ERROR,"EvtGen") << "Problem in EvtSLPoleFF::getscalarff\n";
49      report(ERROR,"EvtGen") << "wrong number of arguements!!!\n";
50    }
51
52   double mb=EvtPDL::getMeanMass(parent);
53   double mb2 = mb*mb;
54
55   double f0,af,bf,powf;
56
57   f0 = SLPoleargs[0];
58   af = SLPoleargs[1];
59   bf = SLPoleargs[2];
60   powf = SLPoleargs[3];
61   *fpf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
62
63   f0 = SLPoleargs[4];
64   af = SLPoleargs[5];
65   bf = SLPoleargs[6];
66   powf = SLPoleargs[7];
67
68   *f0f = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf)); 
69
70   return;
71 }
72
73  void EvtSLPoleFF::getvectorff(EvtId parent,EvtId,
74                        double t, double, double *a1f,
75                              double *a2f, double *vf, double *a0f ){
76
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";
81   }
82
83   double mb=EvtPDL::getMeanMass(parent);
84   double mb2 = mb*mb;
85
86   double f0,af,bf,powf;
87
88   f0 = SLPoleargs[0];
89   af = SLPoleargs[1];
90   bf = SLPoleargs[2];
91   powf = SLPoleargs[3];
92   *a1f = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
93
94   f0 = SLPoleargs[4];
95   af = SLPoleargs[5];
96   bf = SLPoleargs[6];
97   powf = SLPoleargs[7];
98
99   *a2f = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
100
101   f0 = SLPoleargs[8];
102   af = SLPoleargs[9];
103   bf = SLPoleargs[10];
104   powf = SLPoleargs[11];
105
106   *vf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
107
108   f0 = SLPoleargs[12];
109   af = SLPoleargs[13];
110   bf = SLPoleargs[14];
111   powf = SLPoleargs[15];
112
113   *a0f = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
114   return;
115  }
116
117
118
119  void EvtSLPoleFF::gettensorff(EvtId parent,EvtId,
120                        double t, double, double *hf,
121                              double *kf, double *bpf, double *bmf ){
122
123   if ( numSLPoleargs !=16 ) {
124      report(ERROR,"EvtGen") << "Problem in EvtSLPoleFF::gettensorff\n";
125      report(ERROR,"EvtGen") << "wrong number of arguements!!!\n";
126   }
127
128   double mb=EvtPDL::getMeanMass(parent);
129   double mb2 = mb*mb;
130
131   double f0,af,bf,powf;
132
133   f0 = SLPoleargs[0];
134   af = SLPoleargs[1];
135   bf = SLPoleargs[2];
136   powf = SLPoleargs[3];
137   *hf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
138
139   f0 = SLPoleargs[4];
140   af = SLPoleargs[5];
141   bf = SLPoleargs[6];
142   powf = SLPoleargs[7];
143
144   *kf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
145
146   f0 = SLPoleargs[8];
147   af = SLPoleargs[9];
148   bf = SLPoleargs[10];
149   powf = SLPoleargs[11];
150
151   *bpf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
152
153   f0 = SLPoleargs[12];
154   af = SLPoleargs[13];
155   bf = SLPoleargs[14];
156   powf = SLPoleargs[15];
157
158   *bmf = f0/(pow( 1.0 + (af*t/mb2) + (bf*((t/mb2)*(t/mb2))),powf));
159   return;
160  }
161
162
163 void EvtSLPoleFF::getbaryonff(EvtId, EvtId, double, double, double*, 
164                                double*, double*, double*){
165   
166   report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtSLPoleFF.\n";  
167   ::abort();
168
169 }
170