11 #include "CLHEP/Units/GlobalSystemOfUnits.h"
47 std::string
link(std::string & nm, std::string & ns)
49 return ns + nm +
".html";
58 os <<
"numSides=" << p[0] <<
" ";
61 os <<
"startPhi[deg]=" << p[
i]/deg <<
" deltaPhi[deg]" << p[i+1]/deg << std::endl;
63 os <<
"<table><tr><td>z[cm]</td><td>rMin[cm]</td><td>rMax[cm]</td></tr>";
64 while ( i+1 < p.size()) {
65 os <<
"<tr><td>" << p[
i]/cm <<
"</td>";
66 os <<
"<td>" << p[i+1]/cm <<
"</td>";
67 os <<
"<td>" << p[i+2]/cm <<
"</td></tr>" << std::endl;
70 os <<
"</table>" << std::endl;
77 void generateHtml(std::vector<DDLogicalPart> &
v, std::map<DDLogicalPart,int> &
c)
80 std::string
name = v.back().name().name();
81 std::string ns = v.back().name().ns();
83 std::ofstream
file(fname.c_str());
86 file <<
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">" << std::endl;
87 file <<
"<html><head><title>DDD-part:" << ns <<
" " << name <<
"</title>";
89 <<
"name=" << name <<
" namespace=" << ns <<
"</h2>" << std::endl;
90 file <<
"<br>weight = " << cpv.
weight(v.back())/kg <<
"kg<br>" << std::endl;
94 file <<
"<br>" << std::endl;
95 std::string mname = v.back().material().name().name();
96 std::string mns = v.back().material().name().ns();
97 std::string lk = mns +
".html#" + mname;
98 file <<
"material = " <<
"<a href=\"" << lk <<
"\">"
99 << mname <<
"</a>" << std::endl;
100 file <<
"density = " << v.back().material().density()/
g*cm3 <<
"g/cm3<br>" << std::endl;
103 file <<
"<br>Children:<br>" << std::endl;
104 std::map<DDLogicalPart,int>::iterator cit = c.begin();
105 for (; cit != c.end(); ++cit) {
107 nm = cit->first.name().name(); nsp = cit->first.name().ns();
108 file <<
"<a href=\"" <<
link(nm,nsp) <<
"\">"
109 << nm <<
"(" << cit->second <<
")</a> " << std::endl;
112 file <<
"<br><br>Ancestors:<br>";
117 nm = v[
s].name().name();
118 nsp = v[
s].name().ns();
119 file << std::string(2*s,
' ') <<
"<a href=\"" <<
link(nm,nsp) <<
"\">"
120 << nm <<
"</a><br> " << std::endl;
122 file <<
"<br>SpecPars:<br>" << std::endl;
123 file <<
"<table><tbody>" << std::endl;
124 typedef std::vector< std::pair<DDPartSelection*,DDsvalues_type*> > sv_type;
125 sv_type sv = v.back().attachedSpecifics();
126 sv_type::iterator sit = sv.begin();
127 for (; sit != sv.end(); ++sit) {
128 file <<
"<tr>" << std::endl
129 <<
" <td>" << *(sit->first) <<
"</td>" << std::endl;
131 DDsvalues_type::iterator svit = sit->second->begin();
132 for(; svit != sit->second->end(); ++svit) {
133 file << svit->second <<
"<br>" <<std::endl;
135 file <<
"</td>" << std::endl
136 <<
"</tr>" << std::endl;
139 file <<
"</table></tbody>" << std::endl;
141 file <<
"<br></body></html>" <<std::endl;
147 std::map<std::string, std::set<DDMaterial> >::iterator it =
m.begin();
148 for (; it !=
m.end(); ++it) {
149 std::string
fname = it->first +
".html";
150 std::ofstream
file(fname.c_str());
151 file <<
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">" << std::endl;
152 file <<
"<html><head><title>DDD-Materials</title>";
154 std::set<DDMaterial>::iterator mit = it->second.begin();
155 for (; mit != it->second.end(); ++mit) {
156 file <<
"<a name=\"" << mit->name().name() <<
"\">";
157 file << mit->name().name() <<
" d=" << mit->density()/
g*cm3
162 file <<
"</body></html>" << std::endl;
173 static std::vector<DDLogicalPart> history;
174 static std::map<std::string,std::set<DDMaterial> > materials;
177 history.push_back(parent);
179 std::cout << history.size() << std::string(2*count,
' ') <<
" " << parent.
ddname() << std::endl;
182 std::map<DDLogicalPart,int> children;
183 for (; eit != er.second; ++eit) {
189 std::map<DDLogicalPart,int>::iterator cit = children.begin();
190 for (; cit != children.end(); ++cit) {
const std::vector< double > & parameters(void) const
Give the parameters of the solid.
void writeMaterials(std::map< std::string, std::set< DDMaterial > > &m)
void streamSolid(DDSolid s, std::ostream &os)
std::pair< edge_iterator, edge_iterator > edge_range
double weight(const DDLogicalPart &p) const
Prototype version of calculating the weight of a detector component.
const graph_type & graph() const
Provides read-only access to the data structure of the compact-view.
const std::string & ns() const
Returns the namespace.
const N & nodeData(const edge_type &) const
type of data representation of DDCompactView
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
A DDSolid represents the shape of a part.
std::string link(std::string &nm, std::string &ns)
edge_range edges(index_type nodeIndex)
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
DDSolidShape shape(void) const
The type of the solid.
void hierarchy(const DDLogicalPart &parent)
edge_list::iterator edge_iterator
void generateHtml(std::vector< DDLogicalPart > &v, std::map< DDLogicalPart, int > &c)
const DDMaterial & material(void) const
Returns a reference object of the material this LogicalPart is made of.