Definition at line 546 of file general_optics_example.py. 00546 : 00547 00548 print "\n\n***start blue line trace***\n" 00549 grating_offset=-0.075 00550 exit_height=0 00551 exit_z=-0.3 00552 eta1=0.0 00553 00554 optics={} 00555 00556 END='end' 00557 optics[END]=null_optic("end", (0.15,exit_height,0), 0) 00558 START='start' 00559 optics[START]=null_optic("start", (0,0,-0.85)) 00560 00561 00562 tracebeam=basebeam.clone() 00563 system_center=Numeric.array((-0.1, 0, -0.85)) 00564 00565 basebeam=beam(system_center, qtens(lambda0, q=spitfire.q0), lambda0) 00566 tracebeam.free_drift(-0.2) 00567 00568 COMP='comp' 00569 comp=optics[COMP]=blue_compressor(theta1, clen, lambda0, center=system_center, angle=rotation) 00570 TM2='turn2' 00571 optics[TM2]=reflector("output turn 2", angle=0, center=(0.15,exit_height,-0.6), width=.025) 00572 00573 optics[COMP].set_exit_direction(optics[TM2]) 00574 optics[TM2].set_direction(optics[COMP], optics[END]) 00575 00576 sys_order=(START, COMP, TM2, DEMAG1, DEMAG2, END) 00577 00578 GRATE=comp.mark_label(blue_compressor.GRATE) 00579 IR1=comp.mark_label(blue_compressor.IR1) 00580 IR2=comp.mark_label(blue_compressor.IR2) 00581 00582 optic_sys=composite_optic("system", optics, sys_order, center=optics[START].center) 00583 00584 trace0=trace_path(optic_sys, tracebeam.shift_lambda(0)) 00585 trace0.color=graphite.green 00586 trace1=trace_path(optic_sys, tracebeam.shift_lambda(-0.5e-9)) 00587 trace1.color=graphite.blue 00588 trace2=trace_path(optic_sys, tracebeam.shift_lambda(+0.5e-9)) 00589 trace2.color=graphite.red 00590 00591 try: #if one of the traces failed, this may not work 00592 print "Theta1=%.3f eta=%.3f len=%.3f lambda=%.4f" % (theta1, eta1, clen, lambda0*1e6) 00593 d0=trace0[-1]['total_drift'] 00594 d1=trace1[-1]['total_drift'] 00595 d2=trace2[-1]['total_drift'] 00596 print ("d(lambda0-0.5nm)=%.3f m, d(lambda0+0.5nm)=%.3f m, dt/dl=%.0f ps/nm, " % (d1, d2, (d2-d1)*1e12/clight)), 00597 print "d2t/dl2 = %.2f ps/nm^2" % ((d2+d1-2.0*d0)*(1e12/clight)*4) 00598 spot1info=trace0[(GRATE,0)] 00599 spot2info=trace0[(GRATE,1)] 00600 ir1info=trace0[(IR1,0)] 00601 ir2info=trace0[(IR2,0)] 00602 spot_offset=spot2info['position']-spot1info['position'] 00603 retro_offset=ir2info['position']-ir1info['position'] 00604 print "Grating offset = %.3f, retro_offset=%.3f" % (vec_mag(spot_offset), vec_mag(retro_offset)) 00605 print "measured vertex length = %.3f" % vec_mag(comp[GRATE].center-comp[IR1].center) 00606 print "dispersion offset on grating = %.3f m / nm" % vec_mag(trace2[(GRATE,1)]['position']-trace1[(GRATE,1)]['position']) 00607 print "final q = ", trace0[-1]['q'] 00608 except: 00609 traceback.print_exc() 00610 pass 00611 00612 if drawit: 00613 g=draw_everything({"sys":optic_sys}, trace0, (-.9, .1), (-.5, .5), three_d=0) 00614 #g=draw_everything(optics, trace0, (-2, 2), (-2, 2)) 00615 draw_trace(g, trace1) 00616 draw_trace(g, trace2) 00617 graphite.genOutput(g,'QD',canvasname="Compressor layout", size=(600,500)) 00618 #graphite.genOutput(g,'PDF',canvasname="mendenhall pbg3:compressor.pdf", size=(600,500)) 00619 class quadrupler(composite_optic):
|