diff --git a/TZPGcalc.py b/TZPGcalc.py index 5ce4ff65a202ecb1f8995b1f33ad86580b267855..18acdef07d3b49ee22e8f335a2ece8ff68e20b44 100644 --- a/TZPGcalc.py +++ b/TZPGcalc.py @@ -39,6 +39,9 @@ class TZPGcalc(): plt.close('TZPGcalc') fig, (self.ax_sam, self.ax_det) = plt.subplots(1, 2, num='TZPGcalc', figsize=(6,3)) + + # display scale + self.scale = 1e3 # displayed distances in [mm] self.ax_sam.set_title('Sample plane') self.ax_det.set_title('Detector plane') @@ -91,6 +94,7 @@ class TZPGcalc(): self.detLines = {'module': self.ax_det.add_patch(Rectangle((0, 0), 1, 1, fill=False, facecolor='k')), 'Vfilter': self.ax_det.add_patch(Rectangle((0, 0), 1, 1, facecolor="blue", alpha=0.4)), 'Hfilter': self.ax_det.add_patch(Rectangle((0, 0), 1, 1, facecolor="blue", alpha=0.4)), + 'diamond': self.ax_det.add_patch(Rectangle((-8, -8), 16, 16, facecolor="blue", alpha=0.4, angle=45)) } # 5x5 membranes @@ -109,15 +113,14 @@ class TZPGcalc(): xRight: x position of the right corner yTop: y position of the top corner """ - scale = 1e3 # displayed distances in [mm] xw = np.abs(xLeft - xRight) yw = np.abs(yTop - yBottom) - rect.set_xy((scale*xLeft, scale*yBottom)) - rect.set_height(scale*yw) - rect.set_width(scale*xw) + rect.set_xy((self.scale*xLeft, self.scale*yBottom)) + rect.set_height(self.scale*yw) + rect.set_width(self.scale*xw) def UpdateBeams(self, Beams, Z, conf): """ Update the position and size of the beams. @@ -172,14 +175,15 @@ class TZPGcalc(): """ # x module axis is vertical, y module axis is horizontal # the module 15 is +0.91 mm vertical from the beam and 4.233 mm horizontal from the beam - offset_h = 4.233e-3 #[mm] - offset_v = 0.91e-3 #[mm] + offset_h = 4.233e-3 #[m] + offset_v = 0.91e-3 #[m] - moduleHw = 256*0.236e-3 #[mm] - moduleVw = 128*0.204e-3 #[mm] + moduleHw = 256*0.236e-3 #[m] + moduleVw = 128*0.204e-3 #[m] - filterW = 7e-3 #[mm] - filterL = 160e-3 #[mm] + filterW = 7e-3 #[m] + filterL = 160e-3 #[m] + diamondW = 16e-3 #[m] self.RectUpdate(self.detLines['module'], -moduleHw - offset_h + Xoff, offset_v + Yoff, -offset_h + Xoff, moduleVw + offset_v + Yoff) @@ -187,6 +191,9 @@ class TZPGcalc(): -filterW/2 + Xoff, -filterL/2 + Yoff, filterW/2 + Xoff, filterL/2 + Yoff) self.RectUpdate(self.detLines['Hfilter'], -filterL/2 + Xoff, -filterW/2 + Yoff, filterL/2 + Xoff, filterW/2 + Yoff) + + # moving rotated rectangles is a pain in matplotlib + self.detLines['diamond'].set_xy((self.scale*Xoff, self.scale*(Yoff - diamondW/2*np.sqrt(2)))) def SampleUpdate(self, w, p, Xoff, Yoff, thickness=0.525): """ Draw the sample.