/ ROOT.html

ROOT:便利なコマンド表と使い方の例

2016.6.1 by Taka Kondo (KEK)


link to: http://root.cern.ch | ROOT user's guide | ROOT入門jlc | AJ-ROOTトレーニングコース |
Taka Kondoの私的備忘用メモです。:   Linux   ROOT   C++   html   Perl   Python   TeX   TWiki   SVN   shell   vi   emacs |
| 演算 | | 文字 | 関数とfit
ROOTの起動・終了・実行root -l(logoなし),root -b(displayなしbatch modeで走る), root -b -q myMacro.C > myMacro.log(script走らせて出力をだし-qなので終わる)。終了は.q(.qqqのほうが強力で、.qqqqqのほうがさらに強力)。ROOTのセットアップ法(2016.2現在)。マクロファイルxxx.Cを直ちに実行するにはroot -b xxx.Cで。終了後自動的にROOTから抜けるにはroot -b -q xxx.C(とすればshell scriptから起動して終われる)。
ATLAS Templatesee Setup_ROOT6.pdf(as of 2016.2), アトラススタイルガイドの最後の「ROOT Style for official ATLAS plots 」にセットアップ法がある。atlasstyle-00-03-05.tar.gz: ATLAS ROOT Style (stable).を解凍して$HOME/RootUtils/に置く(dot.roorcはdotを外して$HOME/におく)と自動的にATLAS Styleがroot起動時にセットされる。ただしROOT 6などではエラーが出るのでrootlogon.Cをこのように修正する(2016.1現在)。「gROOT->LoadMacro("AtlasStyle.C"); SetAtlasStyle();」をATLASの指定を変更したいときはgROOT->LoadMacro("AtlasUtils.C");ATLAS->SetPadTickX(1);ATLAS->SetPadTickY(0);ATLAS->SetPadRightMargin(0.12);とする。ATLAS Style in short(古い)
マクロマクロファイルの実行.x Nmuo.C。例 randGaus.C結果, マクロで使う変数には Int_t, Long64_t, Double_t などの処理系非依存型を使うようにする(理由)。
シェルスクリプトから引数渡しroot -b -q -l plot.C とすれば終了したらシェルスクリプトに戻る。ROOTプログラムplot.Cに引数を渡したいときは 'plot.C(132.5)' (ここで '    ' とプライムで囲むことが必要)とし受ける側にvoid plot(double x){............}などとする。シェル変数を渡したいときはこの例で試してみる。
ファイルのコンパイルCINTがc++の文法に厳格ではないので、ファイルをコンパイルしてから実行する方がよい。.L file.cxx+でコンパイルしてから.x file.cxx+とする。ROOT 6ではコンパイラーがClingに言語が変わりより文法に厳格になり実行スピードも速くなった。
C++でROOTを使うネイティブC++プログラムとして開発する方法; 手動でコンパイル: g++ `root-config --cflags --libs` sample_gaus.cxx -o sample_gaus alias r++='g++ `root-config --cflags --lib`'とセットしておけば r++ sample.cc class.cc -o sampleでいい。
TTreeTFile *f=new TFile("NOChipData_now.root"); .dir *.root; で取りいれたことを確認。f->ls();でobjにTTreeがあることがわかる。 TTreeViewer v("FullTree"); TTree * t=f.Get("FullTree;1"); t->Show(0), t->Show(1).....で内容が出る。t.Draw("NOChip12>>h12");でhistogram h12に内容が移される。後は普通のhistogram。
method探索法コマンド=method(= member function)は図を描いて対象の場所を右クリックすればリストが表示されるのでmethod探しに便利。例(pdf
TFileファイルの読み込み。TFile *f = new TFile("demo.root")
TProfile(p.42), 各XビンのYの平均とその誤差(またはRMS:option "s"を最後に着けた場合, p.43参照)を表示する。hp = new TProfile("hp","Profile", 50,-4,4,ymin,ymax);ここでyはymin-ymaxの間のみfillされる。hp->Fill(px,pz,1);TProfile.C->出力例, ビン内容はGetBinEntries(i),GetBinContent(i),GetBinError(i),hi->GetXaxis()->GetBinCenter(i), iは1から
.ls or f->ls() or f.ls();中身リスト。rootの中でのdirectoryをリスト。
TBrowser tw; twなどの名前はなんでもいい。
xxx.root出力TFile f("demo.root","recreate");h->Write();,f.Close();でいい。多くのhistogram扱うにはTObjArray Hlist(0)を定義しHlist.Ass(h);と追加してからHlist->Write(); see p.159 , 例->make_root_file.C、作ったrootを読んだ例はfitExample.C
f->cd ("AAA")change directry
1次元ヒストグラムTH1F *h1 = new TH1F("name","title",100,-25.,25.); "name"はhistogram名(右上に出る)、"h1 title"は左上に出るタイトル。TH2F *h2 = new TH2F("h2","h2 title",40,0,4,30,-3,3);
2次元プロットh = new TH2F("h","2D",34,0.,80.,57,0.,285.); ...,h2->Draw("COLZ");例:plot_2D.Cその図。Palette項参照。具体例:plot_2D_B3.Cその図
3次元プロット例:plot_3D.C結果図
それのコピーTH1F *hnew = (TH1F*)h->Clone(); hnew->SetName("hnew"); // 新しいnameを付けないと同じ名のヒストグラムが2つ出来てしまう。
多くのhistTH1F *h1[6] "name"を変えること。-->plot_manyHist.C出力例
N個のプロット2plots.C結果図、等しい上下図はequal-2plots.C結果図vertical-Nplots.C結果図その説明, NX*NY画面:plot_NXNY.C(外部関数として使う時はplot_NXNY_func.C)と, 1*NY画面:plot_NY.C, plot_4x2.C, plot_3x3.C, plot_3x2.C, 外部関数としてセットアップするにはplot_NXNY_func.Cとその図。しかしこの方法ではpngで図は書けるけどpdfはダメのよう(理由不明,2016.6.1)。
連結したグラフequal-12plots.C結果図
グラフの作成ATLAS用標準グラフ例結果図、Int_t n = 409; Double_t x[n]; b[n]; h1 = new TGraph(n,x,b); g1->Draw("ALP")(ここでAはXY軸を描く指定。但し重ねるときは次からDraw("SAME LP")とAを落とす。Pはmarker。Lはsimple poly-lineを書く。例:graph_Xlog.C。gr = new TGraphErrors(n,x,y,ex,ey)(例gerrors.C): 非対称エラー gr = new TGraphAsymmErrors(n,x,y,exl,exh,eyl,eyh); エラーバーのendをなくしたい場合はDraw("APZ")などZを加える。
1σエラー領域の色表示例:error_band.C(2012.3.8にわかった!)軸目盛が隠されたら「軸の追加書き込み」の項目参照。
txtデータの入出力ifstream fin("1hist.dat"); while (fin >> x); fin.close();ーー> ifstream_ofstream.C 出力はofstreamで対応するファイルがなければ新しく作ってくれる。最初の行をスキップするときは char line[255]; fin.getline(line,sizeof(line)); で。出力:fout<<a<<" "<<b<<endl;が必要。appendするときは ofstream fapp("out.dat", std::ios::app);とおく。\n for CRLF. 参照
加算・割算・乗算h1.Scale(8.0)で8.0倍(h1->Scale(8.0);、TH1F h3=8*h1;(or TH1F h3=8*(*h1);), TH1F h3=h1*h2;(TH1F h3=(*h1)*(*h2);)
h->Draw(); Histogram"h"をDrawする。("SAME")重ねる("E")エラーバー("L")折れ線("P")マーカー("SAME P")で複数指定。2次元Drawでカラー描画はDraw("COLZ")Zはcolor palettを脇につくる。(p.134) pretty color(青ー>赤)はgStyle->SetPalette(1);とする。例plot_2D.C, Lego plot例:plot_2D_lego.Clego,lego1,lego2 : Surf plot例:plot_2D_surf.Csurf,surf1,surf2,,surf3,surf4,surf5 :
内容消去h1->Reset();
bin内容アクセスyyy=h1->GetBinContent(i),h1->GetBinError(i),h1->GetBinEntries(i)(TProfileには効く),h1->GetBinCenter(i),h1->GetBinLowEdge(i),h1->GetBinWidth(i); GetEntries()で総数が得られる。注意:ビンは1から始まる。例:getBinInformation.Cー>出力
bin内容を入れるhisto->SetBinContent(i+1,data[i]);histo->SetBinError(i+1,TMath::Sqrt(data[i])); bin番号は1から始まる。
binのx軸センター値Double_t xcenter=h1->GetXaxis()->GetBinCenter(i);
:→topへ
X,Y軸の最少値最高値h->GetXaxix()->GetXmin();h->GetXaxis()->GetXmax();y=gPad->GetUymax(); GetUymin() scaleの違う2つのグラフ重ねるときに有効ー>右軸の追加参照
軸タイトルと軸ラベルh1->GetXaxis()->SetLabelSize(0.05),SetLabelColor(2),SetLabelOffset(0.2),SetTitleSize(0.05)など。TGraphではh->GetXaxis()->SetTitle("tt")が必要(axisのa小文字)), d->GetXaxis()->SetTitleOffset(0.8); (x軸からのオフセット調節),TH1Fなどは直接d->SetXTitle("P_{x} (GeV)")もできる。例はaxisSet.C->;({ }はLaTeX形式)、SetYTitle("Events/4 (GeV^{-1})");ギリシャ文字は#etaなど#をつける。上付き^{2},下付き_{a}など。
縦軸調整h->SetMaximum(1.2);スケールの上限をset。下限はh->SetMinimum(0.0);
横軸の範囲調整g1->GetXaxis()->SetRangeUser(0.,12.)<-これはzoom時のみ有効みたい。TGraphで範囲決めたいときのごまかし方ー>SetRange_TGraph.C; g1->GetXaxis()->SetLimits(0.,12.)とすればTGraphでも有効だ(2011.2.7) ところがTProfile, histに使ったらplotは変わらず横軸だけスケールした(2011.4.9, ,)。
x,y軸範囲の拡大プロットしx,y軸の下限数字近くで手模様が出たら右クリックし上限まで引く。
年月日や時間軸(p125)(指定)h->GetXaxis()->SetTimeDisplay(1); (形式)h->GetXaxis()->SetTimeFormat("%d\/%m\/%Y");%yなら世紀なし,%H(24hour clock),%M,%S (Time Offset)TDatime da(2003,02,28,12,00,00);gStyle->SetTimeOffset(da.Convert());(合成して)h->GetXaxis()->SetTimeFormat("%d\/%m\/%y%F2000-02-28 13:00:01"); (2段で表示する) ;gr0->GetXaxis()->SetTimeFormat("#splitline{ %Y}{%b %d}");axis->SetTimeFormat("#splitline{%Y}{%d\/%m}"); #splitline{%b %d}{%H %M}");実例ー> see time_test.Cplot図。注意:gStyle->SetTimeOffset(da.Convert())でxはoffsetがかかっているから0.が左端になる。TDatime d2(2010,12,28,12,00,00);int t2=d2.Convert()で秒単位に統一した数字になる。 see time.C,24:00:00もOK(time_2.C)。 注意2:hour表示(H)がなぜか8時間ずれるtime_hour_test.C結果図
TGaxishistogram/graphと独立に軸を描く。axis = new TGaxis(x1,y1,x2,y2,v1,v2,510,"+L");tick markに対してL=left,R=right,C=center, +,-,+-はside指定。" ","-","-R"はtick右,label左 (標準)で"+L"はtick左,label右(右辺にいい)だった。;例 axis = new TGaxis(gPad->GetUxmax(),gPad->GetUymin(),gPad->GetUxmax(),gPad->GetUymax(),0,rightmax,510,"+L");
軸の表示桁
指数はずし
(p.123-124) h->GetYaxis()->SetNoExponent();。TGaxis::SetMaxDigits(6)(defaultは5)で高くできるがTGaxisにしか使えないのでXaxis=new TGaxis(0,1,100,0,0,100,0,"+L");とダミーで作っておきXaxis->SetMaxDigits(6);とやればそれ以降画面は6ケタになる。Draw()いらない。その図
軸の生成(page. 123) TGaxis(Double_t xmin,Double_t ymin,Double_t xmax,Double_t ymax,Double_t wmin, Double_t wmax,Int_t ndiv = 510,Option_t* chopt,Double_t gridlength = 0)
軸目盛の設定(p.122)gr0->GetXaxis()->SetNdivisions(505);ndiv = N1 + 100*N2 + 10000*N3, N1=最細分割数. N2=次の分割数、default=510。optimizationがある。負にするとexactに分割。目盛(tick)の長さはh->GetXaxis()->SetTickLength(0.03)など。(右のY軸を目盛らない)c1->SetTicky(0);(上のX軸を目盛らない) c1->SetTickx(0);参考図
右軸などの追加TGaxis *axis = new TGaxis(t2,ymin,t2,ymax*0.8,ymin,ymax*0.8,510,"+L"); axis->SetLabelSize(0);axis->Draw(); 例rightAxis.C,axis.Cその図, twoScales.Cその図, 目盛が重複しないためにはc1->SetTicky(0); c1->SetTickx();でいい?? ATLAS->SetPadTickY(0);ならいいが。右軸に2種類の目盛を並べた具体例ー>plot_2RightAxis_sample.C結果図
軸の追加書き込みFillなどで目盛が隠されてしまった場合に使う。TGaxis *axis = new (左Y軸)TGaxis(xmin,ymin,xmin,ymax,ymin,ymax,510,"-");(下X軸)TGaxis(xmin,ymin,xman,ymin,xmin,xmax,510,"-");"-"は目盛りの方向を示す。"+-"もいい。 axis->SetLabelSize(0);axis->Draw(); gPad->RedrawAxis()でいいかも(see p.38)
log,対数表示(p.113)gPad->SetLogy():y軸をlogにする。SetLogx()もあり。gPad->SetLogy(0);でリニアーに変更。あるいはキャンバスc1の左端あたりを右クリックするとSetLogyが出るので選ぶ。
対数目盛ヒストグラムはlinearで取る()Full(log10(x))で取るが軸は対数目盛にしたい場合はh->GetXaxis()->SetTickLength(0.0);で目盛りをなくしておいてからaxis = new TGaxis(xmin,ymin,xmax,ymin,pow(10.,xmin),pow(10.,xmax),510,"+G"); axis->Draw();で追加して書く。10**5なども表示される。fontが合わないかも?
RedrawAxis()Fillで目盛が隠されてしまった場合に使うgPad->RedrawAxis().使えなかった(2012.3.22), h1->Draw("sameaxis");もダメだった??
パレットpaletteh2->Draw("COLZ");c1.Update();pal = (TPaletteAxis*)h2->GetListOfFunctions()->FindObject("palette"); pal->GetAxis()->SetTitle("your own title"); pal->SetLabelSize(0.03); 例 plot_2D.C
画面余白調整c1 = new TCanvas("c1","A Simple Graph ",300,0,750,560); c1->SetLeftMargin(0.12);, c1->SetBottomMargin(0.10);
演算 :→topへ
Scale変更Float_t rightmax = 1.1*hint1->GetMaximum(); Float_t scale = gPad->GetUymax()/rightmax; hint1->Scale(scale);
正規化(1.0にする)h->DrawNormalized("",1.0);またはDouble_t scale=1./Photo_r_phi->Integral(); Photo_r_phi->Scale(scale);とする。 面積を1にしたい場合は田中純メモ
hist演算root>TH1F *d = new TH1F((*H1)/(*H2)); スケール倍はTH1F *s = new TH1F(2.5*(h)); / 田中純メモ参照
ERRORの扱いh->DrawNormalized("E")で出るが、正規化したりしてスケールずらす時は事前にbin毎にh->SetBinError(i+1,h->GetBinError(i+1));でエラーを強制的に書き込んでおくことー>
文字 :→topへ
ギリシャ・数文字・特殊記号TLatex *t=new TLatex(x,y,"#alpha #eta");-->page 118にリストあり。 Greek, Symbol, Accent, SQRTは#sqrt{x+1}。%は%%としないと出ないみたい。ℓは\ellか ここ参照
文字記入TText *t=new TText(x,y,"MC event"); t->SetTextSize(0.04); t->SetTextColor(2); t->Draw(); 前のものは消してくれる。角度変更t->SetTextAngle(45);
数字(文字)を文字列にcid = new char[9];とはじめのあたりに宣言しておくと便利。何回も使える。sprintf(cid,"V%d.txt\0",HV);\0はNULL文字(文字列の終端を示す)でcid[8]=0でもいいが\0を最後につけておくのが簡単。sprintfは自動的に付けるようだ。int HV=150ならV150.txtとなる。(int)x でfloat->intの変換ができる。\nは改行;leg->AddEntry(h3[i],cid,"l"); ->sprintfの例, 小数点の桁指定は%6.2fとする(例:sprintf.C->)。%3dは3文字幅を指定。%02dで08などと頭にゼロをつけてくれる(時刻用)。文字は%sで受ける。例:sprintf.cxx
文字列の分解strtok()を使う。strtok()
文字列を数値に変換atoi、atof、_atoi64、atol を使う。atoi()
凡例Legend(p.137) leg = new TLegend(x1 ,y1 ,x2, y2);絶対座標系(normalized coordinates (NDC))、leg->AddEntry(h1,"One Theory","l");leg->AddEntry(h2,"Another Theory","f"); SetFillColor(kWhite);leg->SetFillColor(10)(背景色=白), leg->SetBorderSize(0)(0=枠なし、1=枠あり、2=枠とその影), leg->SetTextSize(0.03);leg->Draw(); ->SetBorderSize(2);leg->SetTextFont(132);"f"=box, "l"="L"=line, "p"=markerを表す。 Legendとは伝説・凡例・説明文のこと->Legend.txt、SetTextSize(0.04)を使うと枠から飛び出ても文字を書いてくれて自動調節がなくなるからいい。また同時にy1=y2とすればLegend領域の色が示されないので背景の色などが消されないー>
フォント指定(p.131)Fontリスト, t->SetTextFont(font); font = 10 * fontID(1-14) + precision,( 0,1,2), ->font.C, defaultは62, 132がTimesNew Roman --> see SetTextFont.txt結果図
マーカーd->SetMarkerStyle(n) (n=1)dot(2)+(3)*(4)○(5)×(6)+(7)■(8)●(9)dot(20)---(30)はROOT_markerを見よ。 h->Draw(P);で描く。カラー指定:d->SetMarkerColor(n), サイズ設定:d->SetMarkerSize(3)(これはダメみたい->マーカー; gr3->SetMarkerStyle(21); TMarker *m=new TMarker(x,y,4); m->Draw(); 例はMarker.C, ROOT_markerを見よ。
直線を描くz1=new TLine(30000,0, 30000,0.16); z1->SetLineColor(n); z1->Draw();同じものは上書きになる。newを付ければ同じz1を使える。
線の幅・styled->SetLineWidth(5);線スタイル:d->SetLineStyle(2)[1=line,2=broken,3=dotted,4=broken-dot,5=long-broken-dot]
矢印TArrow *ar = new TArrow(4,0.2,4,4.5,0.02,"|>");ar->SetLineWidth(3); ar->SetArrowSize(0.02);ar->Draw(); arrow.C->
長方形を描くb = new TBox(0.2,0.2,0.8,0.3); b->SetFillColor(5); b->SetFillStyle(3001); b->Draw();
長方形TPavep = new TPave(0.2,225,7.2,345); これはTLegendと違ってuser座標のようだ。p->SetFillColor(10); p->SetBorderSize(2);2以上だと影が出来る、p->SetLineColor(1);p->Draw();
:→topへ
色・模様をFILLする(p.133) h->SetFillColor(2),h->SetFillStyle(3002);例:TBox.C ==>FillStyles。SetFillStyle(3002)などを使うと後ろの座標目盛が隠れない→。カラー指定:d->SetMarkerColor(n)(n=0と10は透明のようだ。kWhiteを使えば白を指定できる。)
(p.134)色RootColorIndexを参照。(n=1)黒(2)赤 (3)bright緑(4)bright青(5)黄 (6)桃色(7)空色 (8)黄緑(9)青(10)白(透明?)。color index+100で暗く、+150で明るくできる。
背景を透明にするphotoshop elementで(1)選択する色を(スポイトでなく)領域(点線□)でえらぶ。shiftキーで複数色を選べるー>(2)付近の色で選択する。(3)新しいキャンパス(透明)にコピーし(4)pngでsaveすればよい。jpegでは背景が白くなる。
多彩な色表現色番号の代わりにSetFillColor(kRed)のようにkBlack,kGray,kWhite,kRed,kOrange,kYellow,kSpring,kGreen,kTeal,KCyan,lAzure,kBlue,kViolet,kMagentaがある。kRed+9-10まである。kRed-4だとか。Root Color Wheel参照。詳しい説明はここにある。
色でFILLするg->SetFillColor(45); Draw(ALF)のFが必要。例1図1,例2図2
位置指定グラフの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); fit(1111)の例
TCanvasc1 = new TCanvas("c1","A Simple Graph",0,0,700,500);0,0,750,500はスクリーの位置のよう。c1->SetFillStyle(4100); TCanvas *c1 = new TCanvas("sakamoto","c1 title");sakamotoはリソース名、c1はプログラム上の変数名、c1 titlはタイトル。Draw()でやるとc1がdefaultで出来るらしい。
画面分割c1->Divide(2,2);c1->cd(1);h->Draw();から始まる。c1->cd(0)でDivie(1,1)に戻る。c1->Divide(1,2,0,0)で2つのグラフをつなげられそう( plot_2G.CtwoGraph.gifgif,pngでは右端おかしいがepsならいい。参照。NX*NY画面:plot_NXNY.C
c1->Clear(); 画面クリアーする。Divie(1,1)に戻るようだ。
c1.Print("file.ps")ROOTのc1画面を出力する。file.eps,file.gifも可能。()ならc1.ps。
グリッドc1->SetGrid();
乱数発生:gRandomgRandom->Rndm() or Uniform(min,max), Gaus(mean,sigma), Exp(tau), BreitWigner(mean,sigma), Landau(mean,sigma), Poisson(mean), Binomial(ntot,prob) 例;randomGaus.C, 11.4. 乱数ジェネレータ : gRandom参照, pt_sampling.C結果, random.cxx
GetRandomh1->GetRandom()でh1のhistgramの分布に従って乱数を発生する。例getRandom.C,getRandomPt.C
Landau分布gRandom->Landau(mpv, sigma) -> 例Landau.Cその結果11.4.9. ランダウ分布を生成する "参照
GUI利用c1画面のメニューにSavea s canvas.psでc1.psができる。
h2root zz.ntup zz.root root-fileに変換する。いろいろ出てくる。
. ! はshellに戻る。.!ls, .!vi XX
関数とfit :→topへ
.L test.cxxsub-program text.cxxをあらかじめコンパイルロードしておく。userが作る関数にいい。同じdirectoryか/root/macrosにおくと良いようだ。例:f2.cxx, induced.cxx,
外付け関数サブ関数はmainの前でも後ろでもよかった!(2015.9.22) 例:f3.Cと例:f3_reverse.C
関数を描くTF1 f1("func1","sin(x)/x",0,10); f1.Draw();
ROOTにある関数namespace TMath表に存在する関数のリストが載っている。Erfc(x) は complementary error function erfc(x) = (2/sqrt(pi)) Integral(exp(-t^2))dt between x and infinityがあるし逆関数のErfcInverse(x)もある。ただしガウス分布に使う時はprobability(>x)=0.5*erfc(x/sqrt(2))とすること。
組込み関数フィット(p.65) gaus、expo、polN (N>0)、landauがある。例:fit_gaus.C結果。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 (エラーバー付き) 。 TF1 *gaus = h->GetFunction("gaus")で付随する関数をとって gaus->SetLineColor(4); gaus->SetLineWidth(2);などが出来る。
フィット結果TF1 *fit = h->GetFunction(function_name);で定義してから Double_t chi2 = fit->GetChisquare(); Double_t p1 = fit->GetParameter(0); Double_t e1 = fit->GetParError(0);例:fit_gaus.C
自分の関数でフィット例:fit_test.C . Fit使えるのはTH1,TH1Fだけかなあ??TGraphに使えないかも。
Minuitを使ったfitIfit_xyonly.C結果
fit表示gStyle->SetOptFit();(非表示)gStyle->SetOptFit(0);(全情報)gStyle->SetOptFit(1111);fit(1111)の例
DateTimetm構造体?まだよく理解できず。datetime.C++.tx, sscanf()を使う

Send your comments/questions on this page to T. Kondo