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
G4GSPWACorrections.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// ----------------------------------------------------------------------------
28//
29// GEANT4 Class header file
30//
31// File name: G4GSPWACorrections
32//
33// Author: Mihaly Novak
34//
35// Creation date: 17.10.2017
36//
37// Modifications:
38//
39// Class description: class to describe and store correction factors to the
40// integrated quantities of G4GoudsmitSaundersonMscModel (screening parameter,
41// first and second moments) derived by using accurate Dirac-PWA based
42// integrated quantities.
43//
44// ----------------------------------------------------------------------------
45
46#ifndef G4GSPWACorrections_h
47#define G4GSPWACorrections_h 1
48
50
51#include "globals.hh"
52
53#include <vector>
54#include <string>
55#include <sstream>
56
57class G4Material;
58class G4Element;
59
60
62public:
63 G4GSPWACorrections(G4bool iselectron=true);
64
66
67 void Initialise();
68
69 void GetPWACorrectionFactors(G4double logekin, G4double beta2, G4int matindx,
70 G4double &corToScr, G4double &corToQ1, G4double &corToG2PerG1);
71private:
72 void InitDataPerElement();
73
74 void InitDataPerMaterials();
75
76 void LoadDataElement(const G4Element*);
77
78 void InitDataMaterial(const G4Material*);
79
80 void ClearDataPerElement();
81
82 void ClearDataPerMaterial();
83
84 // either per material or per Z
85 struct DataPerMaterial {
86 std::vector<G4double> fCorScreening; // correction factor to Moliere screening parameter
87 std::vector<G4double> fCorFirstMoment; // correction factor to first moment
88 std::vector<G4double> fCorSecondMoment; // correction factor to second
89 };
90
91
92// data members
93private:
94 G4bool fIsElectron;
95 static constexpr G4int gMaxZet = 98; // max. Z for which correction data were computed (98)
96 static constexpr G4int gNumEkin = 31; // number of kinetic energy grid points for Mott correction
97 static constexpr G4int gNumBeta2 = 16; // \beta^2 values between [fMinBeta2-fMaxBeta2]
98 static constexpr G4double gMinEkin = 1.*CLHEP::keV; // minimum kinetic energy value
99 static constexpr G4double gMidEkin = 100.*CLHEP::keV; // kinetic energy at the border of the E_{kin}-\beta^2 grids
100 static constexpr G4double gMaxBeta2 = 0.9999; // maximum \beta^2 value
101 //
102 G4double fMaxEkin; // from max fMaxBeta2 = 0.9999 (~50.5889 [MeV])
103 G4double fLogMinEkin; // \ln[fMinEkin]
104 G4double fInvLogDelEkin; // 1/[\ln(fMidEkin/fMinEkin)/(fNumEkin-fNumBeta2)]
105 G4double fMinBeta2; // <= E_{kin}=100 [keV] (~0.300546)
106 G4double fInvDelBeta2; // 1/[(fMaxBeta2-fMinBeta2)/(fNumBeta2-1)]
107 //
108 static const std::string gElemSymbols[];
109 //
110 std::vector<DataPerMaterial*> fDataPerElement; // size will be gMaxZet+1; won't be null only at used Z indices
111 std::vector<DataPerMaterial*> fDataPerMaterial; // size will #materials; won't be null only at used mat. indices
112
113};
114
115#endif
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
void GetPWACorrectionFactors(G4double logekin, G4double beta2, G4int matindx, G4double &corToScr, G4double &corToQ1, G4double &corToG2PerG1)