c++ 阅读根树和分支时出现问题

bwleehnv  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(127)

我写了一个ROOT宏来读取一棵树,这棵树包含很多分支,但我只对三个特定的分支感兴趣。问题是,当我试图读取它们时,我得到了错误的值,事实上,如果我输入“h76->Show(1)”,它会打印出条目1的分支值。当我试图从我的宏中读取并打印它时,它给了我一个错误的值。这是我的代码:

#define N_PID 10000

void pTdist()
{
    Double_t pT;
        int i;
    Int_t PID[N_PID];
    Int_t ntrack; //Number of particles in one event
    TFile *file = new TFile("PROVA0.root","read");
    file->ls();
    TTree * Tout= (TTree*)file->Get("h76");
    Tout->Print();
    Int_t nentries=Tout->GetEntries();
    Tout->SetBranchStatus("*", false);
    //Tout->SetBranchStatus("ntrack", true); //In the ROOT tutorial it says that this operation is necessary but if I do it gives me error
    //Tout->SetBranchStatus("PID", true);
    //Tout->SetBranchStatus("pT", true);

    cout << " nentries = " << nentries << endl; //Here prints the correct number of entries
    Tout->SetBranchAddress("ntrack",&ntrack);
    Tout->SetBranchAddress("pT",&pT);
    Tout->SetBranchAddress("PID",&PID); //Fino a qui funziona tutto in teoria
    for( i=0;i< 10;i++)
    {
        //cout << i << endl;
        Tout->GetEntry(i); //
                printf("%d %d\n",ntrack,i);
    }
}

字符串
我在这里错过了什么?感谢所有会回答的人。
我尝试打印每个条目的“ntrack”值,并将其与我从show()命令中获得的值进行比较,但它们不匹配。

djmepvbi

djmepvbi1#

使用Tout->SetBranchStatus(“*",false);您禁用了所有分支,因此之后无法访问它们

相关问题