我写了一个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()命令中获得的值进行比较,但它们不匹配。
1条答案
按热度按时间djmepvbi1#
使用Tout->SetBranchStatus(“*",false);您禁用了所有分支,因此之后无法访问它们