83 void Voxelize(std::vector<G4VSolid*>& solids,
84 std::vector<G4Transform3D>& transforms);
90 void Voxelize(std::vector<G4VFacet*>& facets);
118 std::vector<G4int>& list,
122 std::vector<G4int>& list,
125 std::vector<G4int>& list,
132 inline const std::vector<G4VoxelBox>&
GetBoxes()
const;
144 std::vector<G4int>& curVoxel)
const;
169 std::vector<G4int>& curVoxel)
const;
196 std::vector<G4int>& voxels)
const;
225 inline long long CountVoxels(std::vector<G4double> boundaries[])
const;
226 inline const std::vector<G4int>&
240 template <
typename T>
241 inline G4int BinarySearch(
const std::vector<T>& vec, T value)
const;
247 void CreateSortedBoundary(std::vector<G4double>& boundaryRaw,
G4int axis);
249 void FindComponentsFastest(
unsigned int mask,
250 std::vector<G4int>& list,
G4int i)
const;
260 void BuildBoundaries();
261 void BuildReduceVoxels(std::vector<G4double> fBoundaries[],
263 void BuildReduceVoxels2(std::vector<G4double> fBoundaries[],
265 void BuildVoxelLimits(std::vector<G4VSolid*>& solids,
266 std::vector<G4Transform3D>& transforms);
267 void BuildVoxelLimits(std::vector<G4VFacet*>& facets);
268 void CreateMiniVoxels(std::vector<G4double> fBoundaries[],
270 void BuildBitmasks(std::vector<G4double> fBoundaries[],
272 void BuildBoundingBox();
284 class G4VoxelComparator
288 std::vector<G4VoxelInfo>& fVoxels;
290 G4VoxelComparator(std::vector<G4VoxelInfo>& voxels) : fVoxels(voxels) {}
296 G4int right = rv.count + fVoxels[rv.next].count;
297 return (left == right) ? l < r : left < right;
301 static G4int fDefaultVoxelsCount;
303 std::vector<G4VoxelBox> fVoxelBoxes;
304 std::vector<std::vector<G4int> > fVoxelBoxesCandidates;
305 mutable std::map<G4int, std::vector<G4int> > fCandidates;
307 const std::vector<G4int> fNoCandidates;
309 long long fCountOfVoxels;
313 std::vector<G4VoxelBox> fBoxes;
316 std::vector<G4double> fBoundaries[3];
319 std::vector<G4int> fCandidatesCounts[3];
321 G4int fTotalCandidates;
323 G4SurfBits fBitmasks[3];