Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4DensityEffectData.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// $Id$
27
28//---------------------------------------------------------------------------
29//
30// GEANT4 Class file
31//
32// Description: Data on density effect
33//
34// Authors: A.Bagulya, A.Ivanchenko 28.10.2009
35//
36// Modifications:
37//
38//
39//
40//----------------------------------------------------------------------------
41//
42// Data are taken from:
43// R.M. Sternheimer et al. Density Effect for the Ionization Loss of Charged
44// Particles in Various Substances. Atom. Data Nucl. Data Tabl. 30 (1984) 261-271.
45
46#ifndef DensityEffectData_h
47#define DensityEffectData_h 1
48
49//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
50
51#include "globals.hh"
52#include "G4Material.hh"
53#include <vector>
54
55//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
56
57const G4int NDENSDATA = 278;
58const G4int NDENSARRAY = 9;
59const G4int NDENSELEM = 98;
60
62{
63public:
64
66
68
69 // return index by Z, -1 if material is not in the table
71
72 // return index by material name, -1 if material is not in the table
73 G4int GetIndex(const G4String& matName);
74
75 // printout data for material
76 void PrintData(const G4String& matName);
77
78 // printout all data
79 void DumpData();
80
81 // Access to the data via index
82 inline G4double GetPlasmaEnergy(G4int idx);
84 inline G4double GetCdensity(G4int idx);
85 inline G4double GetX0density(G4int idx);
86 inline G4double GetX1density(G4int idx);
87 inline G4double GetAdensity(G4int idx);
88 inline G4double GetMdensity(G4int idx);
89 inline G4double GetDelta0density(G4int idx);
90 inline G4double GetErrorDensity(G4int idx);
91
92private:
93
94 void Initialize();
95
96 void AddMaterial(G4double* val, const G4String& matName);
97
98 // Assignment operator and copy constructor
99 G4DensityEffectData & operator=(const G4DensityEffectData &right);
101
103 std::vector<G4String> names;
104
105 // indexes defined only for pure materials
106 G4int indexZ[NDENSELEM];
107 G4State state[NDENSELEM];
108
109 G4int index;
110
111};
112
114{
115 G4double x = DBL_MAX;
116 if(idx >= 0 && idx < NDENSDATA) { x = data[idx][0]; }
117 return x;
118}
119
121{
122 G4double x = DBL_MAX;
123 if(idx >= 0 && idx < NDENSDATA) { x = data[idx][1]; }
124 return x;
125}
126
128{
129 G4double x = DBL_MAX;
130 if(idx >= 0 && idx < NDENSDATA) { x = data[idx][2]; }
131 return x;
132}
133
135{
136 G4double x = DBL_MAX;
137 if(idx >= 0 && idx < NDENSDATA) { x = data[idx][3]; }
138 return x;
139}
140
142{
143 G4double x = DBL_MAX;
144 if(idx >= 0 && idx < NDENSDATA) { x = data[idx][4]; }
145 return x;
146}
147
149{
150 G4double x = DBL_MAX;
151 if(idx >= 0 && idx < NDENSDATA) { x = data[idx][5]; }
152 return x;
153}
154
156{
157 G4double x = DBL_MAX;
158 if(idx >= 0 && idx < NDENSDATA) { x = data[idx][6]; }
159 return x;
160}
161
163{
164 G4double x = DBL_MAX;
165 if(idx >= 0 && idx < NDENSDATA) { x = data[idx][7]; }
166 return x;
167}
168
170{
171 G4double x = DBL_MAX;
172 if(idx >= 0 && idx < NDENSDATA) { x = data[idx][8]; }
173 return x;
174}
175
176
177//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
178
179#endif
180
const G4int NDENSARRAY
const G4int NDENSDATA
const G4int NDENSELEM
G4State
Definition: G4Material.hh:114
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
G4double GetCdensity(G4int idx)
G4int GetIndex(const G4String &matName)
G4double GetErrorDensity(G4int idx)
G4double GetPlasmaEnergy(G4int idx)
G4double GetX0density(G4int idx)
G4double GetAdjustmentFactor(G4int idx)
G4int GetElementIndex(G4int Z, G4State mState)
G4double GetMdensity(G4int idx)
G4double GetDelta0density(G4int idx)
void PrintData(const G4String &matName)
G4double GetAdensity(G4int idx)
G4double GetX1density(G4int idx)
#define DBL_MAX
Definition: templates.hh:83