56 filename = os.path.basename(sys.argv[1]).
replace(
'.dat',
'.xml')
57 xml =
open(filename,
"w")
58 print(
'<?xml version="1.0" ?>\n', file=xml)
59 print(
'<!DOCTYPE MuCTPiGeometry SYSTEM "MUCTPIGeometry.dtd">\n', file=xml)
60 print(
'<MuCTPiGeometry>', file=xml)
61 for mioct
in sorted(g.keys()):
64 allSectorNames =
set()
65 for sector
in g[mioct].
values():
66 allSlots.update( [e.slot
for e
in sector] )
67 allSectorNames.update( [e.sectorname
for e
in sector] )
68 if len(allSlots) != 1:
69 raise RuntimeError(
"More than one slot defined for MIOCT %i" % mioct)
71 allSectorNames =
sorted(
list( allSectorNames ))
73 print(
' <MIOCT id="%i" slot="%s">' % ( mioct, slot ), file=xml)
74 print(
' <!-- contains sectors %s -->' %
", ".
join(allSectorNames), file=xml)
76 sector =
sorted(g[mioct][connector], key=attrgetter(
'eta',
'phi',
'etacode',
'phicode'))
77 print(
' <Sector connector="%s" name="%s">' % (connector,
", ".
join(
set([
str(e.sectorname)
for e
in sector])) ), file=xml)
78 print(
' <!-- contains %i ROIs -->' % len(sector), file=xml)
79 print(
' <!-- mapping from ROI to coding scheme -->', file=xml)
81 print(
' <ROI eta="%f" phi="%f" etacode="%s" phicode="%s" etamin="%f" etamax="%f" phimin="%f" phimax="%f" roiid="%i"/>' % (e.eta, e.phi, e.etacode, e.phicode, e.etamin, e.etamax, e.phimin, e.phimax, e.roi), file=xml)
82 print(
' </Sector>', file=xml)
85 map(allROIsInMIOCT.extend, g[mioct].
values())
87 print(
' <Decode>', file=xml)
89 for (eta_code,phi_code), rois
in groupby(
sorted(allROIsInMIOCT,key=attrgetter(
'etacode',
'phicode')), key=attrgetter(
'etacode',
'phicode')):
93 print(
' <TopoCell etacode="%s" phicode="%s" eta="%f" phi="%f" ieta="%i" iphi="%i" etamin="%f" etamax="%f" phimin="%f" phimax="%f"/>' % (eta_code, phi_code, eta, phi, ieta, iphi, etamin, etamax, phimin, phimax), file=xml)
94 print(
' </Decode>', file=xml)
95 print(
' </MIOCT>', file=xml)
97 print(
' <PtEncoding>', file=xml)
98 print(
' <PtCodeElement pt="1" code="0" value="4"/>', file=xml)
99 print(
' <PtCodeElement pt="2" code="1" value="6"/>', file=xml)
100 print(
' <PtCodeElement pt="3" code="2" value="10"/>', file=xml)
101 print(
' <PtCodeElement pt="4" code="2" value="11"/>', file=xml)
102 print(
' <PtCodeElement pt="5" code="2" value="15"/>', file=xml)
103 print(
' <PtCodeElement pt="6" code="2" value="20"/>', file=xml)
104 print(
' </PtEncoding>', file=xml)
105 print(
'</MuCTPiGeometry>', file=xml)
107 print(
"Wrote %s" % filename)