Belle II Software  release-06-02-00
plotPhase2VXDAlignment.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 # *****************************************************************************
4 
5 
12 
13 # title : plotVXDALignmentPayloadPhase2.py
14 # description : Produce png file loaded from localdb for phase 2
15 
16 import sys
17 import numpy as np
18 import pandas as pd
19 import matplotlib.pyplot as plt
20 import matplotlib.patches as patches
21 import ROOT
22 from ROOT import Belle2
23 
24 if len(sys.argv) < 2:
25  sys.exit("No input .root file specified!")
26 
27 inputroot = sys.argv[1]
28 file = ROOT.TFile(inputroot, "OPEN")
29 vxd = file.Get("VXDAlignment")
30 
31 fileName = inputroot + '.txt'
32 
33 text_file = open(fileName, "w")
34 text_file.write("layer ladder sensor param value\n")
35 for entry in vxd.getMap():
36  element_parameter = entry.first
37  value = entry.second
38  element = element_parameter.first
39  param = element_parameter.second
40  vxdid = Belle2.VxdID(element)
41  layer = vxdid.getLayerNumber()
42  ladder = vxdid.getLadderNumber()
43  sensor = vxdid.getSensorNumber()
44  if sensor != 0:
45  text_file.write("{0} {1} {2} {3} {4}\n".format(layer, ladder, sensor, param, value))
46  # print("{0} {1} {2} {3} {4}\n".format(layer, ladder, sensor, param, value))
47 
48 for parameter in range(1, 7):
49  text_file.write("{0} {1} {2} {3} {4}\n".format(1, 0, 1, parameter, vxd.get(int(Belle2.VxdID(1, 0, 0, 1)), parameter)))
50  text_file.write("{0} {1} {2} {3} {4}\n".format(1, 0, 2, parameter, vxd.get(int(Belle2.VxdID(1, 0, 0, 2)), parameter)))
51  text_file.write("{0} {1} {2} {3} {4}\n".format(3, 0, 1, parameter, vxd.get(int(Belle2.VxdID(3, 0, 0, 1)), parameter)))
52  text_file.write("{0} {1} {2} {3} {4}\n".format(3, 0, 2, parameter, vxd.get(int(Belle2.VxdID(3, 0, 0, 2)), parameter)))
53  for layer in range(1, 7):
54  text_file.write("{0} {1} {2} {3} {4}\n".format(layer, 1, 0, parameter, vxd.get(int(Belle2.VxdID(layer, 1, 0)), parameter)))
55 
56 text_file.close()
57 
58 beast2_sensors = [
59  (1, 1, 1), (1, 1, 2),
60  (2, 1, 1), (2, 1, 2),
61  (3, 1, 1), (3, 1, 2),
62  (4, 1, 1), (4, 1, 2), (4, 1, 3),
63  (5, 1, 1), (5, 1, 2), (5, 1, 3), (5, 1, 4),
64  (6, 1, 1), (6, 1, 2), (6, 1, 3), (6, 1, 4), (6, 1, 5)
65 ]
66 
67 beast2_ladders = [
68  (1, 1, 0),
69  (2, 1, 0),
70  (3, 1, 0),
71  (4, 1, 0),
72  (5, 1, 0),
73  (6, 1, 0)
74 ]
75 
76 beast2_halfshells = [
77  (1, 0, 1),
78  (3, 0, 1)
79 ]
80 
81 # Read data into a pandas DataFrame
82 print('reading from file ' + fileName)
83 
84 dataframe = pd.read_table(
85  fileName,
86  sep=' ',
87  skipinitialspace=True,
88  skiprows=1,
89  names=[
90  'layer',
91  'ladder',
92  'sensor',
93  'parameter',
94  'value'])
95 
96 scale = np.where(dataframe.parameter < 4, 1.0e4, 1.0e3)
97 for colname in ['value']:
98  dataframe[colname] *= scale
99 
100 font = {'family': 'normal', 'weight': 'bold', 'size': 22}
101 
102 sensorCoordinates = (
103  [0.20, 0.00, 0.60, 0.10],
104  [0.60, 0.00, 0.99, 0.10],
105  [0.20, 0.12, 0.60, 0.22],
106  [0.60, 0.12, 0.99, 0.22],
107  [0.20, 0.25, 0.60, 0.35],
108  [0.60, 0.25, 0.99, 0.35],
109  [0.00, 0.38, 0.30, 0.52],
110  [0.30, 0.38, 0.60, 0.52],
111  [0.60, 0.38, 0.90, 0.52],
112  [0.00, 0.58, 0.25, 0.72],
113  [0.25, 0.58, 0.50, 0.72],
114  [0.50, 0.58, 0.75, 0.72],
115  [0.75, 0.58, 0.99, 0.72],
116  [0.00, 0.78, 0.20, 0.92],
117  [0.20, 0.78, 0.40, 0.92],
118  [0.40, 0.78, 0.60, 0.92],
119  [0.60, 0.78, 0.80, 0.92],
120  [0.80, 0.78, 0.99, 0.92])
121 
122 excludedSensor = [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]
123 excludedLadder = [True, True, True, True, True, True]
124 excludedHalfShell = [True, True]
125 
126 quantity = [r'NAN', r'$u$ = ', r'$v$ = ', r'$w$ = ', r'$\alpha$ = ', r'$\beta$ = ', r'$\gamma$ = ']
127 unit = [r'NAN', ' um', ' um', ' um', ' mrad', ' mrad', ' mrad']
128 line = ['NAN', r'$u$ = NAN', r'$v$ = NAN', r'$w$ = NAN', r'$\alpha$ = NAN', r'$\beta$ = NAN', r'$\gamma$ = NAN']
129 
130 fig = plt.figure(figsize=(8.27, 11.69))
131 ax = fig.add_subplot(111)
132 
133 ax.text(0.00, 0.97, 'Experiment: 1002(Phase II), Run: XXXX, Date: 6/10/2017', color='black', size='14.5', weight='bold')
134 
135 ax.text(0.05, 0.03, ' layer 1 \nladder 1', color='black', size='12', weight='bold')
136 ax.text(0.05, 0.15, ' layer 2 \nladder 1', color='black', size='12', weight='bold')
137 ax.text(0.05, 0.28, ' layer 3 \nladder 1', color='black', size='12', weight='bold')
138 ax.text(0.40, 0.53, ' layer 4 ladder 1', color='black', size='12', weight='bold')
139 ax.text(0.40, 0.73, ' layer 5 ladder 1', color='black', size='12', weight='bold')
140 ax.text(0.40, 0.93, ' layer 6 ladder 1', color='black', size='12', weight='bold')
141 
142 
143 number = 0.0
144 for i in range(0, 18):
145  layer_id, ladder_id, sensor_id = beast2_sensors[i]
146  print('Sensor: ', layer_id, '.', ladder_id, '.', sensor_id)
147  for j in [1, 2, 3, 4, 5, 6]:
148  number = float(dataframe['value'][dataframe['layer'] == layer_id][dataframe['ladder'] == ladder_id]
149  [dataframe['sensor'] == sensor_id][dataframe['parameter'] == j])
150  if (number != 0.0):
151  excludedSensor[i] = False
152  line[j] = quantity[j] + str(round(number, 5)) + unit[j]
153  print(line[j])
154  else:
155  print('Non calculated ladder!!')
156  print('')
157 
158  if excludedSensor[i]:
159  if (i == 6 or i == 9 or i == 13):
160  ax.add_patch(plt.Polygon([[sensorCoordinates[i][0],
161  sensorCoordinates[i][1] - 0.03],
162  [sensorCoordinates[i][2],
163  sensorCoordinates[i][1]],
164  [sensorCoordinates[i][2],
165  sensorCoordinates[i][3]],
166  [sensorCoordinates[i][0],
167  sensorCoordinates[i][3] + 0.03]],
168  facecolor='red',
169  alpha=0.3,
170  edgecolor='black'))
171  ax.add_patch(plt.Polygon([[sensorCoordinates[i][0],
172  sensorCoordinates[i][1] - 0.03],
173  [sensorCoordinates[i][2],
174  sensorCoordinates[i][1]],
175  [sensorCoordinates[i][2],
176  sensorCoordinates[i][3]],
177  [sensorCoordinates[i][0],
178  sensorCoordinates[i][3] + 0.03]],
179  fill=None))
180  else:
181  ax.add_patch(plt.Polygon([[sensorCoordinates[i][0], sensorCoordinates[i][1]],
182  [sensorCoordinates[i][2], sensorCoordinates[i][1]],
183  [sensorCoordinates[i][2], sensorCoordinates[i][3]],
184  [sensorCoordinates[i][0], sensorCoordinates[i][3]]],
185  facecolor='red', alpha=0.3, edgecolor='black'))
186  ax.add_patch(plt.Polygon([[sensorCoordinates[i][0], sensorCoordinates[i][1]],
187  [sensorCoordinates[i][2], sensorCoordinates[i][1]],
188  [sensorCoordinates[i][2], sensorCoordinates[i][3]],
189  [sensorCoordinates[i][0], sensorCoordinates[i][3]]], fill=None))
190 
191  else:
192  if (i == 6 or i == 9 or i == 13):
193  ax.add_patch(plt.Polygon([[sensorCoordinates[i][0],
194  sensorCoordinates[i][1] - 0.03],
195  [sensorCoordinates[i][2],
196  sensorCoordinates[i][1]],
197  [sensorCoordinates[i][2],
198  sensorCoordinates[i][3]],
199  [sensorCoordinates[i][0],
200  sensorCoordinates[i][3] + 0.03]],
201  facecolor='green',
202  alpha=0.1,
203  edgecolor='black'))
204  ax.add_patch(plt.Polygon([[sensorCoordinates[i][0],
205  sensorCoordinates[i][1] - 0.03],
206  [sensorCoordinates[i][2],
207  sensorCoordinates[i][1]],
208  [sensorCoordinates[i][2],
209  sensorCoordinates[i][3]],
210  [sensorCoordinates[i][0],
211  sensorCoordinates[i][3] + 0.03]],
212  fill=None))
213  else:
214  ax.add_patch(plt.Polygon([[sensorCoordinates[i][0],
215  sensorCoordinates[i][1]],
216  [sensorCoordinates[i][2],
217  sensorCoordinates[i][1]],
218  [sensorCoordinates[i][2],
219  sensorCoordinates[i][3]],
220  [sensorCoordinates[i][0],
221  sensorCoordinates[i][3]]],
222  facecolor='green',
223  alpha=0.1,
224  edgecolor='black'))
225  ax.add_patch(plt.Polygon([[sensorCoordinates[i][0], sensorCoordinates[i][1]],
226  [sensorCoordinates[i][2], sensorCoordinates[i][1]],
227  [sensorCoordinates[i][2], sensorCoordinates[i][3]],
228  [sensorCoordinates[i][0], sensorCoordinates[i][3]]], fill=None))
229 
230  if (i < 6):
231  ax.text(
232  sensorCoordinates[i][0] + 0.02,
233  sensorCoordinates[i][1] + 0.080,
234  line[1],
235  color='black',
236  size='8',
237  bbox=dict(
238  facecolor='white',
239  edgecolor='black',
240  boxstyle='round,pad=0.15'))
241  ax.text(
242  sensorCoordinates[i][0] + 0.02,
243  sensorCoordinates[i][1] + 0.045,
244  line[2],
245  color='black',
246  size='8',
247  bbox=dict(
248  facecolor='white',
249  edgecolor='black',
250  boxstyle='round,pad=0.15'))
251  ax.text(
252  sensorCoordinates[i][0] + 0.02,
253  sensorCoordinates[i][1] + 0.010,
254  line[3],
255  color='black',
256  size='8',
257  bbox=dict(
258  facecolor='white',
259  edgecolor='black',
260  boxstyle='round,pad=0.15'))
261  ax.text(
262  sensorCoordinates[i][0] + 0.20,
263  sensorCoordinates[i][1] + 0.078,
264  line[4],
265  color='black',
266  size='8',
267  bbox=dict(
268  facecolor='white',
269  edgecolor='black',
270  boxstyle='round,pad=0.15'))
271  ax.text(
272  sensorCoordinates[i][0] + 0.20,
273  sensorCoordinates[i][1] + 0.045,
274  line[5],
275  color='black',
276  size='8',
277  bbox=dict(
278  facecolor='white',
279  edgecolor='black',
280  boxstyle='round,pad=0.15'))
281  ax.text(
282  sensorCoordinates[i][0] + 0.20,
283  sensorCoordinates[i][1] + 0.012,
284  line[6],
285  color='black',
286  size='8',
287  bbox=dict(
288  facecolor='white',
289  edgecolor='black',
290  boxstyle='round,pad=0.15'))
291  else:
292  ax.text(sensorCoordinates[i][0] + (sensorCoordinates[i][2] - sensorCoordinates[i][0]) / 4 - 0.024,
293  sensorCoordinates[i][1] + 0.121,
294  line[1],
295  color='black',
296  size='8',
297  bbox=dict(facecolor='white',
298  edgecolor='black',
299  boxstyle='round,pad=0.15'))
300  ax.text(sensorCoordinates[i][0] + (sensorCoordinates[i][2] - sensorCoordinates[i][0]) / 4 - 0.024,
301  sensorCoordinates[i][1] + 0.099,
302  line[2],
303  color='black',
304  size='8',
305  bbox=dict(facecolor='white',
306  edgecolor='black',
307  boxstyle='round,pad=0.15'))
308  ax.text(sensorCoordinates[i][0] + (sensorCoordinates[i][2] - sensorCoordinates[i][0]) / 4 - 0.024,
309  sensorCoordinates[i][1] + 0.077,
310  line[3],
311  color='black',
312  size='8',
313  bbox=dict(facecolor='white',
314  edgecolor='black',
315  boxstyle='round,pad=0.15'))
316  ax.text(sensorCoordinates[i][0] + (sensorCoordinates[i][2] - sensorCoordinates[i][0]) / 4 - 0.030,
317  sensorCoordinates[i][1] + 0.055,
318  line[4],
319  color='black',
320  size='8',
321  bbox=dict(facecolor='white',
322  edgecolor='black',
323  boxstyle='round,pad=0.15'))
324  ax.text(sensorCoordinates[i][0] + (sensorCoordinates[i][2] - sensorCoordinates[i][0]) / 4 - 0.030,
325  sensorCoordinates[i][1] + 0.033,
326  line[5],
327  color='black',
328  size='8',
329  bbox=dict(facecolor='white',
330  edgecolor='black',
331  boxstyle='round,pad=0.15'))
332  ax.text(sensorCoordinates[i][0] + (sensorCoordinates[i][2] - sensorCoordinates[i][0]) / 4 - 0.030,
333  sensorCoordinates[i][1] + 0.011,
334  line[6],
335  color='black',
336  size='8',
337  bbox=dict(facecolor='white',
338  edgecolor='black',
339  boxstyle='round,pad=0.15'))
340 
341  line = ['NAN', r'$u$ = NAN', r'$v$ = NAN', r'$w$ = NAN', r'$\alpha$ = NAN', r'$\beta$ = NAN', r'$\gamma$ = NAN']
342 
343 ax.axis('off')
344 fig.savefig('outputSensors.png', dpi=300)
345 
346 """
347 fig = plt.figure(figsize=(8.27, 11.69))
348 ax = fig.add_subplot(111)
349 """
350 
351 ax.cla()
352 ax.text(0.00, 0.97, 'Experiment: 1002(Phase II), Run: XXXX, Date: 6/10/2017', color='black', size='14.5', weight='bold')
353 
354 ax.text(0.00, 0.325, ' layer 1 ladder 1', color='black', size='12', weight='bold')
355 ax.text(0.00, 0.405, ' layer 2 ladder 1', color='black', size='12', weight='bold')
356 ax.text(0.00, 0.485, ' layer 3 ladder 1', color='black', size='12', weight='bold')
357 ax.text(0.00, 0.59, ' layer 4 ladder 1', color='black', size='12', weight='bold')
358 ax.text(0.00, 0.73, ' layer 5 ladder 1', color='black', size='12', weight='bold')
359 ax.text(0.00, 0.88, ' layer 6 ladder 1', color='black', size='12', weight='bold')
360 
361 sensorCoordinates = (
362  [0.20, 0.30, 0.60, 0.36],
363  [0.60, 0.30, 0.99, 0.36],
364  [0.20, 0.38, 0.60, 0.44],
365  [0.60, 0.38, 0.99, 0.44],
366  [0.20, 0.46, 0.60, 0.52],
367  [0.60, 0.46, 0.99, 0.52],
368  [0.00, 0.56, 0.30, 0.63],
369  [0.30, 0.56, 0.60, 0.63],
370  [0.60, 0.56, 0.90, 0.63],
371  [0.00, 0.70, 0.25, 0.78],
372  [0.25, 0.70, 0.50, 0.78],
373  [0.50, 0.70, 0.75, 0.78],
374  [0.75, 0.70, 0.99, 0.78],
375  [0.00, 0.85, 0.20, 0.92],
376  [0.20, 0.85, 0.40, 0.92],
377  [0.40, 0.85, 0.60, 0.92],
378  [0.60, 0.85, 0.80, 0.92],
379  [0.80, 0.85, 0.99, 0.92])
380 
381 number = 0.0
382 for i in range(0, 6):
383  layer_id, ladder_id, sensor_id = beast2_ladders[i]
384  for j in [1, 2, 3, 4, 5, 6]:
385  number = float(dataframe['value'][dataframe['layer'] == layer_id][dataframe['ladder'] == ladder_id]
386  [dataframe['sensor'] == sensor_id][dataframe['parameter'] == j])
387  if (number != 0.0):
388  excludedLadder[i] = False
389 
390 for i in range(0, 18):
391  excludedSensor[i] = False
392  if i in range(0, 2):
393  if excludedLadder[0]:
394  excludedSensor[i] = True
395  if i in range(2, 4):
396  if excludedLadder[1]:
397  excludedSensor[i] = True
398  if i in range(4, 6):
399  if excludedLadder[2]:
400  excludedSensor[i] = True
401  if i in range(6, 9):
402  if excludedLadder[3]:
403  excludedSensor[i] = True
404  if i in range(9, 13):
405  if excludedLadder[4]:
406  excludedSensor[i] = True
407  if i in range(13, 18):
408  if excludedLadder[5]:
409  excludedSensor[i] = True
410 
411  if excludedSensor[i]:
412  if (i == 6 or i == 9 or i == 13):
413  ax.add_patch(plt.Polygon([[sensorCoordinates[i][0],
414  sensorCoordinates[i][1] - 0.03],
415  [sensorCoordinates[i][2],
416  sensorCoordinates[i][1]],
417  [sensorCoordinates[i][2],
418  sensorCoordinates[i][3]],
419  [sensorCoordinates[i][0],
420  sensorCoordinates[i][3] + 0.03]],
421  facecolor='red',
422  alpha=0.3,
423  edgecolor='black'))
424  ax.add_patch(plt.Polygon([[sensorCoordinates[i][0],
425  sensorCoordinates[i][1] - 0.03],
426  [sensorCoordinates[i][2],
427  sensorCoordinates[i][1]],
428  [sensorCoordinates[i][2],
429  sensorCoordinates[i][3]],
430  [sensorCoordinates[i][0],
431  sensorCoordinates[i][3] + 0.03]],
432  fill=None))
433  else:
434  ax.add_patch(plt.Polygon([[sensorCoordinates[i][0], sensorCoordinates[i][1]],
435  [sensorCoordinates[i][2], sensorCoordinates[i][1]],
436  [sensorCoordinates[i][2], sensorCoordinates[i][3]],
437  [sensorCoordinates[i][0], sensorCoordinates[i][3]]],
438  facecolor='red', alpha=0.3, edgecolor='black'))
439  ax.add_patch(plt.Polygon([[sensorCoordinates[i][0], sensorCoordinates[i][1]],
440  [sensorCoordinates[i][2], sensorCoordinates[i][1]],
441  [sensorCoordinates[i][2], sensorCoordinates[i][3]],
442  [sensorCoordinates[i][0], sensorCoordinates[i][3]]], fill=None))
443 
444  else:
445  if (i == 6 or i == 9 or i == 13):
446  ax.add_patch(plt.Polygon([[sensorCoordinates[i][0],
447  sensorCoordinates[i][1] - 0.03],
448  [sensorCoordinates[i][2],
449  sensorCoordinates[i][1]],
450  [sensorCoordinates[i][2],
451  sensorCoordinates[i][3]],
452  [sensorCoordinates[i][0],
453  sensorCoordinates[i][3] + 0.03]],
454  facecolor='green',
455  alpha=0.1,
456  edgecolor='green'))
457 
458  else:
459 
460  ax.add_patch(plt.Polygon([[sensorCoordinates[i][0],
461  sensorCoordinates[i][1]],
462  [sensorCoordinates[i][2],
463  sensorCoordinates[i][1]],
464  [sensorCoordinates[i][2],
465  sensorCoordinates[i][3]],
466  [sensorCoordinates[i][0],
467  sensorCoordinates[i][3]]],
468  facecolor='green',
469  alpha=0.1,
470  edgecolor='green'))
471 
472 ladderCoordinates = (
473  [0.30, 0.325],
474  [0.30, 0.405],
475  [0.30, 0.485],
476  [0.30, 0.59],
477  [0.30, 0.74],
478  [0.30, 0.88]
479 )
480 
481 number = 0.0
482 for i in range(0, 6):
483  layer_id, ladder_id, sensor_id = beast2_ladders[i]
484  print('Sensor: ', layer_id, '.', ladder_id, '.', sensor_id)
485  for j in [1, 2, 3, 4, 5, 6]:
486  number = float(dataframe['value'][dataframe['layer'] == layer_id][dataframe['ladder'] == ladder_id]
487  [dataframe['sensor'] == sensor_id][dataframe['parameter'] == j])
488  if (number != 0.0):
489  line[j] = quantity[j] + str(round(number, 5)) + unit[j]
490  print(line[j])
491  else:
492  print('Non calculated ladder!!')
493  print('')
494 
495  if not excludedLadder[i]:
496  ax.text(
497  ladderCoordinates[i][0] + 0.000,
498  ladderCoordinates[i][1] + 0.011,
499  line[1],
500  color='black',
501  size='8',
502  bbox=dict(
503  facecolor='white',
504  edgecolor='black',
505  boxstyle='round,pad=0.15'))
506 
507  ax.text(
508  ladderCoordinates[i][0] + 0.200,
509  ladderCoordinates[i][1] + 0.011,
510  line[2],
511  color='black',
512  size='8',
513  bbox=dict(
514  facecolor='white',
515  edgecolor='black',
516  boxstyle='round,pad=0.15'))
517  ax.text(
518  ladderCoordinates[i][0] + 0.400,
519  ladderCoordinates[i][1] + 0.011,
520  line[3],
521  color='black',
522  size='8',
523  bbox=dict(
524  facecolor='white',
525  edgecolor='black',
526  boxstyle='round,pad=0.15'))
527  ax.text(
528  ladderCoordinates[i][0] + 0.000,
529  ladderCoordinates[i][1] - 0.011,
530  line[4],
531  color='black',
532  size='8',
533  bbox=dict(
534  facecolor='white',
535  edgecolor='black',
536  boxstyle='round,pad=0.15'))
537  ax.text(
538  ladderCoordinates[i][0] + 0.200,
539  ladderCoordinates[i][1] - 0.011,
540  line[5],
541  color='black',
542  size='8',
543  bbox=dict(
544  facecolor='white',
545  edgecolor='black',
546  boxstyle='round,pad=0.15'))
547  ax.text(
548  ladderCoordinates[i][0] + 0.400,
549  ladderCoordinates[i][1] - 0.011,
550  line[6],
551  color='black',
552  size='8',
553  bbox=dict(
554  facecolor='white',
555  edgecolor='black',
556  boxstyle='round,pad=0.15'))
557  line = ['NAN', r'$u$ = NAN', r'$v$ = NAN', r'$w$ = NAN', r'$\alpha$ = NAN', r'$\beta$ = NAN', r'$\gamma$ = NAN']
558 
559 ax.text(0.10, 0.25, ' PXD half shell', color='black', size='12', weight='bold')
560 ax.text(0.70, 0.25, ' SVD half shell', color='black', size='12', weight='bold')
561 
562 number = 0.0
563 for i in range(0, 2):
564  layer_id, ladder_id, sensor_id = beast2_halfshells[i]
565  print('Sensor: ', layer_id, '.', ladder_id, '.', sensor_id)
566  for j in [1, 2, 3, 4, 5, 6]:
567  number = float(dataframe['value'][dataframe['layer'] == layer_id][dataframe['ladder'] == ladder_id]
568  [dataframe['sensor'] == sensor_id][dataframe['parameter'] == j])
569  if (number != 0.0):
570  excludedHalfShell[i] = False
571  line[j] = quantity[j] + str(round(number, 5)) + unit[j]
572  print(line[j])
573  else:
574  print('Non calculated ladder!!')
575  print('')
576 
577  if excludedHalfShell[i]:
578  ax.add_patch(patches.Arc(xy=[0.45, 0.15], width=0.10, height=0.07, angle=.0,
579  theta1=-90.0, theta2=90.0, color='red', alpha=0.1, linewidth=35.0))
580  ax.add_patch(patches.Arc(xy=[0.45, 0.15], width=0.28, height=0.20, angle=.0,
581  theta1=-90.0, theta2=90.0, color='red', alpha=0.1, linewidth=40.0))
582  else:
583  ax.add_patch(patches.Arc(xy=[0.45, 0.15], width=0.10, height=0.07, angle=.0,
584  theta1=-90.0, theta2=90.0, color='green', alpha=0.1, linewidth=35.0))
585  ax.add_patch(patches.Arc(xy=[0.45, 0.15], width=0.28, height=0.20, angle=.0,
586  theta1=-90.0, theta2=90.0, color='green', alpha=0.1, linewidth=40.0))
587 
588  ax.text(0.12 + 0.6 * i, 0.22,
589  line[1],
590  color='black',
591  size='8',
592  bbox=dict(
593  facecolor='white',
594  edgecolor='black',
595  boxstyle='round,pad=0.15'))
596 
597  ax.text(0.12 + 0.6 * i, 0.19,
598  line[2],
599  color='black',
600  size='8',
601  bbox=dict(
602  facecolor='white',
603  edgecolor='black',
604  boxstyle='round,pad=0.15'))
605  ax.text(0.12 + 0.6 * i, 0.16,
606  line[3],
607  color='black',
608  size='8',
609  bbox=dict(
610  facecolor='white',
611  edgecolor='black',
612  boxstyle='round,pad=0.15'))
613  ax.text(0.12 + 0.6 * i, 0.13,
614  line[4],
615  color='black',
616  size='8',
617  bbox=dict(
618  facecolor='white',
619  edgecolor='black',
620  boxstyle='round,pad=0.15'))
621  ax.text(0.12 + 0.6 * i, 0.10,
622  line[5],
623  color='black',
624  size='8',
625  bbox=dict(
626  facecolor='white',
627  edgecolor='black',
628  boxstyle='round,pad=0.15'))
629  ax.text(0.12 + 0.6 * i, 0.07,
630  line[6],
631  color='black',
632  size='8',
633  bbox=dict(
634  facecolor='white',
635  edgecolor='black',
636  boxstyle='round,pad=0.15'))
637  line = ['NAN', r'$u$ = NAN', r'$v$ = NAN', r'$w$ = NAN', r'$\alpha$ = NAN', r'$\beta$ = NAN', r'$\gamma$ = NAN']
638 
639 ax.axis('off')
640 fig.savefig('outputLadders.png', dpi=300)
641 # plt.show()
Class to uniquely identify a any structure of the PXD and SVD.
Definition: VxdID.h:33