Finding x and y values of points in a histogram

Hi All,

I have a 2D histogram that I filled with 2 variables: mass, event.
I would like to get the x-value and y-value of the points I got (meaning the mass vs event I filled).

Looking at the C file of the histogram, I can see only the global bin number and the number of entries correspond to that bin.

I tried:
For instance, I took one global bin number 61029 and search for the x and y bins:
[]int x,y,z

But this gives me a close number, but not the exact number of the point I wanted :frowning:

Your help would be most appreciated
Thanks in advance

By filling a histogram you lose the information about exactly where the point is, and instead store the number of counts in each bin. This may lead to a great reduction in the space needed to represent such information. Perhaps you would instead like to use a TTree or a TGraph2D, which maintain the point to point information.


Thanks for the advise.

I have two questions regarding your suggestion, and I apologize in advance if they are stupid:

  1. For the TGraph2D - if it is a 2D graph, I saw that it goes like this:
    TGraph2D *g = new TGraph2D(n, x, y, z);
    g->SetPoint(i, x, y, z);
    what do I put in the z if I don’t need it?
    and i - I guess it is the point number…

  2. About the TTree - can you please elaborate?

Thanks again

It is a little difficult to suggest which would work better for you as your goal is not completely clear. I suggest you take a look at the User’s Guide It contains lots of useful information and examples that may lead you in the direction your interested. Specifically you should look at the chapters covering Histograms, Graphs, and Trees. I attempt to answer your questions below.

  1. In the TGraph2D constructor i is the point number and z is the third dimension of the point. Don’t forget that a 1D histogram contains two dimensions of data, the 1 variable axis and the bin content. While a 2D histogram contains two dimensional data points and the bin content. Perhaps all you need is a TGraph. Again, its not clear what your goal is.

  2. A TTree is often compared to a sort of database. It is similar to storing your data in a text file where each row is an entry and you had multiple columns referring to various parameter. That is a gross under description, TTrees are cpapble of then dumping the data into various histograms (1D,2D…) and you may make selections of the data, for example column 1 > 4, using TCut.


Apologizes for the late reply, I wanted to try your suggestion before answering.

I have these root files, for different run periods, and I suspect I have somewhere duplication. So basically I am trying to learn about specific events.

One of the tests I was trying to do, is to get these event numbers and check the different properties, like mass, p etc…
The thing is, I couldn’t locate the exact event numbers from the histogram. When I used the EventStatusBar, I saw the x and y values - but not the exact ones, because I couldn’t set the mouse exactly on the relevant point in the histogram.

I tried you suggestion. I used the tree of my files and created a TChain. Then I did the following:
I took the tree and draw what I needed :
int n = tree->Draw(“Event:mass”,"<>, “goff”")
Graph *g = new TGraph(n,tree->GetV1(),tree->GetV2())
and saved the graph as a .C file

BTW - I didn’t know what is goff and ap - i saw it in the forum :blush:
But when I opened the .C file, again I didn’t see the x and y value as they appear on the graph with the event status bar… in fact they where in a different scale, and where similar to what I got when I filled a histogram :confused:

If you have any further ideas - they will be more than welcome… I am kind of knew in all the root business… sorry.

Thanks again for the help :smiley:

You should see these values in the .C file generated.
All the SetPoint() calls should contain all your data.
Can you post here the .C file you get ?

Hi again,
I am so embarrassed - you were right.
I accidentally run two root scripts with the same path and same graph name to save, so one ran over the other. This is why I got different numbers than I expected.

Thank you very much for your help.
Apologizes :blush: