Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/Geant4/G4Isotope.hh was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 //
0002 // ********************************************************************
0003 // * License and Disclaimer                                           *
0004 // *                                                                  *
0005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
0006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
0007 // * conditions of the Geant4 Software License,  included in the file *
0008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
0009 // * include a list of copyright holders.                             *
0010 // *                                                                  *
0011 // * Neither the authors of this software system, nor their employing *
0012 // * institutes,nor the agencies providing financial support for this *
0013 // * work  make  any representation or  warranty, express or implied, *
0014 // * regarding  this  software system or assume any liability for its *
0015 // * use.  Please see the license in the file  LICENSE  and URL above *
0016 // * for the full disclaimer and the limitation of liability.         *
0017 // *                                                                  *
0018 // * This  code  implementation is the result of  the  scientific and *
0019 // * technical work of the GEANT4 collaboration.                      *
0020 // * By using,  copying,  modifying or  distributing the software (or *
0021 // * any work based  on the software)  you  agree  to acknowledge its *
0022 // * use  in  resulting  scientific  publications,  and indicate your *
0023 // * acceptance of all terms of the Geant4 Software license.          *
0024 // ********************************************************************
0025 
0026 // class description
0027 //
0028 // An isotope is a chemical isotope defined by its name,
0029 //                                                 Z: atomic number
0030 //                                                 N: number of nucleons
0031 //                                                 A: mass of a mole (optional)
0032 //                                                 m: isomer state (optional)
0033 // If A is not defined it is taken from Geant4 database
0034 //
0035 // The class contains as a private static member the table of defined
0036 // isotopes (an ordered vector of isotopes).
0037 //
0038 // Isotopes can be assembled into elements via the G4Element class.
0039 //
0040 // 20.08.11: Add flag fm for isomer level (mma)
0041 // 15.11.05: GetIsotope(isotopeName, G4bool warning=false)
0042 // 31.03.05: A becomes optional. Taken from Nist data base by default (mma)
0043 // 26.02.02: fIndexInTable renewed
0044 // 14.09.01: fCountUse: nb of elements which use this isotope
0045 // 13.09.01: stl migration. Suppression of the data member fIndexInTable
0046 // 30.03.01: suppression of the warning message in GetIsotope
0047 // 04.08.98: new method GetIsotope(isotopeName) (mma)
0048 // 17.01.97: aesthetic rearrangement (mma)
0049 
0050 #ifndef G4ISOTOPE_HH
0051 #define G4ISOTOPE_HH
0052 
0053 #include "G4ios.hh"
0054 #include "globals.hh"
0055 
0056 #include <vector>
0057 
0058 class G4Isotope;
0059 using G4IsotopeTable = std::vector<G4Isotope*>;
0060 
0061 class G4Isotope
0062 {
0063  public:  // with description
0064   // Make an isotope
0065   G4Isotope(const G4String& name,  // its name
0066     G4int z,  // atomic number
0067     G4int n,  // number of nucleons
0068     G4double a = 0.,  // mass of mole
0069     G4int mlevel = 0);  // isomer level
0070 
0071   ~G4Isotope();
0072 
0073   G4Isotope(const G4Isotope&) = delete;
0074   G4Isotope& operator=(const G4Isotope&) = delete;
0075 
0076   // Retrieval methods
0077   const G4String& GetName() const { return fName; }
0078 
0079   // Atomic number
0080   G4int GetZ() const { return fZ; }
0081 
0082   // Number of nucleous
0083   G4int GetN() const { return fN; }
0084 
0085   // Atomic mass of mole in Geant4 units with electron shell
0086   G4double GetA() const { return fA; }
0087 
0088   // Isomer level
0089   G4int Getm() const { return fm; }
0090 
0091   static G4Isotope* GetIsotope(const G4String& name, G4bool warning = false);
0092 
0093   static const G4IsotopeTable* GetIsotopeTable();
0094 
0095   static std::size_t GetNumberOfIsotopes();
0096 
0097   std::size_t GetIndex() const { return fIndexInTable; }
0098 
0099   friend std::ostream& operator<<(std::ostream&, const G4Isotope*);
0100 
0101   friend std::ostream& operator<<(std::ostream&, const G4Isotope&);
0102 
0103   friend std::ostream& operator<<(std::ostream&, const G4IsotopeTable&);
0104 
0105   G4bool operator==(const G4Isotope&) const;
0106   G4bool operator!=(const G4Isotope&) const;
0107 
0108   void SetName(const G4String& name) { fName = name; }
0109 
0110  private:
0111   G4String fName;  // name of the Isotope
0112   G4int fZ;  // atomic number
0113   G4int fN;  // number of nucleons
0114   G4double fA;  // atomic mass of a mole
0115   G4int fm;  // isomer level
0116 
0117   static G4IsotopeTable& GetIsotopeTableRef();
0118 
0119   std::size_t fIndexInTable;  // index in the Isotope table
0120 };
0121 
0122 #endif