13#include "Framework/Conventions/GBuild.h"
51 LOG(
"NewQELXSec",
pDEBUG) <<
"Beginning integrate";
59 model->
SubAlg(
"IntegralNuclearModel") );
72 std::string bind_mode_str = model->
GetConfig()
73 .
GetString(
"IntegralNucleonBindingMode" );
79 ROOT::Math::IntegrationMultiDim::Type ig_type =
85 interaction =
func->GetInteractionPtr();
90 double abstol = 1
e-16;
99 double kine_min[2] = { cos_theta_0_lim.
min, phi_0_lim.
min };
100 double kine_max[2] = { cos_theta_0_lim.
max, phi_0_lim.
max };
105 double xsec_total = ig.Integral(kine_min, kine_max);
119 .
GetDouble(
"IntegralNuclearInfluenceCutoffEnergy");
122 if ( !tgt->
IsNucleus() || probeE > E_lab_cutoff ) {
132 double xsec_total = ig.Integral(kine_min, kine_max);
142 double xsec_sum = 0.;
148 TVector3 vertex_pos = vtx_gen->
GenerateVertex( interaction, tgt->
A() );
149 double radius = vertex_pos.Mag();
159 double xsec = ig.Integral(kine_min, kine_max);
194 GetParamDef(
"VertexGenAlg", vertexGenID,
RgAlg(
"genie::VertexGenerator",
"Default") );
254 double cos_theta0 = xin[0];
255 double phi0 = xin[1];
258 double dummy_Eb = 0.;
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE,...
The GENIE Algorithm Factory.
const Algorithm * GetAlgorithm(const AlgId &algid)
static AlgFactory * Instance()
Algorithm ID (algorithm name + configuration set name)
virtual const Registry & GetConfig(void) const
virtual void Configure(const Registry &config)
bool GetParamDef(const RgKey &name, T &p, const T &def) const
const Algorithm * SubAlg(const RgKey ®istry_key) const
double ProbeE(RefFrame_t rf) const
Target * TgtPtr(void) const
Summary information for an interaction.
const InitialState & InitState(void) const
double Integrate(const XSecAlgorithmI *model, const Interaction *i) const
XSecIntegratorI interface implementation.
void Configure(const Registry &config)
bool fAverageOverNucleons
Pure abstract base class. Defines the NuclearModelI interface to be implemented by any physics model ...
void SetMomentum3(const TVector3 &mom) const
void SetRemovalEnergy(double E) const
virtual bool GenerateNucleon(const Target &) const =0
A simple [min,max] interval for doubles.
A registry. Provides the container for algorithm configuration parameters.
RgDbl GetDouble(RgKey key) const
RgStr GetString(RgKey key) const
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
void SetHitNucPosition(double r)
bool IsNucleus(void) const
TVector3 GenerateVertex(const Interaction *in, double A) const
Cross Section Calculation Interface.
virtual bool ValidProcess(const Interaction *i) const =0
Can this cross section algorithm handle the input process?
const NuclearModelI * fNuclModel
FullQELdXSec(const XSecAlgorithmI *xsec_model, const Interaction *interaction, QELEvGen_BindingMode_t binding_mode, double min_angle_EM)
const Interaction & GetInteraction() const
double DoEval(const double *xin) const
const XSecAlgorithmI * fXSecModel
Interaction * fInteraction
unsigned int NDim(void) const
QELEvGen_BindingMode_t fHitNucleonBindingMode
Interaction * GetInteractionPtr()
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
double func(double x, double y)
Simple functions for loading and reading nucleus dependent keys from config files.
Simple utilities for integrating GSL in the GENIE framework.
ROOT::Math::IntegrationMultiDim::Type IntegrationNDimTypeFromString(string type)
QELEvGen_BindingMode_t StringToQELBindingMode(const std::string &mode_str)
double ComputeFullQELPXSec(Interaction *interaction, const NuclearModelI *nucl_model, const XSecAlgorithmI *xsec_model, double cos_theta_0, double phi_0, double &Eb, QELEvGen_BindingMode_t hitNucleonBindingMode, double min_angle_EM=0., bool bind_nucleon=true)
THE MAIN GENIE PROJECT NAMESPACE
enum genie::EQELEvGenBindingMode QELEvGen_BindingMode_t
const UInt_t kISkipProcessChk
if set, skip process validity checks
const UInt_t kIAssumeFreeNucleon