FC2ブログ
冴えないポスドクの備忘録
ポスドクになっちゃった。最近めっきり更新してないから、日記というかプログラムとかメモとかおいておこうかな
プロフィール

asu2ikl4

Author:asu2ikl4
ポスドク
物理学専攻
テーマ「高エネルギー素粒子原子核物理」、「放射線測定器開発」など

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

ブロとも申請フォーム

この人とブロともになる

QRコード

QR

スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

TCanvasの分割率を設定したい
キャンバスの分割は

{
c1=new TCanvas("c1");
c1->Divide(1,2);//1x2に分割
//上
c1->cd(1);
f=new Tfile("tmp.root");//ここで、例えばヒストグラムが入っていたとすると
hist1->Draw();
//下
c1->cd(2);
hist2->Draw();
c1->cd(2)->SetLogx();//ここで、対数スケール
c1->cd(2)->SetGridx();//x軸点線挿入
c1->cd(2)->SetGridy();//y軸点線挿入
}
これでうまくとおるはず、




上を80%で下を20%の領域に分割したい。
そんなとき、
{
c1=new TCanvas("c1","",10,30,1000,800);
double sepa=0.8;//上下の比
TPad *pad0 = new TPad("pad0", "pad0",0.0,0.95-sepa,0.99,0.99, 0,0.01,0);
//まずはTPadを用意してc1キャンバスに書いていくという方針。
//サイズを指定して、ちょうど上80%を占めるようにする。
//TPadの引数は名前、名前、左下(x1, y1),右上(x2,y2), 0,0.01,0
//最後の3つはなんだっけ?

pad0->Draw();
pad0->SetNumber(1);//番号をつけてidする


c1->cd();
//もとのキャンバスに戻って、同様に下のもつくる
TPad *pad1 = new TPad("ratio", "ratio",0.0,0.05,0.95,0.95-sepa, 0,0.01,0);//divide(bottom)
pad1->Draw();
pad1->SetNumber(2);

f=new TFile("tmp.root");
c1->cd(1);
hist1->Draw();
c2->cd(2);
hist2->Draw();
c1->cd(2)->SetLogx();
c1->cd(2)->SetGridx();
c1->cd(2)->SetGridy();
}

スポンサーサイト
Treeがちゃんと保存されない
ROOT解析プログラムでTreeを作成し、
コマンド「tree->Write()」
をしたのに、エラーが生じて保存されない。
どうしてだろう?

詳しい状況を説明すると、
あるディレクトリ内でROOTファイル「tmp.root」が存在している
この中にデータをFill()したtreeを保存したい。

$root
[0] f=new TFile("tmp.root")
[1] ...ループでデータ読み込み...
[2] tree->Fill()
[3] tree->Write()
Warning in : file t1 not opened in write mode
(Int_t)0
[4] .ls
TFile** tmp.root
TFile* tmp.root
OBJ: TTree tree: tree


上手く保存されない原因は、
ROOTファイルを開く時のモードが書き込み可能になっていないことである。

TFile()コマンドには2つの引数をもつ
最初はファイル名
2つめはファイルをひらくときのモード選択である。

何もないと読み込みのみである。
コマンド:"recreate" ... 新しくROOTファイルを書き込む
コマンド:"update" ... 既存のROOTファイルを上書きで書き込む、新規でも可能


Treeの保存についてはTFileの書き込みモードを許可していないと
ちゃんと保存されないみたい。






上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。