#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "TH2F.h" #include "TCanvas.h" #include "TPad.h" #include #include #include #include "TAxis.h" #include "TH1.h" #include "TArrayD.h" using namespace std; Double_t ScaleX(Double_t x) { Double_t v; double a=0; double b=10; double c=0; cout << "a=" << a << "b=" << b << "c=" << c << endl; v = a + b*x + c*x*x; return v; } void ScaleAxis(TAxis *a, Double_t (*Scale)(Double_t)) { if (!a) return; if (a->GetXbins()->GetSize()) { TArrayD X(*(a->GetXbins())); for(Int_t i = 0; i < X.GetSize(); i++) X[i] = Scale(X[i]); a->Set((X.GetSize() - 1), X.GetArray()); } else { a->Set( a->GetNbins(), Scale(a->GetXmin()), Scale(a->GetXmax())); } return; } void ScaleXaxis(TH1 *h, Double_t (*Scale)(Double_t)) { if (!h) return; ScaleAxis(h->GetXaxis(), Scale); return; } void scaleaxis() { TFile *RootIn = TFile::Open("filein.hist","READ"); TFile *RootOut = new TFile("fileout.hist","RECREATE"); TH1F *h = (TH1F*)RootIn->Get("zint"); ScaleXaxis(h,ScaleX); h->ResetStats(); h->Draw(); h->Write(); RootOut->Write(); RootIn->Close(); RootOut->Close(); }