position.rotation(-(np.pi / 2 - oe2.theta), "z") velocity.rotation(-(np.pi / 2 - oe2.theta), "z") [beam.x, beam.y, beam.z] = [position.x, position.y, position.z] [beam.vx, beam.vy, beam.vz] = [velocity.x, velocity.y, velocity.z] ######## translation ############################################################################################### vector_point = Vector(0, oe2.p, 0) vector_point.rotation(-(np.pi / 2 - oe2.theta), "z") vector_point.rotation(-(np.pi / 2 - oe2.theta), "x") beam.x = beam.x - vector_point.x beam.y = beam.y - vector_point.y beam.z = beam.z - vector_point.z # print("beam.x = %f, beam.y = %f, beam.z = %f" % (np.mean(beam.x), np.mean(beam.y), np.mean(beam.z))) # print("beam.vx = %f, beam.vy = %f, beam.vz = %f" % (np.mean(beam.vx), np.mean(beam.vy), np.mean(beam.vz))) # print("theta angle = %f" %((np.arctan(np.mean(beam.z/beam.y))*180/np.pi))) # print("fi angle = %f" %((np.arctan(np.mean(beam.x/beam.y))*180/np.pi))) ###### beam separation ############################################################################################### beam1 = beam.duplicate() beam2 = beam.duplicate() beam3 = beam.duplicate() beam0 = beam.duplicate() ##### #####################################################################################################################
beam = Beam() beam.set_gaussian_divergence(5 * 1e-5, 0.00025) beam.set_rectangular_spot(xmax=200 * 1e-6, xmin=-200 * 1e-6, zmax=10 * 1e-6, zmin=-10 * 1e-6) beam = Beam(25000) beam.initialize_from_arrays(shadow_beam.getshonecol(1), shadow_beam.getshonecol(3), shadow_beam.getshonecol(2), shadow_beam.getshonecol(4), shadow_beam.getshonecol(5), shadow_beam.getshonecol(6), shadow_beam.getshonecol(10), 0) beam.z = -beam.z + np.sqrt(7.035209**2 - 0.062770**2) beam.x *= 1e-2 beam.y *= 1e-2 beam.plot_yx(0) beam.plot_ypzp(0) wolter_jap.velocity_wolter_japanes(beam) print("velocity: vy = %f, vz = %f" % (np.mean(beam.vy), np.mean(beam.vz))) ################# Beam propagation ################################################################################## wolter_jap.oe[0].intersection_with_optical_element(beam) print(np.mean(beam.x), np.mean(beam.y), np.mean(beam.z)) wolter_jap.oe[0].output_direction_from_optical_element(beam)