I am trying to create a multiple histograms in one plot with data from the attached file. Actually I am trying to apply an energy callibration on the x-axis values which are channels i.e.
where a=2.7361 and b=-64.608 while channels = the old values and energy=the new values.
I am creating the histograms using the following code
[code]#include “Riostream.h”
#include “TArrow.h”
#include “TLatex.h”
void MgB2(){
gROOT->SetStyle("Plain");
gStyle->SetOptStat(0000);
gStyle->SetOptFit(1111);
gStyle->SetOptTitle(0);
TPaveText *t = new TPaveText(0.005, 0.995, 0.85, 0.925, "brNDC");//left-up
t->AddText("Experimental and Simulated Spectra from MgB_{2}");
t->SetBorderSize(1);
t->SetFillColor(gStyle->GetTitleFillColor());
TCanvas *c = new TCanvas("c", "c");
c->SetFillColor(5);
c->SetFrameFillColor(10);
TString dir = gSystem->UnixPathName(gInterpreter->GetCurrentMacroName());
dir.ReplaceAll("MgB2.C","");
dir.ReplaceAll("/./","/");
ifstream in;
in.open(Form("%sMgB2.dat",dir.Data()));
Float_t x,y,z,w,k,l,m;
Int_t nlines = 0;
Int_t channels=1027;
Double_t xlow = 1.0;
TH1F *h1 = new TH1F("h1", "Total", channels, xlow, (channels + xlow));
TH1F *h2 = new TH1F("h2", "#alpha background", channels, xlow, (channels + xlow));
TH1F *h3 = new TH1F("h3", "#alpha background", channels, xlow, (channels + xlow));
TH1F *h4 = new TH1F("h4", "#alpha background", channels, xlow, (channels + xlow));
TH1F *h5 = new TH1F("h5", "#alpha background", channels, xlow, (channels + xlow));
TH1F *h6 = new TH1F("h6", "#alpha background", channels, xlow, (channels + xlow));
while (1) {
in >> x >> y >> z >> w >> k >> l >> m;
if (!in.good()) break;
if (nlines == 10) printf(“x=%8f, y=%8f, z=%8f\n”,x,y,z);
h1->Fill((x -64.608) / 2.7361 + xlow - 0.5, y);
h2->Fill((x -64.608) / 2.7361 + xlow - 0.5, z);
h3->Fill((x -64.608) / 2.7361 + xlow - 0.5, w);
h4->Fill((x -64.608) / 2.7361 + xlow - 0.5, k);
h5->Fill((x -64.608) / 2.7361 + xlow - 0.5, l);
h6->Fill((x -64.608) / 2.7361 + xlow - 0.5, m);
nlines++;
}
printf(“Found %d points\n”,nlines);
in.close();
h1->SetLineColor(8);
h1->Draw();
h1->GetXaxis()->SetTitle("Energy[keV]");
h1->GetYaxis()->SetTitle("Events");
h2->SetLineColor(kBlue);
h2->Draw("same");
leg = new TLegend(0.1,0.7,0.48,0.9);
leg->AddEntry("h1","with #delta E");
leg->AddEntry("h2","without #delta E");
leg->Draw();
t->Draw();
}[/code]
My output is the following
You can see that there are some “lost” bins in the plot. Any idea why is this happening and how to fix it?
Thank you very much in advance!
MgB2.dat (152 KB)