/// C/C++ includes #include #include //#include /// ROOT includes #include "TFile.h" #include "TKey.h" #include "TDirectoryFile.h" //#include "TH1.h" #include "TProfile.h" #include "TObject.h" #include "TROOT.h" #include "TStyle.h" #include "TCanvas.h" //#include "TPaveStats.h" /// ATLAS includes #include "AtlasStyle.C" #include "AtlasUtils.h" void read_dir(TDirectory *dir, TCanvas *canvas); int print_histos() { TFile *f = new TFile("mergedMonitor_collision_7TeV_153565_v3b.root"); if (f->IsZombie()) { printf("File mergedMonitor_collision_7TeV_153565_v3b.root does not exist.\n"); return 0; } // gROOT->SetBatch(true); // gStyle->SetOptStat("nem"); /// name, entries, mean // gStyle->SetStatX(0.80); // gStyle->SetStatY(0.90); SetAtlasStyle(); TCanvas *MuonEffPlot = new TCanvas("MuonEffPlot","Muon Efficiency for the STACO and Muid containers", 800, 500); // TDirectory *topdir = gDirectory; read_dir(f, MuonEffPlot); std::cout << "Done plotting histograms!" << std::endl; return 0; } void read_dir(TDirectory *dir, TCanvas *canvas) { TDirectory *dirsav = gDirectory; TIter next(dir->GetListOfKeys()); TKey *key; while ((key = (TKey*)next())) { if (key->InheritsFrom("TDirectory")) //IsFolder()) { dir->cd(key->GetName()); TDirectory *subdir = gDirectory; read_dir(subdir, canvas); dirsav->cd(); continue; } // TObject *obj = key->ReadObj(); // std::cout << "match" << strstr(key->GetName(),"mueff") << std::endl; if (strstr(key->GetName(),"mueff")) { // std::cout << "found" << std::endl; TProfile *profilehisto; // TH1 *histo; if (key->InheritsFrom("TProfile")) //(obj->IsA()->InheritsFrom("TProfile")) { profilehisto = static_cast(key->ReadObj()); //(obj) } else { std::cout << "read_dir: " << key->GetName() << " doesn't inherit from TProfile, continuing." << std::endl; continue; } canvas->cd(); profilehisto->GetYaxis()->SetRangeUser(0.5,1); profilehisto->Draw("e1"); // TPaveStats *box = (TPaveStats*) profilehisto->FindObject("stats"); canvas->Print( profilehisto->GetName(), "png"); canvas->Clear(); } // delete obj; } }