Hi,
To make you code general you can use TH1x::GetXAxis() and TAxis::GetLast
TFile *f = new TFile("MyRootFile.root");
TH1F* myHisto = SomeHisto;
Int_t maxBin;
TAxis * Xaxis = myHisto->GetXAxis();
for(int i = Xaxis->GetLast();
myHisto->GetBinContent(i) == 0 && i>= Xaxis->GetFirst();
i-- ){
maxBin = i;
}
Int_t minBin = 0;
Int_t numberOfBins = maxBin - minBin +1;
myHisto->SetBins(numberOfBins, minBin, maxBin);
Cheers,
Philippe.
-----Original Message-----
From: owner-roottalk@pcroot.cern.ch
[mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Stanley Forrester
Sent: Wednesday, February 06, 2002 4:59 PM
To: roottalk@pcroot.cern.ch
Subject: [ROOT] how to access Taxis from TH1F histo
Given a preexisting histogram how can one determine the min and max bin
number in the histogram? I'm producing effiecncy plots, but need
to change the x axis limits on histos to exclude high ranges with no data.
Right now I am just assuming that the max bin number is 200, but would
like to be able to access the Taxis inline function GetXmax() to make this
a more general function. I'd also like to add a empty low range exclusion
as well.
Currently I am resizing histograms with the following code
TFile *f = new TFile("MyRootFile.root");
TH1F* myHisto = SomeHisto;
Int_t maxBin;
for(int i = 200; myHisto->GetBinContent(i) == 0 ; i-- ){
maxBin = i;}
Int_t minBin = 0;
Int_t numberOfBins = maxBin - minBin +1;
myHisto->SetBins(numberOfBins, minBin, maxBin);
--
Stanley S. Forrester
sforrest@lifshitz.ucdavis.edu
[The movement] seeks no victory over anyone. It seeks
to liberate American society and to share in the
self-liberation of all the people.
Martin Luther King Jr.
Nobel Lecture, December 11, 1964
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:41 MET