Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4ExtDEDXTable.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// GEANT4 class header file
30//
31// Class: G4ExtDEDXTable
32//
33// Base class: G4VIonDEDXTable
34//
35// Author: Anton Lechner (Anton.Lechner@cern.ch)
36//
37// First implementation: 29. 02. 2009
38//
39// Modifications:
40// 03.11.2009 A. Lechner: Added new methods BuildPhysicsVector according
41// to interface changes in base class G4VIonDEDXTable.
42//
43//
44// Class description:
45// Utility class for users to add their own electronic stopping powers
46// for ions. This class is dedicated for use with G4IonParametrisedLossModel
47// of the low-energy electromagnetic package.
48//
49// Comments:
50//
51// ===========================================================================
52//
53
54#ifndef G4EXTDEDXTABLE_HH
55#define G4EXTDEDXTABLE_HH
56
57#include "globals.hh"
58#include "G4VIonDEDXTable.hh"
59#include <utility>
60#include <vector>
61#include <map>
62
63
65
66 public:
68 virtual ~G4ExtDEDXTable();
69
71 const G4String& matName);
72
74 G4int matZ);
75
76 // Function for checking the availability of stopping power tables
77 // for a given ion-material couple, where the material consists of
78 // a single element only.
80 G4int atomicNumberIon, // Atomic number of ion
81 G4int atomicNumberElem // Atomic number of elemental material
82 );
83
84 // Function for checking the availability of stopping power tables
85 // for given ion-material couples.
87 G4int atomicNumberIon, // Atomic number of ion
88 const G4String& matIdentifier // Name or chemical formula of material
89 );
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& matIdenfier // 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& matIdenfier, // Name or chemical formula of material
128 G4int atomicNumberElem = 0 // Atomic number of elemental material
129 );
130
131 // Function for removing dE/dx vector for a compound materials
133 G4int atomicNumberIon, // Atomic number of ion
134 const G4String& matIdentifier // Name or chemical formula of material
135 );
136
137 // Function writing all stopping power vectors to file
139 const G4String& fileName // File name
140 );
141
142 // Function retrieving all stopping power vectors from file
144 const G4String& fileName // File name
145 );
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 G4PhysicsVector* CreatePhysicsVector(G4int vectorType);
155
156 G4int FindAtomicNumberElement(G4PhysicsVector* physicsVector);
157
158 typedef std::pair<G4int, G4int> G4IonDEDXKeyElem;
159 typedef std::pair<G4int, G4String> G4IonDEDXKeyMat;
160
161 typedef std::map<G4IonDEDXKeyElem, G4PhysicsVector*> G4IonDEDXMapElem;
162 typedef std::map<G4IonDEDXKeyMat, G4PhysicsVector*> G4IonDEDXMapMat;
163
164 G4IonDEDXMapElem dedxMapElements;
165 G4IonDEDXMapMat dedxMapMaterials;
166};
167
168#endif // G4EXTDEDXTABLE_HH
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
G4PhysicsVector * GetPhysicsVector(G4int atomicNumberIon, G4int atomicNumberElem)
G4bool BuildPhysicsVector(G4int ionZ, const G4String &matName)
G4bool IsApplicable(G4int atomicNumberIon, G4int atomicNumberElem)
G4double GetDEDX(G4double kinEnergyPerNucleon, G4int atomicNumberIon, G4int atomicNumberElem)
G4bool StorePhysicsTable(const G4String &fileName)
G4bool RemovePhysicsVector(G4int atomicNumberIon, const G4String &matIdentifier)
G4bool AddPhysicsVector(G4PhysicsVector *physicsVector, G4int atomicNumberIon, const G4String &matIdenfier, G4int atomicNumberElem=0)
virtual ~G4ExtDEDXTable()
G4bool RetrievePhysicsTable(const G4String &fileName)