I am trying to do a crude particle identification, using a Bethe Bloch tenchnique. Here is a plot I made from the data that I have

From what I've read, the standard method to identify charged particles is by measuring the ionization for a given momentum, in what is known as the Bethe-Bloch Equation
$$\langle \frac{dE}{dx}\rangle = \frac{P_1}{\beta^{P_4}}\left( P_2 - \beta^{P_4} - \log \left(P_3+\frac{1}{(\beta\gamma)^{P_5}}\right)\right)$$
So I tried to fit it and found out the parameters that are used by the detector people (ALICE, in their documentation, they write that the parameters were found using some simulation program). So these parameters become given constants. Now the entire Bethe-Bloch curves are normalized to the values of the minimum ionizing particle. In the literature, this is referred to as MIP value. So I tried a one-parameter fit for the above curve, leaving ROOT to find out the value of the normalization constant.
However, I get absurd results.

The three "fits" in the figure are supposed to be for pions, electrons and protons. However, they are not really accurate, as you can compare this to any of the standard plots released by CERN.
For instance, this is a plot from STAR experiment, which obviously has much lower multiplicity.

What are the techniques used by practitioners to find this normalization constant. I am using the same platform but the fitting routine is clearly inadequate for such magnitude of data.
PS: I do not have access to any online data or grid, etc. Most of the analysis code on the web seem to be based on somethings called ESDs and AODs and not for local standalone analysis (which is understandable but undfortunate for me)