ATLAS Offline Software
Loading...
Searching...
No Matches
ExtFace Class Reference

#include <BooleanProcessor.h>

Collaboration diagram for ExtFace:

Public Member Functions

 ExtFace (std::vector< ExtEdge > &a_edges, int iedge)
 ~ExtFace ()
 ExtFace (const ExtFace &face)
ExtFaceoperator= (const ExtFace &face)
void invert ()

Public Attributes

int iedges [4]
HVPlane3D plane
double rmin [3]
double rmax [3]
int iold
int inew
int iprev
int inext

Private Attributes

std::vector< ExtEdge > & m_edges

Detailed Description

Definition at line 204 of file BooleanProcessor.h.

Constructor & Destructor Documentation

◆ ExtFace() [1/2]

ExtFace::ExtFace ( std::vector< ExtEdge > & a_edges,
int iedge )
inline

Definition at line 218 of file BooleanProcessor.h.

219 : m_edges(a_edges), iold(iedge), inew(0), iprev(0), inext(0) {
220 //G.Barrand : initialize arrays to quiet valgrind.
221 {for (int i=0; i<4; i++) { iedges[i] = 0; }}
222 {for (int i=0; i<3; i++) { rmin[i] = 0; rmax[i] = 0; }}
223 }
double rmax[3]
double rmin[3]
std::vector< ExtEdge > & m_edges

◆ ~ExtFace()

ExtFace::~ExtFace ( )
inline

Definition at line 224 of file BooleanProcessor.h.

224{}

◆ ExtFace() [2/2]

ExtFace::ExtFace ( const ExtFace & face)
inline

Definition at line 226 of file BooleanProcessor.h.

226 :
227 m_edges(face.m_edges), //G.Barrand
228 plane(face.plane), iold(face.iold), inew(face.inew),
229 iprev(face.iprev), inext(face.inext)
230 {
231 int i;
232 for (i=0; i<4; i++) { iedges[i] = face.iedges[i]; }
233 for (i=0; i<3; i++) { rmin[i] = face.rmin[i]; rmax[i] = face.rmax[i]; }
234 }
HVPlane3D plane

Member Function Documentation

◆ invert()

void ExtFace::invert ( )
inline

Definition at line 410 of file BooleanProcessor.h.

419{
420 int iEprev, iEcur, iEnext;
421
422 iEprev = 0; iEcur = iold;
423 while (iEcur > 0) {
424 ExtEdge& edge = m_edges[iEcur]; //G.Barrand : optimize.
425 edge.invert();
426 iEnext = edge.inext;
427 edge.inext = iEprev;
428 iEprev = iEcur;
429 iEcur = iEnext;
430 }
431 if (iold > 0) iold = iEprev;
432
433 iEprev = 0; iEcur = inew;
434 while (iEcur > 0) {
435 ExtEdge& edge = m_edges[iEcur]; //G.Barrand : optimize.
436 edge.invert();
437 iEnext = edge.inext;
438 edge.inext = iEprev;
439 iEprev = iEcur;
440 iEcur = iEnext;
441 }
442 if (inew > 0) inew = iEprev;
443
444#ifdef BP_GEANT4 //G.Barrand
445 plane = HVPlane3D(-plane.a(), -plane.b(), -plane.c(), -plane.d());
446#else
448#endif
449}
#define ExtEdge
HEPVis::SbPlane HVPlane3D
const SbVec3d & getNormal() const
Definition SbPlane.cxx:77
double getDistanceFromOrigin() const
Definition SbPlane.cxx:78

◆ operator=()

ExtFace & ExtFace::operator= ( const ExtFace & face)
inline

Definition at line 236 of file BooleanProcessor.h.

236 {
237 if (&face == this) return *this;
238 //FIXME : edges(face.edges) ???? //G.Barrand
239 int i;
240 for (i=0; i<4; i++) { iedges[i] = face.iedges[i]; }
241 plane = face.plane;
242 for (i=0; i<3; i++) { rmin[i] = face.rmin[i]; rmax[i] = face.rmax[i]; }
243 iold = face.iold;
244 inew = face.inew;
245 iprev = face.iprev;
246 inext = face.inext;
247 return *this;
248 }

Member Data Documentation

◆ iedges

int ExtFace::iedges[4]

Definition at line 208 of file BooleanProcessor.h.

◆ inew

int ExtFace::inew

Definition at line 212 of file BooleanProcessor.h.

◆ inext

int ExtFace::inext

Definition at line 214 of file BooleanProcessor.h.

◆ iold

int ExtFace::iold

Definition at line 211 of file BooleanProcessor.h.

◆ iprev

int ExtFace::iprev

Definition at line 213 of file BooleanProcessor.h.

◆ m_edges

std::vector<ExtEdge>& ExtFace::m_edges
private

Definition at line 206 of file BooleanProcessor.h.

◆ plane

HVPlane3D ExtFace::plane

Definition at line 209 of file BooleanProcessor.h.

◆ rmax

double ExtFace::rmax[3]

Definition at line 210 of file BooleanProcessor.h.

◆ rmin

double ExtFace::rmin[3]

Definition at line 210 of file BooleanProcessor.h.


The documentation for this class was generated from the following file: