code: def getFisher(self):
          
          Ctot = self.vd.getGP().getCovar()
          Ki = SP.linalg.inv(Ctot.K())
          n_scales = self.vd.getNumberScales()
          out = SP.zeros((n_scales,n_scales))
          for m in range(n_scales):
              out[m,m] = 0.5 * SP.trace(SP.dot(Ki,SP.dot(Ctot.Kgrad_param(m),SP.dot(Ki,Ctot.Kgrad_param(m)))))
              for n in range(m):
                  out[m,n]=0.5 * SP.trace(SP.dot(Ki,SP.dot(Ctot.Kgrad_param(m),SP.dot(Ki,Ctot.Kgrad_param(n)))))
                  out[n,m]=out[m,n]
          return out
docs: Return the fisher information matrix over the parameters
          TO CHECK: IT DOES NOT WORK PROPERLY