69 void Voxelize(std::vector<G4VSolid*>& solids,
70 std::vector<G4Transform3D>& transforms);
71 void Voxelize(std::vector<G4VFacet*>& facets);
85 std::vector<G4int>& list,
91 std::vector<G4int>& list,
94 std::vector<G4int>& list,
97 inline const std::vector<G4VoxelBox>&
GetBoxes()
const;
105 std::vector<G4int>& curVoxel)
const;
116 std::vector<G4int>& curVoxel)
const;
126 std::vector<G4int>& voxels)
const;
141 inline long long CountVoxels(std::vector<G4double> boundaries[])
const;
143 inline const std::vector<G4int>&
163 class G4VoxelComparator
167 std::vector<G4VoxelInfo>& fVoxels;
169 G4VoxelComparator(std::vector<G4VoxelInfo>& voxels) : fVoxels(voxels) {}
175 G4int right = rv.count + fVoxels[rv.next].count;
176 return (left == right) ? l < r : left < right;
184 void CreateSortedBoundary(std::vector<G4double>& boundaryRaw,
G4int axis);
186 void BuildBoundaries();
188 void BuildReduceVoxels(std::vector<G4double> fBoundaries[],
190 void BuildReduceVoxels2(std::vector<G4double> fBoundaries[],
193 void BuildVoxelLimits(std::vector<G4VSolid*>& solids,
194 std::vector<G4Transform3D>& transforms);
195 void BuildVoxelLimits(std::vector<G4VFacet*>& facets);
199 void BuildBitmasks(std::vector<G4double> fBoundaries[],
202 void BuildBoundingBox();
208 void CreateMiniVoxels(std::vector<G4double> fBoundaries[],
210 static void FindComponentsFastest(
unsigned int mask,
211 std::vector<G4int>& list,
G4int i);
222 std::vector<G4VoxelBox> fVoxelBoxes;
223 std::vector<std::vector<G4int> > fVoxelBoxesCandidates;
224 mutable std::map<G4int, std::vector<G4int> > fCandidates;
226 const std::vector<G4int> fNoCandidates;
228 long long fCountOfVoxels;
232 std::vector<G4VoxelBox> fBoxes;
235 std::vector<G4double> fBoundaries[3];
238 std::vector<G4int> fCandidatesCounts[3];
240 G4int fTotalCandidates;