この文書の現在のバージョンと選択したバージョンの差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
|
ja:root:wantto19 [2018/11/03 07:10] kota 作成 |
ja:root:wantto19 [2018/11/03 07:40] (現在) kota |
||
|---|---|---|---|
| ライン 1: | ライン 1: | ||
| ====== ヒストグラムのbin、境界上はどっちに入る? ====== | ====== ヒストグラムのbin、境界上はどっちに入る? ====== | ||
| + | ヒストグラムのbin IDは, ヒストグラムのbin数をnbinsとして | ||
| + | bin = 0; underflow bin | ||
| + | bin = 1; first bin with low-edge xlow INCLUDED | ||
| + | bin = nbins; last bin with upper-edge xup EXCLUDED | ||
| + | bin = nbins+1; overflow bin | ||
| + | のように振られる。 | ||
| + | bin = i, (1<i<nbins)のときも、low-edgeを含み、upper-edgeを含まない。 | ||
| 例えば、 | 例えば、 | ||
| <code cpp> | <code cpp> | ||
| TH1D *hist = new TH1D("hist","",10,0,10); | TH1D *hist = new TH1D("hist","",10,0,10); | ||
| hist->Fill(1); | hist->Fill(1); | ||
| + | Int_t ibin = hist->FindBin(1); | ||
| + | cout << "Integral [0,1] : " << hist->Integral( hist->FindBin(0), hist->FindBin(1) ) << endl;/// <-(a) | ||
| + | cout << "Integral [0,1) : " << hist->Integral( hist->FindBin(0), hist->FindBin(1-1e-6) ) << endl;/// <-(b) | ||
| + | cout << "bin content[0,1): " << hist->GetBinContent( hist->FindBin(0) ) << endl;/// <-(c) | ||
| </code> | </code> | ||
| - | とした場合、fillしたものはどちらのbinに入るか? | + | とした場合、 |
| + | * bin=1 : 0 ≦ x < 1, bin=2 : 1≦ x < 2 のようになる。 | ||
| + | * Fillした1は以下の図のように、bin=2 : 1≦ x < 2 のbinに入る。 | ||
| + | * ibinには2が返る | ||
| + | * (a)のようにした場合は0を含むbin (bin=1) から1を含むbin (bin=2)までのIntegralを取りなさい、ということなので、bin=2も含んでしまって1が返る。0-1のbinのことを指定したいのであれば、(b)のようにする。(これは(c)と同じこと) | ||
| + | となる。 | ||
| - | 答えは | + | |
| - | ja:root:histbin.png | + | {{:ja:root:histbin.png?600|}} |
| - | にあるように、1−2の間のbinに入る。 | + | |