ATLAS Offline Software
Classes | Public Types | Public Member Functions | Private Attributes | List of all members
Range Class Reference

A Range describes the possible ranges for the field values of an ExpandedIdentifier. More...

#include <Range.h>

Collaboration diagram for Range:

Classes

class  const_identifier_factory
 
class  field
 This is the individual specification for the range of one ExpandedIdentifier field. More...
 
class  identifier_factory
 This factory is able to generate all possible identifiers, from a
fully bounded Range. More...
 

Public Types

typedef ExpandedIdentifier::element_type element_type
 
typedef ExpandedIdentifier::size_type size_type
 
typedef std::vector< fieldfield_vector
 

Public Member Functions

 Range ()
 Constructors. More...
 
 Range (const Range &other)
 
 Range (Range &&other)
 
Rangeoperator= (const Range &other)
 Assignment. More...
 
Rangeoperator= (Range &&other)
 
 Range (const Range &other, size_type start)
 This is a sub-range copy constructor. More...
 
 Range (const ExpandedIdentifier &root)
 Constructor with setup from a textual description. More...
 
void build (const std::string &text)
 Build a range from a textual description. More...
 
void build (const ExpandedIdentifier &root)
 Build a range from a single ExpandedIdentifier (see similar constructor for comment) More...
 
void clear ()
 Modifications. More...
 
void add ()
 Add a wild card field. More...
 
void add (element_type value)
 Add a required value. (ie. low = high = value) More...
 
void add (element_type minimum, element_type maximum)
 Add a bounded value. More...
 
void add_minimum (element_type minimum)
 Add a range bounded by a minimum. More...
 
void add_maximum (element_type maximum)
 Add a range bounded by a maximum. More...
 
void add (const field &f)
 Add a range specified using a field
More...
 
void add (field &&f)
 Add a range specified using a field, with move semantics. More...
 
void add (const Range &subrange)
 Append a subrange. More...
 
void add (Range &&subrange)
 Append a subrange, with move semantics. More...
 
int match (const ExpandedIdentifier &id) const
 Match an identifier. More...
 
const fieldoperator[] (size_type index) const
 Accessors. More...
 
size_type fields () const
 
bool is_empty () const
 
ExpandedIdentifier minimum () const
 min and max ExpandedIdentifiers
(if they exist, ie. More...
 
ExpandedIdentifier maximum () const
 
size_type cardinality () const
 Computes a possible cardinality : More...
 
size_type cardinalityUpTo (const ExpandedIdentifier &id) const
 Get the cardinality from the beginning up to the given ExpandedIdentifier. More...
 
size_type cardinalityUpTo (const int *id) const
 Get the cardinality from the beginning up to the given Identifier expanded into a int array. More...
 
identifier_factory factory_begin ()
 Identifier_factory management. More...
 
const_identifier_factory factory_begin () const
 
identifier_factory factory_end ()
 
const_identifier_factory factory_end () const
 
bool overlaps_with (const Range &other) const
 Check if two Ranges overlap. More...
 
void show () const
 
void show (std::ostream &s) const
 
 operator std::string () const
 Produce a textual representation of the range using the input format. More...
 
bool operator== (const Range &other) const
 
bool operator!= (const Range &other) const
 

Private Attributes

field_vector m_fields
 

Detailed Description

A Range describes the possible ranges for the field values of an ExpandedIdentifier.

Specifications can be : No bound * Low bound n: High bound :m Both bounds n:m Enumeration v1, v2, v3, ... , vn

Trailing * are implicit for all trailing fields

Definition at line 26 of file DetectorDescription/Identifier/Identifier/Range.h.

Member Typedef Documentation

◆ element_type

◆ field_vector

typedef std::vector<field> Range::field_vector

◆ size_type

Constructor & Destructor Documentation

◆ Range() [1/5]

Range::Range ( )

Constructors.

Definition at line 1176 of file DetectorDescription/Identifier/src/Range.cxx.

1177 {
1178 }

◆ Range() [2/5]

Range::Range ( const Range other)

Definition at line 1181 of file DetectorDescription/Identifier/src/Range.cxx.

1182  : m_fields (other.m_fields)
1183 {
1184 }

◆ Range() [3/5]

Range::Range ( Range &&  other)

Definition at line 1187 of file DetectorDescription/Identifier/src/Range.cxx.

1188  : m_fields (std::move (other.m_fields))
1189 {
1190 }

◆ Range() [4/5]

Range::Range ( const Range other,
size_type  start 
)

This is a sub-range copy constructor.


It copies the portion of the other Range, starting from the
specified starting index up to its last field.

Definition at line 1209 of file DetectorDescription/Identifier/src/Range.cxx.

1210 {
1211  if (start < other.fields ())
1212  {
1213  field_vector::const_iterator it = other.m_fields.begin ();
1214  it += start;
1215 
1216  m_fields.insert (m_fields.end (), it, other.m_fields.end ());
1217  }
1218 }

◆ Range() [5/5]

Range::Range ( const ExpandedIdentifier root)

Constructor with setup from a textual description.

The syntax is :

range : <value-range> [ "/" <value-range> ... ]

value-range : "*" | <value> | ":" <max> | <min> ":" | <min> ":" <max> | <value> "," <value> "," ... "," <value> Construct from a simple ExpandedIdentifier. This implies that all fields will have their min=max=id[i]

Definition at line 1227 of file DetectorDescription/Identifier/src/Range.cxx.

1228 {
1229  // Construct from a root (i.e. add wild card for below)
1230  build (root);
1231 }

Member Function Documentation

◆ add() [1/7]

void Range::add ( )

Add a wild card field.

Definition at line 1255 of file DetectorDescription/Identifier/src/Range.cxx.

1256 {
1257  m_fields.push_back (field ());
1258 }

◆ add() [2/7]

void Range::add ( const field f)

Add a range specified using a field

Definition at line 1291 of file DetectorDescription/Identifier/src/Range.cxx.

1292 {
1293  m_fields.emplace_back (f);
1294 }

◆ add() [3/7]

void Range::add ( const Range subrange)

Append a subrange.

Definition at line 1303 of file DetectorDescription/Identifier/src/Range.cxx.

1304 {
1305  for (size_t i = 0; i < subrange.fields (); ++i)
1306  {
1307  const field& f = subrange[i];
1308  m_fields.push_back (f);
1309  }
1310 }

◆ add() [4/7]

void Range::add ( element_type  minimum,
element_type  maximum 
)

Add a bounded value.

Definition at line 1267 of file DetectorDescription/Identifier/src/Range.cxx.

1268 {
1269  m_fields.push_back (field (minimum, maximum));
1270 }

◆ add() [5/7]

void Range::add ( element_type  value)

Add a required value. (ie. low = high = value)

Definition at line 1261 of file DetectorDescription/Identifier/src/Range.cxx.

1262 {
1263  m_fields.push_back (field (value));
1264 }

◆ add() [6/7]

void Range::add ( field &&  f)

Add a range specified using a field, with move semantics.

Add a range specified using a field, using move semantics.

Definition at line 1297 of file DetectorDescription/Identifier/src/Range.cxx.

1298 {
1299  m_fields.emplace_back (std::move(f));
1300 }

◆ add() [7/7]

void Range::add ( Range &&  subrange)

Append a subrange, with move semantics.

Definition at line 1312 of file DetectorDescription/Identifier/src/Range.cxx.

1313 {
1314  if (m_fields.empty())
1315  m_fields.swap (subrange.m_fields);
1316  else {
1317  size_t sz = subrange.m_fields.size();
1318  m_fields.reserve (m_fields.size() + sz);
1319  for (size_t i = 0; i < sz; ++i)
1320  {
1321  m_fields.emplace_back (std::move(subrange.m_fields[i]));
1322  }
1323  }
1324 }

◆ add_maximum()

void Range::add_maximum ( element_type  maximum)

Add a range bounded by a maximum.

Definition at line 1282 of file DetectorDescription/Identifier/src/Range.cxx.

1283 {
1284  field f;
1285 
1286  f.set_maximum (maximum);
1287  m_fields.push_back (f);
1288 }

◆ add_minimum()

void Range::add_minimum ( element_type  minimum)

Add a range bounded by a minimum.

Definition at line 1273 of file DetectorDescription/Identifier/src/Range.cxx.

1274 {
1275  field f;
1276 
1277  f.set_minimum (minimum);
1278  m_fields.push_back (f);
1279 }

◆ build() [1/2]

void Range::build ( const ExpandedIdentifier root)

Build a range from a single ExpandedIdentifier (see similar constructor for comment)

Definition at line 1242 of file DetectorDescription/Identifier/src/Range.cxx.

1243 {
1244  // Construct from a root
1245  m_fields.clear ();
1246 
1247  for (size_type i = 0; i < root.fields (); ++i)
1248  {
1249  m_fields.push_back (field (root[i]));
1250  }
1251 }

◆ build() [2/2]

void Range::build ( const std::string &  text)

Build a range from a textual description.

Definition at line 1234 of file DetectorDescription/Identifier/src/Range.cxx.

1235 {
1237 
1238  parser.run (*this, text);
1239 }

◆ cardinality()

Range::size_type Range::cardinality ( ) const

Computes a possible cardinality :

  • all bounded fields are counted as they are
  • unbounded fields are conted for one value.

Definition at line 1477 of file DetectorDescription/Identifier/src/Range.cxx.

1478 {
1479  size_type result = 1;
1480 
1481  const Range& me = *this;
1482 
1483  for (size_type i = 0; i < fields (); ++i)
1484  {
1485  const field& f = me[i];
1486 
1487  result *= f.get_indices ();
1488  }
1489 
1490  return (result);
1491 }

◆ cardinalityUpTo() [1/2]

Range::size_type Range::cardinalityUpTo ( const ExpandedIdentifier id) const

Get the cardinality from the beginning up to the given ExpandedIdentifier.

Definition at line 1497 of file DetectorDescription/Identifier/src/Range.cxx.

1498 {
1499  size_type result = 0;
1500 
1501 // std::cout << " Range::cardinality: id, fields " << (std::string) id
1502 // << " " << id.fields() << " " << fields() << " "
1503 // << (std::string)(*this) << std::endl;
1504 
1505  if (id.fields() != fields()) return (result);
1506 
1507  const Range& me = *this;
1508 
1509  // Check if we are above or below this range
1510  if (id < minimum()) return 0;
1511  if (maximum() < id) return cardinality();
1512 
1513  // Collect the indices of a match
1514  std::vector<size_type> indices(id.fields (), 0);
1515  bool is_match = true;
1516  size_type level = 0;
1517  for (; level < id.fields (); ++level) {
1518 
1519  const field& f = me[level];
1520 
1521  // Require all fields to be bounded or enumerated
1522  if (!(f.get_mode() == Range::field::both_bounded ||
1523  f.get_mode() == Range::field::enumerated)) return 0;
1524 
1525  //int index = 0; // Contains number of nodes below match
1526 
1527  if (f.get_mode() == Range::field::enumerated) {
1528  // Continue testing for a match
1529  size_type max = f.get_values().size() - 1;
1530  if (f.get_values()[max] < id[level]) {
1531  // above max
1532  is_match = false;
1533  indices[level] = max + 1;
1534  }
1535  else {
1536  for (size_type j = 0; j < f.get_values().size(); ++j) {
1537  if (id[level] <= f.get_values()[j]) {
1538  if (id[level] != f.get_values()[j]) {
1539  // between two values or below first one
1540  is_match = false;
1541  }
1542  indices[level] = j;
1543  break;
1544  }
1545  }
1546  }
1547  }
1548  else {
1549  if (f.get_maximum() < id[level]) {
1550  // above max
1551  is_match = false;
1552  indices[level] = f.get_maximum() - f.get_minimum() + 1;
1553  }
1554  else if (id[level] < f.get_minimum()) {
1555  // below min
1556  is_match = false;
1557  indices[level] = 0;
1558  }
1559  else {
1560  indices[level] = id[level] - f.get_minimum();
1561  }
1562  }
1563 
1564 // std::cout << " level, id, field, indices[[level], is enum, is_match " << level << " "
1565 // << id[level] << " " << (std::string)f << " "
1566 // << indices[level] << " " << (f.get_mode() == Range::field::enumerated) << " "
1567 // << is_match << std::endl;
1568 
1569 
1570  if (!is_match) break;
1571  }
1572 
1573  // Calculate the cardinality
1574  if (level < id.fields ()) ++level;
1575  for (size_type j = 0; j < level; ++j) {
1576  size_type card = indices[j];
1577  for (size_type k = j + 1; k < id.fields(); ++k) {
1578 
1579  const field& f = me[k];
1580 
1581  card *= f.get_indices();
1582  }
1583  result += card;
1584 
1585 // std::cout << " j, indices, card " << j << " "
1586 // << indices[j] << " " << card << std::endl;
1587  }
1588 
1589 
1590  return result;
1591 
1592 }

◆ cardinalityUpTo() [2/2]

Range::size_type Range::cardinalityUpTo ( const int *  id) const
inline

Get the cardinality from the beginning up to the given Identifier expanded into a int array.

Definition at line 703 of file DetectorDescription/Identifier/Identifier/Range.h.

705 {
706  size_type result = 0;
707 
708  const Range& me = *this;
709  size_type level = 0;
710  for (; level < fields (); ++level) {
711 
712  const field& f = me[level];
713 
714  size_type card = f.get_value_index (id[level]);
715 
716  for (size_type k = level + 1; k < fields(); ++k) {
717 
718  const field& f = me[k];
719 
720  card *= f.get_indices();
721  }
722  result += card;
723  }
724  return result;
725 }

◆ clear()

void Range::clear ( )

Modifications.

Definition at line 1327 of file DetectorDescription/Identifier/src/Range.cxx.

1328 {
1329  m_fields.clear ();
1330 }

◆ factory_begin() [1/2]

Range::identifier_factory Range::factory_begin ( )

Identifier_factory management.

Definition at line 1713 of file DetectorDescription/Identifier/src/Range.cxx.

1714 {
1715  const Range& me = *this;
1716 
1717  return (identifier_factory (me));
1718 }

◆ factory_begin() [2/2]

Range::const_identifier_factory Range::factory_begin ( ) const

Definition at line 1721 of file DetectorDescription/Identifier/src/Range.cxx.

1722 {
1723  const Range& me = *this;
1724 
1725  return (const_identifier_factory (me));
1726 }

◆ factory_end() [1/2]

Range::identifier_factory Range::factory_end ( )

Definition at line 1729 of file DetectorDescription/Identifier/src/Range.cxx.

1730 {
1731  static const Range r;
1732  static const identifier_factory factory (r);
1733 
1734  return (factory);
1735 }

◆ factory_end() [2/2]

Range::const_identifier_factory Range::factory_end ( ) const

Definition at line 1738 of file DetectorDescription/Identifier/src/Range.cxx.

1739 {
1740  static const const_identifier_factory factory;
1741 
1742  return (factory);
1743 }

◆ fields()

Range::size_type Range::fields ( ) const
inline

Definition at line 669 of file DetectorDescription/Identifier/Identifier/Range.h.

671 {
672  return (m_fields.size ());
673 }

◆ is_empty()

bool Range::is_empty ( ) const
inline

Definition at line 690 of file DetectorDescription/Identifier/Identifier/Range.h.

692 {
693  if (m_fields.size () == 0) return (true);
694  return (false);
695 }

◆ match()

int Range::match ( const ExpandedIdentifier id) const

Match an identifier.

Definition at line 1333 of file DetectorDescription/Identifier/src/Range.cxx.

1334 {
1335  size_type my_fields = m_fields.size ();
1336  const size_type id_fields = id.fields ();
1337 
1338  // Remove trailing wild cards since they are meaningless.
1339  while ((my_fields > 1) &&
1340  (!m_fields[my_fields-1].is_valued ()))
1341  {
1342  my_fields--;
1343  }
1344 
1345  // Ranges with only wild cards always match.
1346  if (my_fields == 0) return (1);
1347 
1348  // More fields in the range than in the identifier will never match.
1349  //if (my_fields > id_fields) return (0);
1350 
1351  // Allow match for id shorter than range - assume "wildcards" for
1352  // missing id fields
1353  size_type nfields = (my_fields > id_fields) ? id_fields : my_fields;
1354 
1355  // Test fields one by one.
1356  //for (size_type field_number = 0; field_number < my_fields; field_number++)
1357  for (size_type field_number = 0; field_number < nfields; field_number++)
1358  {
1359  const field& f = m_fields[field_number];
1360 
1361  if (!f.match (id[field_number])) return (0);
1362  }
1363 
1364  // All conditions match.
1365  return (1);
1366 }

◆ maximum()

ExpandedIdentifier Range::maximum ( ) const

Definition at line 1410 of file DetectorDescription/Identifier/src/Range.cxx.

1411 {
1412  size_type my_fields = m_fields.size ();
1414 
1415  // Remove all by the last trailing wild card, extra ones are
1416  // meaningless.
1417  while ((my_fields > 1) &&
1418  (!m_fields[my_fields-1].has_maximum ()))
1419  {
1420  my_fields--;
1421  }
1422 
1423  // Ranges with only wild cards: set first field of min to ExpandedIdentifier::max_value
1424  if (my_fields == 0) {
1426  return result; // Don't combine these two lines --- it inhibits RVO.
1427  }
1428 
1429  // Copy fields to result - look for wild cards
1430  for (size_type field_number = 0; field_number < my_fields; field_number++)
1431  {
1432  const field& f = m_fields[field_number];
1433 
1434  if (!f.has_maximum ())
1435  {
1436  // Wilds card
1437  if (field_number == 0)
1438  {
1439  // For 1st field set it to ExpandedIdentifier::max_value
1441  }
1442  else
1443  {
1444  //
1445  // For subsequent fields, set do ++ for field-1
1446  // This requires rebuilding the result
1447  //
1448  ExpandedIdentifier new_result;
1449 
1450  for (size_type new_field_number = 0;
1451  new_field_number < (field_number - 1);
1452  ++new_field_number)
1453  {
1454  new_result << result[new_field_number];
1455  }
1456 
1457  element_type last = result[field_number - 1];
1458 
1459  new_result << ((ExpandedIdentifier::max_value == last) ? last : last + 1);
1460  new_result << 0;
1461 
1462  assert ( result.fields () == new_result.fields () );
1463 
1464  result = new_result;
1465  }
1466  }
1467  else
1468  {
1469  // Normal field
1470  result << f.get_maximum ();
1471  }
1472  }
1473 
1474  return (result);
1475 }

◆ minimum()

ExpandedIdentifier Range::minimum ( ) const

min and max ExpandedIdentifiers
(if they exist, ie.

for fully bounded Ranges) Question : what if the Range has wild cards ??

Definition at line 1371 of file DetectorDescription/Identifier/src/Range.cxx.

1372 {
1373  size_type my_fields = m_fields.size ();
1375 
1376  // Remove trailing wild cards since they are meaningless.
1377  while ((my_fields > 1) &&
1378  (!m_fields[my_fields-1].has_minimum ()))
1379  {
1380  my_fields--;
1381  }
1382 
1383  // Ranges with only wild cards: set first field of min to 0
1384  if (my_fields == 0) {
1385  result << 0;
1386  return result; // Don't combine these two lines --- it inhibits RVO.
1387  }
1388 
1389  // Copy fields to result - look for wild cards
1390  for (size_type field_number = 0; field_number < my_fields; field_number++)
1391  {
1392  const field& f = m_fields[field_number];
1393 
1394  if (!f.has_minimum ())
1395  {
1396  // Wilds card -> set field to 0
1397  result << 0;
1398  }
1399  else
1400  {
1401  // Valued field
1402  result << f.get_minimum ();
1403  }
1404  }
1405 
1406  return (result);
1407 }

◆ operator std::string()

Range::operator std::string ( ) const

Produce a textual representation of the range using the input format.

Definition at line 1661 of file DetectorDescription/Identifier/src/Range.cxx.

1662 {
1663  std::string result;
1664 
1665  size_type my_fields = m_fields.size ();
1666 
1667  // Remove trailing wild cards since they are meaningless.
1668  while ((my_fields > 1) &&
1669  (!m_fields[my_fields-1].is_valued ()))
1670  {
1671  my_fields--;
1672  }
1673 
1674  if (my_fields == 0) return (result);
1675 
1676  // print fields one by one.
1677  for (size_type field_number = 0; field_number < my_fields; field_number++)
1678  {
1679  const field& f = m_fields[field_number];
1680 
1681  if (field_number > 0) result += "/";
1682  result += (std::string) f;
1683  }
1684 
1685  return (result);
1686 }

◆ operator!=()

bool Range::operator!= ( const Range other) const

Definition at line 1705 of file DetectorDescription/Identifier/src/Range.cxx.

1706 {
1707  return (!((*this) == other));
1708 }

◆ operator=() [1/2]

Range & Range::operator= ( const Range other)

Assignment.

Definition at line 1193 of file DetectorDescription/Identifier/src/Range.cxx.

1194 {
1195  if (this != &other)
1196  m_fields = other.m_fields;
1197  return *this;
1198 }

◆ operator=() [2/2]

Range & Range::operator= ( Range &&  other)

Definition at line 1201 of file DetectorDescription/Identifier/src/Range.cxx.

1202 {
1203  if (this != &other)
1204  m_fields = std::move (other.m_fields);
1205  return *this;
1206 }

◆ operator==()

bool Range::operator== ( const Range other) const

Definition at line 1690 of file DetectorDescription/Identifier/src/Range.cxx.

1691 {
1692  if (m_fields.size() != other.m_fields.size()) return false;
1693  field_vector::const_iterator it1 = m_fields.begin();
1694  field_vector::const_iterator it2 = other.m_fields.begin();
1695  field_vector::const_iterator last = m_fields.end();
1696  for (; it1 != last; ++it1, ++it2) {
1697  if ((*it1) != (*it2)) return false;
1698  }
1699  return (true);
1700 }

◆ operator[]()

const Range::field & Range::operator[] ( Range::size_type  index) const
inline

Accessors.

Access the field elements

Definition at line 676 of file DetectorDescription/Identifier/Identifier/Range.h.

678 {
679  if (index >= m_fields.size ())
680  {
681  static const field f;
682 
683  return (f);
684  }
685 
686  return (m_fields[index]);
687 }

◆ overlaps_with()

bool Range::overlaps_with ( const Range other) const

Check if two Ranges overlap.

Check overlap between two Ranges :

As soon as one pair of corresponding fields do not match, the global overlap is empty.

Definition at line 1601 of file DetectorDescription/Identifier/src/Range.cxx.

1602 {
1603  const Range& me = *this;
1604 
1605  if ((fields () == 0) || (other.fields () == 0)) return (false);
1606 
1607  for (size_type i = 0; i < std::min (fields (), other.fields ()); ++i)
1608  {
1609  const field& f1 = me[i];
1610  const field& f2 = other[i];
1611 
1612  if (!f1.overlaps_with (f2)) return (false);
1613  }
1614 
1615  return (true);
1616 }

◆ show() [1/2]

void Range::show ( ) const

Definition at line 1619 of file DetectorDescription/Identifier/src/Range.cxx.

1620 {
1621  show (std::cout);
1622 }

◆ show() [2/2]

void Range::show ( std::ostream &  s) const

Definition at line 1624 of file DetectorDescription/Identifier/src/Range.cxx.

1625 {
1626  const Range& me = *this;
1627 
1628  s << (std::string) me << " (";
1629 
1630  int allbits = 0;
1631 
1632  for (size_type i = 0; i < fields (); ++i)
1633  {
1634  const field& f = me[i];
1635 
1636  if (i > 0) s << "+";
1637 
1638  size_type indices = f.get_indices ();
1639 
1640  int bits = 1;
1641  indices--;
1642  if (indices > 0)
1643  {
1644  bits = 0;
1645  while (indices > 0)
1646  {
1647  indices /= 2;
1648  bits++;
1649  }
1650  }
1651 
1652  allbits += bits;
1653 
1654  s << bits;
1655  }
1656 
1657  s << "=" << allbits << ") ";
1658 }

Member Data Documentation

◆ m_fields

field_vector Range::m_fields
private

The documentation for this class was generated from the following files:
python.CaloScaleNoiseConfig.parser
parser
Definition: CaloScaleNoiseConfig.py:75
beamspotman.r
def r
Definition: beamspotman.py:676
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
ExpandedIdentifier::max_value
@ max_value
Definition: DetectorDescription/Identifier/Identifier/ExpandedIdentifier.h:127
Range::element_type
ExpandedIdentifier::element_type element_type
Definition: DetectorDescription/Identifier/Identifier/Range.h:30
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
fitman.sz
sz
Definition: fitman.py:527
get_generator_info.result
result
Definition: get_generator_info.py:21
max
#define max(a, b)
Definition: cfImp.cxx:41
Range::field::both_bounded
@ both_bounded
Definition: DetectorDescription/Identifier/Identifier/Range.h:48
Range::show
void show() const
Definition: DetectorDescription/Identifier/src/Range.cxx:1619
index
Definition: index.py:1
Trk::indices
std::pair< long int, long int > indices
Definition: AlSymMatBase.h:24
Range::maximum
ExpandedIdentifier maximum() const
Definition: DetectorDescription/Identifier/src/Range.cxx:1410
mergePhysValFiles.start
start
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:14
skel.it
it
Definition: skel.GENtoEVGEN.py:423
ExpandedIdentifier
Definition: DetectorDescription/Identifier/Identifier/ExpandedIdentifier.h:108
athena.value
value
Definition: athena.py:122
ExpandedIdentifier::fields
size_type fields() const
sendEI_SPB.root
root
Definition: sendEI_SPB.py:34
ReadOfcFromCool.field
field
Definition: ReadOfcFromCool.py:48
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
read_hist_ntuple.f2
f2
Definition: read_hist_ntuple.py:20
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
Range::m_fields
field_vector m_fields
Definition: DetectorDescription/Identifier/Identifier/Range.h:344
Range::minimum
ExpandedIdentifier minimum() const
min and max ExpandedIdentifiers (if they exist, ie.
Definition: DetectorDescription/Identifier/src/Range.cxx:1371
lumiFormat.i
int i
Definition: lumiFormat.py:92
DetDescrDictionaryDict::it1
std::vector< HWIdentifier >::iterator it1
Definition: DetDescrDictionaryDict.h:17
ReadOfcFromCool.nfields
nfields
Definition: ReadOfcFromCool.py:114
Range::size_type
ExpandedIdentifier::size_type size_type
Definition: DetectorDescription/Identifier/Identifier/Range.h:31
Range::fields
size_type fields() const
Definition: DetectorDescription/Identifier/Identifier/Range.h:669
min
#define min(a, b)
Definition: cfImp.cxx:40
Range
A Range describes the possible ranges for the field values of an ExpandedIdentifier.
Definition: DetectorDescription/Identifier/Identifier/Range.h:27
InDetDD::other
@ other
Definition: InDetDD_Defs.h:16
makeTransCanvas.text
text
Definition: makeTransCanvas.py:11
Range::cardinality
size_type cardinality() const
Computes a possible cardinality :
Definition: DetectorDescription/Identifier/src/Range.cxx:1477
Range::build
void build(const std::string &text)
Build a range from a textual description.
Definition: DetectorDescription/Identifier/src/Range.cxx:1234
fitman.k
k
Definition: fitman.py:528
read_hist_ntuple.f1
f1
Definition: read_hist_ntuple.py:4
Range::field::enumerated
@ enumerated
Definition: DetectorDescription/Identifier/Identifier/Range.h:49
RangeParser
Definition: DetectorDescription/Identifier/src/Range.cxx:43