|
|
Go to the documentation of this file.
12 #include "Math/GenVector/Cartesian3D.h"
13 #include "Math/GenVector/DisplacementVector3D.h"
14 #include "Math/GenVector/Rotation3D.h"
23 w2_(cpv.graph(), cpv.
root()),
27 worldpos_(cpv.worldPosition()),
31 const DDPosData* pd((*walker_).current().second);
66 if ((*walker_).nextSibling()) {
70 expn.logp_ = curr.first;
71 expn.posd_ = curr.second;
79 expn.trans_ = expnBefore.
trans_ + (expnBefore.
rot_ * expn.posd_->trans());
83 if (!(expn.posd_->rot() == posdOld->
rot())) {
84 expn.rot_ = expnBefore.
rot_ * expn.posd_->rot();
87 expn.trans_ = expn.posd_->trans();
88 expn.rot_ = expn.posd_->rot();
103 bool depthNotReached(
true);
108 depthNotReached =
false;
111 if (depthNotReached) {
112 if ((*walker_).firstChild()) {
125 DDExpandedNode expn(curr.first, curr.second, newTrans, newRot, 0);
140 bool scopeRoot(
false);
151 if ((*walker_).parent()) {
199 edm::LogInfo(
"DDExpandedView") <<
"--GeoHistory-Dump--[" << std::endl;
201 for (
const auto& it : history) {
202 edm::LogInfo(
"DDExpandedView") <<
" " <<
i << it.logicalPart() << std::endl;
205 edm::LogInfo(
"DDExpandedView") <<
"]---------" << std::endl;
217 std::vector<const DDsvalues_type*>
result;
224 if (!
specs.empty()) {
226 for (
const auto& it :
specs) {
232 result.emplace_back(it.second);
249 for (
const auto& it :
specs) {
251 merge(merged, *it.second);
322 for (;
i <
pos[
j].siblingno(); ++
i) {
358 if (curNode == sc[cur]) {
362 if (!(
history_.back() == sc[cur])) {
396 for (
size_t i = 1;
i < sz; ++
i) {
400 for (
int k = 0;
k <
pos; ++
k) {
430 for (; it < sz; ++it) {
437 std::ostringstream oss;
439 for (
int const* it =
n; it !=
n + sz; ++it) {
unsigned int depth_
depth of the scope, 0==unrestricted depth
bool nextB()
broad search order of next()
nav_type copyNumbers() const
return the stack of copy numbers
std::string printNavType(int const *n, size_t sz)
std::vector< DDExpandedNode > DDGeoHistory
Geometrical 'path' of the current node up to the root-node.
const DDGeoHistory & scope() const
The scope of the expanded-view.
const DDRotationMatrix & rotation() const
The absolute rotation of the current node.
bool firstChild()
set the current node to the first child ...
std::vector< const DDsvalues_type * > specifics() const
User specific data attached to the current node.
const DDTranslation & trans() const
DDsvalues_type mergedSpecifics() const
void mergedSpecificsV(DDsvalues_type &res) const
std::vector< int > nav_type
std::vector of sibling numbers
const DDRotationMatrix rot_
bool next()
set current node to the next node in the expanded tree
DDGeoHistory scope_
scope of the expanded view
Log< level::Info, false > LogInfo
DDExpandedView(const DDCompactView &)
Constructs an expanded-view based on the compact-view.
bool setScope(const DDGeoHistory &hist, int depth=0)
sets the scope of the expanded view
bool goToHistory(const DDGeoHistory &sc)
std::pair< int const *, size_t > NavRange
int copyno() const
Copy number associated with the current node.
bool nextSibling()
set the current node to the next sibling ...
void specificsV(std::vector< const DDsvalues_type * > &vc) const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Compact representation of the geometrical detector hierarchy.
const std::string & name() const
The name of the logical-part of the current node in the expanded-view.
typename math::Graph< DDLogicalPart, DDPosData * >::value_type value_type
Relative position of a child-volume inside a parent-volume.
bool goTo(const nav_type &)
transversed the DDExpandedView according to the given stack of sibling numbers
void clearScope()
clears the scope; the full tree is available, depth=0
const DDPosData * worldpos_
???
void dump(const DDGeoHistory &history)
A DDLogicalPart aggregates information concerning material, solid and sensitveness ....
virtual ~DDExpandedView()
compares a given geometrical-history whether it corresponds to the given part-selector
void reset()
true, if a call to firstChild() would succeed (current node has at least one child)
const DDGeoHistory & geoHistory() const
The list of ancestors up to the root-node of the current node.
const DDRotationMatrix & rot() const
ROOT::Math::Rotation3D DDRotationMatrix
A DDRotationMatrix is currently implemented with a ROOT Rotation3D.
WalkerType * walker_
the tricky walker
represents one node in the DDExpandedView
DDGeoHistory history_
std::vector of DDExpandedNode
const std::vector< std::pair< const DDPartSelection *, const DDsvalues_type * > > & attachedSpecifics(void) const
nav_type navPos() const
return the stack of sibling numbers which indicates the current position in the DDExpandedView
const DDLogicalPart & logicalPart() const
The logical-part of the current node in the expanded-view.
bool descend(const DDGeoHistory &sc)
const DDTranslation & translation() const
The absolute translation of the current node.
int depth() const
depth of the scope. 0 means unrestricted depth.
def merge(dictlist, TELL=False)
bool parent()
set the current node to the parent node ...
std::vector< std::pair< unsigned int, DDValue > > DDsvalues_type
const DDTranslation trans_