def METHOD_NAME(self, modName, mod, voxelsize):
    self.interpModelName = modName
    #print mod.min(), mod.max()
    #if not voxelsize.x == md.voxelsize.x:
    #    raise RuntimeError("PSF and Image voxel sizes don't match")
    if mod.shape[0] == 2*mod.shape[1]: 
        #using a split model - we have 2 PSFs side by side
        self.SplitPSF = True
        self.PSF2Offset = voxelsize.x*mod.shape[1]
        self.IntXVals = voxelsize.x*np.mgrid[-(mod.shape[1]/2.):(mod.shape[0]-mod.shape[1]/2.)]
        self.IntYVals = voxelsize.y*np.mgrid[-(mod.shape[1]/2.):(mod.shape[1]/2.)]
        self.IntZVals = voxelsize.z*np.mgrid[-(mod.shape[2]/2.):(mod.shape[2]/2.)]
    else:
        self.SplitPSF = False
        self.PSF2Offset = 0
        self.IntXVals = voxelsize.x*np.mgrid[-(mod.shape[0]/2.):(mod.shape[0]/2.)]
        self.IntYVals = voxelsize.y*np.mgrid[-(mod.shape[1]/2.):(mod.shape[1]/2.)]
        self.IntZVals = voxelsize.z*np.mgrid[-(mod.shape[2]/2.):(mod.shape[2]/2.)]
    self.dx = voxelsize.x
    self.dy = voxelsize.y
    self.dz = voxelsize.z
    self.interpModel = (mod/mod[:,:, int(mod.shape[2]/2)].sum()).astype('f') #normalise to 1
    self.shape = mod.shape
    self._precompute()