25 : fromDDD_(p.getParameter<bool>(
"fromDDD"))
32 boost::shared_ptr<std::vector<GeometricDetExtra> >
34 boost::shared_ptr<std::vector<GeometricDetExtra> > gde (
new std::vector<GeometricDetExtra>);
46 putOne((*gde), tracker, ev, 0);
47 std::vector<const GeometricDet*> tc = tracker->
components();
48 std::vector<const GeometricDet*>::const_iterator git = tc.begin();
49 std::vector<const GeometricDet*>::const_iterator egit = tc.end();
54 for (; git!= egit; ++git) {
55 ev.
goTo((*git)->navType());
56 putOne((*gde), *git, ev, lev);
57 std::vector<const GeometricDet*> inone = (*git)->components();
59 if ( inone.size() == 0 ) ++count;
60 std::vector<const GeometricDet*>::const_iterator git2 = inone.begin();
61 std::vector<const GeometricDet*>::const_iterator egit2 = inone.end();
63 for (; git2 != egit2; ++git2) {
64 ev.
goTo((*git2)->navType());
65 putOne((*gde), *git2, ev, lev);
66 std::vector<const GeometricDet*> intwo= (*git2)->components();
68 if ( intwo.size() == 0 ) ++count;
69 std::vector<const GeometricDet*>::const_iterator git3 = intwo.begin();
70 std::vector<const GeometricDet*>::const_iterator egit3 = intwo.end();
72 for (; git3 != egit3; ++git3) {
73 ev.
goTo((*git3)->navType());
74 putOne((*gde), *git3, ev, lev);
75 std::vector<const GeometricDet*> inthree= (*git3)->components();
77 if ( inthree.size() == 0 ) ++count;
78 std::vector<const GeometricDet*>::const_iterator git4 = inthree.begin();
79 std::vector<const GeometricDet*>::const_iterator egit4 = inthree.end();
81 for (; git4 != egit4; ++git4) {
82 ev.
goTo((*git4)->navType());
83 putOne((*gde), *git4, ev, lev);
84 std::vector<const GeometricDet*> infour= (*git4)->components();
86 if ( infour.size() == 0 ) ++count;
87 std::vector<const GeometricDet*>::const_iterator git5 = infour.begin();
88 std::vector<const GeometricDet*>::const_iterator egit5 = infour.end();
90 for (; git5 != egit5; ++git5) {
91 ev.
goTo((*git5)->navType());
92 putOne((*gde), *git5, ev, lev);
93 std::vector<const GeometricDet*> infive= (*git5)->components();
95 if ( infive.size() == 0 ) ++count;
96 std::vector<const GeometricDet*>::const_iterator git6 = infive.begin();
97 std::vector<const GeometricDet*>::const_iterator egit6 = infive.end();
99 for (; git6 != egit6; ++git6) {
100 ev.
goTo((*git6)->navType());
101 putOne((*gde), *git6, ev, lev);
102 std::vector<const GeometricDet*> insix= (*git6)->components();
104 if ( insix.size() == 0 ){
107 edm::LogError(
"GeometricDetExtra") <<
"Hierarchy has exceeded hard-coded level 6 for Tracker " ;
124 std::map<uint32_t, const GeometricDet*> helperMap;
126 helperMap[gd->geographicalID()] =
tracker;
127 std::vector<const GeometricDet*> tc = tracker->
components();
128 std::vector<const GeometricDet*>::const_iterator git = tc.begin();
129 std::vector<const GeometricDet*>::const_iterator egit = tc.end();
130 for (; git!= egit; ++git) {
131 helperMap[(*git)->geographicalID()] = (*git);
132 std::vector<const GeometricDet*> inone = (*git)->components();
133 std::vector<const GeometricDet*>::const_iterator git2 = inone.begin();
134 std::vector<const GeometricDet*>::const_iterator egit2 = inone.end();
135 for (; git2 != egit2; ++git2) {
136 helperMap[(*git2)->geographicalID()] = (*git2);
137 std::vector<const GeometricDet*> intwo= (*git2)->components();
138 std::vector<const GeometricDet*>::const_iterator git3 = intwo.begin();
139 std::vector<const GeometricDet*>::const_iterator egit3 = intwo.end();
140 for (; git3 != egit3; ++git3) {
141 helperMap[(*git3)->geographicalID()] = (*git3);
142 std::vector<const GeometricDet*> inthree= (*git3)->components();
143 std::vector<const GeometricDet*>::const_iterator git4 = inthree.begin();
144 std::vector<const GeometricDet*>::const_iterator egit4 = inthree.end();
145 for (; git4 != egit4; ++git4) {
146 helperMap[(*git4)->geographicalID()] = (*git4);
147 std::vector<const GeometricDet*> infour= (*git4)->components();
148 std::vector<const GeometricDet*>::const_iterator git5 = infour.begin();
149 std::vector<const GeometricDet*>::const_iterator egit5 = infour.end();
150 for (; git5 != egit5; ++git5) {
151 helperMap[(*git5)->geographicalID()] = (*git5);
152 std::vector<const GeometricDet*> infive= (*git5)->components();
153 std::vector<const GeometricDet*>::const_iterator git6 = infive.begin();
154 std::vector<const GeometricDet*>::const_iterator egit6 = infive.end();
155 for (; git6 != egit6; ++git6) {
156 helperMap[(*git6)->geographicalID()] = (*git6);
157 if ( (*git6)->components().size() != 0 ){
158 edm::LogError(
"GeometricDetExtra") <<
"Hierarchy has exceeded hard-coded level of 6 for Tracker " ;
167 const std::vector<PGeometricDetExtra::Item>& pgdes = pgde->pgdes_;
168 gde->reserve(pgdes.size());
169 std::vector<DDExpandedNode> evs;
171 for (
unsigned int i = 0;
i < pgdes.size(); ++
i) {
173 gde->push_back(
GeometricDetExtra(helperMap[pgdes[
i]._geographicalId], pgdes[
i]._geographicalId, evs
174 , pgdes[
i]._volume, pgdes[
i]._density, pgdes[
i]._weight, pgdes[
i]._copy
175 , pgdes[
i]._material, nm));
178 return boost::shared_ptr<std::vector<GeometricDetExtra> >(gde);
182 std::string matname = ((ev.
logicalPart()).material()).
name().fullname();
nav_type const & navType() const
void setWhatProduced(T *iThis, const es::Label &iLabel=es::Label())
const DDGeoHistory & geoHistory() const
The list of ancestors up to the root-node of the current node.
const DepRecordT & getRecord() const
void get(HolderT &iHolder) const
int copyno() const
Copy number associated with the current node.
DetId geographicalId() const
#define DEFINE_FWK_EVENTSETUP_MODULE(type)
ConstGeometricDetContainer deepComponents() const
GeometricDetContainer & components()
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.
Provides an exploded view of the detector (tree-view)