From this code I would expect hist_A to be saved in file_A and hist_B to be saved in file_B as instructed by TH1::SetDirectory:
TFile * file_A = TFile::Open("fileA.root", "RECREATE");
TFile * file_B = TFile::Open("fileB.root", "RECREATE");
TH1F h_A("h_A", "h_A", 20, -5, 5);
h_A.SetDirectory(file_A);
TH1F h_B("h_B", "h_B", 20, -5, 5);
h_B.SetDirectory(file_B);
h_A.FillRandom("gaus");
h_B.FillRandom("gaus");
h_A . Write();
file_A -> Close();
h_B . Write();
file_B -> Close();
In reality hist_A and hist_B get saved in file_B, while file_A contains nothing. How to approch this problem?
couet
2
If I do the following it is working as you expect:
{
TFile * file_A = TFile::Open("fileA.root", "RECREATE");
TFile * file_B = TFile::Open("fileB.root", "RECREATE");
TH1F h_A("h_A", "h_A", 20, -5, 5);
TH1F h_B("h_B", "h_B", 20, -5, 5);
h_B.SetDirectory(file_B);
h_A.FillRandom("gaus");
h_B.FillRandom("gaus");
file_A->cd();
h_A . Write();
file_B->cd();
h_B . Write();
file_A -> Close();
file_B -> Close();
}
Yes. It also works when I do the following:
file_A->cd();
h_A . Write();
file_A -> Close();//!!!!!!!
file_B->cd();
h_B . Write();
file_B -> Close();
couet
4
Yes … I do not know why I moved the Close call …
system
Closed
5
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.