ROOT のバックアップ差分(No.7)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
*MakeClass [#h12546f9]
解析をするときにはMakeClassをする。
Ntupleに詰められている変数などを自動的に読んでくれてヘッダファイルを作成してくれる。

 tree->MakeClass("name");
でname.C name.h ができる。
ヘッダファイルの行列要素は読み込んだNtupleによるので適に変更する。
segmentation violation の場合はここが問題のことが多い。

*TChain [#j646fef4]
Ntupleをいくつもまとめて解析したいときに使う。
 TChain ch("tree");
 ch.Add("filename");
でつなげられる。
MakeClassで作ったコードを使うときには
 .L name.C+g;
 name a(&ch);
 a.Loop();
でコードが走る。
*総エントリー数の表示 [#w573055b]
 Long64_t nentries = fChain->GetEntries();
の様に Fast を抜く
*プログレスバーの表示 [#e0fdf0ff]
杉本さんに教えていただいた。
 // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 void MyRootAna::progress(Long64_t num){
 
  num++;
  if(num % 100000 == 0){
    std::cerr << " --> " << num << " events analized (" << now() << ")." << std::endl;
    INFO("  run:" << m_run << " event:" << m_event << " lumi:" << m_lumiblock << " globalBC:" << m_globalBcid);
  }else if(num % 10000 == 0){
    std::cerr << "*";
  }
 }
ミソは cout ではなく cerr を使うこと。
これによってスムースに表示される
*統計情報を重ねる [#j0b913ba]
ヒストグラムの統計情報を重ねて表示するには
 h1->Draw("sames");
と s を付ける。
統計情報 BOX の調整は
 gPad->SetStatX();
 gPad->SetStatY();
などを利用してずらす。
*Ntupleに詰める [#x7c6a095]
自分の好きなようにカットをしたあとにNtupleに詰めると解析がはかどる。
 TTree *tree = new TTree("tree","tree");

 int integer = 0;
 float float = 0.;
 vector<int>vector; 
 
 tree->Branch("Integer",&integer,"Integer/I");
 tree->Branch("Float",&float,"Float/F");
 tree->Branch("vector",&vector);
と定義する。
ベクターはクリアしなければならないので、
 vector.clear();
とする。
int float はいつも通りで良いが、ベクターは
 vector.push_back(argment);
のようにして詰める。
最後に
 tree->Fill();
で詰め終わり。
*複数のNtupleを読み込み描画 [#r0d9e4e3]
まず、ファイルを読み込む。
 TFile f("filename.root");
名前を変えてそれぞれ読み込む。
次にそれぞれの Tree に名前をつける。
 TTree *tr = f->Get("tree");
これで tr で tree にアクセスすることができる。
あとは普段と同じようにして描画する。
*レジェンドのつけ方 [#z8d8a8c8]
複数のデータを重ねるときにあると便利な方法。
まず、レジェンドのポインタを作る
 TLegend *l = new TLegend(x,y,X',Y');
位置は右上と左下の点を指定する。
次に表に内容の設定をする。
 l->AddEntry(histo,"display name","lp");
3つ目の表示オプションは TGraph と同じようになる。
最後にこれを表示させる。
 l->Draw();
この際に "same" オプションは必要ない。
*TH2Fのカラースケールを変更する [#x1acfdd1]
  const Int_t NRGBs = 5;
  const Int_t NCont = 255;
 
  Double_t stops[NRGBs] = { 0.00, 0.34, 0.61, 0.84, 1.00 };
  Double_t red[NRGBs]   = { 0.00, 0.00, 0.87, 1.00, 0.51 };
  Double_t green[NRGBs] = { 0.00, 0.81, 1.00, 0.20, 0.00 };
  Double_t blue[NRGBs]  = { 0.51, 1.00, 0.12, 0.00, 0.00 };
  TColor::CreateGradientColorTable(NRGBs, stops, red, green, blue, NCont);
  gStyle->SetNumberContours(NCont);

[[ソフトウェア関係]]