Hi Root Experts,
I am trying to create a TH1 from a text file. I have found that I can do this by saving the data table as an ntuple, drawing the ntuple, saving this plot as a TH2, and then converting this TH2 to a TProfile and finally to a TH1 with TH2::ProfileX::ProjectionX.
The problem I am running into is that I can’t figure out how force the x-axis binning that I would like. When I create my TH2 while plotting the ntuple with something like:
ntuple->Draw(“b:a>>htemp(3,1.1,1.8)”,"","")
I can’t force htemp to use the binning I am specifying. If I specify a range bigger or smaller than the ntuple range, htemp has the exact range of the ntuple.
For example, if I have a x-range of 1.5-1.9, I can’t figure out how to make my histogram have a range of 1.6-1.8 or 1.0-2.0. My TH2 will just have an x-range of 1.5-1.9. This is inconvenient since I can’t make a TH1 with the binning I would like after TH2::ProfileX::ProjectionX.
Below I wrote a simple test macro to demonstrate my issue. Perhaps there are better ways to get from a text file to a histogram? I hope I have explained my issue at least somewhat coherently. Thanks is advance!!!
Will
test.C:
test(){
TNtuple *ntuple = new TNtuple(“ntuple”,“NTUPLE”,“a:b”); //Define ntuple
ntuple->ReadFile(“data.txt”); //Fill it with data
ntuple->Draw(“b:a>>htemp(3,1.1,1.8)”,"",""); //Draw data saving htemp
htemp->ProfileX()->Draw(); //Draw the TProfile. Why is the range 1.5-1.9 and not 1.1-1.8 as specified above???
htemp->ProfileX()->Print(“all”);
htemp->ProfileX()->ProjectionX()->Print(“all”); //Show the TH1D from the TProfile
}
data.txt:
1.5 30
1.6 145
1.7 600
1.75 700
1.8 93
1.9 45