*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 にアクセスすることができる。 あとは普段と同じようにして描画する。 [[ソフトウェア関係]]