Exemple #1
0
 def mode_waist(self, dir='h', waist=1):
     if self.q0[dir]:
         if waist == 1:
             return abcd.q2w(self.q0[dir], self.nc)
         else:
             q = abcd.qpropagate(0, self.q0[dir], self.elements[dir],
                                 self.L1 / 2 + self._L12 + self.L2 / 2)
             return abcd.q2w(q)
     else:
         return np.nan
Exemple #2
0
    def mode_width_at(self, z, dir='h'):
        """
        Get mode radius at arbitrary location.
        """
        if self.q0[dir] == None:
            return np.nan

        q = abcd.qpropagate(0, self.q0[dir], self.elements[dir], z)
        if -self.Lc / 2 <= z < self.Lc / 2:
            return abcd.q2w(q, self.nc)
        else:
            return abcd.q2w(q)