2016-11-15 10 views
2

私は(これは単なる裸の骨である、それは開発中である)、いくつかの木を読み込むには、次のコードを書かれている:LoadTreeはどのようにrootで動作しますか?

~~included headers here 

using namespace std; 

void reconstruction::readtest(){ 

    TFile *file = TFile::Open("file.root"); 

    TTree* comp_tree = (TTree*)file->Get("_compress_tree"); 
    TTree* compch_tree = (TTree*)file->Get("_compress_ch"); 

    TChain* compchain = new TChain("_compress_tree"); 
    compchain->Add("file.root"); 

    TChain* chchain = new TChain("_compress_ch"); 
    chchain->Add("file.root"); 


    TH2D *hist = new TH2D("hist","hist",100,0,0.05,100,0,60);                       

    Double_t _compression, _compressionU, _compressionV, _compressionY, _ch_compression; 
    Int_t _ch; 
    comp_tree->SetBranchAddress("_compression",&_compression); 
    comp_tree->SetBranchAddress("_compressionU",&_compressionU); 
    comp_tree->SetBranchAddress("_compressionV",&_compressionV); 
    comp_tree->SetBranchAddress("_compressionY",&_compressionY); 
    compch_tree->SetBranchAddress("_ch_compression",&_ch_compression); 
    compch_tree->SetBranchAddress("_ch",&_ch); 

    TH1D *comp = new TH1D("comp","_compression",100,0,0.05); 
    TH1D *comp_ch = new TH1D("comp_ch","channel compression",100,0,0.02); 

    Long64_t nentries = compchain->GetEntries(); 

    for (int i=0; i<2 ; i++) { 

    Long64_t ientry = LoadTree(i); 
    if (ientry <0) break; 

    compchain->GetEntry(i); 

    cout << "compression = " << _compression << endl; 
    cout << "compression_ch = " << _ch_compression << endl; 

    comp->Fill(_compression); 
    comp_ch->Fill(_ch_compression); 
} 
    cout << "entries = " << nentries << endl; 

    TCanvas *cans = new TCanvas("cans","xxx",800,400); 
    cans->Divide(2,1); 
    cans->cd(1); 
    comp_ch->Draw(); 

    cans->cd(2); 
    comp->Draw(); 

} 

そして、私は次のエラーメッセージ取得しています:

readtest.C:51:20: error: use of undeclared identifier 'LoadTree' 
Long64_t ientry = LoadTree(i); 

を私は私が持っている必要があることを理解するようになったグーグルから:... some_class::LoadTreeを私は全くこれを行うにはどのクラス、どのように確認していない

を私はすべてのイベントをループする方法をしたいです、私のヒストを作る!

答えて

1

代わりの

Long64_t ientry = LoadTree(i); 

使用

Long64_t ientry = compchain->LoadTree(i); 

または

Long64_t ientry = chchain->LoadTree(i); 

(それはあなたのオブジェクトの対象の依存 - compchainまたはchchain - あなたはLoadTree()メソッドを使用します - 私はcompchainのためにそれを推測する。)

+0

作品、ありがとうございます! – lasagna

+0

私は別の問題を抱えています...コードが実行されていますが、実際にはエントリを取得していません...読み込みには同じ小さな番号が表示されます* 10^-321 ...何らかの理由でエントリが実際に読み込まれます。私は何をしますか? – lasagna

関連する問題