9 depth_(0), worldpos_(0)
24 DDPosData * pd((*walker_).current().second);
108 if ((*walker_).nextSibling()) {
112 expn.logp_=curr.first;
113 expn.posd_=curr.second;
122 expn.trans_ = expnBefore.
trans_ + (expnBefore.
rot_ * expn.posd_->trans_);
126 if ( !(expn.posd_->rot()==posdOld->
rot()) ) {
127 expn.rot_ = expnBefore.
rot_ * expn.posd_->rot();
133 expn.trans_ = expn.posd_->trans_;
134 expn.rot_ = expn.posd_->rot();
151 bool depthNotReached(
true);
156 depthNotReached=
false;
159 if (depthNotReached) {
160 if ((*walker_).firstChild()) {
174 newTrans, newRot, 0);
202 bool scopeRoot(
false);
213 if ((*walker_).parent()) {
278 DDGeoHistory::const_iterator it = h.begin();
279 edm::LogInfo(
"DDExpandedView") <<
"--GeoHistory-Dump--[" << std::endl;
281 for (; it != h.end(); ++it) {
282 edm::LogInfo(
"DDExpandedView") <<
" " << i << it->logicalPart() << std::endl;
289 edm::LogInfo(
"DDExpandedView") <<
"]---------" << std::endl;
303 std::vector<const DDsvalues_type * >
result;
315 result.reserve(specs.size());
316 for (; i<specs.size(); ++
i) {
317 const std::pair<DDPartSelection*,DDsvalues_type*>& sp = specs[
i];
328 result.push_back( sp.second );
346 if (specs.empty())
return;
348 for (
size_t i=0;
i<specs.size(); ++
i) {
349 const std::pair<DDPartSelection*,DDsvalues_type*>& sp = specs[
i];
352 merge(merged,*sp.second);
438 for (; i<pos[
j].siblingno(); ++
i) {
479 if (curNode==sc[cur]) {
507 return goTo(&newpos.front(),newpos.size());
512 return goTo(newpos.first,newpos.second);
528 for (
size_t i = 1;
i < sz; ++
i) {
532 for(
int k=0;
k<pos; ++
k) {
566 for (; it < sz; ++it) {
574 for (
int const * it=n; it != n+sz; ++it) {
bool next()
set current node to the next node in the expanded tree
const DDRotationMatrix & rotation() const
The absolute rotation of the current node.
bool parent()
set the current node to the parent node ...
Relative position of a child-volume inside a parent-volume.
DDsvalues_type mergedSpecifics() const
bool descend(const DDGeoHistory &sc)
nav_type copyNumbers() const
return the stack of copy numbers
compares a given geometrical-history whether it corresponds to the given part-selector ...
virtual ~DDExpandedView()
std::ostream & printNavType(std::ostream &, int const *n, size_t sz)
DDGeoHistory history_
std::vector of DDExpandedNode
std::vector< const DDsvalues_type * > specifics() const
User specific data attached to the current node.
represents one node in the DDExpandedView
unsigned int depth_
depth of the scope, 0==unrestricted depth
type of data representation of DDCompactView
std::pair< int const *, size_t > NavRange
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
nav_type navPos() const
return the stack of sibling numbers which indicates the current position in the DDExpandedView ...
const DDGeoHistory & geoHistory() const
The list of ancestors up to the root-node of the current node.
Represents a uniquely identifyable rotation matrix.
const std::vector< std::pair< DDPartSelection *, DDsvalues_type * > > & attachedSpecifics(void) const
static value_type & instance()
void specificsV(std::vector< const DDsvalues_type * > &vc) const
graph< DDLogicalPart, DDPosData * >::value_type value_type
const DDTranslation trans_
DDExpandedView(const DDCompactView &)
Constructs an expanded-view based on the compact-view.
int depth() const
depth of the scope. 0 means unrestricted depth.
unsigned int(* Counter)(align::ID, const TrackerTopology *)
std::vector< std::pair< unsigned int, DDValue > > DDsvalues_type
std::maps an index to a DDValue. The index corresponds to the index assigned to the name of the std::...
const DDRotationMatrix & rot() const
DDCompactView::walker_type * walker_
the tricky walker
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
bool setScope(const DDGeoHistory &hist, int depth=0)
sets the scope of the expanded view
const DDTranslation & translation() const
The absolute translation of the current node.
void clearScope()
clears the scope; the full tree is available, depth=0
std::vector< DDExpandedNode > DDGeoHistory
Geometrical 'path' of the current node up to the root-node.
bool nextB()
broad search order of next()
const DDGeoHistory & scope() const
The scope of the expanded-view.
DDCompactView::walker_type w2_
void reset()
true, if a call to firstChild() would succeed (current node has at least one child) ...
int copyno() const
Copy number associated with the current node.
bool firstChild()
set the current node to the first child ...
bool nextSibling()
set the current node to the next sibling ...
static std::atomic< unsigned int > counter
const DDRotationMatrix rot_
bool goToHistory(const DDGeoHistory &sc)
bool goTo(const nav_type &)
transversed the DDExpandedView according to the given stack of sibling numbers
const DDLogicalPart & logicalPart() const
The logical-part of the current node in the expanded-view.
DDGeoHistory scope_
scope of the expanded view
ROOT::Math::Rotation3D DDRotationMatrix
A DDRotationMatrix is currently implemented with a ROOT Rotation3D.
void mergedSpecificsV(DDsvalues_type &res) const
std::vector< int > nav_type
std::vector of sibling numbers
string root
initialization