Definition at line 709 of file general_optics_example.py. 00709 : 00710 inch=0.0254 00711 lambda0=1.054e-6 00712 spitfire_exit=Numeric.array((2*inch, 5*inch, -0.65)) 00713 compressor_entrance=Numeric.array((45.5*inch, 2.5*inch, 46.5*inch)) 00714 00715 optics={} 00716 BLUELINE='bl' 00717 SPLIT='split' 00718 START='start' 00719 COMP='compressor' 00720 QUAD='quadrupler' 00721 IR='ir' 00722 IR_COMP='ir compressor' 00723 BE_TURN='be_turn' 00724 IZ_SCREEN='iz' 00725 00726 optics[START]=null_optic("start", spitfire_exit) 00727 optics[BLUELINE]=blueline=blue_through_ylf() 00728 optics[SPLIT]=split1=reflector("splitter1", center=(2*inch, 5*inch, 3*inch)) 00729 optics[IR]=irline=ir_line() 00730 00731 comp=optics[COMP]=blue_compressor(38.5, 1.28, lambda0, center=compressor_entrance, angle=270) 00732 mainbeam=beam( spitfire_exit, qtens(lambda0, spitfire.q0), lambda0) 00733 #print mainbeam.q 00734 split1.set_direction(spitfire_exit, blueline) 00735 blueline.set_entrance_direction(split1) 00736 blueline.set_exit_direction(comp) 00737 comp.rotate_to_axis(blueline) 00738 q=optics[QUAD]=quadrupler(center=(40*inch, 2.5*inch, 34.5*inch), from_optic=comp[blue_compressor.TM1]) 00739 comp.set_exit_direction(q) 00740 q.set_entrance_direction(comp) 00741 blue_sys=composite_optic("blue_sys", optics, [START, SPLIT, BLUELINE, COMP, QUAD], (0,0,0), (0,0,0), 0) 00742 irline.set_entrance_direction(spitfire_exit) 00743 00744 #align compressor table to output of main IR line 00745 ir_sys=composite_optic("ir_sys", optics, [START, IR], (0,0,0), (0,0,0), 0).clone() 00746 pointer=trace_path(ir_sys, mainbeam.clone())[-1] 00747 pointer.free_drift(1.0) 00748 optics[IR_COMP]=ircomp=ir_compressor(center=pointer.x0, angle=math.atan(0.2)/deg) 00749 ircomp.set_entrance_direction(irline) 00750 00751 #now, align IZ 00752 ir_sys=composite_optic("ir_sys", optics, [START, IR, IR_COMP], (0,0,0), (0,0,0), 0).clone() 00753 pointer=trace_path(ir_sys, mainbeam.clone())[-1] 00754 pointer.free_drift(1.0) 00755 bemir=optics[BE_TURN]=reflector("be turn mirror", center=pointer.x0, angle=45.0) 00756 bemir.transport_to_here(pointer).transform(pointer) 00757 pointer.free_drift(0.1) 00758 dz=pointer.q.next_waist() 00759 pointer.free_drift(dz) 00760 optics[IZ_SCREEN]=null_optic("IZ", pointer.x0) 00761 ir_sys=composite_optic("ir_sys", optics, [START, IR, IR_COMP, BE_TURN, IZ_SCREEN], (0,0,0), (0,0,0), 0) 00762 00763 whole_table=composite_optic("whole table", optics, [START, SPLIT, BLUELINE, COMP, QUAD, IR, IR_COMP, BE_TURN, IZ_SCREEN], (0,0,0), (0,0,0), 0) 00764 00765 00766 ir_trace=trace_path(ir_sys, mainbeam.clone()) 00767 ir_trace.color=graphite.red 00768 blue_trace=trace_path(blue_sys, mainbeam.clone()) 00769 blue_trace.color=graphite.blue 00770 00771 if table_layout: 00772 g=draw_everything({"sys":whole_table}, ir_trace, (-.25,5), (0,2.5), three_d=0) 00773 draw_trace(g, blue_trace) 00774 00775 #g=draw_everything({"sys":sys}, trace, (0.5,1.1), (0.8,1.1), three_d=0) 00776 #g=draw_everything({"sys":sys}, trace, (0.7,1.3), (0.9,1.2), three_d=0) 00777 if show_qd: 00778 graphite.genOutput(g,'QD',canvasname="Compressor layout", size=(900,500)) 00779 if show_pdf: 00780 graphite.genOutput(g,'PDF',canvasname="Tablelayout", size=(900,500)) 00781 #print trace[0] 00782 plotq(blue_trace) 00783 00784 if 0: 00785 glabel=ircomp.mark_label(ircomp.INPUT) 00786 m=ir_trace[(glabel,0)] 00787 print "\n\n**start**\n\n" 00788 print m.incoming_direction, m.direction() 00789 print m.incoming_q 00790 print m.incoming_q.qi_moments()[1:3] 00791 print m.incoming_q.q_moments()[1:3] 00792 print m.incoming_q.qit, "\n" 00793 print m.localize_transform_tensor 00794 print m.footprint_q 00795 print m.footprint_q.qi_moments()[1:3] 00796 print m.footprint_q.q_moments()[1:3] 00797 print m.footprint_q.qit, "\n" 00798 print m.globalize_transform_tensor 00799 print m.q 00800 print m.q.qi_moments()[1:3] 00801 print m.q.q_moments()[1:3] 00802 print m.q.qit, "\n" 00803 00804 glabel=ircomp.mark_label(ircomp.INPUT) 00805 #endpoint=ir_trace[(glabel,0)] #get first hit on optic <glabel> 00806 endpoint=ir_trace[-1] 00807 q=endpoint.q 00808 00809 t, qx0, qy0=q.qi_moments() 00810 theta=math.atan2(t[0,1].real, t[0,0].real)/deg 00811 qxx, qyy = endpoint.transform_q_to_table(q) 00812 dzx, dzy = (1e6/qxx).real, (1e6/qyy).real 00813 print ("qxx = %.1f, dzx = %.0f, qyy=%.1f, dzy=%.0f, (in um), theta=%.1f deg" % 00814 (q.rw(qxx)[1]*1e6, dzx, q.rw(qyy)[1]*1e6, dzy, theta ) ) 00815 00816 show_pdf=0 00817 show_qd=1 00818 table_layout=1 00819 00820 show_table() 00821 00822 #doit_bc(38.5, 1.28, 1.054e-6, 1) #doit_bc(38.5, 1.28, 1.054e-6, 1)
|