00001 void Draw_Time_Hists(TTree* t);
00002
00003 void Draw_Time_Hists(const Char_t* filename, const Char_t* perfstatsname) {
00004
00005
00006
00007
00008 if(!TString(gSystem->GetLibraries()).Contains("Proof"))
00009 gSystem->Load("libProof.so");
00010
00011 TFile f(filename);
00012 if (f.IsZombie()) {
00013 cout << "Could not open file " << filename << endl;
00014 return;
00015 }
00016
00017 TTree* perfstats = dynamic_cast<TTree*>(f.Get(perfstatsname));
00018 if (perfstats) {
00019 Draw_Time_Hists(perfstats);
00020 } else {
00021 cout << "No Tree named " << perfstatsname
00022 << " found in file " << filename << endl;
00023 }
00024
00025 delete perfstats;
00026 f.Close();
00027 }
00028
00029 void Draw_Time_Hists(TTree* t) {
00030
00031
00032
00033 if (!t) {
00034 cout << "Invalid input tree" << endl;
00035 return;
00036 }
00037
00038 gROOT->SetStyle("Plain");
00039 gStyle->SetOptStat(0);
00040 gStyle->SetNdivisions(505);
00041 gStyle->SetTitleFontSize(0.1);
00042
00043 if(!TString(gSystem->GetLibraries()).Contains("Proof"))
00044 gSystem->Load("libProof.so");
00045
00046 TCanvas* canvas = new TCanvas("ProfHists","Profile Histograms",800,600);
00047 canvas->Divide(3,1);
00048
00049 canvas->cd(1);
00050 gPad->SetLogy();
00051 t->Draw("fProcTime");
00052 TH1* h = dynamic_cast<TH1*>(gROOT->FindObject("htemp"));
00053 h->SetTitle("Processing Time per Packet");
00054 h->GetXaxis()->SetTitle("Processing Time [s]");
00055
00056 gPad->Update();
00057 TPaveText* titlepave = 0;
00058 titlepave = dynamic_cast<TPaveText*>(gPad->GetListOfPrimitives()->FindObject("title"));
00059 if (titlepave) {
00060 Double_t x1ndc = titlepave->GetX1NDC();
00061 Double_t x2ndc = titlepave->GetX2NDC();
00062 titlepave->SetX1NDC((1.0-x2ndc+x1ndc)/2.);
00063 titlepave->SetX2NDC((1.0+x2ndc-x1ndc)/2.);
00064 titlepave->SetBorderSize(0);
00065 gPad->Update();
00066 }
00067 gPad->Modified();
00068
00069 canvas->cd(2);
00070 gPad->SetLogy();
00071 t->Draw("fCpuTime");
00072 h = dynamic_cast<TH1*>(gROOT->FindObject("htemp"));
00073 h->SetTitle("CPU Time per Packet");
00074 h->GetXaxis()->SetTitle("CPU Time [s]");
00075
00076 gPad->Update();
00077 titlepave = dynamic_cast<TPaveText*>(gPad->GetListOfPrimitives()->FindObject("title"));
00078 if (titlepave) {
00079 Double_t x1ndc = titlepave->GetX1NDC();
00080 Double_t x2ndc = titlepave->GetX2NDC();
00081 titlepave->SetX1NDC((1.0-x2ndc+x1ndc)/2.);
00082 titlepave->SetX2NDC((1.0+x2ndc-x1ndc)/2.);
00083 titlepave->SetBorderSize(0);
00084 gPad->Update();
00085 }
00086 gPad->Modified();
00087
00088 canvas->cd(3);
00089 gPad->SetLogy();
00090 t->Draw("fLatency");
00091 h = dynamic_cast<TH1*>(gROOT->FindObject("htemp"));
00092 h->SetTitle("Request Packet Latency");
00093 h->GetXaxis()->SetTitle("Latency [s]");
00094
00095 gPad->Update();
00096 titlepave = dynamic_cast<TPaveText*>(gPad->GetListOfPrimitives()->FindObject("title"));
00097 if (titlepave) {
00098 Double_t x1ndc = titlepave->GetX1NDC();
00099 Double_t x2ndc = titlepave->GetX2NDC();
00100 titlepave->SetX1NDC((1.0-x2ndc+x1ndc)/2.);
00101 titlepave->SetX2NDC((1.0+x2ndc-x1ndc)/2.);
00102 titlepave->SetBorderSize(0);
00103 gPad->Update();
00104 }
00105 gPad->Modified();
00106
00107 }