ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
G4PenelopeBremsstrahlungFS.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4PenelopeBremsstrahlungFS.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
// Author: Luciano Pandola
28
//
29
// History:
30
// -----------
31
// 20 Oct 2010 L. Pandola 1st implementation.
32
// 02 May 2011 L. Pandola Remove dependency on CLHEP::HepMatrix
33
// 24 May 2011 L. Pandola Renamed (make default Penelope)
34
// 03 Oct 2013 L. Pandola Migration to MT
35
// 07 Oct 2013 L. Pandola Add verbosity and ismaster flag for the
36
// master-only methods
37
// 30 Oct 2013 L. Pandola Add a G4Cache of temporary vectors as
38
// private member.
39
//
40
// -------------------------------------------------------------------
41
//
42
// Class description:
43
// Helper class for the calculation of final state (energy and angular
44
// distribution) for bremsstrahlung, Penelope Model, version 2008
45
// -------------------------------------------------------------------
46
47
#ifndef G4PENELOPEBREMSSTRAHLUNGFS_HH
48
#define G4PENELOPEBREMSSTRAHLUNGFS_HH 1
49
50
#include "
globals.hh
"
51
#include "
G4DataVector.hh
"
52
#include "
G4Cache.hh
"
53
#include <map>
54
55
class
G4PhysicsFreeVector
;
56
class
G4PhysicsLogVector
;
57
class
G4Material
;
58
class
G4PhysicsTable
;
59
60
class
G4PenelopeBremsstrahlungFS
61
{
62
public
:
64
G4PenelopeBremsstrahlungFS
(
G4int
verbosity=0);
65
~G4PenelopeBremsstrahlungFS
();
66
71
G4double
GetEffectiveZSquared
(
const
G4Material
*
mat
)
const
;
72
size_t
GetNBinsX
()
const
{
return
nBinsX
;};
73
G4double
GetMomentumIntegral
(
G4double
*
y
,
74
G4double
up,
G4int
momOrder)
const
;
75
const
G4PhysicsTable
*
GetScaledXSTable
(
const
G4Material
*,
76
const
G4double
cut)
const
;
77
G4double
SampleGammaEnergy
(
G4double
energy
,
78
const
G4Material
*,
const
G4double
cut)
const
;
79
81
void
ClearTables
(
G4bool
isMaster=
true
);
82
void
BuildScaledXSTable
(
const
G4Material
*
material
,
G4double
cut,
83
G4bool
isMaster);
84
85
void
SetVerbosity
(
G4int
ver){
fVerbosity
=ver;};
86
G4int
GetVerbosity
(){
return
fVerbosity
;};
87
88
private
:
89
//assignment operator
90
G4PenelopeBremsstrahlungFS
&
operator=
(
const
G4PenelopeBremsstrahlungFS
&
right
);
91
//copy constructor
92
G4PenelopeBremsstrahlungFS
(
const
G4PenelopeBremsstrahlungFS
&);
93
94
//Differential cross section tables
95
//Table contains G4PhysicsVectors of log(XS(E,x)) vs. log(E)
96
//for a grid of 32 values in x (= reduced photon energy)
97
std::map< std::pair<const G4Material*,G4double> ,
98
G4PhysicsTable
*> *
theReducedXSTable
;
99
100
std::map<const G4Material*,G4double> *
theEffectiveZSq
;
101
102
103
//Element data table
104
static
const
size_t
nBinsE
= 57;
105
static
const
size_t
nBinsX
= 32;
106
//x and E grids used in the data tables
107
G4double
theXGrid
[
nBinsX
];
108
G4double
theEGrid
[
nBinsE
];
109
void
ReadDataFile
(
G4int
Z
);
110
111
//Map of element data vs. Z.
112
//This is conceptually an array [57][33] with 57 energy
113
//points and 32 points in x. The 33-th column gives the total XS vs. E.
114
//It is implemented as a one-dimensional array of dimension
115
//57*33=1881 elements. data[e][x] --> theElementData[e*(nBinsX+1)+x]
116
std::map<G4int,G4DataVector*> *
theElementData
;
117
118
//Tables for energy sampling
119
void
InitializeEnergySampling
(
const
G4Material
*,
G4double
cut);
120
121
//Table contains G4PhysicsVectors of integral_XS(E,x) vs. x for a grid of
122
//57 values in energy
123
std::map< std::pair<const G4Material*,G4double> ,
124
G4PhysicsTable
*> *
theSamplingTable
;
125
std::map< std::pair<const G4Material*,G4double> ,
126
G4PhysicsFreeVector
* > *
thePBcut
;
127
128
//temporary vector. Used as member variable to avoid to book/release the
129
//memory on the fly. This vector is over-written at every call of
130
//SampleGammaEnergy(). It is thread-local (each thread has its own)
131
//and managed by G4Cache
132
G4Cache<G4PhysicsFreeVector*>
fCache
;
133
134
G4int
fVerbosity
;
135
136
};
137
138
#endif
139
geant4
tree
geant4-10.6-release
source
processes
electromagnetic
lowenergy
include
G4PenelopeBremsstrahlungFS.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:31
using
1.8.2 with
ECCE GitHub integration