Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-06-26 07:06:20

0001 ///////////////////////////////////////////////////////////////////////////
0002 //
0003 //    Copyright 2010
0004 //
0005 //    This file is part of starlight.
0006 //
0007 //    starlight is free software: you can redistribute it and/or modify
0008 //    it under the terms of the GNU General Public License as published by
0009 //    the Free Software Foundation, either version 3 of the License, or
0010 //    (at your option) any later version.
0011 //
0012 //    starlight is distributed in the hope that it will be useful,
0013 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
0014 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0015 //    GNU General Public License for more details.
0016 //
0017 //    You should have received a copy of the GNU General Public License
0018 //    along with starlight. If not, see <http://www.gnu.org/licenses/>.
0019 //
0020 ///////////////////////////////////////////////////////////////////////////
0021 //
0022 // File and Version Information:
0023 // $Rev:: 262                         $: revision of last commit
0024 // $Author:: jnystrand                $: author of last commit
0025 // $Date:: 2016-06-01 14:14:20 +0100 #$: date of last commit
0026 //
0027 // Description:
0028 //
0029 //
0030 //
0031 ///////////////////////////////////////////////////////////////////////////
0032 
0033 
0034 #ifndef NUCLEUS_H
0035 #define NUCLEUS_H
0036 
0037 
0038 #include <cmath>
0039 
0040 
0041 //This class holds the information for a target nucleus
0042 class nucleus
0043 {
0044 
0045 public:
0046     nucleus();
0047     nucleus(const int    Z,
0048             const int    A,
0049         const int     productionMode);
0050     ~nucleus();
0051     
0052     void init();
0053  
0054     int    Z              () const { return _Z;                     }  ///< returns atomic number of nucleus
0055     int    A              () const { return _A;                     }  ///< returns nucleon number of nucleus
0056         int    productionMode () const { return _productionMode;        }
0057 
0058     double formFactor(const double t) const;
0059     // Calculates form factor for given squared 4-momentum transfer
0060 
0061     double dipoleFormFactor(const double t, const double t0) const;
0062     // Calculates dipole form factor with t0 as parameter 
0063 
0064     double thickness (const double b) const;
0065     // Calculates nuclear thickness function 
0066 
0067     double nuclearRadius() const { return _Radius; }
0068     double rho0() const { return _rho0; }
0069     
0070 private:
0071 
0072     double woodSaxonSkinDepth() const { return 0.53; } // 0.53 fm skin depth
0073     double rws(const double r) const;
0074 
0075     int    _Z;                      ///< atomic number of nucleus
0076     int    _A;                      ///< nucleon number of nucleus
0077         int    _productionMode;
0078 
0079     double _r0;
0080     double _Radius;
0081     double _rho0;
0082 
0083 };
0084 
0085 
0086 #endif  // NUCLEUS_H