#include "TROOT.h" #include "TSystem.h" #include #include #include #include "TTree.h" #include "TString.h" #include "TClonesArray.h" #include std::string filename1="pp_2j_NLO_H_T_35GeV_jetsreco_pTjetmin35GeV.root"; std::string filename2="pp_4j_LO_H_T_2_35GeV_jetsreco_pTjetmin35GeV.root"; std::string output_filename= "file1_w_file2_as_friend.root"; std::string output_filename2= "friend.root"; std::string treename="LHEF"; int func(std::string filename1,std::string filename2) { int max_allowed_entries = 100; std::unique_ptr first{TFile::Open(filename1.c_str())}; TTree * first_tree= (TTree*)first->Get(treename.c_str()); TFile* output_file= TFile::Open( output_filename.c_str(), "RECREATE" ); TTree *output_tree = first_tree->CloneTree(0); std::unique_ptr second{TFile::Open(filename2.c_str())} ; TTree *second_tree = (TTree*)second->Get(treename.c_str()); TFile* output_file2= TFile::Open( output_filename2.c_str(), "RECREATE" ); TTree *output_friend = second_tree->CloneTree(0); auto nentries=max_allowed_entries; for(Long64_t e = 0; e < nentries; e++) { first_tree->GetEntry(e); output_tree->Fill(); second_tree->GetEntry(e); output_friend->Fill(); } output_friend->StartViewer(); output_tree->AddFriend(output_friend); return 0; }