2008.10.30 by T. Kondo (KEK)
| TFile *f = new TFile("ggh4mu.root") | ファイルの読み込み。 |
| .ls or f->ls() or f.ls(); | 中身リスト。rootの中でのdirectoryをリスト。 |
| TBrowser tw; | twなどの名前はなんでもいい。 |
| f->cd ("ATLFAST") | change directry |
| histogram作成 | TH1F *h1 = new TH1F("h1","h1 title",100,-25.,25.); |
| dataを入れるには | root>#include <fstream>, root>ifstream fin("1hist.dat"); root>double x; root>while (fin >> x) h1->Fill(x); root>fin.close(); |
| h->Draw(); | Histogram"h"をDrawする。("SAME")重ねる("E")エラーバー(L")折れ線("P")マーカー("SAME P")で複数指定。 |
| 軸タイトル書き | d->SetXTitle("P_{x} (GeV)");({ }はLaTeX形式)、SetYTitle("Events/4 (GeV^{-1})");ギリシャ文字は#etaなど#をつける。 d->GetXaxis()->SetTitleOffset(0.8); (x軸からのオフセット調節) |
| d->SetLineColor(n); | (n=1)黒(2)赤(3)緑(4)青(5)黄(6)紫(7)空色(8)黄緑(9)青、線幅指定:h->SetLineWidth(5);線スタイル:h->SetLineStyle(2); |
| d->SetMarkerStyle(n) | (n=1)dot(2)✚(3)star(4)○(5)X(6)+(7)■(8)●(9)dot.., h->Draw(P);で描く。カラー指定:d->SetMarkerColor(n), サイズ設定:d->SetMarkerSize(3); |
| FILLする | h->SetFillColor(2),h->SetFillStyle(3002); |
| 文字記入 | TText *t=new TText(x,y,"MC event"); t->SetTextSize(0.04); t->Draw(); 前のものは消してくれる。 |
| マーカー | TMarker *m=new TMarker(x,y,4); m->Draw(); |
| 位置指定 | グラフのx,y座標を基準にする。m->SetX(0.3);m->SetY(0.8)など |
| 左上タイトル | d80->SetTitle("New Title"); d80->SetTitle();なら表示しない。 |
| 右上タイトル | d80->SetName("New Name") 消すにはgStyle->SetOptStat(0); |
| 統計表示 | defaultはgStyle->SetOptStat()(全情報)gStyle->SetOptStat(1111111);(非表示)gStyle->SetOptStat(0);かgStyle->SetOptStat(0001111); |
| 組込み関数フィット | れgaus、expo、polN (N>0)、landauがある。h->Fit("expo");領域限定はh->Fit("gaus","","",-80.,80.)フィット結果を重ねないはh->Fit("gaus","0","",-80.,80.);h->Draw();ここで第2引数はL (Likelihood method、デフォルトは chisq-method)、 E (Better errors estimation by MINOS)等があります。第3引数はDrawオプションでE (エラーバー付き) 。 |
| fit表示 | gStyle->SetOptFit();(非表示)gStyle->SetOptFit(0);(全情報)gStyle->SetOptFit(1111); |
| 縦軸調整 | h->SetMaximum(1.2);スケールの上限をset。下限はh->SetMinimum(0.0); |
| log表示 | 画面c1の左端あたりを右クリックするとSetLogyが出るので選ぶ。 |
| 横軸調整 | h->SetAxisRange(-100.,100.); |
| x,y軸範囲の拡大 | まずプロットし、x,y軸の下限数字近くで手模様が出たら右クリックし上限まで引く。 |
| c1->Divide(2,2); | 画面分割。 |
| c1->cd(2);h->Draw(); | 分割画面c1のパッド2を選ぶ。その後hをプロットする。 |
| c1->Clear(); | 画面クリアー |
| グリッド | c1->SetGrid(); |
| gPad->SetLogy(); | y軸をlogにする。gPad->SetLogy(0); でリニアーに変更。 |
| hist演算 | root>TH1F *d = new TH1F((*H1)/(*H2)); 田中純メモ参照 |
| root[2]c1.Print("file.ps") | ROOTのc1画面を出力する。file.eps,file.gifも可能。()ならc1.ps。 |
| GUI利用 | c1画面のメニューにSavea s canvas.psでc1.psができる。 |
| h2root zz.ntup zz.root | root-fileに変換する。いろいろ出てくる。 |
| . ! | はshellに戻る。.!ls, .!vi XX |
| .x Nmuo.C | マクロファイルNmuo.Cの実行。例
{
TFile *f = new TFile("ggh4mu.root");
f->cd("ATLFAST");
h51->Draw("Nmuo");
}
|
http://www.icepp.s.u-tokyo.ac.jp/~sakamoto/work/Pukiwiki/pukiwiki.php?UserAlgorithm
にある。
-----------------------------------------------------
.hの中では以下のようにTH1F*で定義しておくようだ
-----------------------------------------------------
#include "TH1.h"
private:
/** Histograms */
TH1F* m_h_cluset;
TH1F* m_h_cluse;
TH1F* m_h_cluseta;
TH1F* m_h_clusphi;
----------------------------------------------------
そしてcxx中では
----------------------------------------------------
#include "GaudiKernel/ITHistSvc.h" かなあ???
////////////////////////////////////////////////////////////////////////////////////
/// Initialize
addBranch("ElectronEt", m_aan_et);
addBranch("ElectronPhi", m_aan_phi);
addBranch("ElectronE", m_aan_e);
addBranch("ElecPtRatio", m_aan_elecetres);
/// ROOT histograms ---------------------------------------
m_h_cluset = new TH1F("EMTopoCluster430_et","et cl",50,0,5.*GeV);
sc = m_thistSvc->regHist("/AANT/EMTopoCluster430/clus_et",m_h_cluset);
m_h_electron_eta_vs_phi = new TH2F( "electron_eta_vs_phi", "Electron Eta vs Phi", 100, -5.0, 5.0, 90, 0, 360 );
m_thistSvc -> regHist( "/MyAnalysis/Electron/electron_eta_vs_phi", m_h_electron_eta_vs_phi );
}
m_aan_et->clear();
m_aan_phi->clear();
/// Execute - on event by event
m_h_cluset->Fill( (*elecItr)->et(), 1.);
m_h_cluse->Fill( (*elecItr)->e(), 1.);
m_h_cluseta->Fill( (*elecItr)->eta(), 1.);
m_h_clusphi->Fill( (*elecItr)->phi(), 1.);
m_h_electron_eta_vs_phi -> Fill( elec -> eta( ), phi, 1.0 );
/** fill Athena-Aware NTuple */
m_aan_eta->push_back((*elecItr)->eta());
-----------------------------------------------------------------
root> c1->Print("test.ps")
Info in : PostScript file test.ps has been created
rppt> c1->Update() まだ意味不明
root> TPostScript zzz("test-zzz.ps"
) ページを開く
root [17] h51->Draw("Nmuo")
root [18] c1->Update()
root [19] h51->Draw("Pxmuo")
root [20] c1->Update()
root [21] h51->Draw("Pymuo")
root [22] c1->Update()
Info in : PostScript file test.ps has been created
画面分割法
root [13] TFile *f = new TFile("ggh4mu.root") fは変数名、
root [14] f->cd("ATLFAST")
(Bool_t)1
root [15] TCanvas *c1 = new TCanvas("sakamoto","c1 title");
sakamotoはリソース名、c1はプログラム上の変数名、c1 titlはタイトル。
root [16] c1->Divide(3,2)
root [17] c1->Clear();
root [18] c1->Divide(3,2);
root [19] c1->cd(1);
root [20] h51->Draw("Nmuo");
root [21] h51->Draw("Pxmuo");
root [22] c1->cd(2);
root [23] h51->Draw("Eemuo");
root [24] c1->cd(3);
root [25] h51->Draw("Kfmuo");
STL
std::vector<Particle*> &AA Particle型の可変長配列(vextor)のAAをSTLのコンテナvectorで設定する。AA.push_back(a), AA.size(), AA.......などがある。
(蔵重の中級入門@岡山)
CLASS
class B : public A { } クラスAを基底として派生クラスBを定義する。Aのpublic memberはすべてBのpublicメンバになる。
その他
./ZZ < input.script >& log input.script入力でZZを実行し、すべての出力をlogに出す。
&& || ! .and. .or. not.
double x double precision float型の変数 x を定義。"float" "double" "long double"がある。
const double pi=3.14 定数識別子piの定義
int main(void) void識別子は引数がないことを示す。Cの流れで引数のvoidは省略できる。
void f(int); 関数fは整数引数をもつが値を返さない関数なのでvoidと書く。
p.eta(), p.phi(), p.pt(),
Particleクラス
eta(), phi(), pt(), pId().islsoMuon(), pType().pdgid(),
---------------------------------------------------
2003.7.22
9:11 mkdir ana
cd ana
cp /atlas/tutorial/root/atlfast/codes.tar.gz .
tar zxvf codes.tar.gz
cd samples/
source atlas/tutorial/root/etc/atlj.csh
echo $ATLJ_TOP_DIR
cd code01
gmake
./ZZ
現在6個のコマンドのみ .q, exit, quitなどで出る
code02がヒストグラム
文字列をptype unitで読み込んでいる
activate allで全ておんになり時間がかかる。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
2003.7.22
ここでZZー>Hを組むプログラムを入れる。隣の蔵重がたすけてくれた。
ZZ.h , ZZ.cxx を変える。
make clean が必要みたいだ。
gmake
./ZZ < signal.script > & log
root result.root
root [1] TBrowser tw
で見えるはず。
孫のmuonが重なっていないかcheckしたら39 eventsになるはず。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
バックグランドファイルは大きいので(100ファイル)、興味あるイベント
のみをのこして新しいファイルをつくる。code05
---------------------------------------------------------------
バックグランドを重ねるーーー> code04.ansをコピーする。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
長野
mkdir tgc
cd tgc
rootlogon.C
{
if (!TClassTable::GetDict("TgcDataObject")) {
gSystem->Load("libTgcDataObject.so");
}
TFile *f = new TFile("tgc_2.root");
f->ls();
TgcDataObject *data = new TgcDataObject();
TTree *tree = (TTree*)gROOT->FindObject("tree");
TBranch *branch = tree->GetBranch("data");
branch->SetAddress(&data);
}
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:
./ed
TGC H8 ED > next
------------------------------------------
Event: 26
------------------------------------------
L1ID: 27 BCID: 114 nSLB: 4
------------------------------------------
/usr/local/Acrobat5/bin/acroread RootTutorial.pdf &
に解説あり。
hits.C を変えて1イベント毎にプリントしてみ
Send your comments on this page to
kondo@kekvax.kek.jp