46 using namespace CLHEP;
101 outFile <<
"G4NeutronElectronElModel is a neutrino-electron (neutral current) elastic scattering\n"
102 <<
"model which uses the standard model \n"
103 <<
"transfer parameterization. The model is fully relativistic\n";
121 if( pName ==
"neutron" &&
137 G4int iTkin, jTransfer;
152 for( jTransfer = 0; jTransfer <
fAngleBin; jTransfer++)
176 G4int iTkin, iTransfer;
180 if( Tkin < fEnergyVector->GetLowEdgeEnergy(iTkin) )
break;
182 if ( iTkin >= fEnergyBin ) iTkin = fEnergyBin-1;
183 if ( iTkin < 0 ) iTkin = 0;
189 for( iTransfer = 0; iTransfer <
fAngleBin; iTransfer++)
193 if (iTransfer >= fAngleBin-1) iTransfer = fAngleBin-1;
212 if( iTransfer == 0 || iTransfer ==
fAngleBin-1 )
214 randTransfer = (*fAngleTable)(iTkin)->GetLowEdgeEnergy(iTransfer);
221 iTransfer = (*fAngleTable)(iTkin)->GetVectorLength() - 1;
223 y1 = (*(*fAngleTable)(iTkin))(iTransfer-1);
224 y2 = (*(*fAngleTable)(iTkin))(iTransfer);
226 x1 = (*fAngleTable)(iTkin)->GetLowEdgeEnergy(iTransfer-1);
227 x2 = (*fAngleTable)(iTkin)->GetLowEdgeEnergy(iTransfer);
232 if ( x1 == x2 ) randTransfer =
x2;
237 if ( delta < epsilon*mean )
243 randTransfer = x1 + ( position -
y1 )*( x2 - x1 )/
delta;
258 G4double result = 1., q2, znq2, znf, znf2, znf4;
260 znq2 = 1. + 2.*
fee*x/
fM;
268 result /= ( x +
fAm )*znq2*znq2*znf4;
270 result *= ( 1 -
x )/( 1 + q2/4./
fM2 ) + 2.*
x;
303 eTkin /= 1.+2.*
fee*sin2ht/
fM;
317 if( cost > 1. ) cost = 1.;
318 if( cost < -1. ) cost = -1.;
320 G4double sint = std::sqrt( (1.0 - cost)*(1.0 + cost) );
323 G4ThreeVector eP( sint*std::cos(phi), sint*std::sin(phi), cost );
347 else if( eTkin > 0.0 )