Deprecated: Array and string offset access syntax with curly braces is deprecated in /mnt/hep_web/hep_web/member/n-kota/dokuwiki/inc/init.php on line 542
ja:root:ttree [GiriWiki]

ユーザ用ツール

サイト用ツール


ja:root:ttree

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
最新リビジョン 両方とも次のリビジョン
ja:root:ttree [2016/06/20 05:36]
kota [元treeから条件を満たすイベントの、必要なbranchだけを抽出したtreeを作る]
ja:root:ttree [2017/08/19 07:24]
kota
ライン 6: ライン 6:
  
 === 方法1 --- SetBranchStatus ​ === === 方法1 --- SetBranchStatus ​ ===
-デフォルトではGetEntryすると、SetBranchAddressで指定されていないBranchまでも読みにいく(らし。 +デフォルトではGetEntryすると、SetBranchAddressで指定されていないBranchまでも読みにいく。\\ 
-treeに多数のBranchが入っていて、その一部だけを使う場合、これは非常に無駄になる+うかすべてのbranchのデータをメモリに乗せるが、SetBranchAddressすると 
 +そのbranchに対応するメモリのポインタが指定した変数に割り当てられる 
 + 
 +treeに多数のBranchが入っていて、その一部だけを使う場合、毎回全branchをメモリ乗せるのは無駄。
 Branchを読み込む・読み込まないを指定するメソッドが、SetBranchStatus である。 Branchを読み込む・読み込まないを指定するメソッドが、SetBranchStatus である。
  
ライン 63: ライン 66:
 を用いることで、必要なbranchだけを取り出してくることができる。 を用いることで、必要なbranchだけを取り出してくることができる。
  
- +こんな感じで使う: 
-  TChain* chain = new TChain("​T"​);​+<code c_mac> 
 +  TChain* chain = new TChain("​T"​);​//​上の話はTChainでも同じ
   chain->​Add(....);​   chain->​Add(....);​
-  std::string branchname[] = {"​brA","​br2","​br3",​...};​+  ​ 
 +  ​std::string branchname[] = {"​brA","​br2","​br3",​...};​//​抜き出すbranchをリストアップ
   const Int_t nBranch = sizeof(branchname)/​sizeof(branchname[0]);​   const Int_t nBranch = sizeof(branchname)/​sizeof(branchname[0]);​
-  chain->​SetBranchStatus("​*",​0);​+  chain->​SetBranchStatus("​*",​0);​//​一旦全てのbranchをdeactiveに
   for(Int_t iBranch = 0 ; iBranch < nBranch ; ++iBranch)   for(Int_t iBranch = 0 ; iBranch < nBranch ; ++iBranch)
-    chain->​SetBranchStatus(branchname[iBranch].c_str(),​1);​+    chain->​SetBranchStatus(branchname[iBranch].c_str(),​1);​//​リストされたbranchだけをactiveにしていく
  
-  TFile* ofile = new TFile(Form("data/​CosmicNCC%d.root",RunNo),"​RECREATE"​);​ +  TFile* ofile = new TFile("​file.root","​RECREATE"​);​ 
-  TTree* newtree = chain->​CopyTree("​(DetectorBit&​0x4)>​0"​);​+  TTree* newtree = chain->​CopyTree("​(SelectBit&​0x4)>​0"​);​// とある変数"​SelectBit"​の0x4 Bitが立っていることを要求
  
   ofile->​cd();​   ofile->​cd();​
   newtree->​Write();​   newtree->​Write();​
   ofile->​Close();​   ofile->​Close();​
 +</​code>​
ja/root/ttree.txt · 最終更新: 2017/08/19 09:27 by kota