Difference between G4NIELCalculator and GetNonIonizingEnergyDeposit()?

Dear experts:

I am trying to reproduce SRIM by GEANT4 code, because GEANT4 can output more information. See this:https://geant4-forum.web.cern.ch/t/the-difference-between-geant4-and-srim-about-recoil-production/9314

But it seems these two methods will output different NIEL value of the same step.

//get NIEL of current step
    G4int ns = aStep->GetTrack()->GetCurrentStepNumber();
    G4double niel_calculator = fNIELCalculator->ComputeNIEL(aStep);
   G4cout << "The NIEL of step "<<ns<<" compute by NIELCalculator is " << niel_calculator << G4endl;
    G4double niel_step = aStep->GetNonIonizingEnergyDeposit();
   G4cout << "The NIEL of step "<<ns<<" compute by GetNonIonizingEnergyDeposit() is " << niel_step << G4endl;

Model used in the NIELCalculator:

fNIELCalculator = new G4NIELCalculator(new G4ICRU49NuclearStoppingModel(), 1);

The output is like this:

Which process does this model belong to? And Why is there a such difference?

Thanks in advance!