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-2019, The GENIE Collaboration
16  For the full text of the license visit http://copyright.genie-mc.org
17  or see $GENIE/LICENSE
18 */
19 //____________________________________________________________________________
20 
21 #ifndef _AR_NUCLEUS_H_
22 #define _AR_NUCLEUS_H_
23 
24 #include <TF1.h>
25 
26 namespace genie
27 {
28 namespace alvarezruso
29 {
30 
32 {
33  public:
34 
35  ARSampledNucleus(unsigned int ZNumber, unsigned int ANumber, unsigned int sampling = 20);
36 
38 
39  unsigned int A() const { return fA; }
40 
41  unsigned int Z() const { return fZ; }
42 
43  unsigned int N() const { return (fA-fZ); }
44 
45  double Density (const int i, const int j) const;
46  double DensityOfCentres(const int i, const int j) const;
47  double Radius (const int i, const int j) const;
48 
49  double RadiusMax() const
50  {
51  return fR_max;
52  }
53  double SamplePoint1(const unsigned int i) const // absib in original fortran
54  {
55  return fSample_points_1[i];
56  }
57  double SamplePoint2(const unsigned int i) const // absiz in original fortran
58  {
59  return fSample_points_2[i];
60  }
61  //~ double SampleWeight1(const unsigned int i) const
62  //~ {
63  //~ return fSample_weights_1[i];
64  //~ }
65  //~ double SampleWeight2(const unsigned int i) const
66  //~ {
67  //~ return fSample_weights_2[i];
68  //~ }
69 
70  unsigned int GetSampling (void) const;
71  unsigned int GetNDensities(void) const;
72 
73  double CalcMatterDensity(double r) const;
74  double CalcNumberDensity(double r) const;
75 
76  private:
77 
78  void Fill();
79  void FillSamplePoints();
80  void FillDensities();
81  // Members
82 
83  const unsigned int fZ;
84  const unsigned int fA;
85  unsigned int fSampling;
86 
87  unsigned int fNDensities;
88 
89  double fR_max;
90  double** fRadii;
91  double** fDensities;
93  double* fSample_points_1; // absib: 0 < r < r_max
94  double* fSample_points_2; // absiz: -r_max < r < r_max
97 
98  double fDiffuseness;
99  double fNucRadius;
100  double fNucRadiusSq;
103  //double fRadiusCentresSq;
105 
106  double CalcDensity(double radius, double nuc_rad, double nuc_diff) const;
107 
108  // warning: in-class initializer for static data member of type 'const double' is a GNU extension [-Wgnu-static-float-init]
109  // static const double mean_radius_squared = 0.69; // in fermi
110  static double mean_radius_squared;
111 
112  double Density0(unsigned int number, double diffuseness, double radius) const;
113  TF1* Density0Function() const;
114  static Double_t Density0FunctionFermiLiquid(Double_t* r, Double_t* parameters);
115 
116 };
117 
118 } //namespace alvarezruso
119 } //namespace genie
120 
121 #endif
double Density(const int i, const int j) const
THE MAIN GENIE PROJECT NAMESPACE
Definition: GeneratorBase.h:8
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
const double j
Definition: BetheBloch.cxx:29
Double_t radius
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
TRandom3 r(0)
double CalcNumberDensity(double r) const
double DensityOfCentres(const int i, const int j) const
double SamplePoint1(const unsigned int i) const