2016-11-16 3 views
1

ここに私が書いたコードはありますが、正常に動作しますが、実際にはイベントをロードしていないようです...代わりにヒストグラムとcoutを1つの任意の小数で埋めるようです。なぜこのループは適切なイベントをロードしませんか?

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'と' TTree'を 'TTree'で開くか、(特にあなたのデータが多くのファイルに広がっている場合)、入力ファイルを' TChain'と 'Add'で作成します。そこから 'SetBranchAddress'と' GetEntry'を使って 'TChain'か' TTree'を使います。 – pseyfert

+0

ええ、私はそれが実現したことに気付きました。今度はcompchain-> Add( "file") – lasagna

答えて

0

comp_treeポインタを使用する必要はありません。 compchainポインタはTChainTTreeなのでTTreeのデータにアクセスするのに十分なはずです。したがって、あなたのように「リンク」チェーン/木の枝に変数ことができるようになります。

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

代わりの

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

はい!作品!!ありがとうございました!!!! – lasagna

関連する問題