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

def calcTransM(self, gamma=None, type='simu', incsym=-1):
        """ 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
        """
        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