ファイル操作したい(TFile)
1#include <TFile.h>
2
3void macro() {
4 TFile *file = TFile::Open("output.root", "recreate");
5 if (!file || file->IsZombie()) {
6 std::cerr << "Error creating file: output.root" << std::endl;
7 return;
8 }
9 // ファイル操作のコード
10 TTree *tree = file->Get<TTree>("tree");
11
12 // ファイルを閉じる
13 file->Close();
14}
TFileはROOTファイルを操作するためのクラスです。
TFile::Openはファイルを開くための静的メソッドです。
第一引数(name)にはファイル名を指定します。
ファイルが正常に開けない場合はnullptrを返すか、IsZombie()がtrueになります。
注釈
TFile::Openは、リモートにあるファイルや、ROOTの仮想ファイルシステムを利用したファイルアクセスもサポートしています。
ローカルにあるファイルを開くだけであれば
new TFileでも問題ありません。
TFile::Getで、ファイル内のオブジェクトを名前で取得できます。
TObject*型のポインターが返されるため、適切な型にキャストする必要があります。
このサンプルではTTree*型にキャストしています。
TFile::Closeでファイルを閉じることができます。
マクロや関数のスコープを抜けるとファイルは自動的に閉じられますが、安全のため明示的に閉じる習慣をつけておくとよいです。
1import ROOT
2
3# ファイルを開く
4f = ROOT.TFile.Open("source.root")
5
6# TTreeを取得
7tree = f.Get("events")
8tree.Print()
9
10# ファイルを閉じる
11f.Close()