GENIEGenerator
Loading...
Searching...
No Matches
INukeHadroData2025.h
Go to the documentation of this file.
1//____________________________________________________________________________
2/*!
3
4\class genie::INukeHadroData2025
5
6\brief Singleton class to load & serve hadron x-section splines used by
7 GENIE's version of the INTRANUKE cascade MC.
8
9 This is extension of INukeHadroData2018, changes for piA cross sections.
10 The hadron x-section data used to build the x-section splines stored
11 at this singleton are provided & maintained by Steve Dytman and students.
12 In a nutshell:
13 The h+N x-sections come mostly from the SAID (Arndt et al.) PWA fit
14 while the h+A x-sections come from a combination of Ashery, various sigma_reac
15 dat for piA. For pA, data used for total xs and
16 INC model results from Mashnik et al. for h+Fe56 which is extrapolated
17 to other targets via A^2/3 approximation.
18
19 See README.md for more detail.
20
21\author Costas Andreopoulos <c.andreopoulos \at cern.ch>, Rutherford Lab.
22 Steve Dytman <dytman+@pitt.edu>, Pittsburgh Univ.
23 Aaron Meyer <asm58@pitt.edu>, Pittsburgh Univ.
24 Mohamed Ismail <msi10@pitt.edu>, Pittsburgh Univ.
25
26\created September 01, 2025
27
28\cpright Copyright (c) 2003-2025, The GENIE Collaboration
29 For the full text of the license visit http://copyright.genie-mc.org
30 @ september,2025 Mohamed Ismail <msi10@pitt.edu>, SD
31Data sources for hA splines updated.
32 - replace Mashnik CEM03 at Tpi>400 MeV with hN calculations
33 - replace estimates at Tpi<60 MeV with INCL calculatiosn
34 - fix errors in CEX (too large at low energies, too low and highenergies
35 - use total reaction cross sections as denominator in xs fractiopns instead of total cross section
36 For hA2025, we rely now on total cross sections TGraph2d not the fractions TGraph2d.
37
38*/
39//____________________________________________________________________________
40
41#ifndef _INTRANUKE_HADRON_CROSS_SECTIONS_2025_H_
42#define _INTRANUKE_HADRON_CROSS_SECTIONS_2025_H_
43
47
48class TGraph2D;
49
50namespace genie {
51
52class Spline;
53
55{
56public:
57 static INukeHadroData2025 * Instance (void);
58
59// Note that, unlike most the rest of GENIE where everything is expressed
60// in natural units, all x-section splines included here are evaluated in
61// kinetic energies given in MeV and return the x-section value in mbarns
62
63 double XSec (int hpdgc, int tgt, int nprod, INukeFateHN_t rxnType, double ke, double costh) const;
64 double XSec (int hpdgc, INukeFateHN_t fate, double ke, int targA, int targZ) const;
65 double FracADep (int hpdgc, INukeFateHA_t fate, double ke, int targA) const;
66 double FracAIndep (int hpdgc, INukeFateHA_t fate, double ke) const;
67 double Frac (int hpdgc, INukeFateHN_t fate, double ke, int targA=0, int targZ=0) const;
68 double IntBounce (const GHepParticle* p, int target, int s1, INukeFateHN_t fate);
69
70
71 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
72 // hN mode hadron x-section splines
73 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
74 const Spline * XSecPipn_Tot (void) const { return fXSecPipn_Tot; }
75 const Spline * XSecPipn_CEx (void) const { return fXSecPipn_CEx; }
76 const Spline * XSecPipn_Elas (void) const { return fXSecPipn_Elas; }
77 const Spline * XSecPipn_Reac (void) const { return fXSecPipn_Reac; }
78 const Spline * XSecPipp_Tot (void) const { return fXSecPipp_Tot; }
79 const Spline * XSecPipp_CEx (void) const { return fXSecPipp_CEx; }
80 const Spline * XSecPipp_Elas (void) const { return fXSecPipp_Elas; }
81 const Spline * XSecPipp_Reac (void) const { return fXSecPipp_Reac; }
82 const Spline * XSecPipp_Abs (void) const { return fXSecPipd_Abs; }
83 const Spline * XSecPi0n_Tot (void) const { return fXSecPi0n_Tot; }
84 const Spline * XSecPi0n_CEx (void) const { return fXSecPi0n_CEx; }
85 const Spline * XSecPi0n_Elas (void) const { return fXSecPi0n_Elas; }
86 const Spline * XSecPi0n_Reac (void) const { return fXSecPi0n_Reac; }
87 const Spline * XSecPi0p_Tot (void) const { return fXSecPi0p_Tot; }
88 const Spline * XSecPi0p_CEx (void) const { return fXSecPi0p_CEx; }
89 const Spline * XSecPi0p_Elas (void) const { return fXSecPi0p_Elas; }
90 const Spline * XSecPi0p_Reac (void) const { return fXSecPi0p_Reac; }
91 const Spline * XSecPi0p_Abs (void) const { return fXSecPi0d_Abs; }
92 const Spline * XSecPp_Tot (void) const { return fXSecPp_Tot; }
93 const Spline * XSecPp_Elas (void) const { return fXSecPp_Elas; }
94 const Spline * XSecPp_Reac (void) const { return fXSecPp_Reac; }
95 const Spline * XSecPn_Tot (void) const { return fXSecPn_Tot; }
96 const Spline * XSecPn_Elas (void) const { return fXSecPn_Elas; }
97 const Spline * XSecPn_Reac (void) const { return fXSecPn_Reac; }
98 const Spline * XSecNn_Tot (void) const { return fXSecNn_Tot; }
99 const Spline * XSecNn_Elas (void) const { return fXSecNn_Elas; }
100 const Spline * XSecNn_Reac (void) const { return fXSecNn_Reac; }
101 const Spline * XSecKpn_Elas (void) const { return fXSecKpn_Elas; }
102 const Spline * XSecKpn_CEx (void) const { return fXSecKpn_CEx; }
103 const Spline * XSecKpp_Elas (void) const { return fXSecKpp_Elas; }
104 const Spline * XSecKpN_Abs (void) const { return fXSecKpN_Abs; } //not implemented
105 const Spline * XSecKpN_Tot (void) const { return fXSecKpN_Tot; }
106 const Spline * XSecGamp_fs (void) const { return fXSecGamp_fs; }
107 const Spline * XSecGamn_fs (void) const { return fXSecGamn_fs; }
108 const Spline * XSecGamN_Tot (void) const { return fXSecGamN_Tot; }
109 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
110 // hA mode hadron x-section splines
111 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
112 const Spline * FracPA_Tot (void) const { return fFracPA_Tot; }
113 const Spline * FracPA_Elas (void) const { return fFracPA_Elas; }
114 const Spline * FracPA_Inel (void) const { return fFracPA_Inel; }
115 const Spline * FracPA_CEx (void) const { return fFracPA_CEx; }
116 const Spline * FracPA_Abs (void) const { return fFracPA_Abs; }
117 const Spline * FracPA_PiPro (void) const { return fFracPA_PiPro; }
118 const Spline * FracNA_Tot (void) const { return fFracNA_Tot; }
119 const Spline * FracNA_Elas (void) const { return fFracNA_Elas; }
120 const Spline * FracNA_Inel (void) const { return fFracNA_Inel; }
121 const Spline * FracNA_CEx (void) const { return fFracNA_CEx; }
122 const Spline * FracNA_Abs (void) const { return fFracNA_Abs; }
123 const Spline * FracNA_PiPro (void) const { return fFracNA_PiPro; }
124 const Spline * FracKA_Tot (void) const { return fFracKA_Tot; }
125 const Spline * FracKA_Elas (void) const { return fFracKA_Elas; }
126 const Spline * FracKA_Inel (void) const { return fFracKA_Inel; }
127 const Spline * FracKA_CEx (void) const { return fFracKA_CEx; }
128 const Spline * FracKA_Abs (void) const { return fFracKA_Abs; }
129
130 const Spline * FracPA_Cmp (void) const { return fFracPA_Cmp; }
131 const Spline * FracNA_Cmp (void) const { return fFracNA_Cmp; } //suarez
132
133
134 const BLI2DNonUnifGrid * hN2dXSecPP_Elas (void) const { return fhN2dXSecPP_Elas; }
135 const BLI2DNonUnifGrid * hN2dXSecNP_Elas (void) const { return fhN2dXSecNP_Elas; }
139 const BLI2DNonUnifGrid * hN2dXSecKpN_Elas (void) const { return fhN2dXSecKpN_Elas; }
140 const BLI2DNonUnifGrid * hN2dXSecKpP_Elas (void) const { return fhN2dXSecKpP_Elas; }
141 const BLI2DNonUnifGrid * hN2dXSecPiN_CEx (void) const { return fhN2dXSecPiN_CEx; }
142 const BLI2DNonUnifGrid * hN2dXSecPiN_Abs (void) const { return fhN2dXSecPiN_Abs; }
147
148 static double fMinKinEnergy; ///<
149 static double fMaxKinEnergyHA; ///<
150 static double fMaxKinEnergyHN; ///<
151
152private:
156
157 void LoadCrossSections(void);
158
159 void ReadhNFile(
160 string filename, double ke, int npoints, int & curr_point,
161 /*double * ke_array,*/ double * costh_array, double * xsec_array, int cols);
162
164
165 Spline * fXSecPipn_Tot; ///< pi+n hN x-section splines
169 Spline * fXSecPipp_Tot; ///< pi+p hN x-section splines
174 Spline * fXSecPi0n_Tot; ///< pi0n hN x-section splines
178 Spline * fXSecPi0p_Tot; ///< pi0p hN x-section splines
183 Spline * fXSecPp_Tot; ///< p/nN x-section splines
192 Spline * fXSecKpn_Elas; ///< K+N x-section splines
197 Spline * fFracPA_Tot; ///< N+A x-section splines
209 Spline * fFracKA_Tot; ///< K+A x-section splines
214 Spline * fXSecGamp_fs; ///< gamma A x-section splines
217 Spline * fXSecPp_Cmp; ///< NN cmp (compound nucleus) fate
222
223 // TGraph2D * TPipA_Tot;
224 TGraph2D * TfracPipA_CEx;
225// TGraph2D * TfracPipA_Elas;
227 TGraph2D * TfracPipA_Abs;
228 TGraph2D * TfracPipA_PiPro;
229
230 TGraph2D * TPipA_Tot;
231 TGraph2D * TPipA_CEx;
232 TGraph2D * TPipA_Inelas;
233 TGraph2D * TPipA_Abs;
234 TGraph2D * TPipA_PiPro;
235
251
252 //-- Sinleton cleaner
262 friend struct Cleaner;
263};
264
265} // genie namespace
266#endif //_INTRANUKE_HADRON_CROSS_SECTIONS_2015_H_
267
268
STDHEP-like event record entry that can fit a particle or a nucleus.
const Spline * XSecPipn_Tot(void) const
const Spline * XSecNn_Elas(void) const
const Spline * XSecNn_Reac(void) const
const Spline * XSecPipn_Elas(void) const
double IntBounce(const GHepParticle *p, int target, int s1, INukeFateHN_t fate)
const Spline * FracNA_CEx(void) const
double FracADep(int hpdgc, INukeFateHA_t fate, double ke, int targA) const
const Spline * FracKA_Inel(void) const
const Spline * FracNA_Abs(void) const
const Spline * FracKA_Abs(void) const
const Spline * XSecKpp_Elas(void) const
const Spline * XSecPi0n_Tot(void) const
const Spline * XSecGamN_Tot(void) const
const Spline * FracPA_Cmp(void) const
static INukeHadroData2025 * Instance(void)
const Spline * FracPA_Elas(void) const
BLI2DNonUnifGrid * fhN2dXSecGamPimP_Inelas
const Spline * XSecPi0n_CEx(void) const
Spline * fXSecPi0n_Tot
pi0n hN x-section splines
const Spline * FracPA_PiPro(void) const
const BLI2DNonUnifGrid * hN2dXSecPimN_Elas(void) const
INukeHadroData2025(const INukeHadroData2025 &shx)
double FracAIndep(int hpdgc, INukeFateHA_t fate, double ke) const
BLI2DNonUnifGrid * fhN2dXSecKpP_Elas
Spline * fXSecKpn_Elas
K+N x-section splines.
BLI2DNonUnifGrid * fhN2dXSecPi0N_Elas
const Spline * FracPA_Tot(void) const
Spline * fXSecPipn_Tot
pi+n hN x-section splines
BLI2DNonUnifGrid * fhN2dXSecNP_Elas
const BLI2DNonUnifGrid * hN2dXSecPiN_CEx(void) const
const Spline * XSecPipp_CEx(void) const
const Spline * XSecPi0p_Reac(void) const
const Spline * FracKA_CEx(void) const
BLI2DNonUnifGrid * fhN2dXSecPiN_Abs
BLI2DNonUnifGrid * fhN2dXSecKpN_CEx
BLI2DNonUnifGrid * fhN2dXSecPiN_CEx
const Spline * FracNA_Cmp(void) const
BLI2DNonUnifGrid * fhN2dXSecPipN_Elas
const Spline * XSecPipn_Reac(void) const
const Spline * FracKA_Elas(void) const
const Spline * XSecKpN_Tot(void) const
const Spline * FracNA_Inel(void) const
const BLI2DNonUnifGrid * hN2dXSecGamPi0N_Inelas(void) const
const Spline * FracNA_Elas(void) const
Spline * fXSecPi0p_Tot
pi0p hN x-section splines
const Spline * XSecPi0n_Reac(void) const
const Spline * XSecPp_Reac(void) const
const BLI2DNonUnifGrid * hN2dXSecGamPipN_Inelas(void) const
const Spline * XSecPi0p_Elas(void) const
const BLI2DNonUnifGrid * hN2dXSecPiN_Abs(void) const
const Spline * XSecPipp_Tot(void) const
const BLI2DNonUnifGrid * hN2dXSecPipN_Elas(void) const
const BLI2DNonUnifGrid * hN2dXSecPP_Elas(void) const
const Spline * XSecPn_Reac(void) const
const BLI2DNonUnifGrid * hN2dXSecPi0N_Elas(void) const
const BLI2DNonUnifGrid * hN2dXSecKpN_Elas(void) const
const Spline * XSecPipp_Reac(void) const
Spline * fXSecPp_Tot
p/nN x-section splines
BLI2DNonUnifGrid * fhN2dXSecGamPi0N_Inelas
double Frac(int hpdgc, INukeFateHN_t fate, double ke, int targA=0, int targZ=0) const
const Spline * XSecPi0p_Tot(void) const
BLI2DNonUnifGrid * fhN2dXSecKpN_Abs
const Spline * XSecKpn_Elas(void) const
static INukeHadroData2025 * fInstance
const BLI2DNonUnifGrid * hN2dXSecGamPi0P_Inelas(void) const
Spline * fXSecPp_Cmp
NN cmp (compound nucleus) fate.
BLI2DNonUnifGrid * fhN2dXSecKpN_Elas
Spline * fXSecGamp_fs
gamma A x-section splines
Spline * fFracKA_Tot
K+A x-section splines.
BLI2DNonUnifGrid * fhN2dXSecPP_Elas
const BLI2DNonUnifGrid * hN2dXSecGamPimP_Inelas(void) const
const Spline * XSecPipp_Elas(void) const
const Spline * XSecPi0p_CEx(void) const
const Spline * XSecPi0n_Elas(void) const
const Spline * XSecPn_Elas(void) const
const Spline * XSecPipp_Abs(void) const
const Spline * XSecGamp_fs(void) const
const Spline * FracNA_PiPro(void) const
const Spline * XSecPp_Elas(void) const
Spline * fXSecPipp_Tot
pi+p hN x-section splines
const Spline * FracNA_Tot(void) const
const Spline * XSecPp_Tot(void) const
const Spline * XSecPn_Tot(void) const
BLI2DNonUnifGrid * fhN2dXSecPimN_Elas
const BLI2DNonUnifGrid * hN2dXSecKpP_Elas(void) const
const Spline * XSecPipn_CEx(void) const
const Spline * FracPA_Inel(void) const
const Spline * XSecKpn_CEx(void) const
Spline * fFracPA_Tot
N+A x-section splines.
double XSec(int hpdgc, int tgt, int nprod, INukeFateHN_t rxnType, double ke, double costh) const
const Spline * FracKA_Tot(void) const
void ReadhNFile(string filename, double ke, int npoints, int &curr_point, double *costh_array, double *xsec_array, int cols)
const Spline * XSecPi0p_Abs(void) const
BLI2DNonUnifGrid * fhN2dXSecGamPi0P_Inelas
const Spline * FracPA_CEx(void) const
const BLI2DNonUnifGrid * hN2dXSecNP_Elas(void) const
const Spline * XSecGamn_fs(void) const
const Spline * XSecNn_Tot(void) const
BLI2DNonUnifGrid * fhN2dXSecGamPipN_Inelas
const Spline * XSecKpN_Abs(void) const
const Spline * FracPA_Abs(void) const
A numeric analysis tool class for interpolating 1-D functions.
Definition Spline.h:58
THE MAIN GENIE PROJECT NAMESPACE
Definition AlgCmp.h:25
enum genie::EINukeFateHN_t INukeFateHN_t
enum genie::EINukeFateHA_t INukeFateHA_t