I replaced
for(Int_t i = 0; i < X.GetSize(); i++) X[i] = Scale(X[i],a,b,c,scalexaxis);
by
for(Int_t i = 0; i < X.GetSize(); i++) X[i] = Scale(X[i],a,b,c,scalexaxis);
but I got
root [0]
Processing scaleaxis.cpp...
In file included from input_line_8:1:
scaleaxis.cpp:53:66: error: use of undeclared identifier 'b'
for(Int_t i = 0; i < X.GetSize(); i++) X[i] = Scale(X[i],a,b,c,scalexaxis);
^
scaleaxis.cpp:53:68: error: use of undeclared identifier 'c'
for(Int_t i = 0; i < X.GetSize(); i++) X[i] = Scale(X[i],a,b,c,scalexaxis);
^
scaleaxis.cpp:53:70: error: use of undeclared identifier 'scalexaxis'
for(Int_t i = 0; i < X.GetSize(); i++) X[i] = Scale(X[i],a,b,c,scalexaxis);
^
scaleaxis.cpp:59:33: error: too few arguments to function call, expected 5, have 1
Scale(a->GetXmin()),
~~~~~ ^
scaleaxis.cpp:60:33: error: too few arguments to function call, expected 5, have 1
Scale(a->GetXmax()));
~~~~~ ^
scaleaxis.cpp:68:3: error: no matching function for call to 'ScaleAxis'
ScaleAxis(h->GetXaxis(), Scale);
^~~~~~~~~
scaleaxis.cpp:47:6: note: candidate function not viable: no known conversion from 'Double_t (*)(Double_t)' (aka 'double (*)(double)') to 'Double_t (*)(Double_t, double, double, double, void (*)(double, double, double))' (aka 'double (*)(double, double, double, double, void (*)(double, double, double))') for 2nd argument
void ScaleAxis(TAxis *a, Double_t (*Scale)(Double_t, double, double, double, void(double, double, double)))
^
scaleaxis.cpp:76:2: error: no matching function for call to 'ScaleXaxis'
ScaleXaxis(h,ScaleX);
^~~~~~~~~~
scaleaxis.cpp:65:6: note: candidate function not viable: no known conversion from 'Double_t (Double_t, double, double, double, void (*)(double, double, double))' (aka 'double (double, double, double, double, void (*)(double, double, double))') to 'Double_t (*)(Double_t)' (aka 'double (*)(double)') for 2nd argument
void ScaleXaxis(TH1 *h, Double_t (*Scale)(Double_t))
^
root [1]
then I also replaced
void ScaleAxis(TAxis *a, Double_t (*Scale)(Double_t))
by
void ScaleAxis(TAxis *a, Double_t (*Scale)(Double_t, double, double, double, void(double, double, double)))
and added the invoke function in this function too, but still doesn’t work
Processing scaleaxis.cpp...
In file included from input_line_8:1:
scaleaxis.cpp:50:12: error: use of undeclared identifier 'b'
invoke(a,b,c, scaleaxis);
^
scaleaxis.cpp:50:14: error: use of undeclared identifier 'c'
invoke(a,b,c, scaleaxis);
^
scaleaxis.cpp:50:17: error: use of undeclared identifier 'scaleaxis'
invoke(a,b,c, scaleaxis);
^
scaleaxis.cpp:54:66: error: use of undeclared identifier 'b'
for(Int_t i = 0; i < X.GetSize(); i++) X[i] = Scale(X[i],a,b,c,scalexaxis);
^
scaleaxis.cpp:54:68: error: use of undeclared identifier 'c'
for(Int_t i = 0; i < X.GetSize(); i++) X[i] = Scale(X[i],a,b,c,scalexaxis);
^
/nfs/luna02/casaburf/SimulazioniFatte/21Nepgamma/Risonanza_6998/scaleaxis.cpp:54:70: error: use of undeclared identifier 'scalexaxis'
for(Int_t i = 0; i < X.GetSize(); i++) X[i] = Scale(X[i],a,b,c,scalexaxis);
^
scaleaxis.cpp:60:33: error: too few arguments to function call, expected 5, have 1
Scale(a->GetXmin()),
~~~~~ ^
scaleaxis.cpp:61:33: error: too few arguments to function call, expected 5, have 1
Scale(a->GetXmax()));
~~~~~ ^
scaleaxis.cpp:69:3: error: no matching function for call to 'ScaleAxis'
ScaleAxis(h->GetXaxis(), Scale);
^~~~~~~~~
scaleaxis.cpp:47:6: note: candidate function not viable: no known conversion from 'Double_t (*)(Double_t)' (aka 'double (*)(double)') to 'Double_t (*)(Double_t, double, double, double, void (*)(double, double, double))' (aka 'double (*)(double, double, double, double, void (*)(double, double, double))') for 2nd argument
void ScaleAxis(TAxis *a, Double_t (*Scale)(Double_t, double, double, double, void scaleaxis(double a, double b, double c)))
^
scaleaxis.cpp:77:2: error: no matching function for call to 'ScaleXaxis'
ScaleXaxis(h,ScaleX);
^~~~~~~~~~
scaleaxis.cpp:66:6: note: candidate function not viable: no known conversion from 'Double_t (Double_t, double, double, double, void (*)(double, double, double))' (aka 'double (double, double, double, double, void (*)(double, double, double))') to 'Double_t (*)(Double_t)' (aka 'double (*)(double)') for 2nd argument
void ScaleXaxis(TH1 *h, Double_t (*Scale)(Double_t))
^
root [1]
scaleaxis.cpp (1.9 KB)