Geant4
9.6.p02
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
geant4_9_6_p02
source
geometry
management
include
G4SmartVoxelNode.hh
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
// $Id$
28
//
29
// class G4SmartVoxelNode
30
//
31
// Class description:
32
//
33
// A node in the smart voxel hierarchy - a `slice' of space along a given
34
// axis between given minima and maxima. Note that the node is not aware
35
// of its position - this information being available/derivable by the
36
// node's owner(s) (voxelheaders).
37
//
38
// Member Data:
39
//
40
// G4int fminEquivalent
41
// G4int fmaxEquivalent
42
// - Min and maximum nodes with same contents. Set by constructor
43
// and set methods.
44
// std::vector<G4int> fcontents
45
// - Vector of no.s of volumes inside the node.
46
47
// History:
48
// 18.04.01 G.Cosmo Migrated to STL vector
49
// 12.07.95 P.Kent Initial version
50
// --------------------------------------------------------------------
51
#ifndef G4SMARTVOXELNODE_HH
52
#define G4SMARTVOXELNODE_HH
53
54
#include "
G4Types.hh
"
55
#include <vector>
56
57
typedef
std::vector<G4int>
G4SliceVector
;
58
59
class
G4SmartVoxelNode
60
{
61
public
:
// with description
62
63
G4SmartVoxelNode
(
G4int
pSlice=0) : fminEquivalent(pSlice),
64
fmaxEquivalent(pSlice) {}
65
// Constructor. Create an empty node with slice number pSlice.
66
// This number is not stored, but used to provide defaults for the
67
// minimum and maximum equivalent node numbers.
68
69
~G4SmartVoxelNode
();
70
// Destructor. No actions.
71
72
inline
G4int
GetVolume
(
G4int
pVolumeNo)
const
;
73
// Return contained volume number pVolumeNo.
74
// Note: starts from 0 and no bounds checking performed.
75
76
inline
void
Insert
(
G4int
pVolumeNo);
77
// Add the specified volume number to the contents.
78
79
inline
G4int
GetNoContained
()
const
;
80
// Return the number of volumes inside the node.
81
82
inline
G4int
GetCapacity
()
const
;
83
// Return the maximum capacity of the buffer.
84
85
inline
void
Reserve
(
G4int
noSlices);
86
// Reserve memory in the vector of slices according to the specified
87
// quantity, relative to the maximum number of slices.
88
89
inline
void
Shrink
();
90
// Shrink buffer capacity to actual size to reduce wasted memory.
91
92
inline
G4int
GetMaxEquivalentSliceNo
()
const
;
93
// Return the maximum slice (node/header) number with the same contents,
94
// and with all intermediate slice also having the same contents.
95
inline
void
SetMaxEquivalentSliceNo
(
G4int
pMax);
96
// Set the maximum slice number (as above).
97
inline
G4int
GetMinEquivalentSliceNo
()
const
;
98
// Return the minimum slice (node/header) number with the same contents,
99
// and with all intermediate nodes also having the same contents.
100
inline
void
SetMinEquivalentSliceNo
(
G4int
pMin);
101
// Set the minimum slice number (as above).
102
103
G4bool
operator ==
(
const
G4SmartVoxelNode
&
v
)
const
;
104
// Equality operator.
105
106
private
:
107
108
G4int
fminEquivalent;
109
G4int
fmaxEquivalent;
110
G4SliceVector
fcontents;
111
};
112
113
#include "G4SmartVoxelNode.icc"
114
115
#endif
Generated on Sat May 25 2013 14:33:11 for Geant4 by
1.8.4