38 using namespace genie;
55 LOG(
"NewQELXSec",
pDEBUG) <<
"Beginning integrate";
63 model->
SubAlg(
"IntegralNuclearModel") );
77 .
GetString(
"IntegralNucleonBindingMode" );
94 double abstol = 1
e-16;
103 double kine_min[2] = { cos_theta_0_lim.
min, phi_0_lim.
min };
104 double kine_max[2] = { cos_theta_0_lim.
max, phi_0_lim.
max };
115 .
GetDouble(
"IntegralNuclearInfluenceCutoffEnergy");
118 if ( !tgt->
IsNucleus() || probeE > E_lab_cutoff ) {
128 double xsec_total = ig.Integral(kine_min, kine_max);
138 double xsec_sum = 0.;
144 TVector3 vertex_pos = vtx_gen->
GenerateVertex( interaction, tgt->
A() );
145 double radius = vertex_pos.Mag();
155 double xsec = ig.Integral(kine_min, kine_max);
190 GetParamDef(
"VertexGenAlg", vertexGenID,
RgAlg(
"genie::VertexGenerator",
"Default") );
203 : fXSecModel( xsec_model ), fInteraction(
new Interaction(*interaction) ),
204 fHitNucleonBindingMode( binding_mode ),
fMinAngleEM( min_angle_EM )
246 double cos_theta0 = xin[0];
247 double phi0 = xin[1];
250 double dummy_Eb = 0.;
Cross Section Calculation Interface.
TVector3 GenerateVertex(const Interaction *in, double A) const
Interaction * GetInteractionPtr()
THE MAIN GENIE PROJECT NAMESPACE
Cross Section Integrator Interface.
ROOT::Math::IntegrationMultiDim::Type IntegrationNDimTypeFromString(string type)
A simple [min,max] interval for doubles.
double Integrate(const XSecAlgorithmI *model, const Interaction *i) const
XSecIntegratorI interface implementation.
bool IsNucleus(void) const
Simple utilities for integrating GSL in the GENIE framework.
Pure abstract base class. Defines the NuclearModelI interface to be implemented by any physics model ...
void SetHitNucPosition(double r)
RgDbl GetDouble(RgKey key) const
double DoEval(const double *xin) const
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)
enum genie::EQELEvGenBindingMode QELEvGen_BindingMode_t
void Configure(const Registry &config)
virtual const Registry & GetConfig(void) const
unsigned int NDim(void) const
Summary information for an interaction.
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
const Interaction & GetInteraction() const
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
virtual void Configure(const Registry &config)
const Algorithm * GetAlgorithm(const AlgId &algid)
double func(double x, double y)
const NuclearModelI * fNuclModel
QELEvGen_BindingMode_t fHitNucleonBindingMode
Algorithm ID (algorithm name + configuration set name)
const XSecAlgorithmI * fXSecModel
void SetRemovalEnergy(double E) const
FullQELdXSec(const XSecAlgorithmI *xsec_model, const Interaction *interaction, QELEvGen_BindingMode_t binding_mode, double min_angle_EM)
RgStr GetString(RgKey key) const
static AlgFactory * Instance()
void SetMomentum3(const TVector3 &mom) const
A registry. Provides the container for algorithm configuration parameters.
const UInt_t kIAssumeFreeNucleon
QELEvGen_BindingMode_t StringToQELBindingMode(const std::string &mode_str)
Target * TgtPtr(void) const
virtual bool ValidProcess(const Interaction *i) const =0
Can this cross section algorithm handle the input process?
assert(nhit_max >=nhit_nbins)
virtual bool GenerateNucleon(const Target &) const =0
const InitialState & InitState(void) const
bool GetParamDef(const RgKey &name, T &p, const T &def) const
Interaction * fInteraction
The GENIE Algorithm Factory.
T max(sqlite3 *const db, std::string const &table_name, std::string const &column_name)
const XML_Char XML_Content * model
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
double ProbeE(RefFrame_t rf) const
const UInt_t kISkipProcessChk
if set, skip process validity checks
const Algorithm * SubAlg(const RgKey ®istry_key) const