StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
nucleus.h
1 //
3 // Copyright 2010
4 //
5 // This file is part of starlight.
6 //
7 // starlight is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by
9 // the Free Software Foundation, either version 3 of the License, or
10 // (at your option) any later version.
11 //
12 // starlight is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
16 //
17 // You should have received a copy of the GNU General Public License
18 // along with starlight. If not, see <http://www.gnu.org/licenses/>.
19 //
21 //
22 // File and Version Information:
23 // $Rev:: $: revision of last commit
24 // $Author: jwebb $: author of last commit
25 // $Date: 2012/11/27 22:27:32 $: date of last commit
26 //
27 // Description:
28 //
29 //
30 //
32 
33 
34 #ifndef NUCLEUS_H
35 #define NUCLEUS_H
36 
37 
38 #include <cmath>
39 
40 
41 //This class holds the information for a target nucleus
42 class nucleus
43 {
44 
45 public:
46 
47  nucleus(const int Z,
48  const int A,
49  const double deuteronSlopePar,
50  const bool dAuCoherentProduction);
51  ~nucleus();
52 
53  int Z () const { return _Z; }
54  int A () const { return _A; }
55  double woodSaxonRadius() const { return 1.2 * pow(_A, 1. / 3.); }
56  double nuclearRadius () const;
57 
58  double formFactor(const double t) const;
59  double thickness (const double b) const;
60 
61  double Q0 () const { return _Q0; }
62  double rho0() const { return _rho0; }
63 
64 
65 private:
66 
67  double woodSaxonSkinDepth() const { return 0.53; }
68  double fritiofR0 () const { return _r0 * pow(_A, (1./3.)); }
69 
70  double rws(const double r) const
71  { return 1.0 / (1. + exp((r - fritiofR0()) / woodSaxonSkinDepth())); }
72 
73  int _Z;
74  int _A;
75  double _deuteronSlopePar;
76  bool _dAuCoherentProduction;
77 
78  double _r0;
79  double _rho0;
80  double _Q0;
81 
82 };
83 
84 
85 #endif // NUCLEUS_H
double thickness(const double b) const
calculates nuclear thickness function for given distance b in impact parameter space (Eq...
double nuclearRadius() const
returns nuclear radius [fm]; except for some special nuclei this is the Wood-Saxon radius (Fermi mode...
double woodSaxonRadius() const
returns Wood-Saxon nuclear radius [fm] (Fermi model)
Definition: nucleus.h:55
int A() const
returns nucleon number of nucleus
Definition: nucleus.h:54
int Z() const
returns atomic number of nucleus
Definition: nucleus.h:53
double formFactor(const double t) const
computes form factor for given squared 4-momentum transfer