Problem with power law fit

Hi rooters.

I looked at similar topics to find any answer but i couldn’t find one which worked. I’m trying to fit a distribution with a power law. I am starting from a TH2F which I project with TH2::ProfileX(). Then I define the fit function and I apply the fit

But nothing happens, even though lloking at the fit status there have been 120 iterations.

If some one has any idea bout if I would be glad to hear any advice

Thank you

Here is the code :
(part of compiled code)
[color=green]
//fit function
Double_t crit_exp_fit_function(Double_t *x, Double_t *par) {

Float_t temp = x[0]-Grid_Average;
if(temp<0) {
temp = -temp;
}

return par[0](1-TMath::Power(temp/par[1],par[2]));
}
[/color]
called in
[color=blue]
(…)
TH2F sampler = new TH2F(“sampler”,“Data Sampler”,Grid_sizeGrid_size+1,0,Grid_size
Grid_size,100,T_mining->cont[0],max_T);
inf_peak->Project(“sampler”,“T:N”); // building my initial TH2F with various paramters. Everything is fine looking at draws
TProfile *sampler_proj = sampler->ProfileX();

TF1 *fit = new TF1(“fit”,crit_exp_fit_function,under_mean->get_last(),over_mean->get_last(),3);

fit->SetParNames(“Tc”,“Normalization”,"#alpha");
fit->SetParameters(max_T,100,2);
(…)
[/color]

And here is the output
[color=brown]
FCN=0 FROM MIGRAD STATUS=CONVERGED 119 CALLS 120 TOTAL
EDM=0 STRATEGY= 1 ERROR MATRIX UNCERTAINTY 100.0 per cent
EXT PARAMETER APPROXIMATE STEP FIRST
NO. NAME VALUE ERROR SIZE DERIVATIVE
1 Tc 3.50000e+00 1.41421e+00 0.00000e+00 0.00000e+00
2 Normalization 1.00000e+02 1.41421e+00 0.00000e+00 0.00000e+00
3 #alpha 2.00000e+00 1.41421e+00 0.00000e+00 0.00000e+00
[/color]

So not any parameter changed
I joined an attachement of the TProfile drawing and the initial fit function

Hi Again

A simple precision : I thought first it was a problem of the distribution with small values (4 entries in each bin at maximum, but with float values as yields) but I tried to do the same fit with yield * 1000 to have a good distribution, result is the same

Cheers

Vincent

Vincent,

Could you send the shortest possible running script reproducing your problem?

Rene