Geant4
11.3.0
Toolkit for the simulation of the passage of particles through matter
Toggle main menu visibility
Main Page
Related Pages
Namespaces
Namespace List
Namespace Members
All
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
a
b
c
d
e
f
g
h
i
m
n
o
p
q
r
s
t
u
w
z
Variables
a
c
e
g
h
i
k
l
m
n
o
p
q
s
t
v
Typedefs
a
b
c
d
e
f
g
h
i
m
n
p
r
s
t
w
Enumerations
a
b
c
d
e
f
g
l
m
p
r
s
t
v
y
z
Enumerator
a
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
z
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
:
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
i
j
k
l
m
n
o
p
r
s
t
u
v
w
Enumerations
a
c
d
e
f
g
k
l
m
o
p
r
s
t
u
v
w
Enumerator
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Related Symbols
:
a
b
c
d
g
h
i
o
q
r
s
t
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
x
z
Enumerations
b
c
d
e
f
g
i
j
l
m
n
p
s
t
w
x
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
x
y
Macros
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
▼
Geant4
Deprecated List
Todo List
►
Namespaces
►
Classes
▼
Files
▼
File List
▼
geant4-v11.3.0
▼
source
►
analysis
►
digits_hits
►
error_propagation
►
event
►
externals
►
g3tog4
▼
geometry
►
biasing
►
divisions
▼
magneticfield
►
include
▼
src
G4BFieldIntegrationDriver.cc
G4BogackiShampine23.cc
G4BogackiShampine45.cc
G4BorisDriver.cc
G4BorisScheme.cc
G4BulirschStoer.cc
G4CachedMagneticField.cc
G4CashKarpRKF45.cc
G4ChargeState.cc
►
G4ChordFinder.cc
G4ClassicalRK4.cc
G4ConstRK4.cc
G4DELPHIMagField.cc
G4DoLoMcPriRK34.cc
G4DormandPrince745.cc
G4DormandPrinceRK56.cc
G4DormandPrinceRK78.cc
►
G4DriverReporter.cc
G4ElectricField.cc
G4ElectroMagneticField.cc
G4EqEMFieldWithEDM.cc
G4EqEMFieldWithSpin.cc
G4EqGravityField.cc
G4EqMagElectricField.cc
G4EquationOfMotion.cc
G4ErrorMag_UsualEqRhs.cc
G4ExactHelixStepper.cc
G4ExplicitEuler.cc
G4Field.cc
G4FieldBuilder.cc
G4FieldBuilderMessenger.cc
G4FieldManager.cc
G4FieldManagerStore.cc
G4FieldParameters.cc
G4FieldParametersMessenger.cc
G4FieldSetup.cc
G4FieldSetupMessenger.cc
►
G4FieldTrack.cc
►
G4FieldUtils.cc
G4FSALBogackiShampine45.cc
G4FSALDormandPrince745.cc
G4HarmonicPolMagField.cc
G4HelixExplicitEuler.cc
G4HelixHeum.cc
G4HelixImplicitEuler.cc
G4HelixMixedStepper.cc
G4HelixSimpleRunge.cc
G4ImplicitEuler.cc
G4LineCurrentMagField.cc
G4LineSection.cc
G4Mag_EqRhs.cc
G4Mag_SpinEqRhs.cc
G4Mag_UsualEqRhs.cc
G4MagErrorStepper.cc
G4MagHelicalStepper.cc
►
G4MagIntegratorDriver.cc
G4MagIntegratorStepper.cc
G4MagneticField.cc
G4ModifiedMidpoint.cc
G4MonopoleEq.cc
G4NystromRK4.cc
G4OldMagIntDriver.cc
G4QSS3.cc
G4QSSDriverCreator.cc
G4QSSMessenger.cc
G4QSStepper.cc
G4QuadrupoleMagField.cc
G4RepleteEofM.cc
G4RK547FEq1.cc
G4RK547FEq2.cc
G4RK547FEq3.cc
G4RKG3_Stepper.cc
G4SextupoleMagField.cc
G4SimpleHeum.cc
G4SimpleRunge.cc
G4TrialsCounter.cc
G4TsitourasRK45.cc
G4UniformElectricField.cc
G4UniformGravityField.cc
G4UniformMagField.cc
G4VFSALIntegrationStepper.cc
►
G4VIntegrationDriver.cc
►
management
►
navigation
►
solids
►
volumes
►
global
►
graphics_reps
►
intercoms
►
interfaces
►
materials
►
parameterisations
►
particles
►
persistency
►
physics_lists
►
processes
►
readout
►
run
►
track
►
tracking
►
visualization
►
File Members
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
Loading...
Searching...
No Matches
G4FieldManagerStore.cc
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
// G4FieldManagerStore implementation
27
//
28
// Author: J.Apostolakis, 07.12.2007 - Adapted from G4LogicalVolumeStore
29
// --------------------------------------------------------------------
30
31
#include "
G4Types.hh
"
32
#include "
G4FieldManagerStore.hh
"
33
#include "
G4ChordFinder.hh
"
34
35
// ***************************************************************************
36
// Static class variables
37
// ***************************************************************************
38
//
39
G4ThreadLocal
G4FieldManagerStore
* G4FieldManagerStore::fgInstance =
nullptr
;
40
G4ThreadLocal
G4bool
G4FieldManagerStore::locked =
false
;
41
42
// ***************************************************************************
43
// Protected constructor: Construct underlying container with
44
// initial size of 100 entries
45
// ***************************************************************************
46
//
47
G4FieldManagerStore::G4FieldManagerStore
()
48
{
49
reserve(100);
50
}
47
G4FieldManagerStore::G4FieldManagerStore
() {
…
}
51
52
// ***************************************************************************
53
// Destructor
54
// ***************************************************************************
55
//
56
G4FieldManagerStore::~G4FieldManagerStore
()
57
{
58
Clean
();
59
fgInstance =
nullptr
;
60
}
56
G4FieldManagerStore::~G4FieldManagerStore
() {
…
}
61
62
// ***************************************************************************
63
// Delete all elements from the store
64
// ***************************************************************************
65
//
66
void
G4FieldManagerStore::Clean
()
67
{
68
// Locks store for deletion of field managers. De-registration will be
69
// performed at this stage. G4FieldManagers will not de-register themselves.
70
//
71
locked =
true
;
72
73
G4FieldManagerStore
* store =
GetInstance
();
74
75
for
(
const
auto
& pos : *store)
76
{
77
delete
pos;
78
}
79
80
locked =
false
;
81
store->clear();
82
}
66
void
G4FieldManagerStore::Clean
() {
…
}
83
84
// ***************************************************************************
85
// Add field manager to container
86
// ***************************************************************************
87
//
88
void
G4FieldManagerStore::Register
(
G4FieldManager
* pFieldManager)
89
{
90
GetInstance
()->push_back(pFieldManager);
91
}
88
void
G4FieldManagerStore::Register
(
G4FieldManager
* pFieldManager) {
…
}
92
93
// ***************************************************************************
94
// Remove volume from container
95
// ***************************************************************************
96
//
97
void
G4FieldManagerStore::DeRegister
(
G4FieldManager
* pFieldMgr)
98
{
99
if
(!locked)
// Do not de-register if locked !
100
{
101
for
(
auto
i=
GetInstance
()->cbegin(); i!=
GetInstance
()->cend(); ++i)
102
{
103
if
(*i==pFieldMgr)
// For LogVol was **i == *pLogVolume ... Reason?
104
{
105
GetInstance
()->erase(i);
106
break
;
107
}
108
}
109
}
110
}
97
void
G4FieldManagerStore::DeRegister
(
G4FieldManager
* pFieldMgr) {
…
}
111
112
// ***************************************************************************
113
// Return ptr to Store, setting if necessary
114
// ***************************************************************************
115
//
116
G4FieldManagerStore
*
G4FieldManagerStore::GetInstance
()
117
{
118
if
(fgInstance ==
nullptr
)
119
{
120
fgInstance =
new
G4FieldManagerStore
;
121
}
122
return
fgInstance;
123
}
116
G4FieldManagerStore
*
G4FieldManagerStore::GetInstance
() {
…
}
124
125
// ***************************************************************************
126
// Return ptr to Store
127
// ***************************************************************************
128
//
129
G4FieldManagerStore
*
G4FieldManagerStore::GetInstanceIfExist
()
130
{
131
return
fgInstance;
132
}
129
G4FieldManagerStore
*
G4FieldManagerStore::GetInstanceIfExist
() {
…
}
133
134
// ***************************************************************************
135
// Globally reset the state
136
// ***************************************************************************
137
//
138
void
139
G4FieldManagerStore::ClearAllChordFindersState
()
140
{
141
G4ChordFinder
* pChordFnd;
142
143
for
(
const
auto
& mgr : *
GetInstance
())
144
{
145
pChordFnd = mgr->GetChordFinder();
146
if
( pChordFnd !=
nullptr
)
147
{
148
pChordFnd->
ResetStepEstimate
();
149
}
150
}
151
}
139
G4FieldManagerStore::ClearAllChordFindersState
() {
…
}
G4ChordFinder.hh
G4FieldManagerStore.hh
G4Types.hh
G4bool
bool G4bool
Definition
G4Types.hh:86
G4ChordFinder
Definition
G4ChordFinder.hh:51
G4ChordFinder::ResetStepEstimate
void ResetStepEstimate()
G4FieldManagerStore
Definition
G4FieldManagerStore.hh:50
G4FieldManagerStore::DeRegister
static void DeRegister(G4FieldManager *pVolume)
Definition
G4FieldManagerStore.cc:97
G4FieldManagerStore::Register
static void Register(G4FieldManager *pVolume)
Definition
G4FieldManagerStore.cc:88
G4FieldManagerStore::~G4FieldManagerStore
~G4FieldManagerStore()
Definition
G4FieldManagerStore.cc:56
G4FieldManagerStore::G4FieldManagerStore
G4FieldManagerStore()
Definition
G4FieldManagerStore.cc:47
G4FieldManagerStore::GetInstanceIfExist
static G4FieldManagerStore * GetInstanceIfExist()
Definition
G4FieldManagerStore.cc:129
G4FieldManagerStore::Clean
static void Clean()
Definition
G4FieldManagerStore.cc:66
G4FieldManagerStore::GetInstance
static G4FieldManagerStore * GetInstance()
Definition
G4FieldManagerStore.cc:116
G4FieldManagerStore::ClearAllChordFindersState
void ClearAllChordFindersState()
Definition
G4FieldManagerStore.cc:139
G4FieldManager
Definition
G4FieldManager.hh:85
G4ThreadLocal
#define G4ThreadLocal
Definition
tls.hh:77
geant4-v11.3.0
source
geometry
magneticfield
src
G4FieldManagerStore.cc
Generated by
1.13.2