GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ARSampledNucleus.h
Go to the documentation of this file.
1 //____________________________________________________________________________
2 /*!
3 
4 \class genie::alvarezruso::ARSampledNucleus
5 
6 \brief Nucleus class for Alvarez-Ruso Coherent Pion Production xsec
7 
8 \ref
9 
10 \author Steve Dennis
11  University of Warwick, Rutherford Appleton Laboratory
12 
13 \created 05/12/2013
14 
15 \cpright Copyright (c) 2003-2024, The GENIE Collaboration
16  For the full text of the license visit http://copyright.genie-mc.org
17 */
18 //____________________________________________________________________________
19 
20 #ifndef _AR_NUCLEUS_H_
21 #define _AR_NUCLEUS_H_
22 
23 #include <TF1.h>
24 
25 namespace genie
26 {
27 namespace alvarezruso
28 {
29 
31 {
32  public:
33 
34  ARSampledNucleus(unsigned int ZNumber, unsigned int ANumber, unsigned int sampling = 20);
35 
37 
38  unsigned int A() const { return fA; }
39 
40  unsigned int Z() const { return fZ; }
41 
42  unsigned int N() const { return (fA-fZ); }
43 
44  double Density (const int i, const int j) const;
45  double DensityOfCentres(const int i, const int j) const;
46  double Radius (const int i, const int j) const;
47 
48  double RadiusMax() const
49  {
50  return fR_max;
51  }
52  double SamplePoint1(const unsigned int i) const // absib in original fortran
53  {
54  return fSample_points_1[i];
55  }
56  double SamplePoint2(const unsigned int i) const // absiz in original fortran
57  {
58  return fSample_points_2[i];
59  }
60  //~ double SampleWeight1(const unsigned int i) const
61  //~ {
62  //~ return fSample_weights_1[i];
63  //~ }
64  //~ double SampleWeight2(const unsigned int i) const
65  //~ {
66  //~ return fSample_weights_2[i];
67  //~ }
68 
69  unsigned int GetSampling (void) const;
70  unsigned int GetNDensities(void) const;
71 
72  double CalcMatterDensity(double r) const;
73  double CalcNumberDensity(double r) const;
74 
75  private:
76 
77  void Fill();
78  void FillSamplePoints();
79  void FillDensities();
80  // Members
81 
82  const unsigned int fZ;
83  const unsigned int fA;
84  unsigned int fSampling;
85 
86  unsigned int fNDensities;
87 
88  double fR_max;
89  double** fRadii;
90  double** fDensities;
92  double* fSample_points_1; // absib: 0 < r < r_max
93  double* fSample_points_2; // absiz: -r_max < r < r_max
96 
97  double fDiffuseness;
98  double fNucRadius;
99  double fNucRadiusSq;
102  //double fRadiusCentresSq;
104 
105  double CalcDensity(double radius, double nuc_rad, double nuc_diff) const;
106 
107  // warning: in-class initializer for static data member of type 'const double' is a GNU extension [-Wgnu-static-float-init]
108  // static const double mean_radius_squared = 0.69; // in fermi
109  static double mean_radius_squared;
110 
111  double Density0(unsigned int number, double diffuseness, double radius) const;
112  TF1* Density0Function() const;
113  static Double_t Density0FunctionFermiLiquid(Double_t* r, Double_t* parameters);
114 
115 };
116 
117 } //namespace alvarezruso
118 } //namespace genie
119 
120 #endif
double Density(const int i, const int j) const
double Radius(const int i, const int j) const
double CalcMatterDensity(double r) const
double SamplePoint2(const unsigned int i) const
static Double_t Density0FunctionFermiLiquid(Double_t *r, Double_t *parameters)
double Density0(unsigned int number, double diffuseness, double radius) const
double CalcDensity(double radius, double nuc_rad, double nuc_diff) const
ARSampledNucleus(unsigned int ZNumber, unsigned int ANumber, unsigned int sampling=20)
Nucleus class for Alvarez-Ruso Coherent Pion Production xsec.
unsigned int GetNDensities(void) const
unsigned int GetSampling(void) const
double CalcNumberDensity(double r) const
double DensityOfCentres(const int i, const int j) const
double SamplePoint1(const unsigned int i) const