def METHOD_NAME(self, x, y, z=None, roiHalfSize=5, axialHalfSize=15):
    X, Y, data, background, sigma, xslice, yslice, zslice = self.getROIAtPoint(x, y, z, roiHalfSize, axialHalfSize)
    #cut region out of data stack
    dataROI = self.data[xslice, yslice, zslice]
    #generate grid to evaluate function on
    vs = self.metadata.voxelsize_nm
    X = vs.x*np.mgrid[xslice]
    Y = vs.y*np.mgrid[yslice]
    Z = vs.z*np.mgrid[zslice]
    P = np.arange(0,1.01,.01)
    #imshow(dataROI[:,:,0])
    #estimate some start parameters...
    A = dataROI.max() - dataROI.min() #amplitude
    x0 =  X.mean()
    y0 =  Y.mean()
    z0 =  Z.mean()
    #try fitting with start value above and below current position,
    #at the end take the one with loeset missfit
    startParameters1 = [3*A, x0, y0, z0 - 500, dataROI.min()]
    startParameters2 = [3*A, x0, y0, z0 + 500, dataROI.min()]
    #print startParameters        
    #estimate errors in data
    #sigma = (4 + scipy.sqrt(2*dataROI)/2)
    sigma = np.sqrt(self.metadata['Camera.ReadNoise']**2 + (self.metadata['Camera.NoiseFactor']**2)*self.metadata['Camera.ElectronsPerCount']*self.metadata['Camera.TrueEMGain']*np.maximum(dataROI, 1))/self.metadata['Camera.ElectronsPerCount']
    #fit with start values above current position        
    (res1, cov_x1, infodict1, mesg1, resCode1) = FitModelWeighted(f_PSF3d, startParameters1, dataROI, sigma, X, Y, Z, P, 2*np.pi/488, 1.47, 50e3)
    misfit1 = (infodict1['fvec']**2).sum()
    #fit with start values below current position        
    (res2, cov_x2, infodict2, mesg2, resCode2) = FitModelWeighted(f_PSF3d, startParameters2, dataROI, sigma, X, Y, Z, P, 2*np.pi/488, 1.47, 50e3)
    misfit2 = (infodict2['fvec']**2).sum()
    print(('Misfit above = %f, Misfit below = %f' % (misfit1, misfit2)))
    #print res
    #print scipy.sqrt(diag(cov_x))
    #return GaussianFitResult(res, self.metadata, (xslice, yslice, zslice), resCode)
    if (misfit1 < misfit2):
        return PSFFitResultR(res1, self.metadata, (xslice, yslice, zslice), resCode1, np.sqrt(np.diag(cov_x1)))
    else:
        return PSFFitResultR(res2, self.metadata, (xslice, yslice, zslice), resCode2, np.sqrt(np.diag(cov_x2)))