GENIEGenerator
Loading...
Searching...
No Matches
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-2025, 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
37class XSecIntegratorI;
38
39namespace genie {
40
42
43public:
45 BostedChristyEMPXSec(string config);
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
59private:
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_
double FitEMC(double, int) const
std::array< std::array< double, 4 >, 7 > fRescoefTp
tunable parameters from Ref.1, Table III for resonance \sigma_T
bool ValidProcess(const Interaction *i) const
Can this cross section algorithm handle the input process?
std::array< std::array< double, 5 >, 2 > fNRcoefTp
tunable parameters from Ref.1, Table III for nonres bkg \sigma_T
double MEC2009(int, double, double) const
double Integral(const Interaction *i) const
const XSecIntegratorI * fXSecIntegrator
std::array< double, 7 > fMassRes
resonance mass
std::array< double, 9 > fEMCalpha
tunable parameters for EMC fit
std::array< double, 13 > fAfitcoef
tunable parameters for nuclei fit
std::array< std::array< double, 5 >, 2 > fNRcoefTD
tunable parameters from Ref.1, Table IV for nonres bkg \sigma_T
std::array< double, 7 > fWidthRes
resonance width
std::array< std::array< double, 4 >, 7 > fRescoefTD
tunable parameters from Ref.2, Table III for resonance \sigma_T
std::array< std::array< double, 3 >, 7 > fRescoefL
tunable parameters from Ref.1, Table III for resonance \sigma_L
void BranchingRatios(int, double &, double &) const
void Configure(const Registry &config)
void FermiSmearingD(double, double, double &, double &, double &, double &, bool) const
bool fUseMEC
account for MEC contribution?
std::array< double, 3 > fEMCc
tunable parameters for EMC fit
double sigmaNR(int, double, double, bool) const
std::array< double, 6 > fNRcoefL
tunable parameters from Ref.1, Table III for nonres bkg \sigma_L
std::array< std::array< double, 3 >, 7 > fBRp
branching ratios of resonances for proton fit
std::array< double, 6 > fMECcoef
tunable parameters for Eqs.(20), (21) Ref.2
std::array< std::array< double, 3 >, 7 > fBRD
branching ratios of resonances for deterium fit
void FermiSmearingA(double, double, double, double, double &, double &, double &, double &) const
std::array< int, 7 > fAngRes
resonance angular momentum
std::array< double, 8 > fMEC2009coef
tunable parameters for MEC2009 function
bool ValidKinematics(const Interaction *i) const
Is the input kinematical point a physically allowed one?
double sigmaR(int, double, double, bool) const
double XSec(const Interaction *i, KinePhaseSpace_t k) const
Compute the cross section for the input interaction.
Summary information for an interaction.
Definition Interaction.h:56
A registry. Provides the container for algorithm configuration parameters.
Definition Registry.h:65
Cross Section Integrator Interface.
THE MAIN GENIE PROJECT NAMESPACE
Definition AlgCmp.h:25
enum genie::EKinePhaseSpace KinePhaseSpace_t