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:wantto9 [GiriWiki]

ユーザ用ツール

サイト用ツール


ja:root:wantto9

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
ja:root:wantto9 [2017/03/20 16:07]
kota
ja:root:wantto9 [2018/11/07 06:18] (現在)
kota
ライン 6: ライン 6:
 [[https://​root.cern.ch/​doc/​master/​classTTree.html|Rootのclass reference]]の”How to obtain more info from TTree::​Draw”のところに色々書いてある。\\ [[https://​root.cern.ch/​doc/​master/​classTTree.html|Rootのclass reference]]の”How to obtain more info from TTree::​Draw”のところに色々書いてある。\\
 <code cpp> <code cpp>
-  tree->​Draw("​Y:X",​Cut);//​一旦Drawしておく +  tree->​Draw("​X:Y",​Cut);//​一旦Drawしておく ​(普段の二次元ヒストグラムを描く時とは順番が違うのに注意) 
-  Int_t N = tree->​GetSelectedRows();​+  ​const Int_t N = tree->​GetSelectedRows();​//​Drawでselectionを通ったイベントの数を取ってくる
   TGraph *graph = new TGraph(N, tree->​GetV1(),​ tree->​GetV2());​   TGraph *graph = new TGraph(N, tree->​GetV1(),​ tree->​GetV2());​
 </​code>​ </​code>​
 +TTree::​GetV1() ~ TTree::​GetV4() は、TTree::​Draw("​V1:​V2:​V3:​V4",​...) のV1,​...,​V4の Double_t 配列の先頭ポインタを返す。
  
 +<​note>​
 +  あとでNを使って配列を作ろうとして、でも ​
 +    const Int_t N = ... 
 +  としたんで怒られるので
 +    static const Int_t N = ... 
 +  としたら、 Error:​ No memory for static N\0\0  なんてエラーが出てきた。
 +  ​
 +  結局、const Int_t N = ... のままにして、配列を宣言するところで、
 +    Double_t *X = new Double[N];
 +  のように動的に確保することによって解決。
 +  ※最後にdeleteを忘れないように。
 +</​note>​
  
 +N of Selected raw > 1000000 となるときは
 +  tree->​SetEstimate(tree->​GetEntries()+1);​
 +または
 +  tree->​SetEstimate(−1);​
 +を呼んでおけとある。
 +
 +TTree::​GetV1()などを変数で受けたい場合には
 +<​code>​
 +  Double_t *Val1 = tree->​GetV1();​
 +</​code>​
 +みたいにしておけばよいが、Val1は再びDrawが呼ばれたときに書き換わってしまう可能性があるため、注意が必要。
 +ポインタではなく値を渡すようにしていれば当然大丈夫。
 +
 +----
 パッとグラフっぽく見せたいだけなら、2次元ヒストグラムを描くノリでtreeのDrawオプションで"​P"​とか”PL”とかにすればいい。\\ パッとグラフっぽく見せたいだけなら、2次元ヒストグラムを描くノリでtreeのDrawオプションで"​P"​とか”PL”とかにすればいい。\\
 Drawの第一変数で"​Y:​X"​のように2変数を指定すると、 Drawの第一変数で"​Y:​X"​のように2変数を指定すると、
 ”htemp”という名前のTH2Fと、 ”htemp”という名前のTH2Fと、
 ”Graph”という名前のTGraphが生成されるようだ。 ”Graph”という名前のTGraphが生成されるようだ。
 +これを取ってくるには以下のようにすれば良い。
 +<code cpp>
 +TGraph *graph = (TGraph*)gPad->​GetPrimitive("​Graph"​);​
 +</​code>​
  
-この辺りについては、Drawした後に、+この辺りについて詳しくは、Drawした後に、
 <code cpp> <code cpp>
   TList *list = gPad->​GetListOfPrimitives();​   TList *list = gPad->​GetListOfPrimitives();​
ライン 24: ライン 55:
 とかすれば見れる。 とかすれば見れる。
  
-ちなみに、tree->​Draw("​Y:​X>>​hist"​)みたいにしても、name=hist になるのはTH2Fの方のみで、TGraphの方はname=Graphのまま+ちなみに、tree->​Draw("​Y:​X>>​hist"​)みたいにしても、name=hist になるのはTH2Fの方のみで、TGraphの方はname=Graphのまま。 
 + 
  
ja/root/wantto9.1490026027.txt.gz · 最終更新: 2017/03/20 16:07 by kota