]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STARLIGHT/starlight/include/nucleus.h
updated STARTLIGHT to r191 (http://starlight.hepforge.org/svn/trunk)
[u/mrichter/AliRoot.git] / STARLIGHT / starlight / include / nucleus.h
CommitLineData
da32329d
AM
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:
45d54d9a 23// $Rev:: 176 $: revision of last commit
24// $Author:: jseger $: author of last commit
25// $Date:: 2014-06-20 22:15:20 +0200 #$: date of last commit
da32329d
AM
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
42class nucleus
43{
44
45public:
46 nucleus();
47 nucleus(const int Z,
48 const int A,
da32329d
AM
49 const bool dAuCoherentProduction);
50 ~nucleus();
51
52 void init();
53
54 int Z () const { return _Z; } ///< returns atomic number of nucleus
55 int A () const { return _A; } ///< returns nucleon number of nucleus
56 // double woodSaxonRadius() const { return 1.2 * pow(_A, 1. / 3.); } ///< returns Wood-Saxon nuclear radius [fm] (Fermi model)
57 double nuclearRadius () const; ///< returns nuclear radius [fm]; except for some special nuclei this is the Wood-Saxon radius (Fermi model)
58
59 double formFactor(const double t) const; ///< computes form factor for given squared 4-momentum transfer
60 double dipoleFormFactor(const double t, const double t0) const; // Dipole form factor with t0 as parameter
61 double thickness (const double b) const; ///< calculates nuclear thickness function for given distance b in impact parameter space (Eq. 4 in KN, PRC 60)
62
63 double Q0 () const { return _Q0; }
64 double rho0() const { return _rho0; }
65
66
67private:
68
69 double woodSaxonSkinDepth() const { return 0.53; } ///< returns surface (0.53 fm for Au)
70 double fritiofR0 () const { return _r0 * pow(_A, (1./3.)); } ///< Fritiof _r0 (rws)/formfactor
71
72 double rws(const double r) const
be31281a 73 { //std::cout << "rws: " << r << " " << fritiofR0() << " " << woodSaxonSkinDepth() << std::endl;
74 const double x=exp(-(r - fritiofR0()) / woodSaxonSkinDepth());
75 return x/(1.+x);
76 return 1.0 / (1. + exp((r - fritiofR0()) / woodSaxonSkinDepth())); } ///< Wood-Saxon nuclear density
da32329d
AM
77
78 int _Z; ///< atomic number of nucleus
79 int _A; ///< nucleon number of nucleus
da32329d
AM
80 bool _dAuCoherentProduction; ///< if true, production in d Au collisions is coherent, else incoherent
81
82 double _r0;
83 double _rho0;
84 double _Q0;
85
86};
87
88
89#endif // NUCLEUS_H