GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SPPXSecWithCache.h
Go to the documentation of this file.
1 //____________________________________________________________________________
2 /*!
3 
4 \class genie::SPPXSecWithCache
5 
6 \brief Class that caches neutrino resonance SPP cross sections on free
7  nucleons. This significantly speeds
8  the cross section calculation for multiple nuclear targets (eg at the
9  spline construction phase, but only for case without Pauli-blocking).
10  This class integrates cross sections faster,
11 
12 Computes the cross section for an neutrino resonance SPP reaction.
13 
14 
15 \authors Igor Kakorin <kakorin@jinr.ru>, Joint Institute for Nuclear Research \n
16  Vadim Naumov <vnaumov@theor.jinr.ru >, Joint Institute for Nuclear Research \n
17  based on code of Costas Andreopoulos <c.andreopoulos \at cern.ch>
18  University of Liverpool
19 
20 \created November 12, 2019
21 
22 \cpright Copyright (c) 2003-2024, The GENIE Collaboration
23  For the full text of the license visit http://copyright.genie-mc.org
24  or see $GENIE/LICENSE
25 */
26 //____________________________________________________________________________
27 
28 #ifndef _SPP_XSEC_WITH_CACHE_H_
29 #define _SPP_XSEC_WITH_CACHE_H_
30 
31 #include <Math/IFunction.h>
32 #include <Math/IntegratorMultiDim.h>
33 
37 #include "Framework/Utils/Range1.h"
40 
41 namespace genie {
42 
44 
45 protected:
47  SPPXSecWithCache(string name);
48  SPPXSecWithCache(string name, string config);
49  virtual ~SPPXSecWithCache();
50 
51  // Don't implement the XSecIntegratorI interface - leave it for the concrete
52  // subclasses. Just define utility methods and data
53  void CacheResExcitationXSec (const Interaction * interaction) const;
54  string CacheBranchName(SppChannel_t spp_channel, InteractionType_t it, int nu) const;
55 
57  double fWcut;
58  double fEMax;
59 
62 };
63 
64 
65 class XSecAlgorithmI;
66 class Interaction;
67 
68 namespace utils {
69 namespace gsl {
70 
71 
72 
73 //.....................................................................................
74 //
75 // genie::utils::gsl::d3XSecMK_dWQ2CosTheta_E
76 // A 3-D cross section function: d3xsec/dWdQ2dCosTheta = f(W, Q2, CosTheta)|(fixed E)
77 //
78 class d3XSecMK_dWQ2CosTheta_E: public ROOT::Math::IBaseFunctionMultiDim
79 {
80 public:
81  d3XSecMK_dWQ2CosTheta_E(const XSecAlgorithmI * m, const Interaction * i, double wcut);
83 
84  // ROOT::Math::IBaseFunctionMultiDim interface
85  unsigned int NDim (void) const;
86  double DoEval (const double * xin) const;
87  ROOT::Math::IBaseFunctionMultiDim * Clone (void) const;
88 
89 private:
93  bool isZero;
95  double fWcut;
96 };
97 
98 } // gsl namespace
99 } // utils namespace
100 } // genie namespace
101 
102 #endif // _SPP_XSEC_WITH_H_
103 
104 
105 
double DoEval(const double *xin) const
Cross Section Calculation Interface.
Cross Section Integrator Interface.
A simple [min,max] interval for doubles.
Definition: Range1.h:42
Encapsulates a list of baryon resonances.
Definition: BaryonResList.h:37
enum genie::ESppChannel SppChannel_t
Summary information for an interaction.
Definition: Interaction.h:56
string CacheBranchName(SppChannel_t spp_channel, InteractionType_t it, int nu) const
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
Kinematical phase space.
Definition: KPhaseSpace.h:33
const XSecAlgorithmI * fSinglePionProductionXSecModel
d3XSecMK_dWQ2CosTheta_E(const XSecAlgorithmI *m, const Interaction *i, double wcut)
Class that caches neutrino resonance SPP cross sections on free nucleons. This significantly speeds t...
void CacheResExcitationXSec(const Interaction *interaction) const
static constexpr double m
Definition: Units.h:71
enum genie::EInteractionType InteractionType_t