]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STARLIGHT/starlight/include/nucleus.h
STARLIGHT code and interface
[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:
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
42class nucleus
43{
44
45public:
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
68private:
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