def transform (   self,
  beam,
  back = 0 
)

Reimplemented from general_optic.

Definition at line 1289 of file general_optics.py.

01289                                          :
01290                 "track a beam through this optics, forwards or backwards, and mark the beam whenever it strikes an atomic optic"
01291                 if back:
01292                         order=copy.copy(self.optics_order)
01293                         order.reverse()
01294                 else:
01295                         order=self.optics_order
01296                 
01297                 for opticname in order:
01298                         optic=self.optics_dict[get_tagged_key(opticname)]
01299                         if not isinstance(optic, composite_optic): #only mark primitive optics
01300                                 waist=beam.q.next_waist()
01301                                 current_drift=beam.total_drift
01302                                 optic.transport_to_here(beam)
01303                                 distance=beam.total_drift-current_drift
01304                                 if waist > 0 and waist < distance:
01305                                         beam.free_drift(waist-distance)
01306                                         beam.mark("waist")
01307                                         optic.transport_to_here(beam)
01308                         if isinstance(opticname, backwards):
01309                                 optic.transform(beam, not back) #'backwards' must toggle the reversed flag, so backwards-backwards is forwards
01310                         else:
01311                                 optic.transform(beam, back)
01312                                 
01313                         if not isinstance(optic, composite_optic): #only mark primitive optics
01314                                 beam.mark(self.mark_label(get_tagged_key(opticname)))
01315                         
        def polygon_list(self):


Generated on Wed Nov 21 10:18:32 2007 for analysis by  doxygen 1.5.4