Illegal pointer :[

Hey,

I belive that my problem is the dummy one, however I did not manage to solve it and I could not find solution.
So in advance I am sorry for bothering you.

I have a root file with many subdirectories. In one of these subdirectories are stored histograms and functions.

I want to read this hisogram, get it’s mean value and mean value of the fitting function

void script2()
{
TFile *f = new TFile(“ram3.root”);
f->cd(“Comp_GE11_IV_Gas_Comparison/timeResp/H2_5_2_Ar_CO2_R185-R201/HistoWithFit_fDet_Imon”);
TH1F histogram =(TH1F)f->Get(“timingHisto_R185”);
histogram->GetMean();
}

The output is:

Error: illegal pointer to class object histogram 0x0 456

Is there anyone who could give me a hand?

Thanks in advance.

Marek

f->ls(); // let’s see what’s available
TH1F *histogram; f->GetObject(“timingHisto_R185”, histogram);
if (!histogram) { std::cout << “Histogram NOT found.” << std::endl; delete f; return; }
histogram->GetMean();

Hey,

Thanks for your reply. It seems I can not navigate propely to the directory…

Here is the structure:

[quote]TFile** ram3.root TFile* ram3.root TDirectoryFile* Comp_GE11_IV_Gas_Comparison Comp_GE11_IV_Gas_Comparison TDirectoryFile* timeResp timeResp TDirectoryFile* H2_5_2_Ar_CO2_R185-R201 H2_5_2_Ar_CO2_R185-R201 TDirectoryFile* HistoWithFit_fDet_Imon HistoWithFit_fDet_Imon KEY: TCanvas canvas_DataHistoWithFit_R185_fTDC_Fit_ContConvo_Sigma_fDet_Imon550;1 Gas Comparison KEY: TH1F timingHisto_R185;1 TDC Channel 10 KEY: TF1 fit_Convo_R185;1 [0]*[2]*sqrt(TMath::Pi()/2.)*(TMath::Erf((12.5+(x-[1]))/([2]*sqrt(2.)))-TMath::Erf(((x-[1])-12.5)/([2]*sqrt(2.)))) KEY: TCanvas canvas_DataHistoWithFit_R187_fTDC_Fit_ContConvo_Sigma_fDet_Imon570;1 Gas Comparison KEY: TH1F timingHisto_R187;1 TDC Channel 10 KEY: TF1 fit_Convo_R187;1 [0]*[2]*sqrt(TMath::Pi()/2.)*(TMath::Erf((12.5+(x-[1]))/([2]*sqrt(2.)))-TMath::Erf(((x-[1])-12.5)/([2]*sqrt(2.)))) KEY: TCanvas canvas_DataHistoWithFit_R189_fTDC_Fit_ContConvo_Sigma_fDet_Imon590;1 Gas Comparison KEY: TH1F timingHisto_R189;1 TDC Channel 10 KEY: TF1 fit_Convo_R189;1 [0]*[2]*sqrt(TMath::Pi()/2.)*(TMath::Erf((12.5+(x-[1]))/([2]*sqrt(2.)))-TMath::Erf(((x-[1])-12.5)/([2]*sqrt(2.)))) KEY: TCanvas canvas_DataHistoWithFit_R191_fTDC_Fit_ContConvo_Sigma_fDet_Imon610;1 Gas Comparison KEY: TH1F timingHisto_R191;1 TDC Channel 10 KEY: TF1 fit_Convo_R191;1 [0]*[2]*sqrt(TMath::Pi()/2.)*(TMath::Erf((12.5+(x-[1]))/([2]*sqrt(2.)))-TMath::Erf(((x-[1])-12.5)/([2]*sqrt(2.)))) KEY: TCanvas canvas_DataHistoWithFit_R193_fTDC_Fit_ContConvo_Sigma_fDet_Imon630;1 Gas Comparison KEY: TH1F timingHisto_R193;1 TDC Channel 10 KEY: TF1 fit_Convo_R193;1 [0]*[2]*sqrt(TMath::Pi()/2.)*(TMath::Erf((12.5+(x-[1]))/([2]*sqrt(2.)))-TMath::Erf(((x-[1])-12.5)/([2]*sqrt(2.)))) KEY: TCanvas canvas_DataHistoWithFit_R195_fTDC_Fit_ContConvo_Sigma_fDet_Imon650;1 Gas Comparison KEY: TH1F timingHisto_R195;1 TDC Channel 10 KEY: TF1 fit_Convo_R195;1 [0]*[2]*sqrt(TMath::Pi()/2.)*(TMath::Erf((12.5+(x-[1]))/([2]*sqrt(2.)))-TMath::Erf(((x-[1])-12.5)/([2]*sqrt(2.)))) KEY: TCanvas canvas_DataHistoWithFit_R197_fTDC_Fit_ContConvo_Sigma_fDet_Imon670;1 Gas Comparison KEY: TH1F timingHisto_R197;1 TDC Channel 10 KEY: TF1 fit_Convo_R197;1 [0]*[2]*sqrt(TMath::Pi()/2.)*(TMath::Erf((12.5+(x-[1]))/([2]*sqrt(2.)))-TMath::Erf(((x-[1])-12.5)/([2]*sqrt(2.)))) KEY: TCanvas canvas_DataHistoWithFit_R199_fTDC_Fit_ContConvo_Sigma_fDet_Imon690;1 Gas Comparison KEY: TH1F timingHisto_R199;1 TDC Channel 10 KEY: TF1 fit_Convo_R199;1 [0]*[2]*sqrt(TMath::Pi()/2.)*(TMath::Erf((12.5+(x-[1]))/([2]*sqrt(2.)))-TMath::Erf(((x-[1])-12.5)/([2]*sqrt(2.)))) KEY: TCanvas canvas_DataHistoWithFit_R201_fTDC_Fit_ContConvo_Sigma_fDet_Imon710;1 Gas Comparison KEY: TH1F timingHisto_R201;1 TDC Channel 10 KEY: TF1 fit_Convo_R201;1 [0]*[2]*sqrt(TMath::Pi()/2.)*(TMath::Erf((12.5+(x-[1]))/([2]*sqrt(2.)))-TMath::Erf(((x-[1])-12.5)/([2]*sqrt(2.)))) KEY: TGraphErrors graph_Comp_GE11_IV_Gas_Comparison_H2_5_2_Ar_CO2_R185-R201;1 KEY: TDirectoryFile HistoWithFit_fDet_Imon;1 HistoWithFit_fDet_Imon KEY: TDirectoryFile HistoOverFit_fDet_Imon;1 HistoOverFit_fDet_Imon KEY: TDirectoryFile H2_5_2_Ar_CO2_R185-R201;1 H2_5_2_Ar_CO2_R185-R201 KEY: TDirectoryFile H4_1_2_Ar_CO2_CF4_R1174_R1204;1 H4_1_2_Ar_CO2_CF4_R1174_R1204 KEY: TDirectoryFile H4_5_2_Ar_CO2_CF4_R340_R352;1 H4_5_2_Ar_CO2_CF4_R340_R352 KEY: TDirectoryFile H4_8_2_Ar_CO2_CF4_R1485_R1536;1 H4_8_2_Ar_CO2_CF4_R1485_R1536 KEY: TCanvas canvas_Comp_GE11_IV_Gas_Comparison_timeResp;1 Gas Comparison KEY: TMultiGraph mGraph_Comp_GE11_IV_Gas_Comparison_canvas_Comp_GE11_IV_Gas_Comparison_timeResp;1 KEY: TDirectoryFile timeResp;1 timeResp KEY: TDirectoryFile Comp_GE11_IV_Gas_Comparison;1 Comp_GE11_IV_Gas_Comparison[/quote]

Any idea?

Thanks in advance,
Marek

Try: TFile *f = TFile::Open("ram3.root"); if (!f) {std::cout << "File NOT found." << std::endl; return;} TDirectory *d = f->GetDirectory("Comp_GE11_IV_Gas_Comparison/timeResp/H2_5_2_Ar_CO2_R185-R201/HistoWithFit_fDet_Imon"); if (!d) {std::cout << "Directory NOT found." << std::endl; delete f; return;} d->ls(); // let's see what's available TH1F *h; d->GetObject("timingHisto_R185", h); if (!h) {std::cout << "Histogram NOT found." << std::endl; delete f; return;}

Yes it works fine.
Thank you very much Wile!

Best regards,
Marek