ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4ExtDEDXTable.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4ExtDEDXTable.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: G4ExtDEDXTable
31 //
32 // Base class: G4VIonDEDXTable
33 //
34 // Author: Anton Lechner (Anton.Lechner@cern.ch)
35 //
36 // First implementation: 29. 02. 2009
37 //
38 // Modifications:
39 // 03.11.2009 A. Lechner: Added new methods BuildPhysicsVector according
40 // to interface changes in base class G4VIonDEDXTable.
41 //
42 //
43 // Class description:
44 // Utility class for users to add their own electronic stopping powers
45 // for ions. This class is dedicated for use with G4IonParametrisedLossModel
46 // of the low-energy electromagnetic package.
47 //
48 // Comments:
49 //
50 // ===========================================================================
51 //
52 
53 #ifndef G4EXTDEDXTABLE_HH
54 #define G4EXTDEDXTABLE_HH
55 
56 #include "globals.hh"
57 #include "G4VIonDEDXTable.hh"
58 #include <utility>
59 #include <vector>
60 #include <map>
61 
62 
64 
65  public:
66  explicit G4ExtDEDXTable();
67  virtual ~G4ExtDEDXTable();
68 
69  virtual G4bool BuildPhysicsVector(G4int ionZ,
70  const G4String& matName);
71 
72  virtual G4bool BuildPhysicsVector(G4int ionZ,
73  G4int matZ);
74 
75  // Function for checking the availability of stopping power tables
76  // for a given ion-material couple, where the material consists of
77  // a single element only.
78  virtual G4bool IsApplicable(
79  G4int atomicNumberIon, // Atomic number of ion
80  G4int atomicNumberElem // Atomic number of elemental material
81  );
82 
83  // Function for checking the availability of stopping power tables
84  // for given ion-material couples.
85  virtual G4bool IsApplicable(
86  G4int atomicNumberIon, // Atomic number of ion
87  const G4String& matIdentifier // Name or chemical formula of material
88  );
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& matIdenfier // 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& matIdenfier, // Name or chemical formula of material
127  G4int atomicNumberElem = 0 // Atomic number of elemental material
128  );
129 
130  // Function for removing dE/dx vector for a compound materials
132  G4int atomicNumberIon, // Atomic number of ion
133  const G4String& matIdentifier // Name or chemical formula of material
134  );
135 
136  // Function writing all stopping power vectors to file
138  const G4String& fileName // File name
139  );
140 
141  // Function retrieving all stopping power vectors from file
143  const G4String& fileName // File name
144  );
145 
146  // Function deleting all physics vectors and clearing the maps
147  void ClearTable();
148 
149  // Function printing the ion-material pairs of available vectors to stdout
150  void DumpMap();
151 
152  private:
153 
154  G4ExtDEDXTable(G4ExtDEDXTable&) = delete;
155  const G4ExtDEDXTable & operator=(const G4ExtDEDXTable&) = delete;
156 
158 
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 };
170 
171 #endif // G4EXTDEDXTABLE_HH