ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
PolygonTriangulator::Polygon Class Reference
Collaboration diagram for PolygonTriangulator::Polygon:

Public Member Functions

 Polygon (const std::vector< double > &x, const std::vector< double > &y)
 
 ~Polygon ()
 
void partition2Monotone ()
 
void searchMonotones ()
 
void triangulation ()
 
const Trianglestriangles ()
 
internal_poltrig::PointbaseMappoints ()
 
internal_poltrig::LineMapedges ()
 

Private Member Functions

void set_contour (const std::vector< double > &x, const std::vector< double > &y)
 
void initializate ()
 
unsigned int prev (const unsigned int &i)
 
unsigned int next (const unsigned int &i)
 
void handleStartVertex (const unsigned int &)
 
void handleEndVertex (const unsigned int &)
 
void handleSplitVertex (const unsigned int &)
 
void handleMergeVertex (const unsigned int &)
 
void handleRegularVertexUp (const unsigned int &)
 
void handleRegularVertexDown (const unsigned int &)
 
void addDiagonal (const unsigned int &i, const unsigned int &j)
 
double angleCosb (double *A, double *B, double *C)
 
unsigned int selectNextEdge (internal_poltrig::Linebase *edge)
 
void triangulateMonotone (internal_poltrig::Monopoly &mpoly)
 
void init_vertices_and_lines ()
 

Private Attributes

long int m_l_id
 
internal_poltrig::PQueue m_qpoints
 
internal_poltrig::EdgeBST m_edgebst
 
internal_poltrig::Monopolys m_mpolys
 
Triangles m_triangles
 
internal_poltrig::AdjEdgeMap m_startAdjEdgeMap
 
internal_poltrig::LineMap m_diagonals
 
unsigned int m_ncontours
 
std::vector< unsigned int > m_nVertices
 
internal_poltrig::PointbaseMap m_points
 
internal_poltrig::LineMap m_edges
 
double m_xmin
 
double m_xmax
 
double m_ymin
 
double m_ymax
 

Detailed Description

Definition at line 1421 of file PolygonTriangulator.cxx.

Constructor & Destructor Documentation

◆ Polygon()

PolygonTriangulator::Polygon::Polygon ( const std::vector< double > &  x,
const std::vector< double > &  y 
)

Definition at line 1555 of file PolygonTriangulator.cxx.

1556 {
1557  m_l_id = 0;
1558  m_ncontours=0;
1559 
1560  m_xmin = m_ymin = std::numeric_limits<double>::infinity();
1561  m_xmax = m_ymax = - std::numeric_limits<double>::infinity();
1562 
1563 
1564  set_contour(x,y);
1566  initializate();
1567 }

◆ ~Polygon()

PolygonTriangulator::Polygon::~Polygon ( )

Definition at line 1572 of file PolygonTriangulator.cxx.

1573 {
1574  //clear all dynamic allocated memory
1576  for(; itp!=m_points.end(); ++itp)
1577  {
1578  delete itp->second;
1579  }
1580 
1582  for(; itl!=m_edges.end(); ++itl)
1583  {
1584  delete itl->second;
1585  }
1586 
1587 }

Member Function Documentation

◆ addDiagonal()

void PolygonTriangulator::Polygon::addDiagonal ( const unsigned int &  i,
const unsigned int &  j 
)
private

Definition at line 1682 of file PolygonTriangulator.cxx.

1683 {
1686  m_edges[diag->id()]=diag;
1687 
1688  m_startAdjEdgeMap[i].insert(diag->id());
1689  m_startAdjEdgeMap[j].insert(diag->id());
1690 
1691  m_diagonals[diag->id()]=diag;
1692 
1693 }

◆ angleCosb()

double PolygonTriangulator::Polygon::angleCosb ( double *  A,
double *  B,
double *  C 
)
private

Definition at line 1850 of file PolygonTriangulator.cxx.

1851 {
1852  double dxab = pa[0] - pb[0];
1853  double dyab = pa[1] - pb[1];
1854 
1855  double dxcb = pc[0] - pb[0];
1856  double dycb = pc[1] - pb[1];
1857 
1858  double dxab2 = dxab * dxab;
1859  double dyab2 = dyab * dyab;
1860  double dxcb2 = dxcb * dxcb;
1861  double dycb2 = dycb * dycb;
1862  double ab = dxab2 + dyab2;
1863  double cb = dxcb2 + dycb2;
1864 
1865  double cosb = dxab * dxcb + dyab * dycb;
1866  double denom = sqrt( ab * cb);
1867 
1868  cosb/=denom;
1869 
1870  return cosb;
1871 }

◆ edges()

internal_poltrig::LineMap& PolygonTriangulator::Polygon::edges ( )
inline

Definition at line 1437 of file PolygonTriangulator.cxx.

1437 { return m_edges; }

◆ handleEndVertex()

void PolygonTriangulator::Polygon::handleEndVertex ( const unsigned int &  i)
private

Definition at line 1712 of file PolygonTriangulator.cxx.

1713 {
1714  double y=m_points[i]->y;
1716 
1717  unsigned int previ=prev(i);
1718  internal_poltrig::Linebase* edge=m_edges[previ];
1719  unsigned int helper=m_edges[previ]->helper();
1720 
1721 
1723  m_edgebst.Delete(edge->keyValue());
1724 
1725 }

◆ handleMergeVertex()

void PolygonTriangulator::Polygon::handleMergeVertex ( const unsigned int &  i)
private

Definition at line 1751 of file PolygonTriangulator.cxx.

1752 {
1753  double x=m_points[i]->x, y=m_points[i]->y;
1755 
1756  unsigned int previ=prev(i);
1757  unsigned int helper=m_edges[previ]->helper();
1759  m_edgebst.Delete(m_edges[previ]->keyValue());
1760 
1762  m_edgebst.FindMaxSmallerThan(x, leftnode);
1763  internal_poltrig::Linebase* leftedge=leftnode->data();
1764 
1765  helper=leftedge->helper();
1767 
1768  leftedge->setHelper(i);
1769 }

◆ handleRegularVertexDown()

void PolygonTriangulator::Polygon::handleRegularVertexDown ( const unsigned int &  i)
private

Definition at line 1774 of file PolygonTriangulator.cxx.

1775 {
1776  double y=m_points[i]->y;
1778 
1779  unsigned int previ=prev(i);
1780  unsigned int helper=m_edges[previ]->helper();
1782 
1783  m_edgebst.Delete(m_edges[previ]->keyValue());
1784  m_edges[i]->setHelper(i);
1785  m_edges[i]->setKeyValue(y);
1787 
1788 }

◆ handleRegularVertexUp()

void PolygonTriangulator::Polygon::handleRegularVertexUp ( const unsigned int &  i)
private

Definition at line 1793 of file PolygonTriangulator.cxx.

1794 {
1795  double x=m_points[i]->x, y=m_points[i]->y;
1797 
1799  m_edgebst.FindMaxSmallerThan(x, leftnode);
1800 
1801  internal_poltrig::Linebase* leftedge=leftnode->data();
1802 
1803  unsigned int helper=leftedge->helper();
1805  leftedge->setHelper(i);
1806 
1807 }

◆ handleSplitVertex()

void PolygonTriangulator::Polygon::handleSplitVertex ( const unsigned int &  i)
private

Definition at line 1730 of file PolygonTriangulator.cxx.

1731 {
1732  double x=m_points[i]->x, y=m_points[i]->y;
1734 
1736  m_edgebst.FindMaxSmallerThan(x, leftnode);
1737  internal_poltrig::Linebase* leftedge=leftnode->data();
1738 
1739  unsigned int helper=leftedge->helper();
1740  addDiagonal(i, helper);
1741 
1742  leftedge->setHelper(i);
1743  m_edges[i]->setHelper(i);
1744  m_edges[i]->setKeyValue(y);
1746 }

◆ handleStartVertex()

void PolygonTriangulator::Polygon::handleStartVertex ( const unsigned int &  i)
private

Definition at line 1698 of file PolygonTriangulator.cxx.

1699 {
1700  double y=m_points[i]->y;
1702 
1703  m_edges[i]->setHelper(i);
1704  m_edges[i]->setKeyValue(y);
1706 
1707 }

◆ init_vertices_and_lines()

void PolygonTriangulator::Polygon::init_vertices_and_lines ( )
private

Definition at line 1491 of file PolygonTriangulator.cxx.

1492 {
1493  int sid,eid;
1494  int num=0;
1495 
1497 
1498  for(unsigned j=0; j<m_ncontours; ++j)
1499  {
1500  for(unsigned i=1; i<=m_nVertices[j]; ++i)//fixme: 0-based?
1501  {
1502  sid=num+i;
1503  eid=(i==m_nVertices[j])?num+1:num+i+1;
1506  m_edges[m_l_id]=line;
1507  }
1508  num+=m_nVertices[j];
1509  }
1510 
1511  int sum=0;
1512  for(unsigned int i=0; i<m_ncontours; ++i)
1513  {
1514  sum+= m_nVertices[i];
1515  m_nVertices[i]=sum;
1516  }
1517 
1518 }

◆ initializate()

void PolygonTriangulator::Polygon::initializate ( )
private

Definition at line 1638 of file PolygonTriangulator.cxx.

1639 {
1641  for(; it!=m_points.end(); ++it)
1642  {
1643  int id=it->first;
1644  int idp=prev(id);
1645  int idn=next(id);
1646  internal_poltrig::Pointbase p=*m_points[id], pnext=*m_points[idn], pprev=*m_points[idp];
1647 
1648  if( p > pnext && pprev > p )
1650  else if (p > pprev && pnext > p)
1652  else
1653  {
1654  double pa[2], pb[2], pc[2];
1655 
1656  pa[0]=m_points[idp]->x;
1657  pa[1]=m_points[idp]->y;
1658 
1659  pb[0]=m_points[id]->x;
1660  pb[1]=m_points[id]->y;
1661 
1662  pc[0]=m_points[idn]->x;
1663  pc[1]=m_points[idn]->y;
1664 
1665  double area=internal_poltrig::orient2d(pa,pb,pc);
1666 
1667  if( pprev > p && pnext > p ) m_points[id]->type=(area >0) ? internal_poltrig::END: internal_poltrig::MERGE ;
1668  if( pprev < p && pnext < p ) m_points[id]->type=(area >0) ? internal_poltrig::START : internal_poltrig::SPLIT;
1669 
1670  }
1671 
1672  m_qpoints.push(*(it->second));
1673 
1674  m_startAdjEdgeMap[id].insert(id);
1675 
1676  }
1677 }

◆ next()

unsigned int PolygonTriangulator::Polygon::next ( const unsigned int &  i)
private

Definition at line 1611 of file PolygonTriangulator.cxx.

1612 {
1613  unsigned int j(0),prevLoop(0),currentLoop(0);
1614 
1615  while ( i > m_nVertices[currentLoop] )
1616  {
1617  prevLoop=currentLoop;
1618  ++currentLoop;
1619  }
1620 
1621  if( i < m_nVertices[currentLoop] ) j=i+1;
1622  else if ( i==m_nVertices[currentLoop] )
1623  {
1624  if( currentLoop==0) j=1;
1625  else j=m_nVertices[prevLoop]+1;
1626  }
1627 
1628  return j;
1629 }

◆ partition2Monotone()

void PolygonTriangulator::Polygon::partition2Monotone ( )

Definition at line 1812 of file PolygonTriangulator.cxx.

1813 {
1814 
1815  if(m_qpoints.top().type!=internal_poltrig::START)
1816  {
1817  std::cout<<"Please check your input polygon:\n1)orientations?\n2)duplicated points?\n";
1818  exit(1);
1819  }
1820 
1821  while(!m_qpoints.empty())
1822  {
1824  m_qpoints.pop();
1825  unsigned int id=vertex.id;
1826 
1827  switch(vertex.type)
1828  {
1829  case internal_poltrig::START: handleStartVertex(id); break;
1830  case internal_poltrig::END: handleEndVertex(id); break;
1831  case internal_poltrig::MERGE: handleMergeVertex(id); break;
1832  case internal_poltrig::SPLIT: handleSplitVertex(id); break;
1835  default:
1836  std::cout<<"No duplicated points please!\n";
1837  exit(1); break;
1838  }
1839  }
1840 }

◆ points()

internal_poltrig::PointbaseMap& PolygonTriangulator::Polygon::points ( )
inline

Definition at line 1436 of file PolygonTriangulator.cxx.

1436 { return m_points; }

◆ prev()

unsigned int PolygonTriangulator::Polygon::prev ( const unsigned int &  i)
private

Definition at line 1592 of file PolygonTriangulator.cxx.

1593 {
1594  unsigned int j(0),prevLoop(0),currentLoop(0);
1595 
1596  while ( i > m_nVertices[currentLoop] )
1597  {
1598  prevLoop=currentLoop;
1599  ++currentLoop;
1600  }
1601 
1602  if( i==1 || (i==m_nVertices[prevLoop]+1) ) j=m_nVertices[currentLoop];
1603  else if( i <= m_nVertices[currentLoop] ) j=i-1;
1604 
1605  return j;
1606 }

◆ searchMonotones()

void PolygonTriangulator::Polygon::searchMonotones ( )

Definition at line 1919 of file PolygonTriangulator.cxx.

1920 {
1922 
1923  while( edges.size() > m_diagonals.size() )
1924  {
1927  internal_poltrig::Pointbase* startp=it->second->endPoint(0);
1930 
1931  poly.push_back(startp->id);
1932 
1933  for(;;)
1934  {
1935  endp=next->endPoint(1);
1936  if(next->type()!=internal_poltrig::INSERT)
1937  {
1938  edges.erase(next->id());
1939  m_startAdjEdgeMap[next->endPoint(0)->id].erase(next->id());
1940  }
1941  if(endp==startp) break;
1942  poly.push_back(endp->id);
1943 
1944  unsigned int nexte=selectNextEdge(next);
1945 
1946  if(nexte==0)
1947  {
1948  std::cout<<"Please check your input polygon:\n";
1949  std::cout<<"1)orientations?\n2)with duplicated points?\n3)is a simple one?\n";
1950  exit(1);
1951  }
1952  //assert( nexte > 0);
1953  next=edges[nexte];
1954  if(next->endPoint(0) !=endp ) next->reverse();
1955  }
1956 
1957  m_mpolys.push_back(std::move(poly));
1958  }
1959 }

◆ selectNextEdge()

unsigned int PolygonTriangulator::Polygon::selectNextEdge ( internal_poltrig::Linebase edge)
private

Definition at line 1877 of file PolygonTriangulator.cxx.

1878 {
1879 
1880  unsigned int eid= edge->endPoint(1)->id;
1881  std::set<unsigned int> edges=m_startAdjEdgeMap[eid];
1882  assert(!edges.empty());
1883 
1884  unsigned int nexte=0;
1885  if( edges.size() == 1 ) nexte=*(edges.begin());
1886  else if( edges.size() > 1 )
1887  {
1888  unsigned int nexte_ccw(0), nexte_cw(0);
1889  double max=-2.0,min=2.0;
1890 
1891 
1893  for(; it!=edges.end(); ++it)
1894  {
1895  if(*it==edge->id()) continue;
1896  double A[2], B[2], C[2];
1897  A[0]=edge->endPoint(0)->x; A[1]=edge->endPoint(0)->y;
1898  B[0]=edge->endPoint(1)->x; B[1]=edge->endPoint(1)->y;
1899 
1900  if(edge->endPoint(1)!=m_edges[*it]->endPoint(0)) m_edges[*it]->reverse();
1901  C[0]=m_edges[*it]->endPoint(1)->x; C[1]=m_edges[*it]->endPoint(1)->y;
1902 
1903  double area=internal_poltrig::orient2d(A, B, C);
1904  double cosb=angleCosb(A, B, C);
1905 
1906  if( area > 0 && max < cosb ) { nexte_ccw=*it; max=cosb; }
1907  else if( min > cosb ) { nexte_cw=*it; min=cosb; }
1908  }
1909 
1910  nexte = (nexte_ccw!=0) ? nexte_ccw : nexte_cw;
1911  }
1912 
1913  return nexte;
1914 }

◆ set_contour()

void PolygonTriangulator::Polygon::set_contour ( const std::vector< double > &  x,
const std::vector< double > &  y 
)
private

Definition at line 1524 of file PolygonTriangulator.cxx.

1525 {
1526  assert(x.size()==y.size());
1527 
1528  m_nVertices.push_back( x.size() );
1529  unsigned int i = m_points.size()+1/*1*/;//fixme: get rid of the +1 ?
1530  double xx,yy;
1532  for (unsigned int j = 0; j < m_nVertices[m_ncontours]; ++j, ++i)
1533  {
1534  xx=x.at(j);
1535  yy=y.at(j);
1538  if(xx > m_xmax ) m_xmax=xx;
1539  if(xx < m_xmin ) m_xmin=xx;
1540  if(yy > m_ymax ) m_ymax=yy;
1541  if(yy < m_ymin ) m_ymin=yy;
1542  m_points[i]=point;
1543  }
1544 
1545  ++m_ncontours;
1546 
1547 }

◆ triangles()

const Triangles* PolygonTriangulator::Polygon::triangles ( )
inline

Definition at line 1434 of file PolygonTriangulator.cxx.

1434 { return &m_triangles; }

◆ triangulateMonotone()

void PolygonTriangulator::Polygon::triangulateMonotone ( internal_poltrig::Monopoly mpoly)
private

Definition at line 1965 of file PolygonTriangulator.cxx.

1966 {
1967  internal_poltrig::PQueue qvertex;
1968  internal_poltrig::Monopoly::iterator it=mpoly.begin(), itnext;
1969  for(; itnext=it, it!=mpoly.end(); ++it)
1970  {
1971  ++itnext;
1972  if(itnext==mpoly.end()) itnext=mpoly.begin();
1973  internal_poltrig::Pointbase point=*m_points[*it], pointnext=*m_points[*itnext];
1974  point.left=(point > pointnext)? true:false;
1975  qvertex.push(point);
1976  }
1977 
1978  std::stack<internal_poltrig::Pointbase> spoint;
1979  for(int i=0; i<2; ++i) { spoint.push(qvertex.top()); qvertex.pop(); }
1980 
1981  while ( qvertex.size() > 1 )
1982  {
1983  internal_poltrig::Pointbase topQueuePoint=qvertex.top();
1984  internal_poltrig::Pointbase topStackPoint=spoint.top();
1985 
1986  if(topQueuePoint.left!=topStackPoint.left)
1987  {
1988  while ( spoint.size() > 1 )
1989  {
1990  internal_poltrig::Pointbase p1=spoint.top();
1991  spoint.pop();
1992  internal_poltrig::Pointbase p2=spoint.top();
1993  Triangle v(3);
1994  v[0]=topQueuePoint.id;
1995  v[1]=p1.id;
1996  v[2]=p2.id;
1997  sort(v.begin(),v.end());//TK
1998  m_triangles.push_back(std::move(v));
1999 
2000  }
2001  spoint.pop();
2002  spoint.push(topStackPoint);
2003  spoint.push(topQueuePoint);
2004  }
2005  else
2006  {
2007  while( spoint.size() > 1 )
2008  {
2009  internal_poltrig::Pointbase stack1Point=spoint.top();
2010  spoint.pop();
2011  internal_poltrig::Pointbase stack2Point=spoint.top();
2012  spoint.push(stack1Point);
2013  double pa[2], pb[2], pc[2];
2014  pa[0]=topQueuePoint.x; pa[1]=topQueuePoint.y;
2015  pb[0]=stack2Point.x; pb[1]=stack2Point.y;
2016  pc[0]=stack1Point.x; pc[1]=stack1Point.y;
2017 
2018  double area=internal_poltrig::orient2d(pa,pb,pc);
2019  bool left=stack1Point.left;
2020  if( (area > 0 && left) || (area < 0 && !left ) )
2021  {
2022  Triangle v(3);
2023  v[0]=topQueuePoint.id;
2024  v[1]=stack2Point.id;
2025  v[2]=stack1Point.id;
2026  sort(v.begin(),v.end());//TK
2027  m_triangles.push_back(std::move(v));
2028  spoint.pop();
2029  } else break;
2030  }
2031 
2032  spoint.push(topQueuePoint);
2033 
2034  }
2035 
2036  qvertex.pop();
2037 
2038  }
2039 
2040  internal_poltrig::Pointbase lastQueuePoint=qvertex.top();
2041  while( spoint.size() !=1 )
2042  {
2043  internal_poltrig::Pointbase topPoint=spoint.top();
2044  spoint.pop();
2045  internal_poltrig::Pointbase top2Point=spoint.top();
2046 
2047  Triangle v(3);
2048  v[0]=lastQueuePoint.id;
2049  v[1]=topPoint.id;
2050  v[2]=top2Point.id;
2051  sort(v.begin(),v.end());//TK
2052  m_triangles.push_back(std::move(v));
2053  }
2054 }

◆ triangulation()

void PolygonTriangulator::Polygon::triangulation ( )

Definition at line 2059 of file PolygonTriangulator.cxx.

2060 {
2062  searchMonotones();
2064  for(; it!=m_mpolys.end(); ++it)
2066 }

Member Data Documentation

◆ m_diagonals

internal_poltrig::LineMap PolygonTriangulator::Polygon::m_diagonals
private

Definition at line 1478 of file PolygonTriangulator.cxx.

◆ m_edgebst

internal_poltrig::EdgeBST PolygonTriangulator::Polygon::m_edgebst
private

Definition at line 1472 of file PolygonTriangulator.cxx.

◆ m_edges

internal_poltrig::LineMap PolygonTriangulator::Polygon::m_edges
private

Definition at line 1485 of file PolygonTriangulator.cxx.

◆ m_l_id

long int PolygonTriangulator::Polygon::m_l_id
private

Definition at line 1441 of file PolygonTriangulator.cxx.

◆ m_mpolys

internal_poltrig::Monopolys PolygonTriangulator::Polygon::m_mpolys
private

Definition at line 1473 of file PolygonTriangulator.cxx.

◆ m_ncontours

unsigned int PolygonTriangulator::Polygon::m_ncontours
private

Definition at line 1482 of file PolygonTriangulator.cxx.

◆ m_nVertices

std::vector<unsigned int> PolygonTriangulator::Polygon::m_nVertices
private

Definition at line 1483 of file PolygonTriangulator.cxx.

◆ m_points

internal_poltrig::PointbaseMap PolygonTriangulator::Polygon::m_points
private

Definition at line 1484 of file PolygonTriangulator.cxx.

◆ m_qpoints

internal_poltrig::PQueue PolygonTriangulator::Polygon::m_qpoints
private

Definition at line 1471 of file PolygonTriangulator.cxx.

◆ m_startAdjEdgeMap

internal_poltrig::AdjEdgeMap PolygonTriangulator::Polygon::m_startAdjEdgeMap
private

Definition at line 1477 of file PolygonTriangulator.cxx.

◆ m_triangles

Triangles PolygonTriangulator::Polygon::m_triangles
private

Definition at line 1474 of file PolygonTriangulator.cxx.

◆ m_xmax

double PolygonTriangulator::Polygon::m_xmax
private

Definition at line 1486 of file PolygonTriangulator.cxx.

◆ m_xmin

double PolygonTriangulator::Polygon::m_xmin
private

Definition at line 1486 of file PolygonTriangulator.cxx.

◆ m_ymax

double PolygonTriangulator::Polygon::m_ymax
private

Definition at line 1486 of file PolygonTriangulator.cxx.

◆ m_ymin

double PolygonTriangulator::Polygon::m_ymin
private

Definition at line 1486 of file PolygonTriangulator.cxx.


The documentation for this class was generated from the following file:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
internal_poltrig::Pointbase
Definition: PolygonTriangulator.cxx:1211
cmd-l1calo-dq-test.xx
xx
Definition: cmd-l1calo-dq-test.py:16
PolygonTriangulator::Polygon::m_l_id
long int m_l_id
Definition: PolygonTriangulator.cxx:1441
internal_poltrig::LineMap
std::map< unsigned int, Linebase * > LineMap
Definition: PolygonTriangulator.cxx:122
internal_poltrig::START
@ START
Definition: PolygonTriangulator.cxx:115
TruthTest.itp
itp
Definition: TruthTest.py:46
PolygonTriangulator::Polygon::next
unsigned int next(const unsigned int &i)
Definition: PolygonTriangulator.cxx:1611
internal_poltrig::REGULAR_DOWN
@ REGULAR_DOWN
Definition: PolygonTriangulator.cxx:115
PolygonTriangulator::Polygon::m_triangles
Triangles m_triangles
Definition: PolygonTriangulator.cxx:1474
keylayer_zslicemap.pb
pb
Definition: keylayer_zslicemap.py:188
PlotCalibFromCool.yy
yy
Definition: PlotCalibFromCool.py:714
internal_poltrig::SplayTree::Delete
void Delete(const KeyType &keys)
Definition: PolygonTriangulator.cxx:827
internal_poltrig::Linebase::helper
unsigned int helper()
Definition: PolygonTriangulator.cxx:1271
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
internal_poltrig::Pointbase::x
double x
Definition: PolygonTriangulator.cxx:1238
PolygonTriangulator::Polygon::m_qpoints
internal_poltrig::PQueue m_qpoints
Definition: PolygonTriangulator.cxx:1471
PolygonTriangulator::Polygon::m_xmin
double m_xmin
Definition: PolygonTriangulator.cxx:1486
DMTest::C
C_v1 C
Definition: C.h:26
PolygonTriangulator::Polygon::m_edgebst
internal_poltrig::EdgeBST m_edgebst
Definition: PolygonTriangulator.cxx:1472
TRTCalib_cfilter.p1
p1
Definition: TRTCalib_cfilter.py:130
PolygonTriangulator::Polygon::handleMergeVertex
void handleMergeVertex(const unsigned int &)
Definition: PolygonTriangulator.cxx:1751
skel.it
it
Definition: skel.GENtoEVGEN.py:407
PolygonTriangulator::Polygon::set_contour
void set_contour(const std::vector< double > &x, const std::vector< double > &y)
Definition: PolygonTriangulator.cxx:1524
PolygonTriangulator::Polygon::m_edges
internal_poltrig::LineMap m_edges
Definition: PolygonTriangulator.cxx:1485
internal_poltrig::PQueue
std::priority_queue< Pointbase > PQueue
Definition: PolygonTriangulator.cxx:123
PolygonTriangulator::Polygon::handleStartVertex
void handleStartVertex(const unsigned int &)
Definition: PolygonTriangulator.cxx:1698
internal_poltrig::orient2d
REAL orient2d(REAL *pa, REAL *pb, REAL *pc)
Definition: PolygonTriangulator.cxx:574
PolygonTriangulator::Polygon::triangulateMonotone
void triangulateMonotone(internal_poltrig::Monopoly &mpoly)
Definition: PolygonTriangulator.cxx:1965
PolygonTriangulator::Polygon::m_startAdjEdgeMap
internal_poltrig::AdjEdgeMap m_startAdjEdgeMap
Definition: PolygonTriangulator.cxx:1477
x
#define x
internal_poltrig::Linebase::endPoint
Pointbase * endPoint(const int &i) const
Definition: PolygonTriangulator.cxx:1260
PolygonTriangulator::Polygon::handleEndVertex
void handleEndVertex(const unsigned int &)
Definition: PolygonTriangulator.cxx:1712
internal_poltrig::Type
Type
Definition: PolygonTriangulator.cxx:115
dq_defect_bulk_create_defects.line
line
Definition: dq_defect_bulk_create_defects.py:27
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
std::sort
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
Definition: DVL_algorithms.h:554
internal_poltrig::SplayTree::InOrder
void InOrder(void(*Visit)(BTreeNode< T, KeyType > *u))
Definition: PolygonTriangulator.cxx:691
internal_poltrig::SplayTree::Insert
void Insert(const T &x)
Definition: PolygonTriangulator.cxx:750
PolygonTriangulator::Polygon::m_xmax
double m_xmax
Definition: PolygonTriangulator.cxx:1486
runBeamSpotCalibration.helper
helper
Definition: runBeamSpotCalibration.py:115
PolygonTriangulator::Polygon::init_vertices_and_lines
void init_vertices_and_lines()
Definition: PolygonTriangulator.cxx:1491
internal_poltrig::INSERT
@ INSERT
Definition: PolygonTriangulator.cxx:115
MuonCalib::Legendre::poly
constexpr double poly(const double x)
Evaluates the n-th Legendre polynomial at x.
Definition: LegendrePoly.h:156
internal_poltrig::SplayTree::FindMaxSmallerThan
void FindMaxSmallerThan(const KeyType &keys, BTreeNode< T, KeyType > *&res)
Definition: PolygonTriangulator.cxx:952
TRTCalib_cfilter.p2
p2
Definition: TRTCalib_cfilter.py:131
PolygonTriangulator::Polygon::m_mpolys
internal_poltrig::Monopolys m_mpolys
Definition: PolygonTriangulator.cxx:1473
PolygonTriangulator::Polygon::partition2Monotone
void partition2Monotone()
Definition: PolygonTriangulator.cxx:1812
PolygonTriangulator::Polygon::angleCosb
double angleCosb(double *A, double *B, double *C)
Definition: PolygonTriangulator.cxx:1850
A
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
RunTileMonitoring.keyValue
keyValue
Definition: RunTileMonitoring.py:150
convertTimingResiduals.sum
sum
Definition: convertTimingResiduals.py:55
PolygonTriangulator::Polygon::m_points
internal_poltrig::PointbaseMap m_points
Definition: PolygonTriangulator.cxx:1484
lumiFormat.i
int i
Definition: lumiFormat.py:85
internal_poltrig::MERGE
@ MERGE
Definition: PolygonTriangulator.cxx:115
internal_poltrig::UpdateKey
void UpdateKey(BTreeNode< Linebase *, double > *node, double y)
Definition: PolygonTriangulator.cxx:1325
PolygonTriangulator::Polygon::selectNextEdge
unsigned int selectNextEdge(internal_poltrig::Linebase *edge)
Definition: PolygonTriangulator.cxx:1877
PolygonTriangulator::Polygon::searchMonotones
void searchMonotones()
Definition: PolygonTriangulator.cxx:1919
internal_poltrig::END
@ END
Definition: PolygonTriangulator.cxx:115
internal_poltrig::BTreeNode::data
T & data()
Definition: PolygonTriangulator.cxx:646
PolygonTriangulator::Polygon::initializate
void initializate()
Definition: PolygonTriangulator.cxx:1638
PolygonTriangulator::Polygon::handleSplitVertex
void handleSplitVertex(const unsigned int &)
Definition: PolygonTriangulator.cxx:1730
calibdata.exit
exit
Definition: calibdata.py:235
internal_poltrig::Linebase::id
unsigned int id() const
Definition: PolygonTriangulator.cxx:1257
compute_lumi.denom
denom
Definition: compute_lumi.py:76
trigbs_pickEvents.num
num
Definition: trigbs_pickEvents.py:76
PolygonTriangulator::Polygon::prev
unsigned int prev(const unsigned int &i)
Definition: PolygonTriangulator.cxx:1592
PolygonTriangulator::Polygon::m_ymax
double m_ymax
Definition: PolygonTriangulator.cxx:1486
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:239
internal_poltrig::INPUT
@ INPUT
Definition: PolygonTriangulator.cxx:115
dqt_zlumi_alleff_HIST.B
B
Definition: dqt_zlumi_alleff_HIST.py:110
internal_poltrig::Pointbase::left
bool left
Definition: PolygonTriangulator.cxx:1240
internal_poltrig::SPLIT
@ SPLIT
Definition: PolygonTriangulator.cxx:115
PolygonTriangulator::Polygon::edges
internal_poltrig::LineMap & edges()
Definition: PolygonTriangulator.cxx:1437
internal_poltrig::Linebase
Definition: PolygonTriangulator.cxx:1248
internal_poltrig::Pointbase::y
double y
Definition: PolygonTriangulator.cxx:1238
PolygonTriangulator::Polygon::addDiagonal
void addDiagonal(const unsigned int &i, const unsigned int &j)
Definition: PolygonTriangulator.cxx:1682
python.PyAthena.v
v
Definition: PyAthena.py:154
internal_poltrig::Monopoly
std::list< unsigned int > Monopoly
Definition: PolygonTriangulator.cxx:125
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
y
#define y
internal_poltrig::BTreeNode
Definition: PolygonTriangulator.cxx:639
PolygonTriangulator::Polygon::m_ncontours
unsigned int m_ncontours
Definition: PolygonTriangulator.cxx:1482
PolygonTriangulator::Polygon::m_ymin
double m_ymin
Definition: PolygonTriangulator.cxx:1486
internal_poltrig::REGULAR_UP
@ REGULAR_UP
Definition: PolygonTriangulator.cxx:115
area
double area(double R)
Definition: ConvertStaveServices.cxx:42
internal_poltrig::Linebase::keyValue
double keyValue() const
Definition: PolygonTriangulator.cxx:1262
PolygonTriangulator::Polygon::m_nVertices
std::vector< unsigned int > m_nVertices
Definition: PolygonTriangulator.cxx:1483
PolygonTriangulator::Polygon::m_diagonals
internal_poltrig::LineMap m_diagonals
Definition: PolygonTriangulator.cxx:1478
internal_poltrig::Linebase::setHelper
void setHelper(const unsigned int &i)
Definition: PolygonTriangulator.cxx:1270
PolygonTriangulator::Triangle
std::vector< unsigned > Triangle
Definition: PolygonTriangulator.h:35
python.SystemOfUnits.pc
float pc
Definition: SystemOfUnits.py:114
internal_poltrig::Pointbase::id
unsigned int id
Definition: PolygonTriangulator.cxx:1237
PolygonTriangulator::Polygon::handleRegularVertexDown
void handleRegularVertexDown(const unsigned int &)
Definition: PolygonTriangulator.cxx:1774
PolygonTriangulator::Polygon::handleRegularVertexUp
void handleRegularVertexUp(const unsigned int &)
Definition: PolygonTriangulator.cxx:1793