Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4INCLNaturalIsotopicDistributions.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// INCL++ intra-nuclear cascade model
27// Pekka Kaitaniemi, CEA and Helsinki Institute of Physics
28// Davide Mancusi, CEA
29// Alain Boudard, CEA
30// Sylvie Leray, CEA
31// Joseph Cugnon, University of Liege
32//
33// INCL++ revision: v5.1.8
34//
35#define INCLXX_IN_GEANT4_MODE 1
36
37#include "globals.hh"
38
39/** \file G4INCLNaturalIsotopicDistributions.hh
40 * \brief Classes that stores isotopic abundances
41 *
42 * \date 21st October 2012
43 * \author Davide Mancusi
44 */
45
46#ifndef G4INCLISOTOPICDISTRIBUTION_HH_
47#define G4INCLISOTOPICDISTRIBUTION_HH_
48
49#include <vector>
50#include <map>
51
52namespace G4INCL {
53
54 /// \brief Holds an isotope and an abundance
55 struct Isotope {
56 Isotope(const G4int A, const G4double abundance);
59 };
60
61 typedef std::vector<Isotope> IsotopeVector;
62 typedef IsotopeVector::iterator IsotopeIter;
63
64 /// \brief Class that stores isotopic abundances for a given element
66 public:
67
68 /// \brief Constructor
69 IsotopicDistribution(IsotopeVector const &aVector);
70
71 /// \brief Draw a random isotope based on the abundance vector
73
74 /// \brief Get the isotope vector
75 IsotopeVector const &getIsotopes() const;
76
77 private:
78 IsotopeVector theIsotopes;
79 };
80
81 /// \brief Class that stores isotopic abundances for a given element
83 public:
84
85 /// \brief Constructor
87
88 /** \brief Draw a random isotope
89 *
90 * \param Z the element number
91 */
92 G4int drawRandomIsotope(G4int const Z) const;
93
94 /** \brief Get an isotopic distribution
95 *
96 * \param Z the element number
97 */
99
100 private:
101 std::map<G4int, IsotopicDistribution> theDistributions;
102 };
103
104}
105#endif // G4INCLISOTOPICDISTRIBUTION_HH_
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
Class that stores isotopic abundances for a given element.
IsotopeVector const & getIsotopes() const
Get the isotope vector.
G4int drawRandomIsotope() const
Draw a random isotope based on the abundance vector.
Class that stores isotopic abundances for a given element.
G4int drawRandomIsotope(G4int const Z) const
Draw a random isotope.
IsotopicDistribution const & getIsotopicDistribution(G4int const Z) const
Get an isotopic distribution.
IsotopeVector::iterator IsotopeIter
std::vector< Isotope > IsotopeVector
Holds an isotope and an abundance.