49 void TreeCompare(
const char * filename,
const char *postfix1,
const char *postfix2,
TString treename=
"waveburst",
float tollerance = 1
e-4) {
52 fileName2.ReplaceAll(postfix1,postfix2);
53 std::cout <<
"processing cWB file1 " << fileName1.Data() <<
"\n";
54 std::cout <<
"processing cWB file2 " << fileName2.Data() <<
"\n";
56 TFile *file1 = TFile::Open(fileName1);
58 TTree *obj1 = (TTree*)file1->Get(treename);
61 TFile *file2 = TFile::Open(fileName2);
63 TTree *obj2 = (TTree*)file2->Get(treename);
72 int nEVT1 = obj1->GetEntries();
73 int nEVT2 = obj2->GetEntries();
77 std::cout <<
"Unequal number of events in the 2 TTrees!!! nEVT1=" << nEVT1 <<
" nEVT2=" << nEVT2 <<
" Exiting now..." <<
"\n";
81 if(nEVT1 == 0) {std::cout <<
"Empty ntuple!!!" << endl;
exit(0);}
86 obj1->BuildIndex(
"start[0]",
"start[1]");
88 TTreeIndex *I1=(TTreeIndex*)obj1->GetTreeIndex();
89 Long64_t* index1=I1->GetIndex();
91 obj2->BuildIndex(
"start[0]",
"start[1]");
92 TTreeIndex *I2=(TTreeIndex*)obj2->GetTreeIndex();
93 Long64_t* index2=I2->GetIndex();
95 TObjArray *branchList;
96 branchList = obj1->GetListOfBranches();
97 int nBranch = obj1->GetNbranches();
103 for (Long64_t jentry=0; jentry<nEVT1;jentry++) {
104 obj1->GetEntry(jentry);
105 obj2->GetEntry(jentry);
107 for(
int i=0;
i<nBranch;
i++){
108 varnames[
i] = branchList->At(
i)->GetName();
109 var1[
i] = obj1->GetBranch(varnames[
i])->GetLeaf(varnames[i]);
110 var2[
i] = obj2->GetBranch(varnames[i])->GetLeaf(varnames[i]);
111 for(
int k=0;
k<obj1->GetBranch(varnames[i])->GetLeaf(varnames[i])->GetLen();
k++){
112 value_1 = var1[
i]->GetValue(
k);
113 value_2 = var2[
i]->GetValue(
k);
114 if (TMath::Abs(value_1-value_2) > tollerance){
115 cout <<jentry <<
" " << varnames[
i].Data() <<
"["<<
k <<
"] " << value_1 <<
" " << value_2 <<
" " << TMath::Abs(value_1-value_2) <<endl;
void TreeCompare(const char *filename, const char *postfix1, const char *postfix2, TString treename="waveburst", float tollerance=1e-4)