TTreeを描画したい(TTree::Draw

 1#include <TFile.h>
 2#include <TTree.h>
 3
 4TFile* file = new TFile("data.root");
 5TTree* tree = (TTree*)file->Get("tree");
 6
 7// 基本的な描画
 8tree->Draw("energy_deposit");
 9
10// フィルター条件付き描画
11tree->Draw("energy_deposit", "parent_id==0");

TTree::DrawでTTreeの変数を描画できます。第1引数(varexp)に描画したい軸を設定し、第2引数(selection)にフィルター条件を設定します。

 1import ROOT
 2
 3file = ROOT.TFile("data.root")
 4tree = file.Get("tree")
 5
 6# 基本的な描画
 7tree.Draw("energy_deposit")
 8
 9# フィルター条件付き描画
10tree.Draw("energy_deposit", "parent_id==0")

メソッドのシグネチャ

1Long64_t Draw(const char* varexp, const char* selection = "",
2              Option_t* option = "", Long64_t nentries = kMaxEntries,
3              Long64_t firstentry = 0)

引数と戻り値

引数:

  • varexp - 描画する変数。形式: "variable"(1D)、"y:x"(2D)、"z:y:x"(3D)

  • selection - フィルター条件(オプション、デフォルト: なし)

  • option - 描画オプション(オプション、デフォルト: 空文字列)

  • nentries - 処理するエントリ数(デフォルト: 全エントリ)

  • firstentry - 開始エントリ番号(デフォルト: 0)

戻り値:

  • 描画されたエントリ数(条件を満たしたエントリ数)

1次元ヒストグラムを描画したい(Draw

1#include <TFile.h>
2#include <TTree.h>
3
4TFile* file = new TFile("data.root");
5TTree* tree = (TTree*)file->Get("tree");
6
7tree->Draw("energy_deposit");

Drawメソッドで、単一の変数をヒストグラムとして描画できます。

2次元プロットを作成したい(Draw

1#include <TFile.h>
2#include <TTree.h>
3
4TFile* file = new TFile("data.root");
5TTree* tree = (TTree*)file->Get("tree");
6
7tree->Draw("energy_deposit:position_x");

Drawメソッドで2つの変数の関係を散布図として可視化できます。横軸にposition_x、縦軸にenergy_depositがプロットされます。

フィルター条件付きで描画したい(Draw

 1#include <TFile.h>
 2#include <TTree.h>
 3
 4TFile* file = new TFile("data.root");
 5TTree* tree = (TTree*)file->Get("tree");
 6
 7tree->Draw("energy_deposit", "parent_id==0");
 8
 9// 複数条件を指定
10tree->Draw("energy_deposit", "parent_id==0 && energy_deposit>10");

Drawメソッドの第2引数に条件を指定することで、特定の条件を満たすデータのみを描画できます。論理演算子で複数条件を結合することも可能です。

描画結果から統計情報を取得したい(Draw

1#include <TFile.h>
2#include <TTree.h>
3
4TFile* file = new TFile("data.root");
5TTree* tree = (TTree*)file->Get("tree");
6
7Long64_t n = tree->Draw("energy_deposit", "parent_id==0");
8std::cout << "Matched entries: " << n << std::endl;

Drawメソッドの戻り値でフィルター条件に合致したエントリ数を取得できます。

関連メソッド

  • TTree::Scan: データを表形式で表示

  • TTree::GetEntries: 総エントリ数を取得

  • TTree::GetLeaf: リーフ(葉)オブジェクトを取得

参考資料