GENIEGenerator
Loading...
Searching...
No Matches
NewQELXSec.h
Go to the documentation of this file.
1//____________________________________________________________________________
2/*!
3
4\class genie::NewQELXSec
5
6\brief Computes the Quasi Elastic (QEL) total cross section. \n
7 Is a concrete implementation of the XSecIntegratorI interface. \n
8
9\author Steven Gardiner <gardiner \at fnal.gov>
10 Fermi National Accelerator Laboratory
11
12\created February 26, 2019
13
14\cpright Copyright (c) 2003-2025, The GENIE Collaboration
15 For the full text of the license visit http://copyright.genie-mc.org
16*/
17//____________________________________________________________________________
18
19#ifndef _NEW_QEL_XSEC_H_
20#define _NEW_QEL_XSEC_H_
21
24
25#include "TMath.h"
26#include "Math/IFunction.h"
27#include "Math/Integrator.h"
28
29namespace genie {
30
31class NuclearModelI;
32class VertexGenerator;
33
34namespace utils {
35 namespace gsl {
36
37 class FullQELdXSec : public ROOT::Math::IBaseFunctionMultiDim
38 {
39 public:
40 FullQELdXSec(const XSecAlgorithmI* xsec_model, const Interaction* interaction,
41 QELEvGen_BindingMode_t binding_mode, double min_angle_EM);
42 virtual ~FullQELdXSec();
43
44 // ROOT::Math::IBaseFunctionMultiDim interface
45 unsigned int NDim(void) const;
46 double DoEval(const double* xin) const;
47 ROOT::Math::IBaseFunctionMultiDim* Clone(void) const;
48
50 const Interaction& GetInteraction() const;
51
52 private:
58 };
59
60 } // gsl namespace
61} // utils namespace
62
64
65public:
66
67 NewQELXSec(void);
68 NewQELXSec(std::string config);
69
70 /// XSecIntegratorI interface implementation
71 double Integrate(const XSecAlgorithmI* model, const Interaction* i) const;
72
73 /// Overload the Algorithm::Configure() methods to load private data
74 /// members from configuration options
75 void Configure(const Registry& config);
76 void Configure(std::string config);
77
78private:
79
80 void LoadConfig (void);
81
82 // Configuration obtained from cross section model
83 //QELEvGen_BindingMode_t fBindingMode;
84
85 // XML configuration parameters
86 std::string fGSLIntgType;
87 double fGSLRelTol;
88 unsigned int fGSLMaxEval;
92
93 // If false, the total cross section will be computed by integrating over
94 // lepton scattering angles while preserving the momentum and removal energy
95 // of the initial hit nucleon (specified in the input Interaction object).
96 // This approach is needed for "CCQE shape" tweak dials in Reweight. If true
97 // (default), then an MC integration is also performed over the distribution
98 // of initial nucleons. This approach is needed to create total cross section
99 // splines.
101};
102
103
104} // genie namespace
105
106#endif // _NEW_QEL_XSEC_H_
Algorithm ID (algorithm name + configuration set name)
Definition AlgId.h:34
Summary information for an interaction.
Definition Interaction.h:56
unsigned int fGSLMaxEval
Definition NewQELXSec.h:88
std::string fGSLIntgType
Definition NewQELXSec.h:86
double Integrate(const XSecAlgorithmI *model, const Interaction *i) const
XSecIntegratorI interface implementation.
void Configure(std::string config)
void LoadConfig(void)
void Configure(const Registry &config)
Pure abstract base class. Defines the NuclearModelI interface to be implemented by any physics model ...
A registry. Provides the container for algorithm configuration parameters.
Definition Registry.h:65
Cross Section Calculation Interface.
const NuclearModelI * fNuclModel
Definition NewQELXSec.h:54
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
Definition NewQELXSec.h:53
unsigned int NDim(void) const
QELEvGen_BindingMode_t fHitNucleonBindingMode
Definition NewQELXSec.h:56
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
Simple utilities for integrating GSL in the GENIE framework.
Root of GENIE utility namespaces.
THE MAIN GENIE PROJECT NAMESPACE
Definition AlgCmp.h:25
enum genie::EQELEvGenBindingMode QELEvGen_BindingMode_t