ATLAS Offline Software
Public Types | Public Member Functions | Public Attributes | List of all members
SbPolyhedronPolygonXSect::Internals Class Reference
Collaboration diagram for SbPolyhedronPolygonXSect::Internals:

Public Types

typedef std::pair< int, int > Edge
 
typedef PolygonTriangulator::Triangle Triangle
 
typedef PolygonTriangulator::Triangles Triangles
 

Public Member Functions

 Internals (SbPolyhedronPolygonXSect *sbp)
 
 ~Internals ()
 
void setData (const std::vector< double > *xx, const std::vector< double > *yy, const double &dz)
 
void triangulate ()
 
void initEdgeClassificationsAndNeighbours ()
 
void addExtraVertices ()
 
void allocateMemoryAndDefineVertexCoordinates ()
 
void defineFacesTopology ()
 
bool isinternaledge (const Edge &edge, const std::map< Edge, std::vector< Triangles::const_iterator > > &edge2triangles_map) const
 
Edge GetEdge (const Triangle *tr, const unsigned &i, const bool &oriented=false) const
 
void setupface (const unsigned &face_id, const std::vector< unsigned > &v) const
 
void setupExternalFace (const unsigned &id_extedge, const unsigned &prev_edgeface, const unsigned &next_edgeface, const unsigned &idfirstvertex, const unsigned &idsecondvertex, const unsigned &id_triangleface, const unsigned &n, std::vector< unsigned > &faceinfo) const
 
void getSurroundingValues (const std::vector< unsigned > &numbercycle, const unsigned &centralValue, unsigned &prevValue, unsigned &nextValue) const
 
unsigned top2bottomvertexid (const unsigned &topid) const
 
unsigned top2bottomfaceid (const unsigned &topid) const
 

Public Attributes

double dz
 
const std::vector< double > * x
 
const std::vector< double > * y
 
unsigned n
 
unsigned ntriangles
 
SbPolyhedronPolygonXSectsbpolyhedron
 
PolygonTriangulatorpoly
 
std::set< Edgeedges_internal
 
std::set< Edgeedges_external
 
std::map< Edge, const Triangle * > neighbourmap
 
std::set< Edgeedges_with_extra_vertex
 
unsigned nextraexternalvertices
 
unsigned nextrainternalvertices
 
std::map< Edge, unsigned > edgewithextravertex_2_id
 
std::map< Edge, unsigned > externaledgewithextravertex_2_2ndedgeid
 

Detailed Description

Definition at line 1906 of file SbPolyhedron.cxx.

Member Typedef Documentation

◆ Edge

typedef std::pair<int,int> SbPolyhedronPolygonXSect::Internals::Edge

Definition at line 1909 of file SbPolyhedron.cxx.

◆ Triangle

Definition at line 1910 of file SbPolyhedron.cxx.

◆ Triangles

Definition at line 1911 of file SbPolyhedron.cxx.

Constructor & Destructor Documentation

◆ Internals()

SbPolyhedronPolygonXSect::Internals::Internals ( SbPolyhedronPolygonXSect sbp)
inline

Definition at line 1914 of file SbPolyhedron.cxx.

1914  :dz(0),x(0),y(0),n(0),ntriangles(0),sbpolyhedron(sbp),poly(0),

◆ ~Internals()

SbPolyhedronPolygonXSect::Internals::~Internals ( )
inline

Definition at line 1917 of file SbPolyhedron.cxx.

1917 { delete poly; }

Member Function Documentation

◆ addExtraVertices()

void SbPolyhedronPolygonXSect::Internals::addExtraVertices ( )

Definition at line 2051 of file SbPolyhedron.cxx.

2051  {
2052 
2062 
2063  std::set<const Triangle*> triangles_with_extra_vertex;//Eventually, all triangles should end up here.
2064 
2066  Triangles::const_iterator itt=poly->triangles()->begin();
2067  Triangles::const_iterator ittE=poly->triangles()->end();
2068  for(; itt!=ittE; ++itt) {
2069  unsigned ninternaledges(0);
2070  for (unsigned iedge=0;iedge<3;++iedge) {
2071  Edge eun = GetEdge(&(*itt),iedge,false/*unoriented!*/);
2072  if (edges_internal.find(eun)!=edges_internal.end())
2073  ++ninternaledges;
2074  }
2075  if (ninternaledges<3)
2076  continue;
2077 
2078 
2079  //Check the three edges to find a neighbour that has not already become a quadrilateral.
2080  unsigned iedge(0);
2081  for (;iedge<3;++iedge) {
2082  Edge e = GetEdge(&(*itt),iedge,true/*oriented!*/);
2083  const Triangle* trneighbour = neighbourmap[e];
2084  assert(trneighbour);//fixme
2085  if (triangles_with_extra_vertex.insert(trneighbour).second) {
2086  triangles_with_extra_vertex.insert(&(*itt));
2087  Edge eun = GetEdge(&(*itt),iedge,false/*unoriented*/);
2088  edges_with_extra_vertex.insert(eun);
2090  break;
2091  }
2092  }
2093  assert(iedge<3);//If we cannot add a vertex to a triangle with 3 internal edges, then we have a problem...
2094  }
2095 
2097  itt=poly->triangles()->begin();
2098  for(; itt!=ittE; ++itt) {
2099  Triangle* triangle = const_cast<Triangle*>( &(*itt) );
2100  if (triangles_with_extra_vertex.find(triangle)!=triangles_with_extra_vertex.end())
2101  continue;
2102  for (unsigned iedge=0;iedge<3;++iedge) {
2103  Edge eun = GetEdge(&(*itt),iedge,false/*unoriented!*/);
2104  //only look at external edges
2105  if (edges_external.find(eun)==edges_external.end())
2106  continue;
2107  assert(edges_with_extra_vertex.find(eun)==edges_with_extra_vertex.end());//fixme
2108  triangles_with_extra_vertex.insert(triangle);
2109  edges_with_extra_vertex.insert(eun);
2111  break;
2112  }
2113  }
2114  assert(ntriangles==triangles_with_extra_vertex.size());
2115 }

◆ allocateMemoryAndDefineVertexCoordinates()

void SbPolyhedronPolygonXSect::Internals::allocateMemoryAndDefineVertexCoordinates ( )

Definition at line 2118 of file SbPolyhedron.cxx.

2118  {
2119 
2120  const unsigned nfaces = 2*ntriangles+n+nextraexternalvertices;
2121  const unsigned nvertices = 2*(n+nextraexternalvertices+nextrainternalvertices);
2122  sbpolyhedron->AllocateMemory(nvertices,nfaces);
2123 
2125 
2126  //Make edgewithextravertex_2_id map.
2127  std::set<Edge>::const_iterator itl = edges_with_extra_vertex.begin();
2128  std::set<Edge>::const_iterator itlE = edges_with_extra_vertex.end();
2129  unsigned il = 2*n;
2130  unsigned ielev = 3*n-4;
2131  for (;itl!=itlE;++itl) {
2132  edgewithextravertex_2_id[*itl]=++il;
2133  if (edges_external.find(*itl)!=edges_external.end()) {
2135  }
2136  }
2137  //Now place the vertices:
2138 
2139  //First the original n vertices at +dz
2140  for (unsigned i = 0; i<n; ++i)
2141  sbpolyhedron->m_pV[i+1] = HVPoint3D(x->at(i),y->at(i),dz);
2142  //Then the original n vertices at -dz
2143  for (unsigned i = 0; i<n; ++i)
2144  sbpolyhedron->m_pV[i+1+n] = HVPoint3D(x->at(i),y->at(i),-dz);
2145  //Extra vertices at +dz.
2146  std::map<Edge,unsigned>::const_iterator itlid = edgewithextravertex_2_id.begin();
2147  std::map<Edge,unsigned>::const_iterator itlidE = edgewithextravertex_2_id.end();
2148  for (; itlid!=itlidE; ++itlid) {
2149  double xx = 0.5*(x->at(itlid->first.first-1)+x->at(itlid->first.second-1));
2150  double yy = 0.5*(y->at(itlid->first.first-1)+y->at(itlid->first.second-1));
2151  sbpolyhedron->m_pV[itlid->second] = HVPoint3D(xx,yy,dz);
2152  }
2153  //Extra vertices at -dz.
2154  itlid = edgewithextravertex_2_id.begin();
2155  for (; itlid!=itlidE; ++itlid) {
2156  double xx = 0.5*(x->at(itlid->first.first-1)+x->at(itlid->first.second-1));
2157  double yy = 0.5*(y->at(itlid->first.first-1)+y->at(itlid->first.second-1));
2158  sbpolyhedron->m_pV[itlid->second+edgewithextravertex_2_id.size()] = HVPoint3D(xx,yy,-dz);
2159  }
2160 
2161 }

◆ defineFacesTopology()

void SbPolyhedronPolygonXSect::Internals::defineFacesTopology ( )

Definition at line 2243 of file SbPolyhedron.cxx.

2243  {
2244  //This is definitely the most tricky part to get right...
2245 
2246  //Make triangle_2_id map.
2247  std::map<const Triangle*,unsigned> triangle_2_id;
2248  Triangles::const_iterator itt=poly->triangles()->begin();
2249  Triangles::const_iterator ittE=poly->triangles()->end();
2250  unsigned itri = 0;
2251  for(; itt!=ittE; ++itt) {
2252  Triangle* triangle = const_cast<Triangle*>( &(*itt) );
2253  triangle_2_id[triangle]=++itri;
2254  }
2255  assert(triangle_2_id.size()==ntriangles);
2256 
2257  //Loop over the external edges, and get a list of edge face id's.
2258  std::vector<unsigned> edgeface_ids;
2259  std::map<Edge,unsigned> edge_2_firstid;
2260  std::map<Edge,unsigned> edge_2_secondid;
2261  for (unsigned i = 1; i<=n;++i) {
2262  Edge eun((i==n?1:i),(i==n?n:i+1));
2263  edgeface_ids.push_back(2*n-4+i);
2264  edge_2_firstid[eun]=edgeface_ids.back();
2265  bool hasextravertex=
2267  if (hasextravertex) {
2268  edgeface_ids.push_back(externaledgewithextravertex_2_2ndedgeid[eun]);
2269  edge_2_secondid[eun]=edgeface_ids.back();
2270  }
2271  }
2272 
2273  std::vector<unsigned> faceinfo_top, faceinfo_bottom(8), faceinfo_sides;
2274  itt = poly->triangles()->begin();
2275  for(; itt!=ittE; ++itt) {
2276  unsigned triangleid = triangle_2_id[&(*itt)];
2277 
2279  for (unsigned iedge=0;iedge<3;++iedge) {
2280  Edge e = GetEdge(&(*itt),iedge,true/*oriented!*/);
2281  Edge eun = GetEdge(&(*itt),iedge,false/*unoriented!*/);
2282 
2283  bool hasextravertex(edges_with_extra_vertex.find(eun)!=edges_with_extra_vertex.end());
2284  bool isinternal(edges_external.find(eun)==edges_external.end());
2285  //add for the triangle.
2286  faceinfo_top.push_back(e.first);
2287  if (isinternal) {
2288  assert(neighbourmap[e]);//fixme
2289  assert(triangle_2_id.find(neighbourmap[e])!=triangle_2_id.end());
2290  faceinfo_top.push_back(triangle_2_id[neighbourmap[e]]);
2291  if (hasextravertex) {
2292  faceinfo_top.push_back(edgewithextravertex_2_id[eun]);
2293  faceinfo_top.push_back(triangle_2_id[neighbourmap[e]]);//NB: Same neighbourface again!
2294  // assert(false&&"need to implement extravertex for internal edges");
2295  //fixme!
2296  }
2297  } else {
2298  assert(edge_2_firstid.find(eun)!=edge_2_firstid.end());
2299  unsigned firstsideid = edge_2_firstid[eun];
2300  faceinfo_top.push_back(firstsideid);
2301  if (hasextravertex) {
2302  faceinfo_top.push_back(edgewithextravertex_2_id[eun]);
2303  assert(edge_2_secondid.find(eun)!=edge_2_secondid.end());
2304  faceinfo_top.push_back(edge_2_secondid[eun]);
2305  }
2307  unsigned prev_edgeface,next_edgeface;
2308  getSurroundingValues(edgeface_ids, firstsideid,prev_edgeface, next_edgeface);
2309  unsigned firstvertexid = e.first;
2310  unsigned secondvertexid = (hasextravertex? edgewithextravertex_2_id[eun] : e.second);
2311  setupExternalFace(firstsideid,prev_edgeface, next_edgeface,firstvertexid,secondvertexid,
2312  /*firstvertexid+n,secondvertexid + (hasextravertex?externaledgewithextravertex_2_2ndedgeid.size():n),*/
2313  triangleid,n,faceinfo_sides);
2314  if (hasextravertex) {
2315  firstsideid=next_edgeface;
2316  getSurroundingValues(edgeface_ids, firstsideid,prev_edgeface, next_edgeface);
2317  firstvertexid=secondvertexid;
2318  secondvertexid=e.second;
2319  setupExternalFace(firstsideid,prev_edgeface, next_edgeface,
2320  edgewithextravertex_2_id[eun],secondvertexid,
2321  /*edgewithextravertex_2_id[eun]+externaledgewithextravertex_2_2ndedgeid.size(),secondvertexid+n,*/
2322  triangleid,n,faceinfo_sides);
2323  }
2324 
2325  }
2326  }//End edge loop
2327 
2329  assert(faceinfo_bottom.size()==8);//fixme
2330  assert(faceinfo_top.size()==8);//fixme
2331  faceinfo_bottom[0]=top2bottomvertexid(faceinfo_top[0]);
2332  faceinfo_bottom[1]=top2bottomfaceid(faceinfo_top[7]);
2333  faceinfo_bottom[2]=top2bottomvertexid(faceinfo_top[6]);
2334  faceinfo_bottom[3]=top2bottomfaceid(faceinfo_top[5]);
2335  faceinfo_bottom[4]=top2bottomvertexid(faceinfo_top[4]);
2336  faceinfo_bottom[5]=top2bottomfaceid(faceinfo_top[3]);
2337  faceinfo_bottom[6]=top2bottomvertexid(faceinfo_top[2]);
2338  faceinfo_bottom[7]=top2bottomfaceid(faceinfo_top[1]);
2339 
2340  //Actually setup triangle faces.
2341  setupface(triangleid,faceinfo_top);
2342  setupface(triangleid+ntriangles,faceinfo_bottom);
2343  faceinfo_top.clear();
2344  }//End triangle loop
2345 
2346 }

◆ GetEdge()

SbPolyhedronPolygonXSect::Internals::Edge SbPolyhedronPolygonXSect::Internals::GetEdge ( const Triangle tr,
const unsigned &  i,
const bool &  oriented = false 
) const

Definition at line 2178 of file SbPolyhedron.cxx.

2178  {
2179  assert(i<=2);
2180  if (i==2)
2181  return oriented ? Edge((*tr)[2],(*tr)[0]) : Edge((*tr)[0],(*tr)[2]);
2182  else
2183  return Edge((*tr)[i],(*tr)[i+1]);
2184 }

◆ getSurroundingValues()

void SbPolyhedronPolygonXSect::Internals::getSurroundingValues ( const std::vector< unsigned > &  numbercycle,
const unsigned &  centralValue,
unsigned &  prevValue,
unsigned &  nextValue 
) const

Definition at line 2211 of file SbPolyhedron.cxx.

2213 {
2214  //First, find the index of the centralValue
2215  unsigned int i;
2216  for ( i=0/*fixme, not O(n)*/;i<numbercycle.size();++i)
2217  if (numbercycle.at(i)==centralValue)
2218  break;
2219  //Sanity check that the central value was found
2220  assert(i<numbercycle.size());//fixme
2221  prevValue = ( i==0 ? numbercycle.back() : numbercycle.at(i-1) );
2222  nextValue = ( i==numbercycle.size()-1 ? numbercycle.front() : numbercycle.at(i+1) );
2223 
2224 }

◆ initEdgeClassificationsAndNeighbours()

void SbPolyhedronPolygonXSect::Internals::initEdgeClassificationsAndNeighbours ( )

Definition at line 2000 of file SbPolyhedron.cxx.

2000  {
2001  //Goal: classify edges as external/internal, get ability to find neighbours.
2002 
2003  //As a help, we create a map of edges->triangles. We define an edge
2004  //as a pair of int's, where the first should always be lower than
2005  //the second (otherwise the edges 2-4 and 4-2 would seem different):
2006  std::map<Edge,std::vector<PolygonTriangulator::Triangles::const_iterator> > edge2triangles_map;
2007  std::set<Edge> alledges;
2008  Triangles::const_iterator itt=poly->triangles()->begin();
2009  Triangles::const_iterator ittE=poly->triangles()->end();
2010  for(; itt!=ittE; ++itt)
2011  for (unsigned iedge=0;iedge<3;++iedge) {
2012  Edge eun = GetEdge(&(*itt),iedge,false/*unoriented!*/);
2013  if (edge2triangles_map.find(eun)==edge2triangles_map.end()) {
2014  alledges.insert(eun);
2015  }
2016  edge2triangles_map[eun].push_back(itt);
2017  }
2018 
2019 
2020  //set of external/internal edges:
2021  std::set<Edge>::const_iterator itedges = alledges.begin();
2022  std::set<Edge>::const_iterator itedgesE = alledges.end();
2023  for (;itedges!=itedgesE;++itedges) {
2024  if (isinternaledge((*itedges),edge2triangles_map))
2025  edges_internal.insert(*itedges);
2026  else
2027  edges_external.insert(*itedges);
2028  }
2029 
2030  //Neighbourmap:
2031  itt=poly->triangles()->begin();
2032  for(; itt!=ittE; ++itt)
2033  for (unsigned iedge=0;iedge<3;++iedge) {
2034  Edge e = GetEdge(&(*itt),iedge,true/*oriented!*/);
2035  Edge eun = GetEdge(&(*itt),iedge,false/*unoriented!*/);
2036  assert(edge2triangles_map.find(eun)!=edge2triangles_map.end());//fixme
2037  if (edges_external.find(eun)!=edges_external.end()) {
2038  neighbourmap[e]=0;
2039  neighbourmap[eun]=0;
2040  } else {
2041  assert(edge2triangles_map[eun].size()==2);//fixme
2042  const Triangle* triangle = static_cast<const Triangle*>( &(*itt) );
2043  const Triangle* triangle1 = static_cast<const Triangle*>( &(*(edge2triangles_map[eun].front())) );
2044  const Triangle* triangle2 = static_cast<const Triangle*>( &(*(edge2triangles_map[eun].back())) );
2045  neighbourmap[e]=(triangle==triangle1?triangle2:triangle1);
2046  }
2047  }
2048 }

◆ isinternaledge()

bool SbPolyhedronPolygonXSect::Internals::isinternaledge ( const Edge edge,
const std::map< Edge, std::vector< Triangles::const_iterator > > &  edge2triangles_map 
) const

Definition at line 2164 of file SbPolyhedron.cxx.

2165  {
2166 
2167  Edge reverse_edge(edge.second,edge.first);
2168  unsigned k = 0;
2169  std::map<Edge,std::vector<Triangles::const_iterator> >::const_iterator it = edge2triangles_map.find(edge);
2170  if (it!=edge2triangles_map.end()) k += it->second.size();
2171  it = edge2triangles_map.find(reverse_edge);
2172  if (it!=edge2triangles_map.end()) k += it->second.size();
2173  return k==2;
2174 
2175 }

◆ setData()

void SbPolyhedronPolygonXSect::Internals::setData ( const std::vector< double > *  xx,
const std::vector< double > *  yy,
const double &  dz 
)

Definition at line 1982 of file SbPolyhedron.cxx.

1983 {
1984  n = xx->size();
1985  ntriangles = n-2;
1986  assert (n==yy->size()&&n>2);//fixme n>2, and special code for n==3.
1987  dz = the_dz;
1988  x = xx;
1989  y = yy;
1991 }

◆ setupExternalFace()

void SbPolyhedronPolygonXSect::Internals::setupExternalFace ( const unsigned &  id_extedge,
const unsigned &  prev_edgeface,
const unsigned &  next_edgeface,
const unsigned &  idfirstvertex,
const unsigned &  idsecondvertex,
const unsigned &  id_triangleface,
const unsigned &  n,
std::vector< unsigned > &  faceinfo 
) const

Definition at line 2194 of file SbPolyhedron.cxx.

2196  {
2197  faceinfo.clear();
2198  faceinfo.push_back(idfirstvertex);//point
2199  faceinfo.push_back(prev_edgeface);//neighbour face
2200  faceinfo.push_back(top2bottomvertexid(idfirstvertex));//point
2201  faceinfo.push_back(id_triangleface+n-2);//neighbour face
2202  faceinfo.push_back(top2bottomvertexid(idsecondvertex));//point
2203  faceinfo.push_back(next_edgeface);//neighbour face
2204  faceinfo.push_back(idsecondvertex);//point
2205  faceinfo.push_back(id_triangleface);//neighbour face
2206  setupface(id_extedge,faceinfo);
2207 }

◆ setupface()

void SbPolyhedronPolygonXSect::Internals::setupface ( const unsigned &  face_id,
const std::vector< unsigned > &  v 
) const

Definition at line 2187 of file SbPolyhedron.cxx.

2187  {
2188  assert(v.size()==8);
2189  sbpolyhedron->m_pF[face_id] = SbFacet(v.at(0),v.at(1),v.at(2),v.at(3),v.at(4),v.at(5),v.at(6),v.at(7));
2190 }

◆ top2bottomfaceid()

unsigned SbPolyhedronPolygonXSect::Internals::top2bottomfaceid ( const unsigned &  topid) const

Definition at line 2235 of file SbPolyhedron.cxx.

2235  {
2236  if (topid<=ntriangles)
2237  return topid+ntriangles;//triangle
2238  return topid;//side face
2239 }

◆ top2bottomvertexid()

unsigned SbPolyhedronPolygonXSect::Internals::top2bottomvertexid ( const unsigned &  topid) const

Definition at line 2228 of file SbPolyhedron.cxx.

2228  {
2229  if (topid<=n)
2230  return topid+n;//original vertex
2231  return topid+nextraexternalvertices+nextrainternalvertices;//added extra vertex;
2232 }

◆ triangulate()

void SbPolyhedronPolygonXSect::Internals::triangulate ( )

Definition at line 1994 of file SbPolyhedron.cxx.

1995 {
1996  poly = new PolygonTriangulator(*x,*y);
1997 }

Member Data Documentation

◆ dz

double SbPolyhedronPolygonXSect::Internals::dz

Definition at line 1926 of file SbPolyhedron.cxx.

◆ edges_external

std::set<Edge> SbPolyhedronPolygonXSect::Internals::edges_external

Definition at line 1937 of file SbPolyhedron.cxx.

◆ edges_internal

std::set<Edge> SbPolyhedronPolygonXSect::Internals::edges_internal

Definition at line 1936 of file SbPolyhedron.cxx.

◆ edges_with_extra_vertex

std::set<Edge> SbPolyhedronPolygonXSect::Internals::edges_with_extra_vertex

Definition at line 1939 of file SbPolyhedron.cxx.

◆ edgewithextravertex_2_id

std::map<Edge,unsigned> SbPolyhedronPolygonXSect::Internals::edgewithextravertex_2_id

Definition at line 1942 of file SbPolyhedron.cxx.

◆ externaledgewithextravertex_2_2ndedgeid

std::map<Edge,unsigned> SbPolyhedronPolygonXSect::Internals::externaledgewithextravertex_2_2ndedgeid

Definition at line 1943 of file SbPolyhedron.cxx.

◆ n

unsigned SbPolyhedronPolygonXSect::Internals::n

Definition at line 1929 of file SbPolyhedron.cxx.

◆ neighbourmap

std::map<Edge,const Triangle*> SbPolyhedronPolygonXSect::Internals::neighbourmap

Definition at line 1938 of file SbPolyhedron.cxx.

◆ nextraexternalvertices

unsigned SbPolyhedronPolygonXSect::Internals::nextraexternalvertices

Definition at line 1940 of file SbPolyhedron.cxx.

◆ nextrainternalvertices

unsigned SbPolyhedronPolygonXSect::Internals::nextrainternalvertices

Definition at line 1941 of file SbPolyhedron.cxx.

◆ ntriangles

unsigned SbPolyhedronPolygonXSect::Internals::ntriangles

Definition at line 1930 of file SbPolyhedron.cxx.

◆ poly

PolygonTriangulator* SbPolyhedronPolygonXSect::Internals::poly

Definition at line 1934 of file SbPolyhedron.cxx.

◆ sbpolyhedron

SbPolyhedronPolygonXSect* SbPolyhedronPolygonXSect::Internals::sbpolyhedron

Definition at line 1931 of file SbPolyhedron.cxx.

◆ x

const std::vector<double>* SbPolyhedronPolygonXSect::Internals::x

Definition at line 1927 of file SbPolyhedron.cxx.

◆ y

const std::vector<double>* SbPolyhedronPolygonXSect::Internals::y

Definition at line 1928 of file SbPolyhedron.cxx.


The documentation for this class was generated from the following file:
SbPolyhedron::m_pF
SbFacet * m_pF
Definition: SbPolyhedron.h:240
PlotCalibFromCool.il
il
Definition: PlotCalibFromCool.py:381
SbPolyhedronPolygonXSect::Internals::externaledgewithextravertex_2_2ndedgeid
std::map< Edge, unsigned > externaledgewithextravertex_2_2ndedgeid
Definition: SbPolyhedron.cxx:1943
PlotCalibFromCool.yy
yy
Definition: PlotCalibFromCool.py:714
SbPolyhedronPolygonXSect::Internals::GetEdge
Edge GetEdge(const Triangle *tr, const unsigned &i, const bool &oriented=false) const
Definition: SbPolyhedron.cxx:2178
PolygonTriangulator::triangles
const Triangles * triangles() const
Definition: PolygonTriangulator.cxx:2081
skel.it
it
Definition: skel.GENtoEVGEN.py:423
SbPolyhedronPolygonXSect::Internals::sbpolyhedron
SbPolyhedronPolygonXSect * sbpolyhedron
Definition: SbPolyhedron.cxx:1931
SbPolyhedronPolygonXSect::Internals::neighbourmap
std::map< Edge, const Triangle * > neighbourmap
Definition: SbPolyhedron.cxx:1938
SbPolyhedronPolygonXSect::Internals::dz
double dz
Definition: SbPolyhedron.cxx:1926
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
SbPolyhedronPolygonXSect::Internals::top2bottomfaceid
unsigned top2bottomfaceid(const unsigned &topid) const
Definition: SbPolyhedron.cxx:2235
SbPolyhedronPolygonXSect::Internals::Triangle
PolygonTriangulator::Triangle Triangle
Definition: SbPolyhedron.cxx:1910
lumiFormat.i
int i
Definition: lumiFormat.py:92
SbPolyhedronPolygonXSect::Internals::nextraexternalvertices
unsigned nextraexternalvertices
Definition: SbPolyhedron.cxx:1940
SbPolyhedron::AllocateMemory
void AllocateMemory(int Nvert, int Nface)
Definition: SbPolyhedron.cxx:267
SbPolyhedronPolygonXSect::Internals::setupExternalFace
void setupExternalFace(const unsigned &id_extedge, const unsigned &prev_edgeface, const unsigned &next_edgeface, const unsigned &idfirstvertex, const unsigned &idsecondvertex, const unsigned &id_triangleface, const unsigned &n, std::vector< unsigned > &faceinfo) const
Definition: SbPolyhedron.cxx:2194
SbPolyhedronPolygonXSect::Internals::Edge
std::pair< int, int > Edge
Definition: SbPolyhedron.cxx:1909
SbPolyhedronPolygonXSect::Internals::nextrainternalvertices
unsigned nextrainternalvertices
Definition: SbPolyhedron.cxx:1941
SbPolyhedronPolygonXSect::Internals::setupface
void setupface(const unsigned &face_id, const std::vector< unsigned > &v) const
Definition: SbPolyhedron.cxx:2187
SbPolyhedronPolygonXSect::Internals::edges_with_extra_vertex
std::set< Edge > edges_with_extra_vertex
Definition: SbPolyhedron.cxx:1939
SbPolyhedron::m_pV
HVPoint3D * m_pV
Definition: SbPolyhedron.h:239
SbPolyhedronPolygonXSect::Internals::edges_internal
std::set< Edge > edges_internal
Definition: SbPolyhedron.cxx:1936
PolygonTriangulator
Definition: PolygonTriangulator.h:32
SbPolyhedronPolygonXSect::Internals::edges_external
std::set< Edge > edges_external
Definition: SbPolyhedron.cxx:1937
SbPolyhedronPolygonXSect::Internals::ntriangles
unsigned ntriangles
Definition: SbPolyhedron.cxx:1930
SbPolyhedronPolygonXSect::Internals::edgewithextravertex_2_id
std::map< Edge, unsigned > edgewithextravertex_2_id
Definition: SbPolyhedron.cxx:1942
SbPolyhedronPolygonXSect::Internals::top2bottomvertexid
unsigned top2bottomvertexid(const unsigned &topid) const
Definition: SbPolyhedron.cxx:2228
SbPolyhedronPolygonXSect::Internals::isinternaledge
bool isinternaledge(const Edge &edge, const std::map< Edge, std::vector< Triangles::const_iterator > > &edge2triangles_map) const
Definition: SbPolyhedron.cxx:2164
python.PyAthena.v
v
Definition: PyAthena.py:157
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
SbPolyhedronPolygonXSect::Internals::x
const std::vector< double > * x
Definition: SbPolyhedron.cxx:1927
SbPolyhedronPolygonXSect::Internals::n
unsigned n
Definition: SbPolyhedron.cxx:1929
SbPolyhedronPolygonXSect::Internals::getSurroundingValues
void getSurroundingValues(const std::vector< unsigned > &numbercycle, const unsigned &centralValue, unsigned &prevValue, unsigned &nextValue) const
Definition: SbPolyhedron.cxx:2211
SbPolyhedronPolygonXSect::Internals::poly
PolygonTriangulator * poly
Definition: SbPolyhedron.cxx:1934
SbPolyhedronPolygonXSect::Internals::y
const std::vector< double > * y
Definition: SbPolyhedron.cxx:1928
SbFacet
Definition: SbPolyhedron.h:217
HVPoint3D
Definition: SbPolyhedron.h:188
fitman.k
k
Definition: fitman.py:528