/////////////////////////////////////////////////////////////////////////// // // Copyright 2010 // // This file is part of starlight. // // starlight is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // starlight is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with starlight. If not, see . // /////////////////////////////////////////////////////////////////////////// // // File and Version Information: // $Rev:: $: revision of last commit // $Author:: $: author of last commit // $Date:: $: date of last commit // // Description: // // // /////////////////////////////////////////////////////////////////////////// #ifndef NUCLEUS_H #define NUCLEUS_H #include //This class holds the information for a target nucleus class nucleus { public: nucleus(); nucleus(const int Z, const int A, const double deuteronSlopePar, const bool dAuCoherentProduction); ~nucleus(); void init(); int Z () const { return _Z; } ///< returns atomic number of nucleus int A () const { return _A; } ///< returns nucleon number of nucleus // double woodSaxonRadius() const { return 1.2 * pow(_A, 1. / 3.); } ///< returns Wood-Saxon nuclear radius [fm] (Fermi model) double nuclearRadius () const; ///< returns nuclear radius [fm]; except for some special nuclei this is the Wood-Saxon radius (Fermi model) double formFactor(const double t) const; ///< computes form factor for given squared 4-momentum transfer double dipoleFormFactor(const double t, const double t0) const; // Dipole form factor with t0 as parameter double thickness (const double b) const; ///< calculates nuclear thickness function for given distance b in impact parameter space (Eq. 4 in KN, PRC 60) double Q0 () const { return _Q0; } double rho0() const { return _rho0; } private: double woodSaxonSkinDepth() const { return 0.53; } ///< returns surface (0.53 fm for Au) double fritiofR0 () const { return _r0 * pow(_A, (1./3.)); } ///< Fritiof _r0 (rws)/formfactor double rws(const double r) const { return 1.0 / (1. + exp((r - fritiofR0()) / woodSaxonSkinDepth())); } ///< Wood-Saxon nuclear density int _Z; ///< atomic number of nucleus int _A; ///< nucleon number of nucleus double _deuteronSlopePar; ///< slope parameter for deuteron form factor [(GeV/c)^{-2}] bool _dAuCoherentProduction; ///< if true, production in d Au collisions is coherent, else incoherent double _r0; double _rho0; double _Q0; }; #endif // NUCLEUS_H