GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
HadXSUtils.h
Go to the documentation of this file.
1 //____________________________________________________________________________
2 /*!
3 
4 \namespace genie::utils::hadxs
5 
6 \brief Simple functions and data for computing hadron interaction xsecs
7 
8 \author Costas Andreopoulos <c.andreopoulos \at cern.ch>
9  University of Liverpool
10 
11 \created March 11, 2004
12 
13 \cpright Copyright (c) 2003-2024, The GENIE Collaboration
14  For the full text of the license visit http://copyright.genie-mc.org
15 */
16 //____________________________________________________________________________
17 
18 #ifndef _HADXS_UTILS_H_
19 #define _HADXS_UTILS_H_
20 
21 namespace genie {
22 namespace utils {
23 
24 namespace hadxs
25 {
26  // The inelastic pion-nucleon cross section used in Rein-Sehgal coherent pi0
27  // production xsec: D.Rein and L.M.Sehgal,Nucl.Phys.B223:29-144 (1983).
28  // The data used here are coming from CERN-HERA 79-01, 1979, 'Compilation of
29  // cross sections I - pi- and pi+ induced reactions'. Also, look at the
30  // Fig.3 in Rein-Sehgal's paper.
31  // However, the actual values I am using are copied from Hugh Gallagher's
32  // NeuGEN inel() function which is adapted here.
33  static const int kInelNDataPoints = 60;
34  static const double kInelMinLog10P = -0.975;
35  static const double kIneldLog10P = 0.05;
36  static const double kInelSig[kInelNDataPoints] = {
37  1.596, 3.192, 5.692, 5.596, 3.788, 6.528,
38  22.931, 43.462, 55.580, 36.761, 19.754, 12.588,
39  12.914, 12.500, 13.707, 15.082, 19.671, 16.860,
40  21.708, 29.128, 21.752, 22.444, 23.698, 23.847,
41  23.067, 25.336, 25.366, 25.273, 24.646, 24.003,
42  23.636, 23.615, 23.029, 22.667, 22.434, 21.901,
43  21.763, 22.235, 20.177, 21.707, 20.827, 21.102,
44  21.028, 21.155, 20.932, 20.577, 20.865, 21.122,
45  21.193, 21.081, 20.611, 20.788, 20.591, 20.514,
46  20.796, 20.813, 20.425, 20.460, 20.495, 20.530
47  };
48 
49  // Total pion nucleon cross section data
50  // Data from Hugh Gallagher's NeuGEN total() function.
51  static const int kTotNDataPoints = 60;
52  static const double kTotMinLog10P = -0.975;
53  static const double kTotdLog10P = 0.05;
54  static const double kTotSig[kTotNDataPoints] = {
55  3.252, 6.504, 12.316, 18.314, 22.600, 31.435,
56  53.933, 84.872, 102.626, 87.084, 60.234, 39.922,
57  32.804, 28.935, 27.952, 29.439, 36.824, 31.814,
58  35.152, 50.062, 39.079, 35.741, 37.390, 35.575,
59  34.043, 34.363, 34.171, 32.990, 32.110, 31.316,
60  30.621, 29.918, 29.134, 28.461, 27.985, 27.208,
61  26.749, 27.111, 25.047, 26.357, 25.393, 25.777,
62  25.467, 25.305, 25.008, 24.814, 24.662, 24.481,
63  24.453, 24.336, 24.099, 24.098, 24.010, 23.908,
64  23.992, 24.058, 23.805, 23.808, 23.811, 23.815
65  };
66 
67  // Previous (2.8) default has been to treat pions as charged for purposes of mass.
68  double InelasticPionNucleonXSec (double Epion, bool isChargedPion=true);
69  double TotalPionNucleonXSec (double Epion, bool isChargedPion=true);
70 
71 
72  // Pion-Nucleon cross-sections as implemented by C. Berger for re-implementation
73  // of the Rein-Sehgal coherent pion production model, and provided to D. Cherdack.
74  //
75  // C. Berger & L. Sehgal
76  // "PCAC and coherent pion production by low energy neutrinos"
77  // http://arxiv.org/abs/0812.2653
78  namespace berger
79  {
80  double InelasticPionNucleonXSec (double Epion, bool isChargedPion=true);
81  double TotalPionNucleonXSec (double Epion, bool isChargedPion=true);
82  double PionNucleonXSec (double Epion, bool get_total, bool isChargedPion=true);
83  //Pion-Nucleus xsec extrapolated from pion-Carbon data
84  int PionNucleusXSec(double tpi, double ppistar, double t_new, double A, double &tpilow, double &siglow, double &tpihigh, double &sighigh);
85  //Input: the pion kinetic energy,
86  // the pion CMS momentum,
87  // the square if the 4-p transfer from the pion to the nucleus, and
88  // the number of nucleons in teh target nucleus
89  //Also pass pointers to varaibles which store the output:
90  // the data points (xsec -vs- tpi) above and below the input tpi
91  // an interpolation algorithm must be used to determine the xsec from this information
92  }
93 } // hadxs namespace
94 } // utils namespace
95 } // genie namespace
96 
97 #endif // _HADXS_UTILS_H_
static const double kTotdLog10P
Definition: HadXSUtils.h:53
double TotalPionNucleonXSec(double Epion, bool isChargedPion=true)
Definition: HadXSUtils.cxx:90
double PionNucleonXSec(double Epion, bool get_total, bool isChargedPion=true)
Definition: HadXSUtils.cxx:96
static const double kTotMinLog10P
Definition: HadXSUtils.h:52
static const double kInelMinLog10P
Definition: HadXSUtils.h:34
static constexpr double A
Definition: Units.h:74
static const double kIneldLog10P
Definition: HadXSUtils.h:35
static const int kInelNDataPoints
Definition: HadXSUtils.h:33
double InelasticPionNucleonXSec(double Epion, bool isChargedPion=true)
Definition: HadXSUtils.cxx:20
static const double kTotSig[kTotNDataPoints]
Definition: HadXSUtils.h:54
double InelasticPionNucleonXSec(double Epion, bool isChargedPion=true)
Definition: HadXSUtils.cxx:82
static const double kInelSig[kInelNDataPoints]
Definition: HadXSUtils.h:36
static const int kTotNDataPoints
Definition: HadXSUtils.h:51
double TotalPionNucleonXSec(double Epion, bool isChargedPion=true)
Definition: HadXSUtils.cxx:51
int PionNucleusXSec(double tpi, double ppistar, double t_new, double A, double &tpilow, double &siglow, double &tpihigh, double &sighigh)
Definition: HadXSUtils.cxx:205