To use root on ccjlc, include following lines in your ~/.cshrc file. setenv ROOTSYS /jlc/local/root set path = (/jlc/local/egcs/bin $path $ROOTSYS/bin) setenv SHLIB_PATH $ROOTSYS/lib (note:) In standard set, gcc/g++ in /KEK/local/bin is default, which is not good to use with root. To supersede default g++/gcc, /jlc/local/egcs/bin must be in front of other directory including gcc/g++ ********************************************* Announcement about root sent to ccuses. ********************************************* From owner-ccusers@jlcux1.kek.jp Fri Jul 24 13:33 JST 1998 X-Authentication-Warning: jlcux1.kek.jp: majordomo set sender to owner-ccusers@jlcux1.kek.jp using -f Date: Fri, 24 Jul 1998 13:33:42 +0900 (JST) From: MIYAMOTO Akiya Subject: [ccusers:16] root v2.09 was installed in ccjlc To: ccusers@jlcux1.kek.jp X-Mailer: TkMail 4.0beta9 Sender: owner-ccusers@jlcux1.kek.jp Precedence: bulk ccuser 各位 ccjlc の/jlc/local/root に root v2.09 をインストールしましたので、使ってみてください。 root はオブジェクト指向技術を用いて、ヒストグラミング、データベース、 ドキュメンテーション、ネットワーキングなどを統一的に扱うフレームワーク で、CERN等で開発が進められています。既に、HP-UX や Linux など多くの OS で動いていますが、今回はEGCS の g++/gcc を使い、interactive にroot を走らせる 部分と、hbook ファイルを root ファイルに変換するユーティリティーを HI-UX へ移植しました。 root を使うには ~/.cshrc に以下の行を挿入してください。 setenv ROOTSYS /jlc/local/root set path = ($path $ROOTSYS/bin) setenv SHLIB_PATH $ROOTSYS/lib root を走らせる例を以下に示します。 (1) tutorial デモプログラムを実行する。 $ cp /jlc/local/root/tutorials . <-- root tutorials を自分のディレクトリーにコピーする。 $ cd tutorials $ root <--- root を開始する。 .......... root [0] .x demos.C <-- demo 用 macro を実行する この後、ボタンバーガ表示されますので、ボタンを押してデモを実行してみてください。 root を終了するには、 .q を入力してください。 (2) test デモを行う。 $ cp /jlc/local/root/test . <-- root test を自分のディレクトリーにコピーする。 $ cd test $ make ...... make でテストプログラムが作成されます。 (3) shared library を使って e+e- -> Zh の total cross section の図を書く例。 ~miyamoto/example/root/higgs にあるので見てください。 (4) hbook file を root file に変換して、表示する例。 $ h2root file.hbook file.root <-- root ファイルへの変換 ...... $ root ..... root [1] b = new TBrowser("Browser") これにより、Root Object Browser が表示されます。ヒストグラムを表示させるには File メニューの Open で ファイルを open した後で、All Folders の中の ROOT Files をクリックします。そのとき表示される root ファイルをクリックし、次に ヒストグラムをクリックすると、絵が表示されます。 h2root では(標準で)データ圧縮が行われます。私の例ではデータサイズが hbook に比べて1/10 になりました。 そのほか詳細な説明は、/jlc/local/root/AA_README や http://root.cern.ch/ に ありますので、見てください。 今回のを移植では、インストールに際してメモリーチェックの フラッグを立ててコンパイルすると、実行時にエラーになるので、 メモリーチェックをしないオプションでコンパイルしました。 これは、root にバッグがあるとか、Hitach ld に問題があるとか、など 理由が考えられます。 root の使用にあっては、注意して使ってください。 また、 ccjlc でのroot の使用にあたって問題がありましたら、私まで 連絡下さい。 以上 ------------------------------------------- 宮本彰也 物理第2研究系 素粒子原子核研究所 高エネルギー加速器研究機構(KEK) 〒305-0801 茨城県つくば市大穂1ー1 Tel: 0298-64-5371 Fax: 0298-64-2580 E-mail: akiya.miyamoto@kek.jp [1] Example 1 Convert an HBOOK file to a ROOT file and draw a 2D plot and its X and Y projections. jlcuxf[1]$ h2root p3s350p-1.hbook jlcuxf[2]$ root ******************************************* * * * W E L C O M E to R O O T * * * * Version 2.00/04 8 April 1998 * * * * You are welcome to visit our Web site * * http://root.cern.ch * * * ******************************************* CINT/ROOT C/C++ Interpreter version 5.13.46, Mar 22 1998 Type ? for help. Commands must be C++ statements. Enclose multiple statements between { }. root [0] TCanvas *c1 = new TCanvas("c1"," ",200,10,600,480); root [1] c1->Divide(2,2); root [2] c1_1->cd(); root [3] TFile *f = new TFile("p3s350p-1.root"); root [4] TH1F *h204 = (TH1F *) gROOT.FindObject("h204"); root [5] h204->Draw(); root [6] c1_2->cd(); root [7] h204->ProjectionY(); root [8] h204_py->Draw(); root [9] c1_3->cd(); root [10] h204->ProjectionX(); root [11] h204_px->Draw(); root [12] c1->cd(); root [13] c1->Print("h204.ps"); root [14] .q jlcuxf[3]$ [2] Example 2 Operations among histograms. jlcuxf[3]$ root ******************************************* * * * W E L C O M E to R O O T * * * * Version 2.00/04 8 April 1998 * * * * You are welcome to visit our Web site * * http://root.cern.ch * * * ******************************************* CINT/ROOT C/C++ Interpreter version 5.13.46, Mar 22 1998 Type ? for help. Commands must be C++ statements. Enclose multiple statements between { }. root [0] TCanvas *c1 = new TCanvas("c1"," ",200,10,600,480); root [1] c1->Divide(2,2); root [2] c1_1->cd(); root [3] TFile *f = new TFile("p3s350p-1.root"); root [4] f->ls(); TFile** p3s350p-1.root TFile* p3s350p-1.root KEY: TH1F h1;1 Cut statistics @ KEY: TH1F h2;1 # combined tracks @ KEY: TH1F h3;1 # isolated leptons @ KEY: TH1F h4;1 # good tracks @ KEY: TH1F h5;1 E_lepton @ KEY: TH1F h6;1 E_cone @ KEY: TH1F h7;1 Pt @ KEY: TH1F h8;1 m_JJ @ KEY: TH1F h9;1 Acoplanarity @ KEY: TH1F h10;1 NTRY(y_cut) @ KEY: TH1F h11;1 y_cut(2-jet) @ KEY: TH1F h12;1 2-jet fracton @ KEY: TH1F h13;1 3-jet fracton @ KEY: TH1F h14;1 4-jet fracton @ KEY: TH1F h15;1 5-jet fracton @ KEY: TH1F h21;1 m_JJ @ KEY: TH1F h22;1 m_JJ final @ KEY: TH1F h23;1 cos(theta_l) final @ KEY: TH1F h24;1 cos(theta_J) final @ KEY: TH1F h25;1 Pt final @ KEY: TH1F h26;1 Acoplanarity final @ KEY: TH1F h27;1 Thrust final-1 @ KEY: TH1F h28;1 y_cut(2-jet) final @ KEY: TH1F h29;1 E_cone final @ KEY: TH1F h30;1 E_lepton final @ KEY: TH1F h31;1 E_JJ final @ KEY: TH1F h32;1 m_lnu final-1 @ KEY: TH2F h204;1 (Evis,Pl) @ KEY: TH2F h223;1 (Evis,Pl)final@ root [5] TH1F *h29 = (TH1F *) gROOT.FindObject("h29"); root [6] TH1F *h30 = (TH1F *) gROOT.FindObject("h30"); root [7] h29->Draw(); root [8] c1_2->cd(); root [9] h30->Draw(); root [10] c1_3->cd(); root [11] TH1F *h29plus30 = new TH1F("h29plus30","h29+h30",150,0.,150.); root [12] *h29plus30 = *h29 + *h30; root [13] h29plus30->Draw(); root [14] *h29plus30 = *h29 + 10*(*h30); root [15] h29plus30->Draw("E"); root [16] .q jlcuxf[4]$ [3] Example 3 Plot options. jlcuxf[8]$ root ******************************************* * * * W E L C O M E to R O O T * * * * Version 2.00/04 8 April 1998 * * * * You are welcome to visit our Web site * * http://root.cern.ch * * * ******************************************* CINT/ROOT C/C++ Interpreter version 5.13.46, Mar 22 1998 Type ? for help. Commands must be C++ statements. Enclose multiple statements between { }. root [0] TCanvas *c1 = new TCanvas("c1"," ",200,10,600,480); root [1] c1->Divide(2,2); root [2] c1_1->cd(); root [3] TFile *f = new TFile("p3s350p-1.root"); root [4] f->ls(); TFile** p3s350p-1.root TFile* p3s350p-1.root KEY: TH1F h1;1 Cut statistics @ KEY: TH1F h2;1 # combined tracks @ KEY: TH1F h3;1 # isolated leptons @ KEY: TH1F h4;1 # good tracks @ KEY: TH1F h5;1 E_lepton @ KEY: TH1F h6;1 E_cone @ KEY: TH1F h7;1 Pt @ KEY: TH1F h8;1 m_JJ @ KEY: TH1F h9;1 Acoplanarity @ KEY: TH1F h10;1 NTRY(y_cut) @ KEY: TH1F h11;1 y_cut(2-jet) @ KEY: TH1F h12;1 2-jet fracton @ KEY: TH1F h13;1 3-jet fracton @ KEY: TH1F h14;1 4-jet fracton @ KEY: TH1F h15;1 5-jet fracton @ KEY: TH1F h21;1 m_JJ @ KEY: TH1F h22;1 m_JJ final @ KEY: TH1F h23;1 cos(theta_l) final @ KEY: TH1F h24;1 cos(theta_J) final @ KEY: TH1F h25;1 Pt final @ KEY: TH1F h26;1 Acoplanarity final @ KEY: TH1F h27;1 Thrust final-1 @ KEY: TH1F h28;1 y_cut(2-jet) final @ KEY: TH1F h29;1 E_cone final @ KEY: TH1F h30;1 E_lepton final @ KEY: TH1F h31;1 E_JJ final @ KEY: TH1F h32;1 m_lnu final-1 @ KEY: TH2F h204;1 (Evis,Pl) @ KEY: TH2F h223;1 (Evis,Pl)final@ root [5] TH1F *h30 = (TH1F *) gROOT.FindObject("h30"); root [6] TH1F *h31 = (TH1F *) gROOT.FindObject("h31"); root [7] TH1F *el = new TH1F("el","E_lepton",150,0.,150.); root [8] TH1F *ejj = new TH1F("ejj","E_JJ",150,0.,150.); root [9] (*el) = (*h30); root [10] (*ejj) = (*h31); root [11] TH1F *eljj = new TH1F("eljj","E_lepton+E_JJ",150,0.,150.); root [12] (*eljj) = (*el) + (*ejj); root [13] el->Draw("E"); root [14] c1_2->cd(); root [15] ejj->Draw("E"); root [16] c1_3->cd(); root [17] eljj->Draw("elp"); root [18] el->Draw("same"); root [19] ejj->Draw("same"); root [20] .q jlcuxf[9]$ [4] Example 4 Rebin a histogram. jlcuxf[9]$ root ******************************************* * * * W E L C O M E to R O O T * * * * Version 2.00/04 8 April 1998 * * * * You are welcome to visit our Web site * * http://root.cern.ch * * * ******************************************* CINT/ROOT C/C++ Interpreter version 5.13.46, Mar 22 1998 Type ? for help. Commands must be C++ statements. Enclose multiple statements between { }. root [0] TCanvas *c1 = new TCanvas("c1"," ",200,10,600,480); root [1] TFile *f = new TFile("p3s350p-1.root"); root [2] .L rebin.C root [3] TH1F *h31 = (TH1F *) gROOT.FindObject("h31"); root [4] TH1F *ejj = Rebin(h31,4); root [5] ejj->SetMarkerStyle(21); root [6] ejj->SetMarkerSize(1.5); root [7] ejj->SetFillColor(32); root [8] ejj->Draw(); root [9] ejj->Draw("elp same"); root [10] c1->SetFillColor(42); root [11] c1->Draw(); root [12] .q [4] Example 4 More plot options. jlcuxf[12]$ root ******************************************* * * * W E L C O M E to R O O T * * * * Version 2.00/04 8 April 1998 * * * * You are welcome to visit our Web site * * http://root.cern.ch * * * ******************************************* CINT/ROOT C/C++ Interpreter version 5.13.46, Mar 22 1998 Type ? for help. Commands must be C++ statements. Enclose multiple statements between { }. root [0] TCanvas *c1 = new TCanvas("c1"," ",200,10,600,480); root [1] TFile *f = new TFile("p3s350p-1.root"); root [2] f->ls(); TFile** p3s350p-1.root TFile* p3s350p-1.root KEY: TH1F h1;1 Cut statistics @ KEY: TH1F h2;1 # combined tracks @ KEY: TH1F h3;1 # isolated leptons @ KEY: TH1F h4;1 # good tracks @ KEY: TH1F h5;1 E_lepton @ KEY: TH1F h6;1 E_cone @ KEY: TH1F h7;1 Pt @ KEY: TH1F h8;1 m_JJ @ KEY: TH1F h9;1 Acoplanarity @ KEY: TH1F h10;1 NTRY(y_cut) @ KEY: TH1F h11;1 y_cut(2-jet) @ KEY: TH1F h12;1 2-jet fracton @ KEY: TH1F h13;1 3-jet fracton @ KEY: TH1F h14;1 4-jet fracton @ KEY: TH1F h15;1 5-jet fracton @ KEY: TH1F h21;1 m_JJ @ KEY: TH1F h22;1 m_JJ final @ KEY: TH1F h23;1 cos(theta_l) final @ KEY: TH1F h24;1 cos(theta_J) final @ KEY: TH1F h25;1 Pt final @ KEY: TH1F h26;1 Acoplanarity final @ KEY: TH1F h27;1 Thrust final-1 @ KEY: TH1F h28;1 y_cut(2-jet) final @ KEY: TH1F h29;1 E_cone final @ KEY: TH1F h30;1 E_lepton final @ KEY: TH1F h31;1 E_JJ final @ KEY: TH1F h32;1 m_lnu final-1 @ KEY: TH2F h204;1 (Evis,Pl) @ KEY: TH2F h223;1 (Evis,Pl)final@ root [3] TH1F *h30 = (TH1F *) gROOT.FindObject("h30"); root [4] TH1F *h31 = (TH1F *) gROOT.FindObject("h31"); root [5] .L rebin.C root [6] TH1F *el = Rebin(h30,5); root [7] TH1F *ejj = Rebin(h31,5); root [8] TH1F *eljj = new TH1F("eljj","E_lepton+E_JJ",150,0.,150.); root [9] (*eljj) = (*el) + (*ejj); root [10] eljj->SetMarkerStyle(21); root [11] eljj->SetMarkerSize(1.5); root [12] eljj->Draw("elp"); root [13] el->SetFillColor(42); root [14] ejj->SetFillColor(32); root [15] el->Draw("same"); root [16] ejj->Draw("same"); root [17] el->Draw("same"); root [18] ejj->Draw("same"); root [19] eljj->Draw("elp same"); root [20] c1->SetFillColor(40); root [21] c1->Draw(); root [22] .q jlcuxf[13]$