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
G4SmartVoxelNode.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4SmartVoxelNode.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
// G4SmartVoxelNode
27
//
28
// Class description:
29
//
30
// A node in the smart voxel hierarchy - a `slice' of space along a given
31
// axis between given minima and maxima. Note that the node is not aware
32
// of its position - this information being available/derivable by the
33
// node's owner(s) (voxelheaders).
34
//
35
// Member Data:
36
//
37
// G4int fminEquivalent
38
// G4int fmaxEquivalent
39
// - Min and maximum nodes with same contents. Set by constructor
40
// and set methods.
41
// std::vector<G4int> fcontents
42
// - Vector of no.s of volumes inside the node.
43
44
// 18.04.01, G.Cosmo - Migrated to STL vector
45
// 12.07.95, P.Kent - Initial version
46
// --------------------------------------------------------------------
47
#ifndef G4SMARTVOXELNODE_HH
48
#define G4SMARTVOXELNODE_HH
49
50
#include "
G4Types.hh
"
51
#include <vector>
52
53
using
G4SliceVector
= std::vector<G4int>;
54
55
class
G4SmartVoxelNode
56
{
57
public
:
// with description
58
59
G4SmartVoxelNode
(
G4int
pSlice = 0) :
fminEquivalent
(pSlice),
60
fmaxEquivalent
(pSlice) {}
61
// Constructor. Create an empty node with slice number pSlice.
62
// This number is not stored, but used to provide defaults for the
63
// minimum and maximum equivalent node numbers.
64
65
~G4SmartVoxelNode
();
66
// Destructor. No actions.
67
68
inline
G4int
GetVolume
(
G4int
pVolumeNo)
const
;
69
// Return contained volume number pVolumeNo.
70
// Note: starts from 0 and no bounds checking performed.
71
72
inline
void
Insert
(
G4int
pVolumeNo);
73
// Add the specified volume number to the contents.
74
75
inline
size_t
GetNoContained
()
const
;
76
// Return the number of volumes inside the node.
77
78
inline
size_t
GetCapacity
()
const
;
79
// Return the maximum capacity of the buffer.
80
81
inline
void
Reserve
(
G4int
noSlices);
82
// Reserve memory in the vector of slices according to the specified
83
// quantity, relative to the maximum number of slices.
84
85
inline
void
Shrink
();
86
// Shrink buffer capacity to actual size to reduce wasted memory.
87
88
inline
G4int
GetMaxEquivalentSliceNo
()
const
;
89
// Return the maximum slice (node/header) number with the same contents,
90
// and with all intermediate slice also having the same contents.
91
inline
void
SetMaxEquivalentSliceNo
(
G4int
pMax
);
92
// Set the maximum slice number (as above).
93
inline
G4int
GetMinEquivalentSliceNo
()
const
;
94
// Return the minimum slice (node/header) number with the same contents,
95
// and with all intermediate nodes also having the same contents.
96
inline
void
SetMinEquivalentSliceNo
(
G4int
pMin
);
97
// Set the minimum slice number (as above).
98
99
G4bool
operator ==
(
const
G4SmartVoxelNode
&
v
)
const
;
100
// Equality operator.
101
102
private
:
103
104
G4int
fminEquivalent
;
105
G4int
fmaxEquivalent
;
106
G4SliceVector
fcontents
;
107
};
108
109
#include "G4SmartVoxelNode.icc"
110
111
#endif
geant4
tree
geant4-10.6-release
source
geometry
management
include
G4SmartVoxelNode.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:17
using
1.8.2 with
ECCE GitHub integration