ATLAS Offline Software
Loading...
Searching...
No Matches
subtractionHandler.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// std::cout<<"Creating handler for composition"<<std::endl;
21}
22
24 xercesc::DOMNode *t)
25{
26 AGDDVolumeStore& vs = c.GetVolumeStore();
27 AGDDSectionStore& ss = c.GetSectionStore();
28 AGDDPositionerStore& ps = c.GetPositionerStore();
29
30 bool res;
31 std::string name=getAttributeAsString(c, t, "name",res);
32 AGDDSubtraction *s=new AGDDSubtraction(name, vs, ss);
33
34 StopLoop(true);
35
36 DOMNode* child;
37
38 int before=ps.NrOfPositioners();
39
40 IAGDDParser& parser = *c.GetParser();
41 for (child=t->getFirstChild();child!=0;child=child->getNextSibling())
42 {
43 if (child->getNodeType()==DOMNode::ELEMENT_NODE) {
44 parser.elementLoop(c, child);
45 }
46 }
47
48 int after=ps.NrOfPositioners();
49 for (int i=before;i<after;i++)
50 {
51 AGDDPositioner *posit=ps.GetPositioner(i);
52 if (vs.Exist(posit->Volume()))
53 s->AddDaughter(posit);
54 }
55
56 std::string col=getAttributeAsString(c, t, "color",res);
57 if (res)
58 s->SetColor(col);
59}
std::pair< std::vector< unsigned int >, bool > res
static Double_t ss
const std::string & Volume()
bool Exist(std::string)
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
subtractionHandler(const std::string &, AGDDController &c)