Re: How to get an Histogram ?

From: Jordi Nadal <jnadal_at_ifae.es>
Date: Thu, 8 Sep 2011 15:46:48 +0200


Hi Suvayu,

Thanks again for your time.

I just ran your macro.

[jnadal_at_at305 JetFitter]$ root test.C

Welcome to the ATLAS rootlogon.C
root [0]
Processing test.C...
Info in <TCanvas::MakeDefCanvas>: created default TCanvas with name c1 QCDnorm_corr_mu -0.157223
QCDnorm_corr_mu_btag 0.106851
root [1] .q
[jnadal_at_at305 JetFitter]$ root PSE/JO_muon_PSE_RbFree/sumRootFile.root

Welcome to the ATLAS rootlogon.C
root [0]
Attaching file PSE/JO_muon_PSE_RbFree/sumRootFile.root as _file0... root [1] HangingTree->Draw("QCDnorm_corr_mu_btag>>histo") Info in <TCanvas::MakeDefCanvas>: created default TCanvas with name c1 root [2] histo->GetMean()
(const Double_t)1.69030729412928876e-01
root [3]

My problem is that I don't get the same number using the macro for variable (QCDnorm_corr_mu_btag) than looking at it in the root file.

Thanks,
Jordi

On Sep 8, 2011, at 2:46 PM, suvayu ali wrote:

> Hi Jordi,
>
> I am not sure about your issue as I don't know what exactly you are
> trying to achieve. However after simplifying your example macro I
> found two errors:
>
> {
> int N = 2;
> TString parnames[N] = { "QCDnorm_corr_mu", "QCDnorm_corr_mu_btag"};
>
>
> TFile *file = TFile::Open("PSE/JO_muon_PSE_RbFree/sumRootFile.root");
> TTree* HangingTree = (TTree*) file->Get("HangingTree");
>
> for(int i=0; i<N;i++){
> TString raw = parnames[i];
> // here the histograms get overwritten by subsequent calls to Draw()
> HangingTree->Draw(raw+">>histo");
> // this line does multiple declaration of h as the loop proceeds
> // this is not correct C++ but might be forgivable in CINT, not sure
> TH1D *h = (TH1D*) gROOT->FindObject("histo");
> std::cout << raw << " " << h->GetMean() << std::endl;
> }
> }
>
> I hope this helps.
>
> --
> Suvayu
>
> Open source is the future. It sets us free.
Received on Thu Sep 08 2011 - 15:47:00 CEST

This archive was generated by hypermail 2.2.0 : Thu Sep 08 2011 - 17:50:01 CEST