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
G4IonICRU73Data.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#ifndef G4IonICRU73Data_h
28#define G4IonICRU73Data_h 1
29
30//---------------------------------------------------------------------------
31//
32// ClassName: G4IonICRU73Data
33//
34// Description: Data on stopping power
35//
36// Author: Vladimir Ivanchenko
37//
38// Creation date: 23.10.2021
39//
40// Class Description:
41//
42// Container for parameterised data on ion stopping power
43//
44
45//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
46
47#include <vector>
48#include <iostream>
49#include "globals.hh"
50
53class G4Material;
54
56{
57public:
58
59 explicit G4IonICRU73Data();
60
62
63 // should be called before each run
64 void Initialise();
65
66 // Z - atomic number of the projectile
67 // e - energy per nucleon, loge = log(e)
68 G4double GetDEDX(const G4Material*, const G4int Z,
69 const G4double e, const G4double loge) const;
70
71 // hide assignment operator
74
75private:
76
77 void ReadMaterialData(const G4Material* mat, const G4double fact,
78 const G4bool type);
79
80 void ReadElementData(const G4Material* mat, G4bool type);
81
82 G4PhysicsLogVector* FindOrBuildElementData(const G4int Z,
83 const G4int Z1,
84 G4bool useICRU90);
85
86 G4PhysicsLogVector* RetrieveVector(std::ostringstream& in,
87 G4bool warn);
88
89 G4double fEmin;
90 G4double fEmax;
91
92 std::vector<G4int> fMatIndex;
93 // projectile Z <= 80, target element Z <= 92
94 std::vector<G4PhysicsLogVector*>* fMatData[81] = {nullptr};
95 G4PhysicsLogVector* fElmData[81][93] = {{nullptr}};
96 G4PhysicsFreeVector* fVector = nullptr;
97
98 G4int fNmat = 0;
99 G4int fNbins = 0;
100 G4int fNbinsPerDecade = 10;
101 G4int fVerbose = 0;
102 G4bool fSpline = false;
103 G4String fDataDirectory = "";
104};
105
106//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
107
108#endif
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
G4IonICRU73Data(const G4IonICRU73Data &)=delete
G4double GetDEDX(const G4Material *, const G4int Z, const G4double e, const G4double loge) const
G4IonICRU73Data & operator=(const G4IonICRU73Data &right)=delete