 
 
 
 
 
 
 
  
 
まずは、ヒストグラムの箱を作成する。
どの型でも扱いは同じなので、
 型の1次元ヒストグラムを例にとれば、
 型の1次元ヒストグラムを例にとれば、
 
  TH1F *h1 = new TH1F("name","title",60,-10.,20.);
のような感じである。
ここで、 は、
 は、 クラスの派生クラスとしての
名前であり、あとで見るように、
ポインターを知らなくてもこの名前をたよりに
オブジェクトを探すことができる。
 クラスの派生クラスとしての
名前であり、あとで見るように、
ポインターを知らなくてもこの名前をたよりに
オブジェクトを探すことができる。
 はヒストグラムの題であり、
 はヒストグラムの題であり、
 はビンの数、
 はビンの数、 と
 と  は横軸の
下限と上限である。
 は横軸の
下限と上限である。
 
 の場合と同様、
 の場合と同様、
 
  TH1F h1("name","title",60,-10.,20.);
のように作っても良い。
ただし、プロット関連の ROOT のクラスのメンバー関数は
その戻り値として新たにできたプロットの
ポインターを返すことが多いので、
混乱を避けるため、
著者の場合、自分で作る際もポインターを使うことにしている。
 
さて、箱ができたのでこのヒストグラムにデータをフィルしてみよう。
 のところにデータをフィルするには
 のところにデータをフィルするには
Double_t x = 5.;として、
h1->Fill(x);で良いわけだが、 たくさんフィルするのに手ではやってられない。 たくさんデータをフィルしたければ、 「猿にも」にあるようにファイルから読み込んだりすれば 良いわけだが、 ここでは、練習なので、正規分布乱数を使ってフィルしてみる。
gRandom->SetSeed(); Int_t i; for (i=0; i<10000; i++) h1->Fill(gRandom->Gaus(5.,3.));この例では、乱数のシードをセットした後、 中心
 . で、幅
. で、幅  の
正規分布乱数
 の
正規分布乱数  点をフィルしている。
 点をフィルしている。
 は省略できるようである。
乱数には他にも、
 は省略できるようである。
乱数には他にも、 とか
 とか  とか
 とか  とか
 とか
 とかいろいろあるので試してみるのも一興である。
今の例では、
 とかいろいろあるので試してみるのも一興である。
今の例では、 ループを1行で書くことができたが、
複数行にわたるコマンドを書きたい場合も生ずる。
そんな場合は "{" をうち複数行モードにはいってから入力する。
複数行モードの終は "}" である。
 ループを1行で書くことができたが、
複数行にわたるコマンドを書きたい場合も生ずる。
そんな場合は "{" をうち複数行モードにはいってから入力する。
複数行モードの終は "}" である。
ヒストグラムは重みつきでフィルすることもできる。
Double_t w = 0.5; h1->Fill(x,w);とかすると、ビンは
 ではなく
 ではなく だけ増えることになる。
これらのフィルの操作は、後で見るように
2次元ヒストグラムに関しても同様である。
 だけ増えることになる。
これらのフィルの操作は、後で見るように
2次元ヒストグラムに関しても同様である。
さて、 フィルの結果を描画するには
h1->Draw();と打つ。
味もそっけもないヒストグラムである。
 
 
 
 
 
 
