Geant4
11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G3VolTable.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
//
27
//
28
// modified by I.Hrivnacova, 13.10.99
29
30
#include <iomanip>
31
#include "
globals.hh
"
32
#include "
G3VolTable.hh
"
33
#include "
G3Pos.hh
"
34
35
typedef
std::map<G4String, G3VolTableEntry*, std::less<G4String> >
36
::iterator
VTDiterator
;
37
38
G3VolTable::G3VolTable
()
39
: G3toG4TopVTE(0), _FirstKey(
"UnDefined"
), _NG3Pos(0){
40
}
41
42
G3VolTable::~G3VolTable
(){
43
if
(VTD.size()>0){
44
// G4cout << "Deleting VTD" << G4endl;
45
for
(
VTDiterator
i=VTD.begin(); i != VTD.end(); i++) {
46
delete
(*i).second;
47
}
48
VTD.clear();
49
}
50
}
51
52
G3VolTableEntry
*
53
G3VolTable::GetVTE
(
const
G4String
& Vname) {
54
VTDiterator
i = VTD.find(Vname);
55
if
(i == VTD.end())
return
0;
56
else
return
(*i).second;
57
}
58
59
void
60
G3VolTable::PrintAll
(){
61
if
(VTD.size()){
62
G4int
i=0;
63
G4cout
<<
"Dump of VTD - "
<< VTD.size() <<
" entries:"
<<
G4endl
;
64
VTEStat
();
65
for
(
VTDiterator
v=VTD.begin(); v != VTD.end(); v++){
66
G3VolTableEntry
* VTE = (*v).second;
67
G4cout
<<
"G3VolTable element "
<< std::setw(3) << i++ <<
" name "
68
<< VTE->
GetName
() <<
" has "
<< VTE->
GetNoDaughters
()
69
<<
" daughters"
<<
G4endl
;
70
}
71
}
72
}
73
74
G3VolTableEntry
*
75
G3VolTable::PutVTE
(
G3VolTableEntry
* aG3VolTableEntry){
76
77
if
(
GetVTE
(aG3VolTableEntry->
GetName
()) == 0 ){
78
79
// create a hash key
80
G4String
HashID = aG3VolTableEntry->
GetName
();
81
82
if
(_FirstKey ==
"UnDefined"
) _FirstKey = HashID;
83
84
// insert into dictionary
85
VTD[HashID] = aG3VolTableEntry;
86
}
87
return
GetVTE
(aG3VolTableEntry->
GetName
());
88
}
89
90
void
91
G3VolTable::CountG3Pos
(){
92
_NG3Pos++;
93
}
94
95
void
96
G3VolTable::SetFirstVTE
(){
97
G3toG4TopVTE = VTD[_FirstKey];
98
99
if
(G3toG4TopVTE->
NPCopies
() > 0) {
100
_FirstKey = G3toG4TopVTE->
GetMother
()->
GetName
();
101
SetFirstVTE
();
102
}
103
}
104
105
G3VolTableEntry
*
106
G3VolTable::GetFirstVTE
() {
107
return
G3toG4TopVTE;
108
}
109
110
void
111
G3VolTable::VTEStat
() {
112
G4cout
<<
"Instantiated "
<< VTD.size() <<
113
" volume table entries \n"
114
<<
" "
<< _NG3Pos <<
" positions."
<<
G4endl
;
115
}
116
117
void
118
G3VolTable::Clear
() {
119
if
(VTD.size()>0){
120
for
(
VTDiterator
i=VTD.begin(); i != VTD.end(); i++) {
121
delete
(*i).second;
122
}
123
VTD.clear();
124
}
125
G3toG4TopVTE = 0;
126
_FirstKey =
"UnDefined"
;
127
_NG3Pos = 0;
128
}
G3Pos.hh
VTDiterator
std::map< G4String, G3VolTableEntry *, std::less< G4String > >::iterator VTDiterator
Definition
G3VolTable.cc:36
G3VolTable.hh
G4int
int G4int
Definition
G4Types.hh:85
G4endl
#define G4endl
Definition
G4ios.hh:67
G4cout
G4GLOB_DLL std::ostream G4cout
G3VolTableEntry
Definition
G3VolTableEntry.hh:80
G3VolTableEntry::GetNoDaughters
G4int GetNoDaughters()
Definition
G3VolTableEntry.cc:286
G3VolTableEntry::GetMother
G3VolTableEntry * GetMother(G4int i)
Definition
G3VolTableEntry.cc:314
G3VolTableEntry::GetName
G4String GetName()
Definition
G3VolTableEntry.cc:228
G3VolTableEntry::NPCopies
G4int NPCopies()
Definition
G3VolTableEntry.cc:253
G3VolTable::SetFirstVTE
void SetFirstVTE()
Definition
G3VolTable.cc:96
G3VolTable::PrintAll
void PrintAll()
Definition
G3VolTable.cc:60
G3VolTable::CountG3Pos
void CountG3Pos()
Definition
G3VolTable.cc:91
G3VolTable::GetFirstVTE
G3VolTableEntry * GetFirstVTE()
Definition
G3VolTable.cc:106
G3VolTable::~G3VolTable
virtual ~G3VolTable()
Definition
G3VolTable.cc:42
G3VolTable::G3VolTable
G3VolTable()
Definition
G3VolTable.cc:38
G3VolTable::PutVTE
G3VolTableEntry * PutVTE(G3VolTableEntry *aVTE)
Definition
G3VolTable.cc:75
G3VolTable::Clear
void Clear()
Definition
G3VolTable.cc:118
G3VolTable::GetVTE
G3VolTableEntry * GetVTE(const G4String &Vname)
Definition
G3VolTable.cc:53
G3VolTable::VTEStat
void VTEStat()
Definition
G3VolTable.cc:111
G4String
Definition
G4String.hh:62
globals.hh
geant4-v11.2.2
source
g3tog4
src
G3VolTable.cc
Generated by
1.12.0