File indexing completed on 2024-04-06 11:56:46
0001 from __future__ import print_function
0002 from builtins import range
0003 mep11angle = 0.002
0004 mep12angle = 0.002
0005 mep13angle = 0.002
0006 mep21angle = 0.00239
0007 mep22angle = 0.00273
0008 mep31angle = 0.00230
0009 mep32angle = 0.00263
0010 mep41angle = 0.00208
0011 mep42angle = 0.002
0012 mem11angle = 0.002
0013 mem12angle = 0.002
0014 mem13angle = 0.002
0015 mem21angle = 0.00261
0016 mem22angle = 0.00303
0017 mem31angle = 0.00237
0018 mem32angle = 0.00288
0019 mem41angle = 0.00221
0020 mem42angle = 0.002
0021
0022 evenDiskToChamberCenter = 35.4
0023 oddDiskToChamberCenter = 10.6
0024
0025 ye1_halfwidth = 30.0
0026 ye2_halfwidth = 30.0
0027 ye3_halfwidth = 11.5
0028
0029 for endcap, station, ring, angle in (1, 1, 1, mep11angle), (1, 1, 4, mep11angle), (1, 1, 2, mep12angle), (1, 1, 3, mep13angle), (1, 2, 1, mep21angle), (1, 2, 2, mep22angle), (1, 3, 1, mep31angle), (1, 3, 2, mep32angle), (1, 4, 1, mep41angle), (1, 4, 2, mep42angle), (2, 1, 1, mem11angle), (2, 1, 4, mem11angle), (2, 1, 2, mem12angle), (2, 1, 3, mem13angle), (2, 2, 1, mem21angle), (2, 2, 2, mem22angle), (2, 3, 1, mem31angle), (2, 3, 2, mem32angle), (2, 4, 1, mem41angle), (2, 4, 2, mem42angle):
0030 if angle != 0.:
0031 numchambers = 36
0032 if station > 1 and ring == 1: numchambers = 18
0033
0034 if station == 1: halfwidth = ye1_halfwidth
0035 elif station in (2, 3): halfwidth = ye2_halfwidth
0036 elif station == 4: halfwidth = ye3_halfwidth
0037
0038 for cham in range(1, numchambers+1):
0039 if cham % 2 == 0: diskToChamberCenter = evenDiskToChamberCenter + halfwidth
0040 else: diskToChamberCenter = oddDiskToChamberCenter + halfwidth
0041 radial_correction = angle * diskToChamberCenter
0042 angle_correction = -angle
0043
0044 if station == 3 or station == 4:
0045 radial_correction *= -1.
0046 angle_correction *= -1.
0047
0048 print("""<operation>
0049 <CSCChamber endcap="%(endcap)d" station="%(station)d" ring="%(ring)d" chamber="%(cham)d" />
0050 <movelocal x="0." y="%(radial_correction)g" z="0." />
0051 </operation>
0052
0053 <operation>
0054 <CSCChamber endcap="%(endcap)d" station="%(station)d" ring="%(ring)d" chamber="%(cham)d" />
0055 <rotatelocal axisx="1." axisy="0." axisz="0." angle="%(angle_correction)g" />
0056 </operation>
0057 """ % vars())