Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4NuclearLevelData.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//
27// -------------------------------------------------------------------
28//
29// GEANT4 header file
30//
31// File name: G4NuclearLevelData
32//
33// Author: V.Ivanchenko
34//
35// Creation date: 9 February 2014
36//
37// Modifications:
38//
39// -------------------------------------------------------------------
40//
41// Nuclear level data uploaded at initialisation of Geant4 from
42// data files of the G4LEVELGAMMADATA
43//
44
45#ifndef G4NUCLEARLEVELDATA_HH
46#define G4NUCLEARLEVELDATA_HH 1
47
48#include "globals.hh"
50#include <vector>
51#include <iostream>
52
53class G4LevelReader;
54class G4LevelManager;
57class G4Pow;
58
60{
61private:
62
64
65 static G4NuclearLevelData* theInstance;
66
67public:
68
70
72
73 // run time call to access or to create level manager
74 // if data are not yet uploaded then lazy initialisation is used
76
77 // add private data to isotope from master thread
78 G4bool AddPrivateData(G4int Z, G4int A, const G4String& filename);
79
80 // access to min/max A in the level DB
81 G4int GetMinA(G4int Z) const;
82 G4int GetMaxA(G4int Z) const;
83
84 // check max energy of a level without upload of the data
87
88 // check closest level if the energy is below the max level energy
90
91 // check closest level below given energy
93
94 // check if residual excitation energy corresponding to
95 // discrete level and if it is the case select closest level
97 G4double partMass, G4double T);
98
99 // access to all model parameters
103
104 // access to correction values
107
108 // enable uploading of data for all Z < maxZ
110
111 // stream only existing levels
112 void StreamLevels(std::ostream& os, G4int Z, G4int A);
113
116
117private:
118
119 G4DeexPrecoParameters* fDeexPrecoParameters;
120 G4LevelReader* fLevelReader;
121 G4PairingCorrection* fPairingCorrection;
122 G4ShellCorrection* fShellCorrection;
123 G4Pow* fG4calc;
124 G4bool fInitialized;
125
126 static const G4int ZMAX = 118;
127 static const G4int AMIN[ZMAX];
128 static const G4int AMAX[ZMAX];
129 static const G4int LEVELIDX[ZMAX];
130
131 std::vector<const G4LevelManager*> fLevelManagers[ZMAX];
132 std::vector<G4bool> fLevelManagerFlags[ZMAX];
133};
134
135#endif
float G4float
Definition: G4Types.hh:84
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
const G4double A[17]
G4float MaxLevelEnergy(G4int Z, G4int A) const
G4double GetLevelDensity(G4int Z, G4int A, G4double U)
G4double GetLevelEnergy(G4int Z, G4int A, G4double energy)
G4double FindLevel(G4int Z, G4int A, G4double resMass, G4double Mass, G4double partMass, G4double T)
G4DeexPrecoParameters * GetParameters()
G4bool AddPrivateData(G4int Z, G4int A, const G4String &filename)
G4NuclearLevelData(G4NuclearLevelData &)=delete
G4int GetMinA(G4int Z) const
G4NuclearLevelData & operator=(const G4NuclearLevelData &right)=delete
G4double GetLowEdgeLevelEnergy(G4int Z, G4int A, G4double energy)
G4ShellCorrection * GetShellCorrection()
void UploadNuclearLevelData(G4int Z)
const G4LevelManager * GetLevelManager(G4int Z, G4int A)
G4PairingCorrection * GetPairingCorrection()
static G4NuclearLevelData * GetInstance()
G4double GetMaxLevelEnergy(G4int Z, G4int A) const
void StreamLevels(std::ostream &os, G4int Z, G4int A)
G4int GetMaxA(G4int Z) const
Definition: G4Pow.hh:49