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