2次元プロットの各軸への射影はよくやる操作だが、ROOT では X 軸への射影は
h2->ProjectionX()->Draw();などとする。 ここで、 は問題の2次元プロットへのポインターである。
Y 軸への射影は
h2->ProjectionY()->Draw();である。
後で使い回すことを考えると、
TH1D *h1 = h2->ProjectionX();などとした後で
h1->Draw();の方が良いかも知れない。
名前を知っていれば、射影の名前は、もとの2次元プロット の名前に または を付け加えたものになる。
具体的な例題をやってみよう。 まず、例によって、プロットを描画する窓を開いておこう。
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();文が複数行にまたがるので、 "" と "" で囲んである。
これを Y 軸と X 軸に射影してみよう。
c1->cd(2); h2->ProjectionY()->Draw(); c1->cd(3); h2->ProjectionX()->Draw();すると、 既に述べたようにそれぞれの射影のヒストグラムの名前は、 もとの名前に あるいは をつけたものになる。 今の例では、 と である。