ATLAS Offline Software
Loading...
Searching...
No Matches
gvxyHandler.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
11#include <iostream>
12
13using namespace xercesc;
14
15gvxyHandler::gvxyHandler(const std::string& s,
17 : XMLHandler(s, c)
18{
19}
20
22 xercesc::DOMNode *t)
23{
24 bool res;
25 std::string name=getAttributeAsString(c, t, "name");
26 std::string material=getAttributeAsString(c, t, "material");
27 double dZ=getAttributeAsDouble(c, t, "dZ");
28
29 AGDDGvxy *vol=new AGDDGvxy(name, c.GetVolumeStore(), c.GetSectionStore());
30 vol->SetMaterial(material);
31 vol->SetDz(dZ);
32
33 std::vector<TwoPoint> points;
34 StopLoop(true);
35
36 gvxy_pointHandler* pointHand = dynamic_cast<gvxy_pointHandler*>
37 (c.GetHandlerStore().GetHandler("gvxy_point"));
38 if (!pointHand) std::abort();
39
40 IAGDDParser& parser = *c.GetParser();
41 DOMNode *child;
42 for (child=t->getFirstChild();child!=0;child=child->getNextSibling())
43 {
44 if (child->getNodeType()==DOMNode::ELEMENT_NODE) {
45 parser.elementLoop(c, child);
46 TwoPoint p = pointHand->CurrentTwoPoint();
47 points.push_back(p);
48 }
49 }
50
51 int nPoints=points.size();
52 for (int i=0;i<nPoints;i++)
53 vol->SetPoint(points[i]);
54
55 std::string col=getAttributeAsString(c, t, "color",res);
56 if (res)
57 vol->SetColor(col);
58}
std::pair< std::vector< unsigned int >, bool > res
void SetPoint(TwoPoint p)
Definition AGDDGvxy.h:24
void SetDz(double v)
Definition AGDDGvxy.h:20
void SetMaterial(const std::string &n)
Definition AGDDVolume.h:24
void SetColor(const std::string &c)
Definition AGDDVolume.h:36
void StopLoop(bool)
double getAttributeAsDouble(AGDDController &c, const xercesc::DOMNode *t, const std::string &) const
XMLHandler(const std::string &n, AGDDController &c)
std::string getAttributeAsString(AGDDController &c, const xercesc::DOMNode *t, const std::string &) const
gvxyHandler(const std::string &, AGDDController &c)
virtual void ElementHandle(AGDDController &c, xercesc::DOMNode *t) override