CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
NavVolume6Faces Class Reference

#include <NavVolume6Faces.h>

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

Public Member Functions

virtual VolumeCrossReturnType crossToNextVolume (const TrajectoryStateOnSurface &currentState, const Propagator &prop) const
 Cross this volume and point at the next. More...
 
virtual const std::vector
< VolumeSide > & 
faces () const
 Access to volume faces. More...
 
bool inside (const GlobalPoint &gp, double tolerance) const
 
bool isIron () const
 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...
 
virtual Container nextSurface (const NavVolume::LocalPoint &pos, const NavVolume::LocalVector &mom, double charge, PropagationDirection propDir=alongMomentum) const
 Give a sorted list of possible surfaces to propagate to. More...
 
virtual Container nextSurface (const NavVolume::LocalPoint &pos, const NavVolume::LocalVector &mom, double charge, PropagationDirection propDir, ConstReferenceCountingPointer< Surface > NotThisSurfaceP) const
 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)
 
virtual ~NavVolume ()
 
- 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
 
virtual ::GlobalVector inTesla (const ::GlobalPoint &gp) const
 
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
 
virtual ~MagVolume ()
 
- Public Member Functions inherited from GloballyPositioned< float >
float eta () const
 
 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 &gp) const
 True if the point is within the region where the concrete field. More...
 
 MagneticField ()
 
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
< SurfaceAndBounds
Container
 
- 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,
GlobalTag
GlobalPoint
 
typedef Vector3DBase< float,
GlobalTag
GlobalVector
 
typedef Point3DBase< float,
LocalTag
LocalPoint
 
typedef Vector3DBase< float,
LocalTag
LocalVector
 
typedef Point3DBase< float,
GlobalTag
PositionType
 
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(), 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 }
int i
Definition: DBlmapReader.cc:9
NavVolume(const PositionType &pos, const RotationType &rot, DDSolidShape shape, const MagneticFieldProvider< float > *mfp)
Definition: NavVolume.h:20
virtual const std::vector< VolumeSide > & faces() const
Access to volume faces.
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 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 }
int i
Definition: DBlmapReader.cc:9
DDSolidShape shapeType() const
Definition: MagVolume.h:31
helper: builde a NavSurface for a Surface
bool isIron() const
Access to Iron/Air information:
NavVolume(const PositionType &pos, const RotationType &rot, DDSolidShape shape, const MagneticFieldProvider< float > *mfp)
Definition: NavVolume.h:20
const MagneticFieldProvider< float > * provider() const
Definition: MagVolume.h:41
virtual const std::vector< VolumeSide > & faces() const =0
Access to volume faces.
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(), 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 != 0) {
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 = 0;
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 }
int i
Definition: DBlmapReader.cc:9
Container theNavSurfaces
Definition: Plane.h:17
virtual const std::vector< VolumeSide > & faces() const
Access to volume faces.
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 &quot;register&quot; with the NavSurface.
Definition: Bounds.h:18
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 gather_cfg::cout, ThreePlaneCrossing::crossing(), alignCSCRings::e, i, j, 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 }
int i
Definition: DBlmapReader.cc:9
Plane::GlobalPoint crossing(const Plane &a, const Plane &b, const Plane &c) const
Definition: Plane.h:17
int j
Definition: DBlmapReader.cc:9
tuple cout
Definition: gather_cfg.py:121
Bounds * NavVolume6Faces::computeBounds ( int  index,
const std::vector< NavVolumeSide > &  faces 
)
private

Definition at line 157 of file NavVolume6Faces.cc.

References j, NavSurface::surface(), NavVolumeSide::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 }
std::pair< const Surface *, SurfaceOrientation::Side > SurfaceAndSide
int j
Definition: DBlmapReader.cc:9
std::vector< SurfaceAndSide > SurfaceContainer
virtual const std::vector< VolumeSide > & faces() const
Access to volume faces.
VolumeCrossReturnType NavVolume6Faces::crossToNextVolume ( const TrajectoryStateOnSurface currentState,
const Propagator prop 
) const
virtual

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(), evf::utils::state, 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( 0, 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)
virtual Container nextSurface(const NavVolume::LocalPoint &pos, const NavVolume::LocalVector &mom, double charge, PropagationDirection propDir=alongMomentum) const
Give a sorted list of possible surfaces to propagate to.
std::vector< SurfaceAndBounds > Container
Definition: NavVolume.h:24
LocalPoint toLocal(const GlobalPoint &gp) const
TrajectoryStateOnSurface TSOS
Definition: TestHits.cc:23
char state
Definition: procUtils.cc:75
virtual const std::vector<VolumeSide>& NavVolume6Faces::faces ( ) const
inlinevirtual

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
virtual

Implements MagVolume.

Definition at line 61 of file NavVolume6Faces.cc.

References i, SurfaceOrientation::onSurface, and theFaces.

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 }
int i
Definition: DBlmapReader.cc:9
std::vector< VolumeSide > theFaces
bool NavVolume6Faces::isIron ( ) const
inlinevirtual

Access to Iron/Air information:

Implements NavVolume.

Definition at line 42 of file NavVolume6Faces.h.

References isThisIron.

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

Give a sorted list of possible surfaces to propagate to.

Implements NavVolume.

Definition at line 174 of file NavVolume6Faces.cc.

References alongMomentum, epsilon, i, query::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 }
int i
Definition: DBlmapReader.cc:9
Container theNavSurfaces
std::vector< SurfaceAndBounds > Container
Definition: NavVolume.h:24
tuple result
Definition: query.py:137
GlobalPoint toGlobal(const LocalPoint &lp) const
const double epsilon
NavVolume::Container NavVolume6Faces::nextSurface ( const NavVolume::LocalPoint pos,
const NavVolume::LocalVector mom,
double  charge,
PropagationDirection  propDir,
ConstReferenceCountingPointer< Surface NotThisSurfaceP 
) const
virtual

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

Implements NavVolume.

Definition at line 208 of file NavVolume6Faces.cc.

References alongMomentum, epsilon, i, query::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 }
int i
Definition: DBlmapReader.cc:9
Container theNavSurfaces
std::vector< SurfaceAndBounds > Container
Definition: NavVolume.h:24
tuple result
Definition: query.py:137
GlobalPoint toGlobal(const LocalPoint &lp) const
const double epsilon

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().