22 #ifndef _NIEVES_QELCC_CROSS_SECTION_H_
23 #define _NIEVES_QELCC_CROSS_SECTION_H_
29 #include <Math/IFunction.h>
45 class QELFormFactorsModelI;
46 class XSecIntegratorI;
121 void CNCTCLimUcalc(TLorentzVector qTildeP4,
double M,
double r,
122 bool is_neutrino,
bool tgtIsNucleus,
int tgt_pdgc,
int A,
int Z,
int N,
123 bool hitNucIsProton,
double & CN,
double & CT,
double & CL,
double & imU,
124 double & t0,
double & r00,
bool assumeFreeNucleon)
const;
127 std::complex<double>
relLindhardIm(
double q0gev,
double dqgev,
128 double kFngev,
double kFpgev,
129 double M,
bool isNeutrino,
130 double & t0,
double & r00)
const;
131 std::complex<double>
relLindhard(
double q0gev,
double dqgev,
132 double kFgev,
double M,
134 std::complex<double> relLindIm)
const;
135 std::complex<double>
ruLinRelX(
double q0,
double qm,
136 double kf,
double m)
const;
137 std::complex<double>
deltaLindhard(
double q0gev,
double dqgev,
138 double rho,
double kFgev)
const;
141 double vcr(
const Target * target,
double r)
const;
148 double LmunuAnumu(
const TLorentzVector neutrinoMom,
149 const TLorentzVector inNucleonMom,
const TLorentzVector leptonMom,
150 const TLorentzVector outNucleonMom,
double M,
bool is_neutrino,
151 const Target& target,
bool assumeFreeNucleon)
const;
189 unsigned int NDim (
void)
const;
190 double DoEval (
double rin)
const;
191 ROOT::Math::IBaseFunctionOneDim *
Clone (
void)
const;
Cross Section Calculation Interface.
double XSec(const Interaction *i, KinePhaseSpace_t k) const
Compute the cross section for the input interaction.
const QvalueShifter * fQvalueShifter
Optional algorithm to retrieve the qvalue shift for a given target.
std::complex< double > ruLinRelX(double q0, double qm, double kf, double m) const
double DoEval(double rin) const
bool fRPA
use RPA corrections
double fXSecCCScale
external xsec scaling factor for CC
void Configure(const Registry &config)
Cross Section Integrator Interface.
enum genie::EQELRmax Nieves_Coulomb_Rmax_t
QELEvGen_BindingMode_t fIntegralNucleonBindingMode
const FermiMomentumTable * fKFTable
double fXSecEMScale
external xsec scaling factor for EM
void CNCTCLimUcalc(TLorentzVector qTildeP4, double M, double r, bool is_neutrino, bool tgtIsNucleus, int tgt_pdgc, int A, int Z, int N, bool hitNucIsProton, double &CN, double &CT, double &CL, double &imU, double &t0, double &r00, bool assumeFreeNucleon) const
Examines whether the generated event should be Pauli blocked. Is a concerete implementation of the Ev...
const XSecIntegratorI * fXSecIntegrator
Pure abstract base class. Defines the NuclearModelI interface to be implemented by any physics model ...
A table of Fermi momentum constants.
QELFormFactors fFormFactors
double fCoulombScale
Scaling factor for the Coulomb potential.
bool fCoulomb
use Coulomb corrections
enum genie::EKinePhaseSpace KinePhaseSpace_t
enum genie::EQELEvGenBindingMode QELEvGen_BindingMode_t
Nieves_Coulomb_Rmax_t fCoulombRmaxMode
ROOT::Math::IBaseFunctionOneDim * Clone(void) const
std::complex< double > deltaLindhard(double q0gev, double dqgev, double rho, double kFgev) const
const QELFormFactorsModelI * fFormFactorsModel
double fhbarc
hbar*c in GeV*fm
double fCos8c2
cos^2(cabibbo angle)
Summary information for an interaction.
const NuclearModelI * fNuclModel
Nuclear Model for integration.
NievesQELvcrIntegrand(double Rcurr, int A, int Z)
static constexpr double A
bool fCompareNievesTensors
print tensors
double Integral(const Interaction *i) const
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
bool fDoPauliBlocking
Whether to apply Pauli blocking in XSec()
double fXSecNCScale
external xsec scaling factor for NC
unsigned int NDim(void) const
Computes neutrino-nucleon(nucleus) QELCC differential cross section with RPA corrections Is a concret...
double vcr(const Target *target, double r) const
TString fTensorsOutFile
file to print tensors to
virtual ~NievesQELCCPXSec()
A registry. Provides the container for algorithm configuration parameters.
int leviCivita(int input[]) const
void CompareNievesTensors(const Interaction *i) const
bool ValidProcess(const Interaction *i) const
Can this cross section algorithm handle the input process?
std::complex< double > relLindhard(double q0gev, double dqgev, double kFgev, double M, bool isNeutrino, std::complex< double > relLindIm) const
double LmunuAnumu(const TLorentzVector neutrinoMom, const TLorentzVector inNucleonMom, const TLorentzVector leptonMom, const TLorentzVector outNucleonMom, double M, bool is_neutrino, const Target &target, bool assumeFreeNucleon) const
const genie::PauliBlocker * fPauliBlocker
The PauliBlocker instance to use to apply that correction.
static constexpr double m
std::complex< double > relLindhardIm(double q0gev, double dqgev, double kFngev, double kFpgev, double M, bool isNeutrino, double &t0, double &r00) const