GENIEGenerator
Loading...
Searching...
No Matches
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-2025, 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
21namespace genie {
22namespace utils {
23
24namespace 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_
double PionNucleonXSec(double Epion, bool get_total, bool isChargedPion=true)
double InelasticPionNucleonXSec(double Epion, bool isChargedPion=true)
double TotalPionNucleonXSec(double Epion, bool isChargedPion=true)
int PionNucleusXSec(double tpi, double ppistar, double t_new, double A, double &tpilow, double &siglow, double &tpihigh, double &sighigh)
Simple functions and data for computing hadron interaction xsecs.
static const double kTotSig[kTotNDataPoints]
Definition HadXSUtils.h:54
double TotalPionNucleonXSec(double Epion, bool isChargedPion=true)
static const double kIneldLog10P
Definition HadXSUtils.h:35
static const int kInelNDataPoints
Definition HadXSUtils.h:33
static const double kTotMinLog10P
Definition HadXSUtils.h:52
static const int kTotNDataPoints
Definition HadXSUtils.h:51
static const double kInelMinLog10P
Definition HadXSUtils.h:34
double InelasticPionNucleonXSec(double Epion, bool isChargedPion=true)
static const double kInelSig[kInelNDataPoints]
Definition HadXSUtils.h:36
static const double kTotdLog10P
Definition HadXSUtils.h:53
Root of GENIE utility namespaces.
THE MAIN GENIE PROJECT NAMESPACE
Definition AlgCmp.h:25