]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STARLIGHT/starlight/include/nucleus.h
STARLIGHT code and interface
[u/mrichter/AliRoot.git] / STARLIGHT / starlight / include / 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 //
20 ///////////////////////////////////////////////////////////////////////////
21 //
22 // File and Version Information:
23 // $Rev:: 164                         $: revision of last commit
24 // $Author:: odjuvsla                 $: author of last commit
25 // $Date:: 2013-10-06 16:18:08 +0200 #$: date of last commit
26 //
27 // Description:
28 //
29 //
30 //
31 ///////////////////////////////////////////////////////////////////////////
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 double deuteronSlopePar,
50                 const bool   dAuCoherentProduction);
51         ~nucleus();
52         
53         void init();
54  
55         int    Z              () const { return _Z;                     }  ///< returns atomic number of nucleus
56         int    A              () const { return _A;                     }  ///< returns nucleon number of nucleus
57         // double woodSaxonRadius() const { return 1.2 * pow(_A, 1. / 3.); }  ///< returns Wood-Saxon nuclear radius [fm] (Fermi model)
58         double nuclearRadius  () const; ///< returns nuclear radius [fm]; except for some special nuclei this is the Wood-Saxon radius (Fermi model)
59
60         double formFactor(const double t) const;  ///< computes form factor for given squared 4-momentum transfer
61         double dipoleFormFactor(const double t, const double t0) const;  // Dipole form factor with t0 as parameter 
62         double thickness (const double b) const;  ///< calculates nuclear thickness function for given distance b in impact parameter space (Eq. 4 in KN, PRC 60)
63
64         double Q0  () const { return _Q0;   }
65         double rho0() const { return _rho0; }
66
67         
68 private:
69
70         double woodSaxonSkinDepth() const { return 0.53;                   }  ///< returns surface (0.53 fm for Au)
71         double fritiofR0         () const { return _r0 * pow(_A, (1./3.)); }  ///< Fritiof _r0 (rws)/formfactor
72
73         double rws(const double r) const
74         { return 1.0 / (1. + exp((r - fritiofR0()) / woodSaxonSkinDepth())); } ///< Wood-Saxon nuclear density
75
76         int    _Z;                      ///< atomic number of nucleus
77         int    _A;                      ///< nucleon number of nucleus
78         double _deuteronSlopePar;       ///< slope parameter for deuteron form factor [(GeV/c)^{-2}]
79         bool   _dAuCoherentProduction;  ///< if true, production in d Au collisions is coherent, else incoherent
80
81         double _r0;
82         double _rho0;
83         double _Q0;
84
85 };
86
87
88 #endif  // NUCLEUS_H