seglen = 30 base = [0, 0, 0] focal_length = 200 module = Module(radii=radii, seglen=seglen, base=base, angles=None, focal=focal_length, conic=True) detector = Detector(center=[0, 0, 230]) # focal point is at 230 by default # generate nrays from the source rays = source.generateRays(module.targetFront, nrays) plt.figure() plt.hist([ray.energy for ray in rays], normed=True, label='generated rays') plt.legend() plt.show() # pass rays through module module.passRays(rays, robust=True) # catch rays at detector detector.catchRays(rays) rays_on_detector = len(detector.rays) plot(detector, energy_range=[0, 15]) plt.show() print('Number of rays on Detector ' + str(rays_on_detector)) print('Time total: ' + str((datetime.now() - tstart).seconds) + ' seconds') print('Time per ray (s): ' + str(rays_on_detector / float((datetime.now() - tstart).seconds)))