Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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
57typedef std::vector<G4int> G4SliceVector;
58
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
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
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).
98 // Return the minimum slice (node/header) number with the same contents,
99 // and with all intermediate nodes also having the same contents.
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
std::vector< G4int > G4SliceVector
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
G4SmartVoxelNode(G4int pSlice=0)
G4bool operator==(const G4SmartVoxelNode &v) const
G4int GetCapacity() const
G4int GetMaxEquivalentSliceNo() const
G4int GetNoContained() const
G4int GetVolume(G4int pVolumeNo) const
void Reserve(G4int noSlices)
void Insert(G4int pVolumeNo)
void SetMaxEquivalentSliceNo(G4int pMax)
void SetMinEquivalentSliceNo(G4int pMin)
G4int GetMinEquivalentSliceNo() const