code: def calcTransM(self, gamma=None, type='simu', incsym=-1):
          
          sconf = self.getConfig(type=type)
          bend_length = sconf['l']
          theta = sconf['angle']
          rho = bend_length / np.sin(theta)
          # rho = np.sqrt(gamma**2-1)*m0*c0/bend_field/e0
          # theta = np.arcsin(bend_length/rho)
          self.transM = mathutils.transRbend(theta, rho, gamma, incsym)
          if gamma is not None:
              m0 = 9.10938215e-31
              e0 = 1.602176487e-19
              c0 = 299792458.0
              self._bend_field = np.sqrt(gamma ** 2 - 1) * m0 * c0 / rho / e0
              self._rho = rho
              self.setConf({'rho': self._rho, 'field': self._bend_field}, type='misc')
          self.transM_flag = True
          return self.transM
docs: calculate transport matrix
  
          :param gamma: electron energy measured by mc^2
          :param type: configuration type, 'simu' (simulation mode) or 'online' (online mode)
          :param incsym: incident symmetry, -1, 0, 1
          :return: transport matrix
          :rtype: numpy array