GENIEGenerator
Loading...
Searching...
No Matches
INukeHadroData2018.h
Go to the documentation of this file.
1//____________________________________________________________________________
2/*!
3
4\class genie::INukeHadroData
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 See $GENIE/src/HadronTransport/Intranuke.h for more details on the
10 INTRANUKE cascade MC developed primarity by S.Dytman and H.Gallagher
11 continuing older work from R.Edgecock, G.F.Pearce, W.A.Mann,
12 R.Merenyi and others.
13
14 The hadron x-section data used to build the x-section splines stored
15 at this singleton are provided & maintained by Steve Dytman.
16 See the data files in $GENIE/data/hadron_xsec/ for more details on
17 Steve's data sources and applied corrections.
18 In a nutshell:
19 The h+N x-sections come mostly from the SAID (Arndt et al.) PWA fit
20 while the h+A x-sections come from a combination of Ashery, Carroll
21 data and extrapolations, and INC model results from Mashnik et al.
22 for h+Fe56.
23
24\author Costas Andreopoulos <c.andreopoulos \at cern.ch>, Rutherford Lab.
25 Steve Dytman <dytman+@pitt.edu>, Pittsburgh Univ.
26 Aaron Meyer <asm58@pitt.edu>, Pittsburgh Univ.
27 Alex Bell, Pittsburgh Univ.
28
29\created February 01, 2007
30
31\cpright Copyright (c) 2003-2025, The GENIE Collaboration
32 For the full text of the license visit http://copyright.genie-mc.org
33
34
35*/
36//____________________________________________________________________________
37
38#ifndef _INTRANUKE_HADRON_CROSS_SECTIONS_2018_H_
39#define _INTRANUKE_HADRON_CROSS_SECTIONS_2018_H_
40
44
45class TGraph2D;
46
47namespace genie {
48
49class Spline;
50
52{
53public:
54 static INukeHadroData2018 * Instance (void);
55
56// Note that, unlike most the rest of GENIE where everything is expressed
57// in natural units, all x-section splines included here are evaluated in
58// kinetic energies given in MeV and return the x-section value in mbarns
59
60 double XSec (int hpdgc, int tgt, int nprod, INukeFateHN_t rxnType, double ke, double costh) const;
61 double XSec (int hpdgc, INukeFateHN_t fate, double ke, int targA, int targZ) const;
62 double FracADep (int hpdgc, INukeFateHA_t fate, double ke, int targA) const;
63 double FracAIndep (int hpdgc, INukeFateHA_t fate, double ke) const;
64 double Frac (int hpdgc, INukeFateHN_t fate, double ke, int targA=0, int targZ=0) const;
65 double IntBounce (const GHepParticle* p, int target, int s1, INukeFateHN_t fate);
66
67
68 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
69 // hN mode hadron x-section splines
70 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
71 const Spline * XSecPipn_Tot (void) const { return fXSecPipn_Tot; }
72 const Spline * XSecPipn_CEx (void) const { return fXSecPipn_CEx; }
73 const Spline * XSecPipn_Elas (void) const { return fXSecPipn_Elas; }
74 const Spline * XSecPipn_Reac (void) const { return fXSecPipn_Reac; }
75 const Spline * XSecPipp_Tot (void) const { return fXSecPipp_Tot; }
76 const Spline * XSecPipp_CEx (void) const { return fXSecPipp_CEx; }
77 const Spline * XSecPipp_Elas (void) const { return fXSecPipp_Elas; }
78 const Spline * XSecPipp_Reac (void) const { return fXSecPipp_Reac; }
79 const Spline * XSecPipp_Abs (void) const { return fXSecPipd_Abs; }
80 const Spline * XSecPi0n_Tot (void) const { return fXSecPi0n_Tot; }
81 const Spline * XSecPi0n_CEx (void) const { return fXSecPi0n_CEx; }
82 const Spline * XSecPi0n_Elas (void) const { return fXSecPi0n_Elas; }
83 const Spline * XSecPi0n_Reac (void) const { return fXSecPi0n_Reac; }
84 const Spline * XSecPi0p_Tot (void) const { return fXSecPi0p_Tot; }
85 const Spline * XSecPi0p_CEx (void) const { return fXSecPi0p_CEx; }
86 const Spline * XSecPi0p_Elas (void) const { return fXSecPi0p_Elas; }
87 const Spline * XSecPi0p_Reac (void) const { return fXSecPi0p_Reac; }
88 const Spline * XSecPi0p_Abs (void) const { return fXSecPi0d_Abs; }
89 const Spline * XSecPp_Tot (void) const { return fXSecPp_Tot; }
90 const Spline * XSecPp_Elas (void) const { return fXSecPp_Elas; }
91 const Spline * XSecPp_Reac (void) const { return fXSecPp_Reac; }
92 const Spline * XSecPn_Tot (void) const { return fXSecPn_Tot; }
93 const Spline * XSecPn_Elas (void) const { return fXSecPn_Elas; }
94 const Spline * XSecPn_Reac (void) const { return fXSecPn_Reac; }
95 const Spline * XSecNn_Tot (void) const { return fXSecNn_Tot; }
96 const Spline * XSecNn_Elas (void) const { return fXSecNn_Elas; }
97 const Spline * XSecNn_Reac (void) const { return fXSecNn_Reac; }
98 const Spline * XSecKpn_Elas (void) const { return fXSecKpn_Elas; }
99 const Spline * XSecKpn_CEx (void) const { return fXSecKpn_CEx; }
100 const Spline * XSecKpp_Elas (void) const { return fXSecKpp_Elas; }
101 const Spline * XSecKpN_Abs (void) const { return fXSecKpN_Abs; } //not implemented
102 const Spline * XSecKpN_Tot (void) const { return fXSecKpN_Tot; }
103 const Spline * XSecGamp_fs (void) const { return fXSecGamp_fs; }
104 const Spline * XSecGamn_fs (void) const { return fXSecGamn_fs; }
105 const Spline * XSecGamN_Tot (void) const { return fXSecGamN_Tot; }
106 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
107 // hA mode hadron x-section splines
108 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
109 const Spline * FracPA_Tot (void) const { return fFracPA_Tot; }
110 const Spline * FracPA_Elas (void) const { return fFracPA_Elas; }
111 const Spline * FracPA_Inel (void) const { return fFracPA_Inel; }
112 const Spline * FracPA_CEx (void) const { return fFracPA_CEx; }
113 const Spline * FracPA_Abs (void) const { return fFracPA_Abs; }
114 const Spline * FracPA_PiPro (void) const { return fFracPA_PiPro; }
115 const Spline * FracNA_Tot (void) const { return fFracNA_Tot; }
116 const Spline * FracNA_Elas (void) const { return fFracNA_Elas; }
117 const Spline * FracNA_Inel (void) const { return fFracNA_Inel; }
118 const Spline * FracNA_CEx (void) const { return fFracNA_CEx; }
119 const Spline * FracNA_Abs (void) const { return fFracNA_Abs; }
120 const Spline * FracNA_PiPro (void) const { return fFracNA_PiPro; }
121 const Spline * FracKA_Tot (void) const { return fFracKA_Tot; }
122 const Spline * FracKA_Elas (void) const { return fFracKA_Elas; }
123 const Spline * FracKA_Inel (void) const { return fFracKA_Inel; }
124 const Spline * FracKA_CEx (void) const { return fFracKA_CEx; }
125 const Spline * FracKA_Abs (void) const { return fFracKA_Abs; }
126
127 const Spline * FracPA_Cmp (void) const { return fFracPA_Cmp; }
128 const Spline * FracNA_Cmp (void) const { return fFracNA_Cmp; } //suarez
129
130
131 const BLI2DNonUnifGrid * hN2dXSecPP_Elas (void) const { return fhN2dXSecPP_Elas; }
132 const BLI2DNonUnifGrid * hN2dXSecNP_Elas (void) const { return fhN2dXSecNP_Elas; }
136 const BLI2DNonUnifGrid * hN2dXSecKpN_Elas (void) const { return fhN2dXSecKpN_Elas; }
137 const BLI2DNonUnifGrid * hN2dXSecKpP_Elas (void) const { return fhN2dXSecKpP_Elas; }
138 const BLI2DNonUnifGrid * hN2dXSecPiN_CEx (void) const { return fhN2dXSecPiN_CEx; }
139 const BLI2DNonUnifGrid * hN2dXSecPiN_Abs (void) const { return fhN2dXSecPiN_Abs; }
144
145 static double fMinKinEnergy; ///<
146 static double fMaxKinEnergyHA; ///<
147 static double fMaxKinEnergyHN; ///<
148
149private:
153
154 void LoadCrossSections(void);
155
156 void ReadhNFile(
157 string filename, double ke, int npoints, int & curr_point,
158 /*double * ke_array,*/ double * costh_array, double * xsec_array, int cols);
159
161
162 Spline * fXSecPipn_Tot; ///< pi+n hN x-section splines
166 Spline * fXSecPipp_Tot; ///< pi+p hN x-section splines
171 Spline * fXSecPi0n_Tot; ///< pi0n hN x-section splines
175 Spline * fXSecPi0p_Tot; ///< pi0p hN x-section splines
180 Spline * fXSecPp_Tot; ///< p/nN x-section splines
189 Spline * fXSecKpn_Elas; ///< K+N x-section splines
194 Spline * fFracPA_Tot; ///< N+A x-section splines
206 Spline * fFracKA_Tot; ///< K+A x-section splines
211 Spline * fXSecGamp_fs; ///< gamma A x-section splines
214 Spline * fXSecPp_Cmp; ///< NN cmp (compound nucleus) fate
219
220// TGraph2D * TPipA_Tot;
221 TGraph2D * TfracPipA_CEx;
222// TGraph2D * TfracPipA_Elas;
224 TGraph2D * TfracPipA_Abs;
225 TGraph2D * TfracPipA_PiPro;
226
242
243 //-- Sinleton cleaner
253 friend struct Cleaner;
254};
255
256} // genie namespace
257#endif //_INTRANUKE_HADRON_CROSS_SECTIONS_2015_H_
258
STDHEP-like event record entry that can fit a particle or a nucleus.
BLI2DNonUnifGrid * fhN2dXSecKpN_CEx
const Spline * XSecKpn_CEx(void) const
const Spline * XSecPipn_CEx(void) const
const Spline * XSecPipp_Reac(void) const
const BLI2DNonUnifGrid * hN2dXSecKpP_Elas(void) const
const Spline * XSecPipn_Reac(void) const
const BLI2DNonUnifGrid * hN2dXSecKpN_Elas(void) const
const Spline * FracPA_Cmp(void) const
const BLI2DNonUnifGrid * hN2dXSecGamPi0P_Inelas(void) const
Spline * fFracKA_Tot
K+A x-section splines.
const Spline * XSecPi0n_Reac(void) const
const Spline * XSecPi0p_Tot(void) const
BLI2DNonUnifGrid * fhN2dXSecPimN_Elas
BLI2DNonUnifGrid * fhN2dXSecNP_Elas
const Spline * FracNA_Tot(void) const
const Spline * XSecGamN_Tot(void) const
BLI2DNonUnifGrid * fhN2dXSecPi0N_Elas
BLI2DNonUnifGrid * fhN2dXSecPiN_CEx
Spline * fXSecPi0p_Tot
pi0p hN x-section splines
const Spline * XSecPi0p_Elas(void) const
BLI2DNonUnifGrid * fhN2dXSecGamPi0N_Inelas
const Spline * FracPA_Elas(void) const
const Spline * XSecPipp_CEx(void) const
const Spline * FracPA_PiPro(void) const
const BLI2DNonUnifGrid * hN2dXSecPimN_Elas(void) const
const BLI2DNonUnifGrid * hN2dXSecPiN_CEx(void) const
const Spline * FracNA_Cmp(void) const
Spline * fXSecGamp_fs
gamma A x-section splines
const Spline * XSecPp_Reac(void) const
const BLI2DNonUnifGrid * hN2dXSecGamPimP_Inelas(void) const
const Spline * XSecPn_Tot(void) const
const Spline * XSecPp_Elas(void) const
const Spline * XSecPn_Reac(void) const
const BLI2DNonUnifGrid * hN2dXSecPi0N_Elas(void) const
const Spline * FracNA_Inel(void) const
static INukeHadroData2018 * Instance(void)
INukeHadroData2018(const INukeHadroData2018 &shx)
Spline * fXSecPp_Tot
p/nN x-section splines
const Spline * XSecGamp_fs(void) const
const Spline * XSecPipp_Abs(void) const
BLI2DNonUnifGrid * fhN2dXSecPP_Elas
const Spline * XSecPi0n_Elas(void) const
const BLI2DNonUnifGrid * hN2dXSecPipN_Elas(void) const
void ReadhNFile(string filename, double ke, int npoints, int &curr_point, double *costh_array, double *xsec_array, int cols)
Spline * fXSecPipn_Tot
pi+n hN x-section splines
BLI2DNonUnifGrid * fhN2dXSecPipN_Elas
const Spline * XSecPi0n_Tot(void) const
const BLI2DNonUnifGrid * hN2dXSecNP_Elas(void) const
BLI2DNonUnifGrid * fhN2dXSecKpN_Abs
const Spline * XSecPi0p_Abs(void) const
const Spline * XSecPn_Elas(void) const
const BLI2DNonUnifGrid * hN2dXSecGamPipN_Inelas(void) const
Spline * fXSecPp_Cmp
NN cmp (compound nucleus) fate.
const Spline * XSecPipn_Elas(void) const
BLI2DNonUnifGrid * fhN2dXSecKpP_Elas
const Spline * FracKA_Tot(void) const
const Spline * FracKA_Abs(void) const
BLI2DNonUnifGrid * fhN2dXSecGamPipN_Inelas
const Spline * XSecKpN_Tot(void) const
const Spline * XSecPipp_Elas(void) const
const Spline * XSecNn_Elas(void) const
const Spline * FracKA_Elas(void) const
const Spline * XSecNn_Tot(void) const
const Spline * XSecPi0n_CEx(void) const
const Spline * FracPA_Inel(void) const
const Spline * FracNA_CEx(void) const
const Spline * FracNA_Abs(void) const
const Spline * XSecPi0p_CEx(void) const
const BLI2DNonUnifGrid * hN2dXSecPiN_Abs(void) const
Spline * fXSecPipp_Tot
pi+p hN x-section splines
BLI2DNonUnifGrid * fhN2dXSecPiN_Abs
const Spline * XSecPipn_Tot(void) const
BLI2DNonUnifGrid * fhN2dXSecGamPi0P_Inelas
const Spline * FracKA_Inel(void) const
const Spline * XSecKpN_Abs(void) const
const Spline * XSecKpp_Elas(void) const
BLI2DNonUnifGrid * fhN2dXSecGamPimP_Inelas
const Spline * FracNA_Elas(void) const
static INukeHadroData2018 * fInstance
const Spline * FracPA_Abs(void) const
double Frac(int hpdgc, INukeFateHN_t fate, double ke, int targA=0, int targZ=0) const
const Spline * XSecGamn_fs(void) const
Spline * fXSecKpn_Elas
K+N x-section splines.
const Spline * XSecPipp_Tot(void) const
double XSec(int hpdgc, int tgt, int nprod, INukeFateHN_t rxnType, double ke, double costh) const
const BLI2DNonUnifGrid * hN2dXSecGamPi0N_Inelas(void) const
const Spline * XSecKpn_Elas(void) const
const Spline * XSecPp_Tot(void) const
const Spline * FracPA_Tot(void) const
BLI2DNonUnifGrid * fhN2dXSecKpN_Elas
Spline * fXSecPi0n_Tot
pi0n hN x-section splines
double IntBounce(const GHepParticle *p, int target, int s1, INukeFateHN_t fate)
const BLI2DNonUnifGrid * hN2dXSecPP_Elas(void) const
Spline * fFracPA_Tot
N+A x-section splines.
const Spline * XSecPi0p_Reac(void) const
double FracADep(int hpdgc, INukeFateHA_t fate, double ke, int targA) const
double FracAIndep(int hpdgc, INukeFateHA_t fate, double ke) const
const Spline * FracKA_CEx(void) const
const Spline * XSecNn_Reac(void) const
const Spline * FracPA_CEx(void) const
const Spline * FracNA_PiPro(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