|
|
Go to the documentation of this file.
33 std::vector<double>
x,
y;
34 for (
size_t i = 0;
i < myXYPoints->size(); ++
i) {
35 atts = myXYPoints->getAttributeSet(
i);
36 auto xit = atts.find(
"x");
37 if (xit != atts.end())
38 x.emplace_back(
ev.eval(nmspace, xit->second));
39 auto yit = atts.find(
"y");
40 if (yit != atts.end())
41 y.emplace_back(
ev.eval(nmspace, yit->second));
46 std::vector<double>
z, zx, zy, zscale;
48 for (
size_t i = 0;
i < myZXYSection->size(); ++
i) {
49 atts = myZXYSection->getAttributeSet(
i);
50 auto zit = atts.find(
"z");
51 if (zit != atts.end())
52 z.emplace_back(
ev.eval(nmspace, zit->second));
53 auto xit = atts.find(
"x");
54 if (xit != atts.end())
55 zx.emplace_back(
ev.eval(nmspace, xit->second));
56 auto yit = atts.find(
"y");
57 if (yit != atts.end())
58 zy.emplace_back(
ev.eval(nmspace, yit->second));
59 auto sit = atts.find(
"scale");
60 if (sit != atts.end())
61 zscale.emplace_back(std::stod(sit->second));
65 assert(
z.size() == zscale.size());
68 if (
name ==
"ExtrudedPolygon") {
71 std::string msg =
"\nDDLPgonGenerator::processElement was called with incorrect name of solid: " +
name;
78 myZXYSection->clear();
void preProcessElement(const std::string &name, const std::string &nmspace, DDCompactView &cpv) override
Called by loadAttributes AFTER attributes are loaded.
virtual void clear(void)
clear this element's contents.
void throwError(const std::string &keyMessage) const
format std::string for throw an error.
void setReference(const std::string &nmspace, DDCompactView &cpv)
void processElement(const std::string &name, const std::string &nmspace, DDCompactView &cpv) override
Processing the element.
DDLSolid processes Box elements.
The main class for processing parsed elements.
virtual const DDXMLAttribute & getAttributeSet(size_t aIndex=0) const
Get a "row" of attributes, i.e. one attribute set.
ClhepEvaluator & evaluator()
Compact representation of the geometrical detector hierarchy.
DDLPgonGenerator(DDLElementRegistry *myreg)
std::map< std::string, std::string > DDXMLAttribute
static DDSolid extrudedpolygon(const DDName &name, const std::vector< double > &x, const std::vector< double > &y, const std::vector< double > &z, const std::vector< double > &zx, const std::vector< double > &zy, const std::vector< double > &zscale)
const virtual DDName getDDName(const std::string &defaultNS, const std::string &attname=std::string("name"), size_t aIndex=0)
std::shared_ptr< DDXMLElement > getElement(const std::string &name)
THE most important part. Getting the pointer to a given element type.
A DDSolid represents the shape of a part.
DDLElementRegistry * myRegistry_