以前のリビジョンの文書です
====== treeからグラフを作る ====== ---- 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("Y:X",Cut);//一旦Drawしておく 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 配列の先頭ポインタを返す。\\ 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> TGraph *graph = (TGraph*)gPad->GetPrimitive("Graph"); </code> この辺りについて詳しくは、Drawした後に、 <code cpp> TList *list = gPad->GetListOfPrimitives(); list->Dump(); </code> とかすれば見れる。 ちなみに、tree->Draw("Y:X>>hist")みたいにしても、name=hist になるのはTH2Fの方のみで、TGraphの方はname=Graphのまま。