Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4IonStoppingData.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// GEANT4 class header file
29//
30// Class: G4IonStoppingData
31//
32// Base class: G4VIonDEDXTable
33//
34// Author: Anton Lechner (Anton.Lechner@cern.ch)
35//
36// First implementation: 03. 11. 2009
37//
38// Modifications:
39//
40//
41// Class description: Class which can read ion stopping power data from
42// $G4LEDATA/ion_stopping_data
43//
44// Comments:
45//
46// ===========================================================================
47//
48
49#ifndef G4IONSTOPPINGDATA_HH
50#define G4IONSTOPPINGDATA_HH
51
52#include "globals.hh"
53#include "G4VIonDEDXTable.hh"
54#include <utility>
55#include <vector>
56#include <map>
57
58
60
61public:
62 G4IonStoppingData(const G4String& dir, G4bool icru);
63 ~G4IonStoppingData() override;
64
65 // Function for checking the availability of stopping power tables
66 // for a given ion-material couple, where the material consists of
67 // a single element only.
69 G4int atomicNumberIon, // Atomic number of ion
70 G4int atomicNumberElem // Atomic number of elemental material
71 ) override;
72
73 // Function for checking the availability of stopping power tables
74 // for given ion-material couples.
76 G4int atomicNumberIon, // Atomic number of ion
77 const G4String& matIdentifier // Name or chemical formula of material
78 ) override;
79
80 // Function which invokes the read/build process of physics vectors from
81 // files in G4LEDATA
82 G4bool BuildPhysicsVector(G4int ionZ, const G4String& matName) override;
83
84 // Function which invokes the read/build process of physics vectors from
85 // files in G4LEDATA
86 G4bool BuildPhysicsVector(G4int ionZ, G4int matZ) override;
87
88 // Function returning the stopping power vector for given ion-material
89 // couples, where the material consists of a single element only.
91 G4int atomicNumberIon, // Atomic number of ion
92 G4int atomicNumberElem // Atomic number of elemental material
93 ) override;
94
95 // Function returning the stopping power vector for given ion-material
96 // couples.
98 G4int atomicNumberIon, // Atomic number of ion
99 const G4String& matIdenfier // Name or chemical formula of material
100 ) override;
101
102 // Function returning the stopping power value for given ion-material
103 // couples, where the material consists of a single element only, and
104 // given energy.
105 G4double GetDEDX(G4double kinEnergyPerNucleon, // Kinetic energy per nucleon
106 G4int atomicNumberIon, // Atomic number of ion
107 G4int atomicNumberElem // Atomic number of elemental material
108 );
109
110 // Function returning the stopping power value for given ion-material
111 // couples and given energy.
113 G4double kinEnergyPerNucleon, // Kinetic energy per nucleon
114 G4int atomicNumberIon, // Atomic number of ion
115 const G4String& matIdentifier // Name or chemical formula of material
116 );
117
118 // Function for adding dE/dx vector for an elemental materials. The last
119 // argument only applies to elemental materials.
121 G4PhysicsVector* physicsVector, // Physics vector
122 G4int atomicNumberIon, // Atomic number of ion
123 const G4String& matIdentifier // Name or chemical formula of material
124 );
125
126 // Function for adding dE/dx vector for an elemental materials. The last
127 // argument only applies to elemental materials.
129 G4PhysicsVector* physicsVector, // Physics vector
130 G4int atomicNumberIon, // Atomic number of ion
131 G4int atomicNumberElem // Atomic number of elemental material
132 );
133
134 // Function for removing dE/dx vector for a compound materials
136 G4int atomicNumberIon, // Atomic number of ion
137 const G4String& matIdentifier // Name or chemical formula of material
138 );
139 // Function for removing dE/dx vector for a compound materials
141 G4int atomicNumberIon, // Atomic number of ion
142 G4int atomicNumberElem // Atomic number of elemental material
143 );
144 // Function deleting all physics vectors and clearing the maps
145 void ClearTable();
146
147 // Function printing the ion-material pairs of available vectors to stdout
148 void DumpMap();
149
150private:
152 const G4IonStoppingData& operator=(const G4IonStoppingData&) = delete;
153
154 // Subdirectory of G4LEDATA
155 G4String subDir;
156
157 using G4IonDEDXKeyElem = std::pair<G4int, G4int>;
158 using G4IonDEDXKeyMat = std::pair<G4int, G4String>;
159
160 using G4IonDEDXMapElem = std::map<G4IonDEDXKeyElem, G4PhysicsVector*>;
161 using G4IonDEDXMapMat = std::map<G4IonDEDXKeyMat, G4PhysicsVector*>;
162
163 G4IonDEDXMapElem dedxMapElements;
164 G4IonDEDXMapMat dedxMapMaterials;
165
166 G4bool fICRU90;
167};
168
169#endif // G4IONSTOPPINGDATA_HH
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
~G4IonStoppingData() override
G4bool IsApplicable(G4int atomicNumberIon, G4int atomicNumberElem) override
G4bool BuildPhysicsVector(G4int ionZ, const G4String &matName) override
G4bool RemovePhysicsVector(G4int atomicNumberIon, const G4String &matIdentifier)
G4double GetDEDX(G4double kinEnergyPerNucleon, G4int atomicNumberIon, G4int atomicNumberElem)
G4bool AddPhysicsVector(G4PhysicsVector *physicsVector, G4int atomicNumberIon, const G4String &matIdentifier)
G4PhysicsVector * GetPhysicsVector(G4int atomicNumberIon, G4int atomicNumberElem) override