10#ifndef INUKE_NUCLEON_CORR_H
11#define INUKE_NUCLEON_CORR_H
15#include <TGenPhaseSpace.h>
29 double AvgCorrection (
const double rho,
const int A,
const int Z,
const int pdg,
const double Ek);
84 inline double beta (
const double rho) {
return fBeta1 * rho;}
96 double mstar (
const double rho,
const double k2);
98 double localFermiMom (
const double rho,
const int A,
const int Z,
const int pdg);
103 const TVector3 &k1,
const TVector3 &k2,
104 const TVector3 &k3,
const TVector3 &k4);
Most commonly used PDG codes. A set of utility functions to handle PDG codes is provided in PDGUtils.
INukeNucleonCorr()
private constructor (called only by getInstance())
double fermiMomentum(const int pdg)
return proper Fermi momentum based on nucleon PDG
static const double fEnergyStep2
within this energy step correction is assumed to be constant
double localFermiMom(const double rho, const int A, const int Z, const int pdg)
calculate local Fermi momentum
double beta(const double rho)
potential component (Eq. 2.18)
static const int fNEnergyBins1
cache binning for energy
static const double fEnergyStep3
within this energy step correction is assumed to be constant
INukeNucleonCorr & operator=(const INukeNucleonCorr &)
block assignment operator
double mstar(const double rho, const double k2)
m* calculated based on Eqs. 2.6 and 2.16
static const int fNEnergyBins2
cache binning for energy
INukeNucleonCorr(const INukeNucleonCorr &)
block copy constructor
static const double fMaxEnergy1
above this energy correction is assumed to be constant
double lambda(const double rho)
potential component (Eq. 2.19)
static const int fNEnergyBins3
cache binning for energy
static INukeNucleonCorr * getInstance()
get single instance of INukeNucleonCorr; create if necessary
TLorentzVector generateTargetNucleon(const double mass, const double fermiMomentum)
generate target nucleon
void OutputFiles(int A, int Z)
static INukeNucleonCorr * fInstance
single instance of INukeNucleonCorr
static const double fLambda1
lambda coefficient as defined by Eq. 2.19
static const double fLambda0
lambda coefficient as defined by Eq. 2.19
double getAvgCorrection(const double rho, const double A, const double Ek)
get the correction for given four-momentum and density
static const double fEnergyStep1
within this energy step correction is assumed to be constant
static const double fMaxEnergy2
above this energy correction is assumed to be constant
static const double fRho0
equilibrium density
static const double fBeta1
beta coefficient as defined by Eq. 2.18
void setFermiLevel(const double rho, const int A, const int Z)
double AvgCorrection(const double rho, const int A, const int Z, const int pdg, const double Ek)
generate kinematics fRepeat times to calculate average correction
static const double fMaxEnergy3
above this energy correction is assumed to be constant
static const unsigned int fRepeat
number of repetition to get average correction
static const double fAlpha1
alpha coefficient as defined by Eq. 2.17
static const int fNDensityBins
cache binning for density
static const double fAlpha2
alpha coefficient as defined by Eq. 2.17
static const double fDensityStep
within this density step correction is assumed to be constant
double getCorrection(const double mass, const double rho, const TVector3 &k1, const TVector3 &k2, const TVector3 &k3, const TVector3 &k4)
calculate xsec correction