// This macro plots all int/float/double ntuples from a root file in 1D histograms // the output is by default a multi page .pdf // R. Kliemt, 2008 // #include #include #include #include #include #include #include #include #include #include void plotntuplesfromfile(TString filename = "ntps.root", TString ext=".pdf", Int_t divx=3, Int_t divy=4, Int_t pix = 600) { // Plot all columns of an NTuple into a pdf (or ps file) TFile* file = new TFile(filename.Data()); if (!file) {cout<<"File \""<SetCanvasSize(pixx,pixy); can->Divide(divx, divy); TString picname = filename; ext="."+ext; ext.ReplaceAll("..","."); picname.ReplaceAll(".root",ext); // ps, png, pdf ... TString pic = picname + "["; // open empty ps cout << "opening: " << pic.Data()<Print(pic); pic=picname; TList* list = file->GetListOfKeys(); if (!list) {cout<<"List not there..."<GetEntries();i++) { TKey* key = (TKey*)list->At(i); keyclass = key->GetClassName(); if(keyclass.CompareTo("TTree"))continue; TTree* baum = (TTree*)key->ReadObj(); printf("\t - Tree: %s\n",baum->GetName()); TObjArray* aeste = baum->GetListOfBranches(); for(int asti=0;astiGetEntriesFast();asti++) { TBranch* ast = (TBranch*)aeste->At(asti); printf("\t\t - Branch: %s\n",ast->GetName()); TObjArray* bleatter = ast->GetListOfLeaves(); for(int blatti=0;blattiGetEntriesFast();blatti++) { TLeaf* blatt = (TLeaf*)bleatter->At(blatti); TString blattsorte=blatt->GetTypeName(); if( !blattsorte.CompareTo("Float_t") || !blattsorte.CompareTo("Int_t") || !blattsorte.CompareTo("Double_t")) { if(padcount > divx*divy) { printf(" --- canvasdump ---"); can->Print(pic.Data()); can->Clear(); can->SetCanvasSize(pixx,pixy); can->Divide(divx, divy); padcount=1; } can->cd(padcount); printf("\t\t\t - Leaf: %s (%s)\n",blatt->GetName(),blatt->GetTypeName()); baum->Draw(blatt->GetName()); padcount++; } } } } can->Print(pic.Data()); pic = picname + "]"; // close ps can->Print(pic.Data()); cout << "closed: " << pic.Data()<Exec(convertcmd.Data()); delete can; return; }