Hello Eduard,
You made the point. Now the macro works perfectly fine! :) I just did :
> TH1D *h;
> if (h) delete h;
in each step.
Thanks to all of you!
Jordi
On Sep 8, 2011, at 8:12 PM, Eduard Avetisyan wrote:
>
> Hello Jordi,
>
>
> On Thu, 8 Sep 2011, Jordi Nadal wrote:
>
>> Hello Eduard, >> >> I think you are complete right. >> >> A delete histo; directly fails… so I am trying to set a different histo each iteration.
>>>> // this is not correct C++ but might be forgivable in CINT, not sure
> /* here goes the new histogram object */
> TH1D *h;
> if (h) delete h;
>>>> h = (TH1D*) gROOT->FindObject("histo");
>>>>> HangingTree->Draw(raw+">>histo(100,0.,10.)");
>> >> Thanks all again. >> >> Cheers, >> JOrdi >> >> >> On Sep 8, 2011, at 4:43 PM, Eduard Avetisyan wrote: >> >>> >>> >>> Hi Jordi, >>> >>> Your problem is that the histogram actually doesn't get overwritten in the >>> subsequent calls. In your script, you first draw QCDnorm_corr_mu in >>> histogram named "histo", and then you put the QCDnorm_corr_mu_btag into >>> the SAME histogram. It's true, the contents is overwritten, but the >>> histogram limits are not adjusted to the new variable. It doesn't happen >>> if you wouldn't indicate the histogram name and use the default "htemp" >>> which has the corresponding flag of resetting also the axis with the new >>> data being filled. >>> >>> In short - if you would try in your interactive test the following >>> sequence: >>> >>> root [1] HangingTree->Draw("QCDnorm_corr_mu>>histo") >>> root [2] histo->GetMean() >>> root [1] HangingTree->Draw("QCDnorm_corr_mu_btag>>histo") >>> root [2] histo->GetMean() >>> >>> you would see the same results as your script produces. >>> If you want CORRECT values for the mean, either use different names for >>> the histograms, or take care to actually delete "histo" between fills. >>> >>> Hope this helps, >>> >>> Eduard >>> >>> >>> On Thu, 8 Sep 2011, Jordi Nadal wrote: >>> >>>> 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 Fri Sep 09 2011 - 00:08:31 CEST
This archive was generated by hypermail 2.2.0 : Fri Sep 09 2011 - 05:50:01 CEST