34 ClassImp(TStatsFeedback);
40 TStatsFeedback::TStatsFeedback(TProof *proof)
42 if (proof == 0) proof = gProof;
44 TProof *p =
dynamic_cast<TProof*
>(proof);
46 Error(
"TStatsFeedback",
"no valid proof session found");
47 SetBit(TObject::kInvalidObject);
51 fName = fProof->GetSessionTag();
53 if (!(proof->Connect(
"Feedback(TList*)",
"TStatsFeedback",
54 this,
"Feedback(TList*)"))) {
55 Error(
"TStatsFeedback",
"Connect() failed");
56 SetBit(TObject::kInvalidObject);
64 TStatsFeedback::~TStatsFeedback()
67 ROOT::CallRecursiveRemoveIfNeeded(*
this);
69 fProof->Disconnect(
"Feedback(TList*)",
this,
"Feedback(TList*");
75 void TStatsFeedback::Feedback(TList *objs)
77 TSeqCollection *canvases = gROOT->GetListOfCanvases();
79 PDB(kFeedback,1) Info("Feedback", "%d Objects", objs->GetSize());
82 TH1D *hevt = 0, *hpck = 0;
87 if (!strcmp(o->GetName(),
"PROOF_EventsHist")) {
88 hevt =
dynamic_cast<TH1D *
>(o);
89 }
else if (!strcmp(o->GetName(),
"PROOF_PacketsHist")) {
90 hpck =
dynamic_cast<TH1D *
>(o);
91 }
else if (!strcmp(o->GetName(),
"PROOF_ProcPcktHist")) {
92 hass =
dynamic_cast<TH1I *
>(o);
94 if (hevt && hpck && hass)
break;
96 if (!hevt && !hpck && !hass) {
97 Warning(
"Feedback",
"none of the requested histograms has been found!");
105 TString cvnm = TString::Format(
"Stats: %s", fProof->GetSessionTag());
107 if (gROOT->GetListOfCanvases())
108 cv = (TVirtualPad *) canvases->FindObject(cvnm.Data());
109 if (cv && nh == 3 && !cv->GetPad(3)) SafeDelete(cv);
111 Int_t h = (nh == 3) ? 600 : 400;
112 TString cvcmd = TString::Format(
"new TCanvas(\"%s\", \"Feedback Stats\",10,300,600,%d)",
114 if (!(cv = (TVirtualPad *) gROOT->ProcessLine(cvcmd))) {
115 Warning(
"Feedback",
"could not create canvas!");
118 PDB(kFeedback,2) Info("Feedback", "created canvas %s", cvnm.Data());
123 PDB(kFeedback,2) Info("Feedback", "using canvas %s", cvnm.Data());
125 TVirtualPad *pd1 = (TVirtualPad *) cv->GetPad(1);
126 TVirtualPad *pd2 = (TVirtualPad *) cv->GetPad(2);
127 TVirtualPad *pd3 = (nh == 3) ? (TVirtualPad *) cv->GetPad(3) : 0;
129 UInt_t optstat = gStyle->GetOptStat();
130 gStyle->SetOptStat(11);
134 hevt->SetFillColor(kGreen);
139 hpck->SetFillColor(kAzure-5);
144 hass->SetFillColor(kGray);
151 gStyle->SetOptStat(optstat);