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
G4SeltzerBergerModel.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4SeltzerBergerModel.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
//
29
// GEANT4 Class header file
30
//
31
//
32
// File name: G4SeltzerBergerModel
33
//
34
// Author: Andreas Schaelicke & Vladimir Ivantchenko
35
//
36
// Creation date: 04.10.2011
37
//
38
// Modifications:
39
//
40
// 24.07.2018 Introduced possibility to use sampling tables to sample the
41
// emitted photon energy (instead of using rejectio) from the
42
// Seltzer-Berger scalled DCS for bremsstrahlung photon emission.
43
// Using these sampling tables option gives faster(30-70%) final
44
// state generation than the original rejection but takes some
45
// extra memory (+ ~6MB in the case of the full CMS detector).
46
// (M Novak)
47
//
48
// Class Description:
49
//
50
// Implementation of the bremssrahlung energy spectrum using
51
// 1. S.M. Seltzer and M.J. Berger Nucl. Instr. Meth. B12 (1985) 95
52
// 2. S.M. Seltzer and M.J. Berger Atomic data and Nuclear Data
53
// Tables 35 (1986) 345
54
// Cross section computation in the base class G4eBremsstrahlungRelModel
55
56
// -------------------------------------------------------------------
57
//
58
59
#ifndef G4SeltzerBergerModel_h
60
#define G4SeltzerBergerModel_h 1
61
62
#include "
G4eBremsstrahlungRelModel.hh
"
63
#include "
globals.hh
"
64
#include "
G4Threading.hh
"
65
66
class
G4Physics2DVector
;
67
class
G4SBBremTable
;
68
69
class
G4SeltzerBergerModel
:
public
G4eBremsstrahlungRelModel
70
{
71
72
public
:
73
74
explicit
G4SeltzerBergerModel
(
const
G4ParticleDefinition
*
p
=
nullptr
,
75
const
G4String
& nam =
"eBremSB"
);
76
77
~G4SeltzerBergerModel
()
override
;
78
79
void
Initialise
(
const
G4ParticleDefinition
*,
const
G4DataVector
&)
override
;
80
81
void
InitialiseForElement
(
const
G4ParticleDefinition
*,
G4int
Z
)
override
;
82
83
void
SampleSecondaries
(std::vector<G4DynamicParticle*>*,
84
const
G4MaterialCutsCouple
*,
85
const
G4DynamicParticle
*,
86
G4double
cutEnergy,
87
G4double
maxEnergy)
override
;
88
89
void
SetupForMaterial
(
const
G4ParticleDefinition
*,
90
const
G4Material
*,
G4double
)
override
;
91
92
inline
void
SetBicubicInterpolationFlag
(
G4bool
val)
93
{
fIsUseBicubicInterpolation
= val; };
94
95
protected
:
96
97
G4double
ComputeDXSectionPerAtom
(
G4double
gammaEnergy)
override
;
98
99
private
:
100
101
//
102
void
ReadData
(
G4int
Z);
103
104
const
G4String
&
FindDirectoryPath
();
105
106
G4double
SampleEnergyTransfer
(
const
G4double
kineticEnergy,
107
const
G4double
logKineticEnergy,
108
const
G4double
cut,
109
const
G4double
emax
);
110
111
// hide assignment operator and cctr
112
G4SeltzerBergerModel
&
operator=
(
const
G4SeltzerBergerModel
&
right
);
113
G4SeltzerBergerModel
(
const
G4SeltzerBergerModel
&);
114
115
static
constexpr
G4int
gMaxZet
= 101;
116
static
constexpr
G4double
gExpNumLimit
= -12.;
117
static
G4double
gYLimitData
[
gMaxZet
];
118
static
G4Physics2DVector
*
gSBDCSData
[
gMaxZet
];
119
static
G4SBBremTable
*
gSBSamplingTable
;
120
static
G4String
gDataDirectory
;
121
122
G4bool
fIsUseBicubicInterpolation
;
123
G4bool
fIsUseSamplingTables
;
124
125
G4int
fNumWarnings
;
126
127
size_t
fIndx
;
128
size_t
fIndy
;
129
130
#ifdef G4MULTITHREADED
131
static
G4Mutex
theSBMutex;
132
#endif
133
134
};
135
136
#endif
geant4
tree
geant4-10.6-release
source
processes
electromagnetic
standard
include
G4SeltzerBergerModel.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:34
using
1.8.2 with
ECCE GitHub integration