ATLAS Offline Software
Loading...
Searching...
No Matches
XMLReader.py
Go to the documentation of this file.
1# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
2
3
4import xml.etree.ElementTree as ET
5from functools import cache
6
8 def __init__(self,element):
9 self.element = element
10 self.tag = element.tag
11 self.items = element.items()
12 self.children = element.getchildren()
13 self.readchildren()
14 def __str__(self):
15 s = "<%s%s>" % (" ".join([self.tag] + ['%s="%s"' % x for x in self.items]), "/" if len(self.children)==0 else "")
16 return s
17 def __repr__(self):
18 return self.tag
19
20 def __contains__(self,k):
21 return k in dict(self.items)
22
23 def __getitem__(self,k):
24 return dict(self.items)[k]
25
26 def strippedText(self):
27 return self.element.text.strip()
28
29 def readchildren(self):
30 self.childtags = []
31 self._childtagdict = {}
32 for c in self.children:
33 self._childtagdict.setdefault(c.tag,[]).append(TrigXMLElement(c))
34 if c.tag not in self.childtags: self.childtags += [c.tag]
35 for t in self.childtags:
36 self.__dict__['%ss'%t] = self._childtagdict[t]
37 if len(self._childtagdict[t])==1:
38 self.__dict__['%s'%t] = self._childtagdict[t][0]
39
40
41
43 def __init__(self,filename):
44 self.filename=filename
45 self.read(self.filename)
46
47 def read(self,filename):
48 self.doc = ET.parse(filename)
49 root = TrigXMLElement(self.doc.getroot())
50 self.__dict__[root.tag] = root
51
52 def getFileName(self):
53 return self.filename
54
55
57 def __init__(self,filename):
58 super(MioctGeometryXMLReader,self).__init__(filename)
59
60 def getMIOCTs(self):
61 return self.MuCTPiGeometry.MIOCTs
62
63 @cache
64 def getMIOCT(self, id):
65 for mioct in self.MuCTPiGeometry.MIOCTs:
66 if int(mioct["id"]) == id:
67 return mioct
68
69
70if __name__ == "__main__":
71 from PathResolver import PathResolver
72 xmlfile = PathResolver.FindCalibFile("TrigConfMuctpi/TestMioctGeometry_2016_05_30_CS_2600573263.xml")
73 l1menu = MioctGeometryXMLReader(xmlfile)
static std::string FindCalibFile(const std::string &logical_file_name)