next up previous contents
: PROFILE : プロットをいじくる : プロットのリスト   目次

射影(PROX または PROY)

2次元プロットの各軸への射影はよくやる操作だが、ROOT では X 軸への射影は


  h2->ProjectionX()->Draw();
などとする。 ここで、${\tt h2}$ は問題の2次元プロットへのポインターである。

Y 軸への射影は


  h2->ProjectionY()->Draw();
である。

後で使い回すことを考えると、


  TH1D *h1 = h2->ProjectionX();
などとした後で

  h1->Draw();
の方が良いかも知れない。

名前を知っていれば、射影の名前は、もとの2次元プロット の名前に ${\tt ''\_px''}$ または ${\tt ''\_py''}$ を付け加えたものになる。

具体的な例題をやってみよう。 まず、例によって、プロットを描画する窓を開いておこう。


  TCanvas *c1 = new TCanvas("c1","My Canvas",10,10,400,400);
  c1->Divide(2,2);
開いた窓は、2×2 に分割した。

次に、最初の区画に行ってから、 練習に使う2次元プロットを作ろう。


  c1->cd(1);
  TH2F *h2 = new TH2F("htest","Test",50,0.,10.,60,-10.,20.);
練習だから、また適当な乱数を使うことにする。

  {
    gRandom->SetSeed();
    Int_t i;
    for (i=0; i<10000; i++) {
      Double_t x = 10. * gRandom->Rndm();
      Double_t y = 0.05*x*x + gRandom->Gaus(0.,0.2*x + 1.);
      h2->Fill(x,y);
    }
  }
  h2->Draw();
${\tt for}$ 文が複数行にまたがるので、 "${\tt\{}$" と "${\tt\}}$" で囲んである。

これを Y 軸と X 軸に射影してみよう。


  c1->cd(2);
  h2->ProjectionY()->Draw();
  c1->cd(3);
  h2->ProjectionX()->Draw();
すると、

図 3.9: 2次元プロットの両軸への射影。
\begin{figure}
\centerline {
\epsfig{file=figs/proxy.eps,width=9cm}}\end{figure}

既に述べたようにそれぞれの射影のヒストグラムの名前は、 もとの名前に ${\tt ''\_px''}$ あるいは ${\tt ''\_py''}$ をつけたものになる。 今の例では、 ${\tt ''htest\_px''}$ ${\tt ''htest\_py''}$ である。


next up previous contents
: PROFILE : プロットをいじくる : プロットのリスト   目次
Keisuke Fujii 平成12年12月22日