この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
ja:root:wantto2 [2015/01/29 12:36] kota [ヒストグラムを規格化(Scale)して、さらにエラーバーをつけたい] |
ja:root:wantto2 [2018/09/05 17:42] (現在) kota [サンプルコード] |
||
---|---|---|---|
ライン 36: | ライン 36: | ||
のようにする。 | のようにする。 | ||
(ヒストグラムをコピーして片方をエラー用にして、分けた状態で重ね描いても良い)\\ | (ヒストグラムをコピーして片方をエラー用にして、分けた状態で重ね描いても良い)\\ | ||
+ | |||
+ | 追記:と思っていたが、実はDrawのオプションで"hist" というのがあって、 | ||
+ | <code c> | ||
+ | h->Draw("hist e1"); | ||
+ | </code> | ||
+ | とすれば綺麗に解決! | ||
===== ヒストグラムを規格化(Scale)して、さらにエラーバーをつけたい ===== | ===== ヒストグラムを規格化(Scale)して、さらにエラーバーをつけたい ===== | ||
ライン 60: | ライン 66: | ||
また、Sumw2()をcallすることでエラーが保存されるため、 | また、Sumw2()をcallすることでエラーが保存されるため、 | ||
ヒストグラムを書いた後にそのヒストグラムに対して演算(四則演算、scaleなども含む)をする場合などは演算前にSumw2()をcallしておかねばならない。 | ヒストグラムを書いた後にそのヒストグラムに対して演算(四則演算、scaleなども含む)をする場合などは演算前にSumw2()をcallしておかねばならない。 | ||
+ | (そうしないと後からエラーを計算させた時に、演算後のヒストグラムの各Binに対して単純に各Binのエントリーの平方根を返すことになってしまう。) | ||
</note> | </note> | ||
ライン 68: | ライン 75: | ||
<code c_mac> | <code c_mac> | ||
- | // マクロ test.C のサンプルコード | + | // マクロ test.C |
void test() | void test() | ||
{ | { | ||
- | TH1D *h1 = new TH1D("h1","h1",100,-10,10); | + | gStyle->SetOptStat(0); |
- | TH1D *h2 = new TH1D("h2","h2",100,-10,10); | + | TH1D *h1 = new TH1D("h1","h1",50,-5,5); |
- | + | TH1D *h2 = new TH1D("h2","h2",50,-5,5); | |
- | + | TCanvas *c = new TCanvas("c","c",800,600); | |
- | TCanvas *c = new TCanvas("c","c",700,600); | + | |
h1->FillRandom("gaus",10000); | h1->FillRandom("gaus",10000); | ||
h2->FillRandom("gaus",1000); | h2->FillRandom("gaus",1000); | ||
- | TH1D *h1e = (TH1D*)h1->Clone("h1e"); | + | h2->Sumw2(); |
- | TH1D *h2e = (TH1D*)h2->Clone("h2e"); | + | |
- | h2e->Sumw2(); | + | |
h2->Scale(10); | h2->Scale(10); | ||
- | h2e->Scale(10); | ||
h1->SetLineColor(2); | h1->SetLineColor(2); | ||
h2->SetLineColor(4); | h2->SetLineColor(4); | ||
- | h1e->SetLineColor(2); | ||
- | h2e->SetLineColor(4); | ||
- | |||
- | h1->Draw(); | ||
- | h1e->Draw("same e1"); | ||
- | h2->Draw("same"); | ||
- | h2e->Draw("same e1"); | ||
- | |||
- | gPad->Modified(); //いらんと思うけど一応入れた | ||
- | gPad->Update(); | ||
+ | h1->Draw("hist e1"); | ||
+ | h2->Draw("same hist e1"); | ||
} | } | ||
+ | </code> | ||
+ | 以下のようなものが表示される。 | ||
+ | {{:ja:root:scaleerror.png|}} | ||
- | </code> |