(旧)研究メモ

kennkyuumemo

ROOT

Canvasに描画したはずなのに白紙で、クリックしてみたら描画される、みたいなとき

http://www-he.scphys.kyoto-u.ac.jp/member/n.kamo/wiki/doku.php?id=study:software:root:graphicの、「Styleの変更とModifiedとUpdateとDrawの関係」を読む。おおまかには、Drawの位置を変えるか、いろいろDraw optionやgStyleをいじった最後に canvas->U…

treeのbranchにつめたvectorを読み出す

TFile* file = new TFile("hoge.root"); TTree* t = (TTree*)file->Get("t"); vector<int>* vec = 0; t->SetBranchAddress("vec",&vec); ポインタを用意する</int>

treeのbranchにvectorをつめる

TFile* file = new TFile("hoge.root","recreate"); TTree* t = new TTree("t","tree"); vector<int> vec; t->Branch("vec",&vec,"vec/I"); : : : t->Fill(); vec.clear(); t->Write(); file->Close(); Branch()の三番目の引数が必要かどうかはよくわからん</int>

TGraphを大量に描く

TGraphをfor文使って大量に描きたいときは、二次元配列を使うとうまいことできる x[3][5] = {{…..}, {…..}, {…..}}; y[3][5] = {{…..}, {…..}, {…..}}; TGraph *g[3]; for(int i=0;i<3;i++){ g[i] = new TGraph(5, x[i], y[i]); g[i]->Draw(); }

2次元ヒストグラムのピークのところでの軸の値をそれぞれもってきたいとき

二次元ヒストグラムでなんかの分布を見て、一番データが集中してるところでのx, yの値がほしいときがよくある ヒストグラムの名前をhist1とすると、 int maxbin; int maximum_xbin; int maximum_ybin; int dammyz; double maximum_x; double maximum_y; maxb…

vectorにデータを入れてて、TGraphでグラフ描きたいとき

普通、配列にデータ入れてグラフ描くときは int x[3] = {1,2,3}; int y[3] = {1,2,3}; TGraph *g1 = new TGraph(3, x, y); g1->Draw("AP"); 的な感じでTGraphの引数には配列の名前を入れるvectorでこれをやるとエラーでるけど、引数を vector<int> x; vector<int> y; …</int></int>…

ROOT 色

ROOTで図形描くときに背景を透明にする

粒子の位置を再構成したグラフとかに、検出器を一緒に描こうと思ってTArcとか使ってみたら、描く順番によってはTArcのほうが上に来ちゃってデータ点が上塗りされてしまってうざいなって思うことがありました。そういう時は、 obj->SetFillStyle(0); とやると…

ROOTでTCanvasを出さないようにする

TCanvasはなにかとDrawする必要があるが、出てきた画像を見ることが目的ではない場合、立ち上がる画面はただただ邪魔であるので gROOT->SetBatch(); としてバッチモードで実行するとキャンバスが立ち上がらない

ROOTでヒストグラムをたくさん作る

同じビン、最大値、最小値のヒストグラムをたくさん作りたいとき、 例えば TH1D* h[10]; for(int i=0;i<10;i++){ h[i] = new TH1D(Form("h[%d]",i), bin, min, max); } てなかんじでForm使うと簡潔に書ける。

ROOT Treeからヒストグラム

t1->Draw("a[0]:a[1]"); から、 t1->Draw("a[0]:a[1]","","COLZ"); ってやると2次元ヒストがヒートマップみたいになる

ROOTでコンパイル

ROOTでコンパイルするためのMakefile TARGETS=Hello ROOTFLAGS = $(shell root-config --cflags) ROOTLIBS = $(shell root-config --libs) CXXFLAGS = -Wall -O2 $(ROOTFLAGS) CXXLIBS = $(ROOTLIBS) all: $(TARGETS) Hello: Hello.o g++ -o $@ Hello.o $(CX…