2016-11-16 85 views
1

這是我寫的代碼,它運行良好,但它似乎並沒有實際加載事件......相反,它似乎用一個任意小數字填充直方圖和cout。這個循環爲什麼不加載正確的事件?

include "TTree.h" 
include "TFile.h" 
include "TRandom.h" 
include "TTree.h" 
include "TCanvas.h" 
include "TStyle.h" 
include <iostream> 
include "TH1.h" 
include "TChain.h" 

using namespace std; 

void readtestsimple(){ 

    TFile *file = TFile::Open("/file/"); 

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

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

    TH1D *comp = new TH1D("comp","_compression",100,0,0.05); 

    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); 

     Long64_t nentries = compchain->GetEntries(); 
     Long64_t nb = 0, nbytes = 0 ; 

     for (Long64_t i=0; i<nentries; i++) { 
       Long64_t entry = compchain->LoadTree(i); 
       if (entry <0) break; 

      nb = compchain->GetEntry(i); nbytes += nb; 

       cout << "entry = " << nb << endl; 
       cout << "compression = " << _compression << endl; 

       comp->Fill(_compression); 
     } 

    cout << "entries = " << nentries << endl; 

} 

和輸出我得到的是這樣一個長的重複:

entry = 36 
compression = 1.54768e-316 

entry = 36 
compression = 1.54768e-316 

entry = 36 
compression = 1.54768e-316 

(並在結束時,正確的條目數)。

我該怎麼做才能讓它讀出正確的條目? 請幫忙!

+0

我建議你張貼此對[根論壇](HTTPS: //root.cern.ch/phpBB3/),也許你會得到較少的提示和更多的幫助;) – user463035818

+1

你的代碼似乎是多餘的。或者打開'TFile'和'Get''TTree',或者(特別是如果你的數據分佈在很多文件中)創建一個'TChain'和'Add'輸入文件。並從那裏使用'TChain'或'TTree'與'SetBranchAddress'和'GetEntry'。 – pseyfert

+0

是的 - 我意識到,後來,現在只有compchain->添加(「文件」) – lasagna

回答

0

看起來你根本不需要使用comp_tree指針。 compchain指針應該足以訪問TTree中的數據,因爲TChainTTree。因此,你應該能夠「鏈接」的變量鏈/樹枝爲:

compchain->SetBranchAddress("_compression",&_compression); 

,而不是

comp_tree->SetBranchAddress("_compression",&_compression); 
+1

是的!作品!!謝謝!!!! – lasagna