GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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-2024, 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 
29 namespace genie {
30 
31 class NuclearModelI;
32 class VertexGenerator;
33 
34 namespace 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:
57  double fMinAngleEM;
58  };
59 
60  } // gsl namespace
61 } // utils namespace
62 
63 class NewQELXSec : public XSecIntegratorI {
64 
65 public:
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 
78 private:
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;
91  double fMinAngleEM;
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_
Cross Section Calculation Interface.
bool fAverageOverNucleons
Definition: NewQELXSec.h:100
Cross Section Integrator Interface.
double Integrate(const XSecAlgorithmI *model, const Interaction *i) const
XSecIntegratorI interface implementation.
Definition: NewQELXSec.cxx:49
Computes the Quasi Elastic (QEL) total cross section. Is a concrete implementation of the XSecInteg...
Definition: NewQELXSec.h:63
std::string fGSLIntgType
Definition: NewQELXSec.h:86
Pure abstract base class. Defines the NuclearModelI interface to be implemented by any physics model ...
Definition: NuclearModelI.h:46
double DoEval(const double *xin) const
Definition: NewQELXSec.cxx:243
enum genie::EQELEvGenBindingMode QELEvGen_BindingMode_t
void Configure(const Registry &config)
Definition: NewQELXSec.cxx:172
unsigned int fGSLMaxEval
Definition: NewQELXSec.h:88
unsigned int NDim(void) const
Definition: NewQELXSec.cxx:238
Summary information for an interaction.
Definition: Interaction.h:56
const Interaction & GetInteraction() const
Definition: NewQELXSec.cxx:228
void LoadConfig(void)
Definition: NewQELXSec.cxx:184
const NuclearModelI * fNuclModel
Definition: NewQELXSec.h:54
QELEvGen_BindingMode_t fHitNucleonBindingMode
Definition: NewQELXSec.h:56
Algorithm ID (algorithm name + configuration set name)
Definition: AlgId.h:34
const XSecAlgorithmI * fXSecModel
Definition: NewQELXSec.h:53
FullQELdXSec(const XSecAlgorithmI *xsec_model, const Interaction *interaction, QELEvGen_BindingMode_t binding_mode, double min_angle_EM)
Definition: NewQELXSec.cxx:209
A registry. Provides the container for algorithm configuration parameters.
Definition: Registry.h:65
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
Definition: NewQELXSec.cxx:233
double fMinAngleEM
Definition: NewQELXSec.h:91