ATLAS Offline Software
Loading...
Searching...
No Matches
intersectionHandler.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
9#include <iostream>
13
14using namespace xercesc;
15
18 : XMLHandler(s, c)
19{
20}
21
23 xercesc::DOMNode *t)
24{
25 AGDDVolumeStore& vs = c.GetVolumeStore();
26 AGDDSectionStore& ss = c.GetSectionStore();
27 AGDDPositionerStore& ps = c.GetPositionerStore();
28
29 bool res;
30 std::string name=getAttributeAsString(c, t, "name");
31 AGDDIntersection *is = new AGDDIntersection(name, vs, ss);
32
33 StopLoop(true);
34
35 DOMNode* child;
36
37 int before=ps.NrOfPositioners();
38
39 IAGDDParser& parser = *c.GetParser();
40 for (child=t->getFirstChild();child!=0;child=child->getNextSibling())
41 {
42 if (child->getNodeType()==DOMNode::ELEMENT_NODE) {
43 parser.elementLoop(c, child);
44 }
45 }
46
47 int after=ps.NrOfPositioners();
48 for (int i=before;i<after;i++)
49 {
50 AGDDPositioner *posit=ps.GetPositioner(i);
51 if (vs.Exist(posit->Volume()))
52 is->AddDaughter(posit);
53 }
54
55 std::string col=getAttributeAsString(c, t, "color",res);
56 if (res)
57 is->SetColor(col);
58}
std::pair< std::vector< unsigned int >, bool > res
static Double_t ss
const std::string & Volume()
bool Exist(std::string)
void SetColor(const std::string &c)
Definition AGDDVolume.h:36
void AddDaughter(AGDDPositioner *v)
void StopLoop(bool)
XMLHandler(const std::string &n, AGDDController &c)
std::string getAttributeAsString(AGDDController &c, const xercesc::DOMNode *t, const std::string &) const
virtual void ElementHandle(AGDDController &c, xercesc::DOMNode *t) override
intersectionHandler(const std::string &, AGDDController &c)