ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4IonStoppingData.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4IonStoppingData.hh
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 
61 public:
62  G4IonStoppingData(const G4String& dir, G4bool icru);
63  virtual ~G4IonStoppingData();
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  );
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  );
79 
80  // Function which invokes the read/build process of physics vectors from
81  // files in G4LEDATA
83  const G4String& matName);
84 
85  // Function which invokes the read/build process of physics vectors from
86  // files in G4LEDATA
88  G4int matZ);
89 
90  // Function returning the stopping power vector for given ion-material
91  // couples, where the material consists of a single element only.
93  G4int atomicNumberIon, // Atomic number of ion
94  G4int atomicNumberElem // Atomic number of elemental material
95  );
96 
97  // Function returning the stopping power vector for given ion-material
98  // couples.
100  G4int atomicNumberIon, // Atomic number of ion
101  const G4String& matIdenfier // Name or chemical formula of material
102  );
103 
104  // Function returning the stopping power value for given ion-material
105  // couples, where the material consists of a single element only, and
106  // given energy.
108  G4double kinEnergyPerNucleon, // Kinetic energy per nucleon
109  G4int atomicNumberIon, // Atomic number of ion
110  G4int atomicNumberElem // Atomic number of elemental material
111  );
112 
113  // Function returning the stopping power value for given ion-material
114  // couples and given energy.
116  G4double kinEnergyPerNucleon, // Kinetic energy per nucleon
117  G4int atomicNumberIon, // Atomic number of ion
118  const G4String& matIdentifier // Name or chemical formula of material
119  );
120 
121  // Function for adding dE/dx vector for an elemental materials. The last
122  // argument only applies to elemental materials.
124  G4PhysicsVector* physicsVector, // Physics vector
125  G4int atomicNumberIon, // Atomic number of ion
126  const G4String& matIdentifier // Name or chemical formula of material
127  );
128 
129  // Function for adding dE/dx vector for an elemental materials. The last
130  // argument only applies to elemental materials.
132  G4PhysicsVector* physicsVector, // Physics vector
133  G4int atomicNumberIon, // Atomic number of ion
134  G4int atomicNumberElem // Atomic number of elemental material
135  );
136 
137  // Function for removing dE/dx vector for a compound materials
139  G4int atomicNumberIon, // Atomic number of ion
140  const G4String& matIdentifier // Name or chemical formula of material
141  );
142  // Function for removing dE/dx vector for a compound materials
144  G4int atomicNumberIon, // Atomic number of ion
145  G4int atomicNumberElem // Atomic number of elemental material
146  );
147  // Function deleting all physics vectors and clearing the maps
148  void ClearTable();
149 
150  // Function printing the ion-material pairs of available vectors to stdout
151  void DumpMap();
152 
153  private:
154 
156  const G4IonStoppingData & operator=(const G4IonStoppingData&) = delete;
157 
158  // Subdirectory of G4LEDATA
160 
161  typedef std::pair<G4int, G4int> G4IonDEDXKeyElem;
162  typedef std::pair<G4int, G4String> G4IonDEDXKeyMat;
163 
164  typedef std::map<G4IonDEDXKeyElem, G4PhysicsVector*> G4IonDEDXMapElem;
165  typedef std::map<G4IonDEDXKeyMat, G4PhysicsVector*> G4IonDEDXMapMat;
166 
169 
171 };
172 
173 #endif // G4IONSTOPPINGDATA_HH