///////////////////////////////////////////////////////////////////////////
//
// 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