defines subtrees in the expanded-view More...
#include <DDScope.h>
Public Types | |
typedef std::vector< DDGeoHistory > | scope_type |
Public Member Functions | |
bool | addScope (const DDGeoHistory &s) |
Adds a scope. No new scope will be added if s is already contained in one of the subtrees. | |
DDScope (void) | |
empty scope | |
DDScope (const DDGeoHistory &, int depth=0) | |
scope with a single subtree | |
int | depth (void) const |
return the depth to wich the subtrees are restricted | |
const scope_type & | scope (void) const |
returns the scope container | |
void | setDepth (int) |
subtrees of the scope are only transversed down to the given level | |
~DDScope (void) | |
Protected Attributes | |
DDScopeClassification | classify_ |
int | depth_ |
scope_type | subtrees_ |
Friends | |
std::ostream & | operator<< (std::ostream &, const DDScope &) |
defines subtrees in the expanded-view
One scope is defined by a set of DDGeoHistory.
typedef std::vector<DDGeoHistory> DDScope::scope_type |
DDScope::DDScope | ( | void | ) |
DDScope::DDScope | ( | const DDGeoHistory & | h, |
int | depth = 0 |
||
) |
DDScope::~DDScope | ( | void | ) |
Definition at line 44 of file DDScope.cc.
{}
bool DDScope::addScope | ( | const DDGeoHistory & | s | ) |
Adds a scope. No new scope will be added if s is already contained in one of the subtrees.
returns true, if scope has changed, else false.
Definition at line 48 of file DDScope.cc.
References classify_, different_branch, query::result, subtree, subtrees_, and supertree.
{ bool result = false; scope_type::iterator it = subtrees_.begin(); scope_type buf; int supertreeCount = 0; bool diffBranch = false; bool subTree = false; for(; it != subtrees_.end(); ++it ) { dd_scope_class classification = classify_( h, *it ); switch( classification ) { case different_branch: buf.push_back( *it ); diffBranch = true; break; case subtree: buf.push_back( *it ); subTree = true; break; case supertree: ++supertreeCount; if( supertreeCount == 1 ) buf.push_back(h); break; default: break; } } if( diffBranch ) { if( subTree == false ) { buf.push_back(h); } } if( !subtrees_.size()) subtrees_.push_back( h ); else subtrees_ = buf; return result; }
int DDScope::depth | ( | void | ) | const |
return the depth to wich the subtrees are restricted
Definition at line 106 of file DDScope.cc.
References depth_.
Referenced by DDQuery::exec().
{ return depth_; }
const DDScope::scope_type & DDScope::scope | ( | void | ) | const |
returns the scope container
Definition at line 112 of file DDScope.cc.
References subtrees_.
Referenced by DDQuery::exec().
{ return subtrees_; }
void DDScope::setDepth | ( | int | d | ) |
subtrees of the scope are only transversed down to the given level
Definition at line 100 of file DDScope.cc.
References depth_.
{ depth_ = d; }
std::ostream& operator<< | ( | std::ostream & | os, |
const DDScope & | scope | ||
) | [friend] |
Definition at line 117 of file DDScope.cc.
DDScopeClassification DDScope::classify_ [protected] |
Definition at line 58 of file DDScope.h.
Referenced by addScope().
int DDScope::depth_ [protected] |
Definition at line 59 of file DDScope.h.
Referenced by depth(), and setDepth().
scope_type DDScope::subtrees_ [protected] |
Definition at line 57 of file DDScope.h.
Referenced by addScope(), DDScope(), operator<<(), and scope().