Total energy deposite not equal primary ion Kinetic Energy

Hello everyone:
Recently, I use Geant4 to simulate C-12 dose profile in water. my geometry is very simple: a cube water with dimension 30 cmx30 cmx30 cm inside the world, and the world size is 45cmx45cmx45 filled with air. I use a mono energy C-12 point source with energy 3.318GeV(276.5MeV/u), the distance between source and water phantom is 5cm, source moment direction is (1,0,0). The factory physics list QGSP_BIC_HP was selected via G4PhysListFactory and SetCut is 0.1mm, the max step length is 0.1mm. My Geant4 version 10.05-p01 and simulation environment is Centos 7.

I use 2 methods to record carbon ions energy deposit in water, the first one is via SteppingAction method and I get the energy deposit by: G4double edep = step->GetTotalEnergyDeposit(), after that, I accumulate all steps deposit energy and get total energy deposit.
The another method is mac command, via define scoring mesh, I create a score mesh size as large as water phantom and score energy deposit in each bin. I got the total energy deposit by sum each bin value.

At least, the two method get the same value, the total energy deposit is about 2.7GeV, it decrease 500MeV compare to carbon ion primary kinetic energy. According to my understand, the energy should be conserved, the total deposit energy should be equal ion’s kinetic.
I have checked all the possible calculate error, and I am sure:(1) the geometry input is correct, and the most energy of the ion will deposit in it, the Bragg peak deep is 149mm;
(2) All the particles deposit energy ware record, I am not kill any particle in the process of simulation; (3) the Physics list should be correct, many reference use the same physics.

I really have no ideal about this problem, could Geant4 experts give me some advises or help me analysis the reason.

thank you very much and best regards.