5 from lxml.etree
import Element
6 from lxml.etree
import SubElement
8 svd_layers = [3, 4, 5, 6]
9 svd_nsensors = {3: 2, 4: 3, 5: 4, 6: 5}
10 svd_nladders = {3: 7, 4: 10, 5: 12, 6: 16}
12 misalignment_shifts = [
'du',
'dv',
'dw']
14 misalignment_rotations = [
'dalpha',
'dbeta',
'dgamma']
18 svd_misalignment = Element(
'SVD', name=
'Random misalignment')
22 for i_layer
in svd_layers:
23 layer_id = str(i_layer) +
'.0.0'
24 layer = SubElement(svd_misalignment,
'layer', id=layer_id)
26 for i_ladder
in range(svd_nladders[i_layer]):
27 ladder_id = str(i_layer) +
'.' + str(i_ladder + 1) +
'.0'
28 ladder = SubElement(layer,
'ladder', id=ladder_id)
30 for i_sensor
in range(svd_nsensors[i_layer]):
31 sensor_id = str(i_layer) +
'.' + str(i_ladder + 1) +
'.' + str(i_sensor + 1)
32 sensor = SubElement(ladder,
'sensor', id=sensor_id)
34 for param
in misalignment_shifts:
35 dx = random.normalvariate(0.0, sigma_shifts)
36 p = SubElement(sensor, param, unit=
'um', sigma=str(sigma_shifts))
38 for param
in misalignment_rotations:
39 dx = random.normalvariate(0.0, sigma_rotations)
40 p = SubElement(sensor, param, unit=
'mrad', sigma=str(sigma_rotations))
43 tree = etree.ElementTree(svd_misalignment)
45 tree.write(
'SVDMisalignment.xml', pretty_print=
True, xml_declaration=
True, encoding=
'utf-8', method=
'xml')