EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
nucleus.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file nucleus.h
1 
2 //
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:: 262 $: revision of last commit
24 // $Author:: jnystrand $: author of last commit
25 // $Date:: 2016-06-01 14:14:20 +0100 #$: 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  nucleus();
47  nucleus(const int Z,
48  const int A,
49  const int productionMode);
50  ~nucleus();
51 
52  void init();
53 
54  int Z () const { return _Z; }
55  int A () const { return _A; }
56  int productionMode () const { return _productionMode; }
57 
58  double formFactor(const double t) const;
59  // Calculates form factor for given squared 4-momentum transfer
60 
61  double dipoleFormFactor(const double t, const double t0) const;
62  // Calculates dipole form factor with t0 as parameter
63 
64  double thickness (const double b) const;
65  // Calculates nuclear thickness function
66 
67  double nuclearRadius() const { return _Radius; }
68  double rho0() const { return _rho0; }
69 
70 private:
71 
72  double woodSaxonSkinDepth() const { return 0.53; } // 0.53 fm skin depth
73  double rws(const double r) const;
74 
75  int _Z;
76  int _A;
78 
79  double _r0;
80  double _Radius;
81  double _rho0;
82 
83 };
84 
85 
86 #endif // NUCLEUS_H