code: def Jz(self,*args,**kwargs):
          
          self._parse_eval_args(*args)
          Phi= _evaluatePotentials(self._pot,self._eval_R,self._eval_z)
          Phio= _evaluatePotentials(self._pot,self._eval_R,0.)
          Ez= Phi-Phio+self._eval_vz**2./2.
          #Bigger than Ezzmax?
          thisEzZmax= numpy.exp(self._EzZmaxsInterp(self._eval_R))
          if self._eval_R > self._Rmax or self._eval_R < self._Rmin or (Ez != 0. and numpy.log(Ez) > thisEzZmax): #Outside of the grid
              if _PRINTOUTSIDEGRID: #pragma: no cover
                  print("Outside of grid in Ez")
              jz= self._aA(self._eval_R,0.,1.,#these two r dummies
                           0.,math.sqrt(2.*Ez),
                           _justjz=True,
                           **kwargs)[2]
          else:
              jz= (self._jzInterp(self._eval_R,Ez/thisEzZmax)\
                  *(numpy.exp(self._jzEzmaxInterp(self._eval_R))-10.**-5.))[0][0]
          return jz
docs: NAME:
             Jz
          PURPOSE:
             evaluate the action jz
          INPUT:
             Either:
                a) R,vR,vT,z,vz
                b) Orbit instance: initial condition used if that's it, orbit(t)
                   if there is a time given as well
             scipy.integrate.quadrature keywords
          OUTPUT:
             jz
          HISTORY:
             2012-07-30 - Written - Bovy (IAS@MPIA)