26 using std::ostringstream;
28 using namespace genie;
55 LOG(
"ZExpAxialFormFactorModel",
pWARN) <<
"Undefined expansion parameter";
61 fa = fa + TMath::Power(zparam,ki) *
fZ_An[ki];
71 double znum = TMath::Sqrt(
fTcut - q2) - TMath::Sqrt(
fTcut -
fT0);
72 double zden = TMath::Sqrt(
fTcut - q2) + TMath::Sqrt(
fTcut -
fT0);
92 for (
int ki=1;ki<=
fKmax;ki++)
94 fa = fa + TMath::Power(zparam,ki) *
fZ_An[ki];
108 double kp4 = (double)
fKmax+4;
109 double kp3 = (double)
fKmax+3;
110 double kp2 = (double)
fKmax+2;
111 double kp1 = (double)
fKmax+1;
112 double kp0 = (double)
fKmax ;
115 double zkp4 = TMath::Power(z0,(
int)kp4);
116 double zkp3 = TMath::Power(z0,(
int)kp3);
117 double zkp2 = TMath::Power(z0,(
int)kp2);
118 double zkp1 = TMath::Power(z0,(
int)kp1);
122 6. - kp4*kp3*kp2*zkp1 + 3.*kp4*kp3*kp1*zkp2 \
123 - 3.*kp4*kp2*kp1*zkp3 + kp3*kp2*kp1*zkp4;
128 for (
int ki = 1;ki <=
fKmax;ki++)
134 for (
int ki = 1;ki <=
fKmax;ki++)
136 b0z = b0z +
fZ_An[ki]*TMath::Power(z0,ki);
140 for (
int ki = 1;ki <=
fKmax;ki++)
142 b1 = b1 + ki*
fZ_An[ki];
146 for (
int ki = 1;ki <=
fKmax;ki++)
148 b2 = b2 + ki*(ki-1)*
fZ_An[ki];
152 for (
int ki = 1;ki <=
fKmax;ki++)
154 b3 = b3 + ki*(ki-1)*(ki-2)*
fZ_An[ki];
158 fZ_An[(int)kp4] = (1./denom) * \
159 ( (b0-b0z)*kp3*kp2*kp1 \
160 + b3*( -1. + .5*kp3*kp2*zkp1 - kp3*kp1*zkp2 \
162 + b2*( 3.*kp1 - kp3*kp2*kp1*zkp1 \
163 +kp3*kp1*(2*
fKmax+1)*zkp2 - kp2*kp1*kp0*zkp3 ) \
164 + b1*( -3.*kp2*kp1 + .5*kp3*kp2*kp2*kp1*zkp1 \
165 -kp3*kp2*kp1*kp0*zkp2 + .5*kp2*kp1*kp1*kp0*zkp3) );
167 fZ_An[(int)kp3] = (1./denom) * \
168 ( -3.*(b0-b0z)*kp4*kp2*kp1 \
169 + b3*( 3. - kp4*kp2*zkp1 + (3./2.)*kp4*kp1*zkp2 \
171 + b2*( -3.*(3*
fKmax+4) + kp4*kp2*(2*
fKmax+3)*zkp1 \
172 -3.*kp4*kp1*kp1*zkp2 + kp2*kp1*kp0*zkp4 ) \
173 + b1*( 3.*kp1*(3*
fKmax+8) - kp4*kp3*kp2*kp1*zkp1 \
174 +(3./2.)*kp4*kp3*kp1*kp0*zkp2 - .5*kp2*kp1*kp1*kp0*zkp4) );
176 fZ_An[(int)kp2] = (1./denom) * \
177 ( 3.*(b0-b0z)*kp4*kp3*kp1 \
178 + b3*( -3. + .5*kp4*kp3*zkp1 - (3./2.)*kp4*kp1*zkp3 \
180 + b2*( 3.*(3*
fKmax+5) - kp4*kp3*kp2*zkp1 \
181 +3.*kp4*kp1*kp1*zkp3 - kp3*kp1*(2*
fKmax+1)*zkp4) \
182 + b1*( -3.*kp3*(3*
fKmax+4) + .5*kp4*kp3*kp3*kp2*zkp1 \
183 -(3./2.)*kp4*kp3*kp1*kp0*zkp3 + kp3*kp2*kp1*kp0*zkp4) );
185 fZ_An[(int)kp1] = (1./denom) * \
186 ( -(b0-b0z)*kp4*kp3*kp2 \
187 + b3*( 1. - .5*kp4*kp3*zkp2 + kp4*kp2*zkp3 \
189 + b2*( -3.*kp2 + kp4*kp3*kp2*zkp2 \
190 -kp4*kp2*(2*
fKmax+3)*zkp3 + kp3*kp2*kp1*zkp4) \
191 + b1*( 3.*kp3*kp2 - .5*kp4*kp3*kp3*kp2*zkp2 \
192 +kp4*kp3*kp2*kp1*zkp3 - .5*kp3*kp2*kp2*kp1*zkp4) );
194 fZ_An[0] = (1./denom) * \
196 + b0*( kp4*kp3*kp2*zkp1 - 3.*kp4*kp3*kp1*zkp2 \
197 +3.*kp4*kp2*kp1*zkp3 - kp3*kp2*kp1*zkp4 ) \
198 + b3*( -zkp1 + 3.*zkp2 - 3.*zkp3 + zkp4 ) \
199 + b2*( 3.*kp2*zkp1 - 3.*(3*
fKmax+5)*zkp2 \
200 +3.*(3*
fKmax+4)*zkp3 - 3.*kp1*zkp4 ) \
201 + b1*( -3.*kp3*kp2*zkp1 + 3.*kp3*(3*
fKmax+4)*zkp2 \
202 -3.*kp1*(3*
fKmax+8)*zkp3 + 3.*kp2*kp1*zkp4 ) );
238 for (
int ip=1;ip<
fKmax+1;ip++) {
239 ostringstream alg_key;
240 alg_key <<
"QEL-Z_A" << ip;
Kinematics * KinePtr(void) const
Summary information for an interaction.
double q2(bool selected=false) const
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
virtual void Configure(const Registry &config)
A registry. Provides the container for algorithm configuration parameters.
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const