double xmin = 99999.; // X axis minimum double xmax = -99999.; // X axis maximum double bw = 2.; // bin width TH1D *h; void ComputeMinMax(TString filename) { ifstream inp; double x,y; inp.open(filename.Data()); while (inp >> x >> y) { if (x>0) { if (xxmax) xmax = x; } } } void FillHistoFromFile(TString filename) { ifstream inp; double x,y; inp.open(filename.Data()); while (inp >> x >> y) { if (x>0) h->Fill(x,y); } inp.close(); } void DumpHistogram() { ofstream outp; double x,y; outp.open("result.txt"); int n = h->GetNbinsX(); for (int i; i<=n; i++) { outp << h->GetBinCenter(i) << " " << h->GetBinContent(i) << endl; } outp.close(); } void khallod() { ComputeMinMax("Data1.txt"); ComputeMinMax("Data2.txt"); int nb = (xmax-xmin)/bw; h = new TH1D("h","h title",nb,xmin-bw/2.,xmax+bw/2.); h->GetXaxis()->SetTitle("Energy (keV)"); h->GetYaxis()->SetTitle("Count"); FillHistoFromFile("Data1.txt"); FillHistoFromFile("Data2.txt"); h->Draw("hist"); DumpHistogram(); }