CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
NavVolume6Faces Class Referencefinal

#include <NavVolume6Faces.h>

Inheritance diagram for NavVolume6Faces:
NavVolume MagVolume GloballyPositioned< float > MagneticField

Public Member Functions

VolumeCrossReturnType crossToNextVolume (const TrajectoryStateOnSurface &currentState, const Propagator &prop) const override
 Cross this volume and point at the next. More...
 
const std::vector< VolumeSide > & faces () const override
 Access to volume faces. More...
 
bool inside (const GlobalPoint &gp, double tolerance) const override
 
bool isIron () const override
 Access to Iron/Air information: More...
 
 NavVolume6Faces (const PositionType &pos, const RotationType &rot, DDSolidShape shape, const std::vector< NavVolumeSide > &faces, const MagneticFieldProvider< float > *mfp)
 
 NavVolume6Faces (const MagVolume &magvol, const bool isIron=false)
 A NavVolume6Faces that corresponds exactly to a MagVolume. More...
 
Container nextSurface (const NavVolume::LocalPoint &pos, const NavVolume::LocalVector &mom, double charge, PropagationDirection propDir=alongMomentum) const override
 Give a sorted list of possible surfaces to propagate to. More...
 
Container nextSurface (const NavVolume::LocalPoint &pos, const NavVolume::LocalVector &mom, double charge, PropagationDirection propDir, ConstReferenceCountingPointer< Surface > NotThisSurfaceP) const override
 Same, giving lowest priority to the surface we are on now (=NotThisSurface) More...
 
- Public Member Functions inherited from NavVolume
 NavVolume (const PositionType &pos, const RotationType &rot, DDSolidShape shape, const MagneticFieldProvider< float > *mfp)
 
 ~NavVolume () override
 
- Public Member Functions inherited from MagVolume
LocalVector fieldInTesla (const LocalPoint &lp) const
 
GlobalVector fieldInTesla (const GlobalPoint &lp) const
 
virtual bool inside (const LocalPoint &lp, double tolerance=0.) const
 
::GlobalVector inTesla (const ::GlobalPoint &gp) const override
 
bool isIron () const
 Temporary hack to pass information on material. Will eventually be replaced! More...
 
 MagVolume (const PositionType &pos, const RotationType &rot, DDSolidShape shape, const MagneticFieldProvider< float > *mfp, double sf=1.)
 
void ownsFieldProvider (bool o)
 
const MagneticFieldProvider< float > * provider () const
 
void setIsIron (bool iron)
 
DDSolidShape shapeType () const
 
 ~MagVolume () override
 
- Public Member Functions inherited from GloballyPositioned< float >
float eta () const
 
 GloballyPositioned ()
 
 GloballyPositioned (const PositionType &pos, const RotationType &rot)
 
void move (const GlobalVector &displacement)
 
float phi () const
 
const PositionTypeposition () const
 
void rotate (const RotationType &rotation)
 
const RotationTyperotation () const
 
GlobalPoint toGlobal (const LocalPoint &lp) const
 
Point3DBase< U, GlobalTagtoGlobal (const Point3DBase< U, LocalTag > &lp) const
 
GlobalVector toGlobal (const LocalVector &lv) const
 
Vector3DBase< U, GlobalTagtoGlobal (const Vector3DBase< U, LocalTag > &lv) const
 
LocalPoint toLocal (const GlobalPoint &gp) const
 
Point3DBase< U, LocalTagtoLocal (const Point3DBase< U, GlobalTag > &gp) const
 
LocalVector toLocal (const GlobalVector &gv) const
 
Vector3DBase< U, LocalTagtoLocal (const Vector3DBase< U, GlobalTag > &gv) const
 
virtual ~GloballyPositioned ()
 
- Public Member Functions inherited from MagneticField
virtual MagneticFieldclone () const
 
GlobalVector inInverseGeV (const GlobalPoint &gp) const
 Field value ad specified global point, in 1/Gev. More...
 
GlobalVector inKGauss (const GlobalPoint &gp) const
 Field value ad specified global point, in KGauss. More...
 
virtual GlobalVector inTesla (const GlobalPoint &gp) const =0
 Field value ad specified global point, in Tesla. More...
 
virtual GlobalVector inTeslaUnchecked (const GlobalPoint &gp) const
 
virtual bool isDefined (const GlobalPoint &) const
 True if the point is within the region where the concrete field. More...
 
 MagneticField ()
 
 MagneticField (const MagneticField &orig)
 
int nominalValue () const
 The nominal field value for this map in kGauss. More...
 
virtual ~MagneticField ()
 

Private Member Functions

void computeBounds (const std::vector< NavVolumeSide > &faces)
 
BoundscomputeBounds (int index, const std::vector< const Plane * > &bpc)
 
BoundscomputeBounds (int index, const std::vector< NavVolumeSide > &faces)
 

Private Attributes

bool isThisIron
 
std::vector< VolumeSidetheFaces
 
Container theNavSurfaces
 

Additional Inherited Members

- Public Types inherited from NavVolume
typedef std::vector< SurfaceAndBoundsContainer
 
- Public Types inherited from MagVolume
typedef GloballyPositioned< float > Base
 
typedef GloballyPositioned< float >::GlobalPoint GlobalPoint
 
typedef GloballyPositioned< float >::GlobalVector GlobalVector
 
typedef GloballyPositioned< float >::LocalPoint LocalPoint
 
typedef GloballyPositioned< float >::LocalVector LocalVector
 
- Public Types inherited from GloballyPositioned< float >
typedef Point3DBase< float, GlobalTagGlobalPoint
 
typedef Vector3DBase< float, GlobalTagGlobalVector
 
typedef Point3DBase< float, LocalTagLocalPoint
 
typedef Vector3DBase< float, LocalTagLocalVector
 
typedef Point3DBase< float, GlobalTagPositionType
 
typedef TkRotation< float > RotationType
 
typedef float Scalar
 
- Static Public Member Functions inherited from GloballyPositioned< float >
static float iniEta ()
 
static float iniPhi ()
 

Detailed Description

Definition at line 13 of file NavVolume6Faces.h.

Constructor & Destructor Documentation

NavVolume6Faces::NavVolume6Faces ( const PositionType pos,
const RotationType rot,
DDSolidShape  shape,
const std::vector< NavVolumeSide > &  faces,
const MagneticFieldProvider< float > *  mfp 
)

Definition at line 25 of file NavVolume6Faces.cc.

References computeBounds(), mps_fire::i, and theFaces.

29  :
30  NavVolume(pos,rot,shape,mfp)
31 {
32  for (std::vector<NavVolumeSide>::const_iterator i=faces.begin();
33  i != faces.end(); i++) {
34  theFaces.push_back( VolumeSide( const_cast<Surface*>(&(i->surface().surface())),
35  i->globalFace(), i->surfaceSide()));
36  // LogDebug("NavGeometry") << " or actually this is where we have side " << i->surfaceSide() << " and face " << i->globalFace() ;
37  }
38 
39 
40 
42 }
const std::vector< VolumeSide > & faces() const override
Access to volume faces.
NavVolume(const PositionType &pos, const RotationType &rot, DDSolidShape shape, const MagneticFieldProvider< float > *mfp)
Definition: NavVolume.h:23
std::vector< VolumeSide > theFaces
void computeBounds(const std::vector< NavVolumeSide > &faces)
NavVolume6Faces::NavVolume6Faces ( const MagVolume magvol,
const bool  isIron = false 
)
explicit

A NavVolume6Faces that corresponds exactly to a MagVolume.

Definition at line 44 of file NavVolume6Faces.cc.

References computeBounds(), MagVolume::faces(), and mps_fire::i.

44  :
45  NavVolume( magvol.position(), magvol.rotation(), magvol.shapeType(), magvol.provider()),
46  theFaces(magvol.faces()), isThisIron(isIron)
47 {
48  std::vector<NavVolumeSide> navSides;
49  std::vector<VolumeSide> magSides( magvol.faces());
50  NavSurfaceBuilder navBuilder;
51 
52  for (std::vector<VolumeSide>::const_iterator i=magSides.begin();
53  i != magSides.end(); i++) {
54  NavSurface* navSurface = navBuilder.build( i->surface());
55  navSides.push_back( NavVolumeSide( navSurface, i->globalFace(), i->surfaceSide()));
56  }
57  computeBounds(navSides);
58 }
DDSolidShape shapeType() const
Definition: MagVolume.h:31
helper: builde a NavSurface for a Surface
NavVolume(const PositionType &pos, const RotationType &rot, DDSolidShape shape, const MagneticFieldProvider< float > *mfp)
Definition: NavVolume.h:23
virtual const std::vector< VolumeSide > & faces() const =0
Access to volume faces.
bool isIron() const override
Access to Iron/Air information:
const MagneticFieldProvider< float > * provider() const
Definition: MagVolume.h:41
const RotationType & rotation() const
std::vector< VolumeSide > theFaces
const PositionType & position() const
void computeBounds(const std::vector< NavVolumeSide > &faces)

Member Function Documentation

void NavVolume6Faces::computeBounds ( const std::vector< NavVolumeSide > &  faces)
private

Definition at line 73 of file NavVolume6Faces.cc.

References NavSurface::addVolume(), NavSurface::bounds(), mps_fire::i, and theNavSurfaces.

Referenced by NavVolume6Faces().

74 {
75  bool allPlanes = true;
76  // bool allPlanes = false; // for TESTS ONLY!!!
77  std::vector<const Plane*> planes;
78  for (std::vector<NavVolumeSide>::const_iterator iface=faces.begin(); iface!=faces.end(); iface++) {
79  const Plane* plane = dynamic_cast<const Plane*>(&(iface->surface()));
80  if (plane != nullptr) {
81  planes.push_back(plane);
82  }
83  else allPlanes = false;
84  }
85 
86  for (unsigned int i=0; i<faces.size(); i++) {
87 
88  // FIXME: who owns the new NavSurface? memory leak???
89 
90  NavSurface& navSurf = faces[i].mutableSurface();
91  Bounds* myBounds = nullptr;
92  if (allPlanes) {
93  myBounds = computeBounds( i, planes);
94  }
95  else {
96  myBounds = computeBounds( i, faces);
97  }
98  navSurf.addVolume( this, myBounds, faces[i].surfaceSide());
99  delete myBounds; // since navSurf now owns a copy
100 
101 // this is tricky: we want to avoid multiple copies of the Bounds; the NavSurface owns
102 // a copy of Bounds for each touching Volume (instantiated in the call to addVolume).
103 // We would like to keep a pointer to the same Bounds in the NavVolume, so we have to ASK
104 // the NavSurface for the Bounds* of the Bounds we just gave it!
105  //LogDebug("NavGeometry") << "Adding a Volume Side with center " << navSurf.surface().position() << " side "<< faces[i].surfaceSide() << " and face " << faces[i].globalFace();
106  theNavSurfaces.push_back( SurfaceAndBounds(&navSurf, navSurf.bounds(this), faces[i].surfaceSide(), faces[i].globalFace()));
107  }
108 }
Container theNavSurfaces
const std::vector< VolumeSide > & faces() const override
Access to volume faces.
Definition: Plane.h:17
virtual const Bounds * bounds(const NavVolume *vol)=0
Bounds corresponding to a NavVolume if present.
virtual void addVolume(const NavVolume *vol, const Bounds *bounds, SurfaceOrientation::Side side)=0
NavVolumes are supposed to call this method to "register" with the NavSurface.
Definition: Bounds.h:22
void computeBounds(const std::vector< NavVolumeSide > &faces)
Bounds * NavVolume6Faces::computeBounds ( int  index,
const std::vector< const Plane * > &  bpc 
)
private

Definition at line 110 of file NavVolume6Faces.cc.

References TCMET_cfi::corner, gather_cfg::cout, ThreePlaneCrossing::crossing(), MillePedeFileConverter_cfg::e, mps_fire::i, Plane::localZ(), Plane::normalVector(), SurfaceOrientation::onSurface, GloballyPositioned< T >::position(), Plane::side(), and GloballyPositioned< T >::toLocal().

112 {
113  const Plane* plane( bpc[index]);
114 
115  // find the 4 intersecting planes
116  int startIndex = 2*(1+index/2); // 2, 4, 6
117  std::vector<const Plane*> crossed; crossed.reserve(4);
118  for (int j = startIndex; j < startIndex+4; j++) {
119  crossed.push_back(bpc[j%6]);
120  }
121 
122  // compute intersection corners of the plane triplets
123  std::vector<GlobalPoint> corners; corners.reserve(4);
124  ThreePlaneCrossing crossing;
125  for ( int i=0; i<2; i++) {
126  for ( int j=2; j<4; j++) {
127  GlobalPoint corner( crossing.crossing( *plane, *crossed[i], *crossed[j]));
128  corners.push_back(corner);
129 
130 #ifdef DEBUG
131  std::cout << "Crossing of planes is " << corner << std::endl;
132  std::cout << "NormalVectors of the planes are " << plane->normalVector()
133  << " " << crossed[i]->normalVector() << " " << crossed[j]->normalVector() << std::endl;
134  std::cout << "Positions of planes are " << plane->position()
135  << " " << crossed[i]->position() << " " << crossed[j]->position() << std::endl;
136  if (plane->side( corner, 1.e-5) == SurfaceOrientation::onSurface &&
137  crossed[i]->side( corner, 1.e-5) == SurfaceOrientation::onSurface &&
138  crossed[j]->side( corner, 1.e-5) == SurfaceOrientation::onSurface) {
139  std::cout << "Crossing is really on all three surfaces" << std::endl;
140  }
141  else {
142  std::cout << "CROSSING IS NOT ON SURFACES!!!" << std::endl;
143  std::cout << plane->localZ(corner) << std::endl;
144  std::cout << crossed[i]->localZ(corner) << std::endl;
145  std::cout << crossed[j]->localZ(corner) << std::endl;
146  }
147 #endif
148 
149  }
150  }
151 
152  // put corners in cyclic sequence (2 and 3 swapped)
153  return new FourPointPlaneBounds( plane->toLocal( corners[0]), plane->toLocal( corners[1]),
154  plane->toLocal( corners[3]), plane->toLocal( corners[2]));
155 }
Plane::GlobalPoint crossing(const Plane &a, const Plane &b, const Plane &c) const
Definition: Plane.h:17
Bounds * NavVolume6Faces::computeBounds ( int  index,
const std::vector< NavVolumeSide > &  faces 
)
private

Definition at line 157 of file NavVolume6Faces.cc.

References NavVolumeSide::surface(), NavSurface::surface(), and NavVolumeSide::surfaceSide().

158 {
159  typedef GeneralNSurfaceDelimitedBounds::SurfaceAndSide SurfaceAndSide;
160  typedef GeneralNSurfaceDelimitedBounds::SurfaceContainer SurfaceContainer;
161 
162  // find the 4 intersecting surfaces
163  int startIndex = 2*(1+index/2); // 2, 4, 6
164  SurfaceContainer crossed; crossed.reserve(4);
165  for (int j = startIndex; j < startIndex+4; j++) {
166  const NavVolumeSide& face(faces[j%6]);
167  crossed.push_back( SurfaceAndSide(&(face.surface().surface()), face.surfaceSide()));
168  }
169  return new GeneralNSurfaceDelimitedBounds( &(faces[index].surface().surface()), crossed);
170 }
const std::vector< VolumeSide > & faces() const override
Access to volume faces.
std::pair< const Surface *, SurfaceOrientation::Side > SurfaceAndSide
std::vector< SurfaceAndSide > SurfaceContainer
VolumeCrossReturnType NavVolume6Faces::crossToNextVolume ( const TrajectoryStateOnSurface currentState,
const Propagator prop 
) const
overridevirtual

Cross this volume and point at the next.

Implements NavVolume.

Definition at line 250 of file NavVolume6Faces.cc.

References alongMomentum, TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), LogDebug, nextSurface(), oppositeSide(), TrajectoryStateOnSurface::surface(), and GloballyPositioned< float >::toLocal().

251 {
253  typedef std::pair<TSOS,double> TSOSwithPath;
254 
255  NavVolume::Container nsc = nextSurface( toLocal( startingState.globalPosition()),
256  toLocal( startingState.globalMomentum()), -1,
257  alongMomentum, &(startingState.surface()));
258  int itry = 0;
259  VolumeCrossReturnType VolumeCrossResult( nullptr, startingState, 0.0);
260 
261  for (NavVolume::Container::const_iterator isur = nsc.begin(); isur!=nsc.end(); isur++) {
262 
263  LogDebug("NavGeometry") << "crossToNextVolume: trying Surface no. " << itry ;
264  TSOSwithPath state;
265 
266  try {
267  state = isur->surface().propagateWithPath( prop, startingState);
268  }
269  catch (MagVolumeOutsideValidity& except) {
270  LogDebug("NavGeometry") << "Ohoh... failed to stay inside magnetic field !! skip this surface " ;
271  ++itry;
272  continue;
273  }
274 
275  if (!state.first.isValid()) {
276  ++itry;
277  continue;
278  }
279 
280  LogDebug("NavGeometry") << "crossToNextVolume: reached Valid State at Surface no. " << itry ;
281  LogDebug("NavGeometry") << " --> local position of Valid state is " << state.first.localPosition() ;
282  LogDebug("NavGeometry") << " --> global position of Valid state is " << state.first.globalPosition() ;
283 
284  if (isur->bounds().inside(state.first.localPosition())) {
285  //LogDebug("NavGeometry") << "crossToNextVolume: Surface containing destination point found at try " << itry ;
286  // Found the exit surface !! Get pointer to next volume and save exit state:
287  //VolumeCrossResult.first = isur->surface().nextVolume(state.localPosition(),oppositeSide(isur->side()));
288  //VolumeCrossResult.second = state;
289  // exitSurface = &( isur->surface().surface() );
290  //if(VolumeCrossResult.path() < 0.01) {
291  // LogDebug("NavGeometry") << " Stuck at " << state.first.globalPosition() ;
292  //}
293  return VolumeCrossReturnType ( isur->surface().nextVolume(state.first.localPosition(), oppositeSide(isur->side())),
294  state.first, state.second );
295 
296  break;
297  }
298  else {
299  LogDebug("NavGeometry") << "crossToNextVolume: BUT not inside the Bounds !! " ;
300  ++itry;
301  }
302  }
303 
304  return VolumeCrossResult;
305 }
#define LogDebug(id)
Container nextSurface(const NavVolume::LocalPoint &pos, const NavVolume::LocalVector &mom, double charge, PropagationDirection propDir=alongMomentum) const override
Give a sorted list of possible surfaces to propagate to.
std::vector< SurfaceAndBounds > Container
Definition: NavVolume.h:27
LocalPoint toLocal(const GlobalPoint &gp) const
TrajectoryStateOnSurface TSOS
Definition: TestHits.cc:19
const std::vector<VolumeSide>& NavVolume6Faces::faces ( ) const
inlineoverridevirtual

Access to volume faces.

Implements MagVolume.

Definition at line 39 of file NavVolume6Faces.h.

References theFaces.

39 { return theFaces; }
std::vector< VolumeSide > theFaces
bool NavVolume6Faces::inside ( const GlobalPoint gp,
double  tolerance 
) const
overridevirtual

Implements MagVolume.

Definition at line 61 of file NavVolume6Faces.cc.

References mps_fire::i, SurfaceOrientation::onSurface, and theFaces.

Referenced by isIron().

62 {
63  // check if the point is on the correct side of all delimiting surfaces
64  for (std::vector<VolumeSide>::const_iterator i=theFaces.begin(); i!=theFaces.end(); i++) {
65  Surface::Side side = i->surface().side( gp, tolerance);
66  if ( side != i->surfaceSide() && side != SurfaceOrientation::onSurface) return false;
67  }
68  return true;
69 }
std::vector< VolumeSide > theFaces
bool NavVolume6Faces::isIron ( ) const
inlineoverridevirtual

Access to Iron/Air information:

Implements NavVolume.

Definition at line 42 of file NavVolume6Faces.h.

References runTauDisplay::gp, MagVolume::inside(), inside(), isThisIron, and RecoTauCleanerPlugins::tolerance.

42 { return isThisIron; }
NavVolume::Container NavVolume6Faces::nextSurface ( const NavVolume::LocalPoint pos,
const NavVolume::LocalVector mom,
double  charge,
PropagationDirection  propDir = alongMomentum 
) const
overridevirtual

Give a sorted list of possible surfaces to propagate to.

Implements NavVolume.

Definition at line 174 of file NavVolume6Faces.cc.

References alongMomentum, geometryDiff::epsilon, mps_fire::i, mps_fire::result, theNavSurfaces, and GloballyPositioned< float >::toGlobal().

Referenced by crossToNextVolume().

177 {
178  typedef std::map<double,SurfaceAndBounds> SortedContainer;
179 
180  GlobalPoint gpos( toGlobal(pos));
181  GlobalVector gmom( toGlobal(mom));
182  GlobalVector gdir = (propDir == alongMomentum ? gmom : -gmom);
183 
184  SortedContainer sortedSurfaces;
185  Container verycloseSurfaces; // reachable surface with dist < epsilon !!
186  Container unreachableSurfaces;
187 
188  double epsilon = 0.01; // should epsilon be hard-coded or a variable in NavVolume?
189 
190  for (Container::const_iterator i=theNavSurfaces.begin(); i!=theNavSurfaces.end(); i++) {
191  std::pair<bool,double> dist = i->surface().distanceAlongLine( gpos, gdir);
192  if (dist.first) {
193  if (dist.second > epsilon) sortedSurfaces[dist.second] = *i;
194  else verycloseSurfaces.push_back(*i);
195  }
196  else unreachableSurfaces.push_back(*i);
197  }
199  for (SortedContainer::const_iterator i=sortedSurfaces.begin(); i!=sortedSurfaces.end(); ++i) {
200  result.push_back(i->second);
201  }
202  result.insert( result.end(), unreachableSurfaces.begin(), unreachableSurfaces.end());
203  result.insert( result.end(), verycloseSurfaces.begin(), verycloseSurfaces.end());
204  return result;
205 }
Container theNavSurfaces
std::vector< SurfaceAndBounds > Container
Definition: NavVolume.h:27
GlobalPoint toGlobal(const LocalPoint &lp) const
NavVolume::Container NavVolume6Faces::nextSurface ( const NavVolume::LocalPoint pos,
const NavVolume::LocalVector mom,
double  charge,
PropagationDirection  propDir,
ConstReferenceCountingPointer< Surface NotThisSurfaceP 
) const
overridevirtual

Same, giving lowest priority to the surface we are on now (=NotThisSurface)

Implements NavVolume.

Definition at line 208 of file NavVolume6Faces.cc.

References alongMomentum, geometryDiff::epsilon, mps_fire::i, mps_fire::result, theNavSurfaces, and GloballyPositioned< float >::toGlobal().

212 {
213  typedef std::map<double,SurfaceAndBounds> SortedContainer;
214 
215  GlobalPoint gpos( toGlobal(pos));
216  GlobalVector gmom( toGlobal(mom));
217  GlobalVector gdir = (propDir == alongMomentum ? gmom : -gmom);
218 
219  SortedContainer sortedSurfaces;
220  Container verycloseSurfaces; // reachable surface with dist < epsilon (if 6-surface check fails)
221  Container unreachableSurfaces;
222 
223  double epsilon = 0.01; // should epsilon be hard-coded or a variable in NavVolume?
224  bool surfaceMatched = false;
225 
226  for (Container::const_iterator i=theNavSurfaces.begin(); i!=theNavSurfaces.end(); i++) {
227  if (&(i->surface().surface()) == NotThisSurfaceP) surfaceMatched = true;
228  }
229 
230  for (Container::const_iterator i=theNavSurfaces.begin(); i!=theNavSurfaces.end(); i++) {
231  std::pair<bool,double> dist = i->surface().distanceAlongLine( gpos, gdir);
232  if (dist.first) {
233  if ( &(i->surface().surface()) == NotThisSurfaceP || (!surfaceMatched && dist.second < epsilon))
234  verycloseSurfaces.push_back(*i);
235  else sortedSurfaces[dist.second] = *i;
236  }
237  else unreachableSurfaces.push_back(*i);
238  }
239 
241  for (SortedContainer::const_iterator i=sortedSurfaces.begin(); i!=sortedSurfaces.end(); ++i) {
242  result.push_back(i->second);
243  }
244  result.insert( result.end(), unreachableSurfaces.begin(), unreachableSurfaces.end());
245  result.insert( result.end(), verycloseSurfaces.begin(), verycloseSurfaces.end());
246  return result;
247 }
Container theNavSurfaces
std::vector< SurfaceAndBounds > Container
Definition: NavVolume.h:27
GlobalPoint toGlobal(const LocalPoint &lp) const

Member Data Documentation

bool NavVolume6Faces::isThisIron
private

Definition at line 51 of file NavVolume6Faces.h.

Referenced by isIron().

std::vector<VolumeSide> NavVolume6Faces::theFaces
private

Definition at line 49 of file NavVolume6Faces.h.

Referenced by faces(), inside(), and NavVolume6Faces().

Container NavVolume6Faces::theNavSurfaces
private

Definition at line 50 of file NavVolume6Faces.h.

Referenced by computeBounds(), and nextSurface().