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/19 02:05]
kota 作成
ja:root:wantto9 [2018/11/07 06:18] (現在)
kota
ライン 3: ライン 3:
  
 ---- ----
-TTree::​GetSelectedRows()とかTTree::​GetV1()とかの存在を初めて知ったのでメモ。+TTree::​GetSelectedRows()とかTTree::​GetV1()とかの存在を初めて知ったのでメモ。\\ 
 +[[https://​root.cern.ch/​doc/​master/​classTTree.html|Rootのclass reference]]の”How to obtain more info from TTree::​Draw”のところに色々書いてある。\\ 
 +<code cpp> 
 +  tree->​Draw("​X:​Y",​Cut);//​一旦Drawしておく (普段の二次元ヒストグラムを描く時とは順番が違うのに注意) 
 +  const Int_t N = tree->​GetSelectedRows();//​Drawでselectionを通ったイベントの数を取ってくる 
 +  TGraph *graph = new TGraph(N, tree->​GetV1(),​ tree->​GetV2());​ 
 +</​code>​ 
 +TTree::​GetV1() ~ TTree::​GetV4() は、TTree::​Draw("​V1:​V2:​V3:​V4",​...) のV1,​...,​V4の Double_t 配列の先頭ポインタを返す
  
-パッグラフぽく見せたいだけなら、2次元ヒストグラム描くノリでtreeのDrawオプションで"​P"​か”PL”とかにすればいい。 +<​note>​ 
-(これの場合実体として存在するのはgraphじゃ2Dヒストグムだが、Drawオプションでこう見せている?)+  あで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”とかにすればいい。\\
 +Drawの第一変数で"​Y:​X"​のように2変数を指定すると、
 +”htemp”という名前のTH2Fと、
 +”Graph”という名前のTGraphが生成されるようだ。
 +これを取ってくるには以下のようにすれば良い。
 <code cpp> <code cpp>
-  tree->​Draw("​Y:​X",​Cut);//​一旦Drawしておく +TGraph *graph = (TGraph*)gPad->GetPrimitive("​Graph"​);
-  Int_t N = tree->​GetSelectedRows();​ +
-  ​TGraph *graph = new TGraph(N, tree->​GetV1(), tree->GetV2());+
 </​code>​ </​code>​
 +
 +この辺りについて詳しくは、Drawした後に、
 +<code cpp>
 +  TList *list = gPad->​GetListOfPrimitives();​
 +  list->​Dump();​
 +</​code>​
 +とかすれば見れる。
 +
 +ちなみに、tree->​Draw("​Y:​X>>​hist"​)みたいにしても、name=hist になるのはTH2Fの方のみで、TGraphの方はname=Graphのまま。
 +
 +
 +
ja/root/wantto9.1489889128.txt.gz · 最終更新: 2017/03/19 02:05 by kota