source: trunk/source/materials/include/G4Isotope.hh @ 1202

Last change on this file since 1202 was 1196, checked in by garnier, 15 years ago

update CVS release candidate geant4.9.3.01

File size: 5.3 KB
Line 
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//
27// $Id: G4Isotope.hh,v 1.21 2008/11/14 15:14:24 gcosmo Exp $
28// GEANT4 tag $Name: materials-V09-02-18 $
29//
30//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
31
32// class description
33//
34// An isotope is a chemical isotope defined by its name,
35//                                                 Z: atomic number,
36//                                                 N: number of nucleons,
37//                                                 A: mass of a mole (optional).
38// If A is not defined it is taken from Geant4 database
39//
40// The class contains as a private static member the table of defined
41// isotopes (an ordered vector of isotopes).
42//
43// Isotopes can be assembled into elements via the G4Element class.
44//
45
46//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
47
48// 15.11.05: GetIsotope(isotopeName, G4bool warning=false)
49// 31.03.05: A becomes optional. Taken from Nist data base by default (mma) 
50// 26.02.02: fIndexInTable renewed
51// 14.09.01: fCountUse: nb of elements which use this isotope
52// 13.09.01: stl migration. Suppression of the data member fIndexInTable
53// 30.03.01: suppression of the warning message in GetIsotope
54// 04.08.98: new method GetIsotope(isotopeName) (mma)
55// 17.01.97: aesthetic rearrangement (mma)
56
57//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
58
59#ifndef G4ISOTOPE_HH
60#define G4ISOTOPE_HH
61
62#include "globals.hh"
63#include "G4ios.hh"
64#include <vector>
65
66class G4Isotope;
67typedef std::vector<G4Isotope*> G4IsotopeTable;
68
69//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo......
70
71class G4Isotope
72{
73 public:  // with description
74
75    // Make an isotope
76    //
77    G4Isotope(const G4String& name,             //its name
78                    G4int     z,                //atomic number
79                    G4int     n,                //number of nucleons
80                    G4double  a = 0.);          //mass of mole
81                   
82    virtual ~G4Isotope();
83
84    // Retrieval methods
85    //
86    const G4String& GetName()  const {return fName;}
87    G4int    GetZ()     const {return fZ;}
88    G4int    GetN()     const {return fN;}
89    G4double GetA()     const {return fA;}
90   
91    G4int GetCountUse() const {return fCountUse;}
92   
93    static 
94    G4Isotope* GetIsotope(G4String name, G4bool warning=false);
95   
96    static const
97    G4IsotopeTable* GetIsotopeTable();
98   
99    static 
100    size_t GetNumberOfIsotopes();
101   
102    size_t GetIndex() const {return fIndexInTable;}
103   
104    friend
105    std::ostream& operator<<(std::ostream&, G4Isotope*);
106   
107    friend
108    std::ostream& operator<<(std::ostream&, G4Isotope&);
109   
110    friend
111    std::ostream& operator<<(std::ostream&, G4IsotopeTable);
112     
113 public:  // without description
114 
115    G4int operator==(const G4Isotope&) const;
116    G4int operator!=(const G4Isotope&) const;
117
118    G4Isotope(__void__&);
119      // Fake default constructor for usage restricted to direct object
120      // persistency for clients requiring preallocation of memory for
121      // persistifiable objects.
122   
123    void SetName(const G4String& name) {fName=name;}
124    void increaseCountUse()  {fCountUse++;}
125    void decreaseCountUse()  {fCountUse--;}
126
127 private:
128     
129    G4Isotope(G4Isotope&);
130    G4Isotope& operator=(const G4Isotope&);
131
132 private:
133
134    G4String fName;              // name of the Isotope
135    G4int    fZ;                 // atomic number
136    G4int    fN;                 // number of nucleons
137    G4double fA;                 // mass of a mole
138   
139    G4int    fCountUse;          // nb of elements which use this isotope
140
141    static 
142    G4IsotopeTable theIsotopeTable;
143   
144    size_t fIndexInTable;        // index in the Isotope table
145};
146
147//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
148
149
150#endif
Note: See TracBrowser for help on using the repository browser.