BostedChristyEMPXSec.h
Go to the documentation of this file.
1 //____________________________________________________________________________
2 /*!
3 
4 \class genie::BostedChristyEMPXSec
5 
6 \brief Fit to inelastic cross sections for A(e,e')X
7  valid for all W<3 GeV and all Q2<10 GeV2
8 
9 \author Igor Kakorin <kakorin@jinr.ru> Joint Institute for Nuclear Research
10  based on fortran code provided on Peter Bosted's site:
11  https://userweb.jlab.org/~bosted/fits.html
12 
13 \ref 1. M.E. Christy, P.E.Bosted, "Empirical fit to precision inclusive
14  electron-proton cross sections in the resonance region", PRC 81 (2010) 055213
15  2. P.E.Bosted, M.E.Christy, "Empirical fit to inelastic electron-deuteron
16  and electron-neutron resonance region transverse cross", PRC 77 (2008) 065206
17  3. C. Maieron, T. W. Donnelly, and I. Sick, "Extended superscaling of electron
18  scattering from nuclei", PRC 65 (2001) 025502
19 
20 
21 \created April 3, 2021
22 
23 \cpright Copyright (c) 2003-2021, The GENIE Collaboration
24  For the full text of the license visit http://copyright.genie-mc.org
25  or see $GENIE/LICENSE
26 */
27 //____________________________________________________________________________
28 #ifndef _BOOSTED_CHRISTY_EM_PXSEC_H_
29 #define _BOOSTED_CHRISTY_EM_PXSEC_H_
30 
31 #include <array>
32 #include <map>
33 
36 
37 class XSecIntegratorI;
38 
39 namespace genie {
40 
42 
43 public:
46  virtual ~BostedChristyEMPXSec();
47 
48  // implement the XSecAlgorithmI interface
49  double XSec (const Interaction * i, KinePhaseSpace_t k) const;
50  double Integral (const Interaction * i) const;
51  bool ValidProcess (const Interaction * i) const;
52  bool ValidKinematics(const Interaction * i) const;
53 
54  // overload the Algorithm::Configure() methods to load private data
55  // members from configuration options
56  void Configure(const Registry & config);
57  void Configure(string config);
58 
59 private:
60 
61  void LoadConfig (void);
62  double sigmaR(int, double, double, bool) const;
63  double sigmaNR(int, double, double, bool) const;
64  void BranchingRatios(int, double&, double&) const;
65  void FermiSmearingD(double, double, double&, double&, double&, double&, bool) const;
66  void FermiSmearingA(double, double, double, double, double&, double&, double&, double&) const;
67  double FitEMC(double, int) const;
68  double MEC2009(int, double, double) const;
69 
70  bool fUseMEC; ///< account for MEC contribution?
71  double fPM; ///< mass parameter
72  double fMP; ///< mass parameter
73  double fAM; ///< mass parameter
74  double fMD; ///< deuterium mass
75  double fMpi0; ///< pion mass
76  double fMeta; ///< eta mass
77  double fWmin; ///< minimal W
78  double fWmax; ///< maximal W
79  double fQ2min; ///< minimal Q2
80  double fQ2max; ///< maximal Q2
81 
82  std::array<std::array<double, 3>, 7> fBRp; ///< branching ratios of resonances for proton fit
83  std::array<std::array<double, 3>, 7> fBRD; ///< branching ratios of resonances for deterium fit
84 
85  std::array<int, 7> fAngRes; ///< resonance angular momentum
86 
87  std::array<double, 7> fMassRes; ///< resonance mass
88 
89  std::array<double, 7> fWidthRes; ///< resonance width
90 
91  std::array<std::array<double, 4>, 7> fRescoefTp; ///< tunable parameters from Ref.1, Table III for resonance \sigma_T
92  std::array<std::array<double, 4>, 7> fRescoefTD; ///< tunable parameters from Ref.2, Table III for resonance \sigma_T
93  std::array<std::array<double, 3>, 7> fRescoefL; ///< tunable parameters from Ref.1, Table III for resonance \sigma_L
94 
95  std::array<std::array<double, 5>, 2> fNRcoefTp; ///< tunable parameters from Ref.1, Table III for nonres bkg \sigma_T
96  std::array<std::array<double, 5>, 2> fNRcoefTD; ///< tunable parameters from Ref.1, Table IV for nonres bkg \sigma_T
97  std::array<double, 6> fNRcoefL; ///< tunable parameters from Ref.1, Table III for nonres bkg \sigma_L
98  std::array<double, 6> fMECcoef; ///< tunable parameters for Eqs.(20), (21) Ref.2
99  std::array<double, 8> fMEC2009coef; ///< tunable parameters for MEC2009 function
100  std::array<double, 13> fAfitcoef; ///< tunable parameters for nuclei fit
101 
102  std::array<double, 9> fEMCalpha; ///< tunable parameters for EMC fit
103  std::array<double, 3> fEMCc; ///< tunable parameters for EMC fit
104 
105  map<int, double> fMEC2009p18;
106  map<int, double> fKFTable;
107  map<int, double> fNucRmvE;
108 
110 };
111 
112 } // genie namespace
113 
114 
115 
116 
117 #endif // _BOOSTED_CHRISTY_EM_PXSEC_H_
std::array< double, 7 > fMassRes
resonance mass
Cross Section Calculation Interface.
void Configure(const Registry &config)
THE MAIN GENIE PROJECT NAMESPACE
Definition: AlgCmp.h:25
std::array< std::array< double, 4 >, 7 > fRescoefTp
tunable parameters from Ref.1, Table III for resonance
Cross Section Integrator Interface.
double Integral(const Interaction *i) const
std::array< std::array< double, 5 >, 2 > fNRcoefTp
tunable parameters from Ref.1, Table III for nonres bkg
std::array< double, 9 > fEMCalpha
tunable parameters for EMC fit
double sigmaR(int, double, double, bool) const
std::array< double, 8 > fMEC2009coef
tunable parameters for MEC2009 function
std::array< double, 3 > fEMCc
tunable parameters for EMC fit
std::array< std::array< double, 3 >, 7 > fBRD
branching ratios of resonances for deterium fit
enum genie::EKinePhaseSpace KinePhaseSpace_t
std::array< double, 6 > fMECcoef
tunable parameters for Eqs.(20), (21) Ref.2
void FermiSmearingA(double, double, double, double, double &, double &, double &, double &) const
Summary information for an interaction.
Definition: Interaction.h:56
std::array< double, 13 > fAfitcoef
tunable parameters for nuclei fit
static Config * config
Definition: config.cpp:1054
void BranchingRatios(int, double &, double &) const
std::array< std::array< double, 3 >, 7 > fBRp
branching ratios of resonances for proton fit
std::array< double, 7 > fWidthRes
resonance width
std::array< std::array< double, 5 >, 2 > fNRcoefTD
tunable parameters from Ref.1, Table IV for nonres bkg
const XSecIntegratorI * fXSecIntegrator
bool fUseMEC
account for MEC contribution?
A registry. Provides the container for algorithm configuration parameters.
Definition: Registry.h:65
std::array< std::array< double, 4 >, 7 > fRescoefTD
tunable parameters from Ref.2, Table III for resonance
double FitEMC(double, int) const
std::array< double, 6 > fNRcoefL
tunable parameters from Ref.1, Table III for nonres bkg
std::array< int, 7 > fAngRes
resonance angular momentum
double MEC2009(int, double, double) const
void FermiSmearingD(double, double, double &, double &, double &, double &, bool) const
bool ValidKinematics(const Interaction *i) const
Is the input kinematical point a physically allowed one?
Fit to inelastic cross sections for A(e,e&#39;)X valid for all W<3 GeV and all Q2<10 GeV2.
std::array< std::array< double, 3 >, 7 > fRescoefL
tunable parameters from Ref.1, Table III for resonance
bool ValidProcess(const Interaction *i) const
Can this cross section algorithm handle the input process?
double sigmaNR(int, double, double, bool) const
double XSec(const Interaction *i, KinePhaseSpace_t k) const
Compute the cross section for the input interaction.