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-2019, The GENIE Collaboration
15  For the full text of the license visit http://copyright.genie-mc.org
16  or see $GENIE/LICENSE
17 */
18 //____________________________________________________________________________
19 
20 #ifndef _NEW_QEL_XSEC_H_
21 #define _NEW_QEL_XSEC_H_
22 
25 
26 #include "TMath.h"
27 #include "Math/IFunction.h"
28 #include "Math/Integrator.h"
29 
30 namespace genie {
31 
32 class NuclearModelI;
33 class VertexGenerator;
34 
35 namespace utils {
36  namespace gsl {
37 
38  class FullQELdXSec : public ROOT::Math::IBaseFunctionMultiDim
39  {
40  public:
41  FullQELdXSec(const XSecAlgorithmI* xsec_model, const Interaction* interaction,
42  QELEvGen_BindingMode_t binding_mode, double min_angle_EM);
43  virtual ~FullQELdXSec();
44 
45  // ROOT::Math::IBaseFunctionMultiDim interface
46  unsigned int NDim(void) const;
47  double DoEval(const double* xin) const;
48  ROOT::Math::IBaseFunctionMultiDim* Clone(void) const;
49 
51  const Interaction& GetInteraction() const;
52 
53  private:
58  double fMinAngleEM;
59  };
60 
61  } // gsl namespace
62 } // utils namespace
63 
64 class NewQELXSec : public XSecIntegratorI {
65 
66 public:
67 
68  NewQELXSec(void);
70 
71  /// XSecIntegratorI interface implementation
72  double Integrate(const XSecAlgorithmI* model, const Interaction* i) const;
73 
74  /// Overload the Algorithm::Configure() methods to load private data
75  /// members from configuration options
76  void Configure(const Registry& config);
77  void Configure(std::string config);
78 
79 
80 private:
81 
82  void LoadConfig (void);
83 
84  // Configuration obtained from cross section model
86 
87  // XML configuration parameters
89  double fGSLRelTol;
90  unsigned int fGSLMaxEval;
93  double fMinAngleEM;
94 };
95 
96 
97 } // genie namespace
98 
99 #endif // _NEW_QEL_XSEC_H_
Cross Section Calculation Interface.
THE MAIN GENIE PROJECT NAMESPACE
Definition: GeneratorBase.h:8
Cross Section Integrator Interface.
Computes the Quasi Elastic (QEL) total cross section. Is a concrete implementation of the XSecInteg...
Definition: NewQELXSec.h:64
std::string fGSLIntgType
Definition: NewQELXSec.h:88
Pure abstract base class. Defines the NuclearModelI interface to be implemented by any physics model ...
Definition: NuclearModelI.h:42
Definition: config.py:1
double DoEval(const double *xin) const
Definition: NewQELXSec.cxx:235
enum genie::EQELEvGenBindingMode QELEvGen_BindingMode_t
unsigned int fGSLMaxEval
Definition: NewQELXSec.h:90
unsigned int NDim(void) const
Definition: NewQELXSec.cxx:230
Summary information for an interaction.
Definition: Interaction.h:56
const Interaction & GetInteraction() const
Definition: NewQELXSec.cxx:220
QELEvGen_BindingMode_t fBindingMode
Definition: NewQELXSec.h:85
const NuclearModelI * fNuclModel
Definition: NewQELXSec.h:55
QELEvGen_BindingMode_t fHitNucleonBindingMode
Definition: NewQELXSec.h:57
Algorithm ID (algorithm name + configuration set name)
Definition: AlgId.h:35
const XSecAlgorithmI * fXSecModel
Definition: NewQELXSec.h:54
FullQELdXSec(const XSecAlgorithmI *xsec_model, const Interaction *interaction, QELEvGen_BindingMode_t binding_mode, double min_angle_EM)
Definition: NewQELXSec.cxx:201
A registry. Provides the container for algorithm configuration parameters.
Definition: Registry.h:66
void Configure(string mesg)
Definition: gEvServ.cxx:196
const XML_Char XML_Content * model
Definition: expat.h:151
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
Definition: NewQELXSec.cxx:225
double fMinAngleEM
Definition: NewQELXSec.h:93
enum BeamMode string