#include "TProofProgressDialog.h"
#include "TProofProgressLog.h"
#include "TProofProgressMemoryPlot.h"
#include "TEnv.h"
#include "TError.h"
#include "TGLabel.h"
#include "TGButton.h"
#include "TGTextBuffer.h"
#include "TGTextEntry.h"
#include "TGProgressBar.h"
#include "TProof.h"
#include "TSlave.h"
#include "TSystem.h"
#include "TTimer.h"
#include "TGraph.h"
#include "TNtuple.h"
#include "TCanvas.h"
#include "TColor.h"
#include "TLine.h"
#include "TAxis.h"
#include "TPaveText.h"
#include "TMath.h"
#ifdef PPD_SRV_NEWER
#undef PPD_SRV_NEWER
#endif
#define PPD_SRV_NEWER(v) (fProof && fProof->GetRemoteProtocol() > v)
#ifdef PPD_SRV_NEWER_REV
#undef PPD_SRV_NEWER_REV
#endif
#define PPD_SRV_NEWER_REV(r) (fSVNRev > r)
Bool_t TProofProgressDialog::fgKeepDefault = kTRUE;
Bool_t TProofProgressDialog::fgLogQueryDefault = kFALSE;
TString TProofProgressDialog::fgTextQueryDefault = "last";
static const Int_t gSVNMemPlot = 25090;
ClassImp(TProofProgressDialog)
TProofProgressDialog::TProofProgressDialog(TProof *proof,
const char *selector,
Int_t files,
Long64_t first,
Long64_t entries)
{
fProof = proof;
fFiles = files;
fFirst = first;
fEntries = entries;
fPrevProcessed = 0;
fPrevTotal = 0;
fLogWindow = 0;
fMemWindow = 0;
fStatus = kRunning;
fKeep = fgKeepDefault;
fLogQuery = fgLogQueryDefault;
fRatePoints = 0;
fRateGraph = 0;
fProcTime = 0.;
fAvgRate = 0.;
fAvgMBRate = 0.;
fSVNRev = -1;
if (!proof || !(proof->IsValid())) {
Error("TProofProgressDialog", "proof instance is invalid (%p, %s): protocol error?",
proof, (proof && !(proof->IsValid())) ? "invalid" : "undef");
return;
}
fSessionUrl = (proof && proof->GetManager()) ? proof->GetManager()->GetUrl() : "";
TSlave *mst = (TSlave *) proof->GetListOfActiveSlaves()->First();
if (mst) {
TString vrs = mst->GetROOTVersion();
Ssiz_t ib = vrs.Index("|"), from = ib + 2;
if (ib != kNPOS) {
TString svnr;
vrs.Tokenize(svnr, from, "|");
if (svnr.IsDigit()) {
if (gDebug)
Info("TProofProgressDialog", "svn revision run by the master: %s", svnr.Data());
fSVNRev = svnr.Atoi();
} else {
Info("TProofProgressDialog", "could not find svn revision run by the master");
}
} else if (gDebug) {
Info("TProofProgressDialog", "non-standard master version string:'%s'", vrs.Data());
}
} else {
Warning("TProofProgressDialog", "list of active workers is empty!");
}
if (PPD_SRV_NEWER(11))
fRatePoints = new TNtuple("RateNtuple","Rate progress info","tm:evr:mbr");
fDialog = new TGTransientFrame(0, 0, 10, 10);
fDialog->Connect("CloseWindow()", "TProofProgressDialog", this, "DoClose()");
fDialog->DontCallClose();
TString buf;
buf = TString::Format("Executing on PROOF cluster \"%s\" with %d parallel workers:",
fProof ? fProof->GetMaster() : "<dummy>",
fProof ? fProof->GetParallel() : 0);
fTitleLab = new TGLabel(fDialog, buf),
fDialog->AddFrame(fTitleLab,
new TGLayoutHints(kLHintsNormal, 10, 10, 20, 0));
buf = TString::Format("Selector: %s", selector);
fSelector = new TGLabel(fDialog, buf);
fDialog->AddFrame(fSelector,
new TGLayoutHints(kLHintsNormal, 10, 10, 5, 0));
buf = TString::Format("%d files, number of events %lld, starting event %lld",
fFiles, fEntries, fFirst);
fFilesEvents = new TGLabel(fDialog, buf);
fDialog->AddFrame(fFilesEvents, new TGLayoutHints(kLHintsNormal, 10, 10, 5, 0));
fBar = new TGHProgressBar(fDialog, TGProgressBar::kFancy, 450);
fBar->SetBarColor("green");
fBar->UsePercent();
fBar->ShowPos(kTRUE);
fDialog->AddFrame(fBar, new TGLayoutHints(kLHintsTop | kLHintsLeft |
kLHintsExpandX, 10, 10, 20, 20));
if (PPD_SRV_NEWER(11)) {
TGHorizontalFrame *hf0 = new TGHorizontalFrame(fDialog, 0, 0);
TGCompositeFrame *cf0 = new TGCompositeFrame(hf0, 110, 0, kFixedWidth);
cf0->AddFrame(new TGLabel(cf0, "Initialization time:"));
hf0->AddFrame(cf0);
fInit = new TGLabel(hf0, "- secs");
hf0->AddFrame(fInit, new TGLayoutHints(kLHintsNormal, 10, 10, 0, 0));
fDialog->AddFrame(hf0, new TGLayoutHints(kLHintsNormal, 10, 10, 5, 0));
}
TGHorizontalFrame *hf1 = new TGHorizontalFrame(fDialog, 0, 0);
TGCompositeFrame *cf1 = new TGCompositeFrame(hf1, 110, 0, kFixedWidth);
fProcessed = new TGLabel(cf1, "Estimated time left:");
cf1->AddFrame(fProcessed);
hf1->AddFrame(cf1);
fTotal= new TGLabel(hf1, "- sec (- events of - processed)");
hf1->AddFrame(fTotal, new TGLayoutHints(kLHintsNormal, 10, 10, 0, 0));
fDialog->AddFrame(hf1, new TGLayoutHints(kLHintsNormal, 10, 10, 5, 0));
TGHorizontalFrame *hf2 = new TGHorizontalFrame(fDialog, 0, 0);
TGCompositeFrame *cf2 = new TGCompositeFrame(hf2, 110, 0, kFixedWidth);
cf2->AddFrame(new TGLabel(cf2, "Processing rate:"));
hf2->AddFrame(cf2);
fRate = new TGLabel(hf2, "- events/sec");
hf2->AddFrame(fRate, new TGLayoutHints(kLHintsNormal, 10, 10, 0, 0));
fDialog->AddFrame(hf2, new TGLayoutHints(kLHintsNormal, 10, 10, 5, 0));
fKeepToggle = new TGCheckButton(fDialog,
new TGHotString("Close dialog when processing is complete"));
if (!fKeep) fKeepToggle->SetState(kButtonDown);
fKeepToggle->Connect("Toggled(Bool_t)",
"TProofProgressDialog", this, "DoKeep(Bool_t)");
fDialog->AddFrame(fKeepToggle, new TGLayoutHints(kLHintsNormal, 10, 10, 20, 0));
TGHorizontalFrame *hf3 = new TGHorizontalFrame(fDialog, 60, 20, kFixedWidth);
UInt_t nb1 = 0, width1 = 0, height1 = 0;
fAsyn = new TGTextButton(hf3, "&Run in background");
if (fProof->GetRemoteProtocol() >= 22 && fProof->IsSync()) {
fAsyn->SetToolTipText("Continue running in the background (asynchronous mode), releasing the ROOT prompt");
} else {
fAsyn->SetToolTipText("Switch to asynchronous mode disabled: functionality not supported by the server");
fAsyn->SetState(kButtonDisabled);
}
fAsyn->Connect("Clicked()", "TProofProgressDialog", this, "DoAsyn()");
hf3->AddFrame(fAsyn, new TGLayoutHints(kLHintsCenterY | kLHintsExpandX, 7, 7, 0, 0));
height1 = TMath::Max(height1, fAsyn->GetDefaultHeight());
width1 = TMath::Max(width1, fAsyn->GetDefaultWidth()); ++nb1;
fStop = new TGTextButton(hf3, "&Stop");
fStop->SetToolTipText("Stop processing, Terminate() will be executed");
fStop->Connect("Clicked()", "TProofProgressDialog", this, "DoStop()");
hf3->AddFrame(fStop, new TGLayoutHints(kLHintsCenterY | kLHintsExpandX, 7, 7, 0, 0));
height1 = TMath::Max(height1, fStop->GetDefaultHeight());
width1 = TMath::Max(width1, fStop->GetDefaultWidth()); ++nb1;
fAbort = new TGTextButton(hf3, "&Cancel");
fAbort->SetToolTipText("Cancel processing, Terminate() will NOT be executed");
fAbort->Connect("Clicked()", "TProofProgressDialog", this, "DoAbort()");
hf3->AddFrame(fAbort, new TGLayoutHints(kLHintsCenterY | kLHintsExpandX, 7, 7, 0, 0));
height1 = TMath::Max(height1, fAbort->GetDefaultHeight());
width1 = TMath::Max(width1, fAbort->GetDefaultWidth()); ++nb1;
fClose = new TGTextButton(hf3, "&Close");
fClose->SetToolTipText("Close this dialog");
fClose->SetState(kButtonDisabled);
fClose->Connect("Clicked()", "TProofProgressDialog", this, "DoClose()");
hf3->AddFrame(fClose, new TGLayoutHints(kLHintsCenterY | kLHintsExpandX, 7, 7, 0, 0));
height1 = TMath::Max(height1, fClose->GetDefaultHeight());
width1 = TMath::Max(width1, fClose->GetDefaultWidth()); ++nb1;
fDialog->AddFrame(hf3, new TGLayoutHints(kLHintsBottom | kLHintsCenterX | kLHintsExpandX, 5, 5, 10, 5));
UInt_t nb2 = 0, width2 = 0, height2 = 0;
TGHorizontalFrame *hf5 = new TGHorizontalFrame(fDialog, 60, 20, kFixedWidth);
fLog = new TGTextButton(hf5, "&Show Logs");
fLog->SetToolTipText("Show query log messages");
fLog->Connect("Clicked()", "TProofProgressDialog", this, "DoLog()");
hf5->AddFrame(fLog, new TGLayoutHints(kLHintsCenterY | kLHintsExpandX, 7, 7, 0, 0));
height2 = TMath::Max(height2, fLog->GetDefaultHeight());
width2 = TMath::Max(width2, fLog->GetDefaultWidth()); ++nb2;
if (PPD_SRV_NEWER(11)) {
fRatePlot = new TGTextButton(hf5, "&Rate plot");
fRatePlot->SetToolTipText("Show processing rate vs time");
fRatePlot->SetState(kButtonDisabled);
fRatePlot->Connect("Clicked()", "TProofProgressDialog", this, "DoPlotRateGraph()");
hf5->AddFrame(fRatePlot, new TGLayoutHints(kLHintsCenterY | kLHintsExpandX, 7, 7, 0, 0));
height2 = TMath::Max(height2, fRatePlot->GetDefaultHeight());
width2 = TMath::Max(width2, fRatePlot->GetDefaultWidth()); ++nb2;
}
fMemPlot = new TGTextButton(hf5, "Memory Plot");
fMemPlot->Connect("Clicked()", "TProofProgressDialog", this, "DoMemoryPlot()");
fMemPlot->SetToolTipText("Show memory consumption vs entry / merging phase");
hf5->AddFrame(fMemPlot, new TGLayoutHints(kLHintsCenterY | kLHintsExpandX, 10, 10, 0, 0));
height2 = TMath::Max(height2, fMemPlot->GetDefaultHeight());
width2 = TMath::Max(width2, fMemPlot->GetDefaultWidth()); ++nb2;
fDialog->AddFrame(hf5, new TGLayoutHints(kLHintsBottom | kLHintsCenterX | kLHintsExpandX, 5, 5, 10, 5));
if (!PPD_SRV_NEWER(18)) {
fMemPlot->SetState(kButtonDisabled);
TString tip = TString::Format("Not supported by the master: required protocol 19 > %d",
(fProof ? fProof->GetRemoteProtocol() : -1));
fMemPlot->SetToolTipText(tip.Data());
} else {
fMemPlot->SetToolTipText("Show memory consumption");
}
UInt_t width, height, nb;
width = TMath::Max(width1, width2);
height = TMath::Max(height1, height2);
nb = TMath::Max(nb1, nb2);
if (fProof) {
fProof->Connect("Progress(Long64_t,Long64_t)", "TProofProgressDialog",
this, "Progress(Long64_t,Long64_t)");
fProof->Connect("Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t)",
"TProofProgressDialog", this,
"Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t)");
fProof->Connect("StopProcess(Bool_t)", "TProofProgressDialog", this,
"IndicateStop(Bool_t)");
fProof->Connect("ResetProgressDialog(const char*,Int_t,Long64_t,Long64_t)",
"TProofProgressDialog", this,
"ResetProgressDialog(const char*,Int_t,Long64_t,Long64_t)");
fProof->Connect("CloseProgressDialog()", "TProofProgressDialog", this, "DoClose()");
fProof->Connect("DisableGoAsyn()", "TProofProgressDialog", this, "DisableAsyn()");
}
if (fProof) {
if (strlen(fProof->GetUser()) > 0)
fDialog->SetWindowName(Form("PROOF Query Progress: %s@%s",
fProof->GetUser(), fProof->GetMaster()));
else
fDialog->SetWindowName(Form("PROOF Query Progress: %s", fProof->GetMaster()));
} else
fDialog->SetWindowName("PROOF Query Progress: <dummy>");
fDialog->MapSubwindows();
width = fDialog->GetDefaultWidth();
height = fDialog->GetDefaultHeight();
width += 100;
fDialog->Resize(width, height);
const TGWindow *main = gClient->GetRoot();
Window_t wdum;
int ax, ay;
Int_t mw = ((TGFrame *) main)->GetWidth();
Int_t mh = ((TGFrame *) main)->GetHeight();
gVirtualX->TranslateCoordinates(main->GetId(), main->GetId(),
(mw - width), (mh - height) >> 1, ax, ay, wdum);
fDialog->SetWMSize(width, height);
fDialog->SetWMSizeHints(width, height, width, height, 0, 0);
fDialog->SetMWMHints(kMWMDecorAll | kMWMDecorResizeH | kMWMDecorMaximize |
kMWMDecorMinimize | kMWMDecorMenu,
kMWMFuncAll | kMWMFuncResize | kMWMFuncMaximize |
kMWMFuncMinimize,
kMWMInputModeless);
fDialog->Move(ax-10, ay - mh/4);
fDialog->SetWMPosition(ax-10, ay - mh/4);
fDialog->MapWindow();
fStartTime = gSystem->Now();
}
void TProofProgressDialog::ResetProgressDialog(const char *selec,
Int_t files, Long64_t first,
Long64_t entries)
{
TString buf;
buf = TString::Format("Executing on PROOF cluster \"%s\" with %d parallel workers:",
fProof ? fProof->GetMaster() : "<dummy>",
fProof ? fProof->GetParallel() : 0);
fTitleLab->SetText(buf);
fFiles = files;
fFirst = first;
fEntries = entries;
fPrevProcessed = 0;
fPrevTotal = 0;
fStatus = kRunning;
buf = TString::Format("Selector: %s", selec);
fSelector->SetText(buf);
fProcessed->SetText("Estimated time left:");
buf = TString::Format("%d files, number of events %lld, starting event %lld",
fFiles, fEntries, fFirst);
fFilesEvents->SetText(buf);
fBar->SetBarColor("green");
fBar->Reset();
fStop->SetState(kButtonUp);
fAbort->SetState(kButtonUp);
fClose->SetState(kButtonDisabled);
if (fProof->IsSync() && fProof->GetRemoteProtocol() >= 22) {
fAsyn->SetState(kButtonUp);
} else {
fAsyn->SetState(kButtonDisabled);
}
if (fProof) {
fProof->Connect("Progress(Long64_t,Long64_t)", "TProofProgressDialog",
this, "Progress(Long64_t,Long64_t)");
fProof->Connect("Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t)",
"TProofProgressDialog", this,
"Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t)");
fProof->Connect("StopProcess(Bool_t)", "TProofProgressDialog", this,
"IndicateStop(Bool_t)");
fProof->Connect("DisableGoAsyn()", "TProofProgressDialog", this, "DisableAsyn()");
}
fStartTime = gSystem->Now();
if (PPD_SRV_NEWER(11))
fRatePoints->Reset();
SafeDelete(fRateGraph);
fAvgRate = 0.;
fAvgMBRate = 0.;
}
void TProofProgressDialog::Progress(Long64_t total, Long64_t processed)
{
Long_t tt;
UInt_t hh=0, mm=0, ss=0;
TString buf;
char stm[256];
static const char *cproc[] = { "running", "done",
"STOPPED", "ABORTED", "***EVENTS SKIPPED***"};
buf = TString::Format("Executing on PROOF cluster \"%s\" with %d parallel workers:",
fProof ? fProof->GetMaster() : "<dummy>",
fProof ? fProof->GetParallel() : 0);
fTitleLab->SetText(buf);
if (total < 0)
total = fPrevTotal;
else
fPrevTotal = total;
if (fPrevProcessed == processed)
return;
Long64_t evproc = (processed >= 0) ? processed : fPrevProcessed;
if (fEntries != total) {
fEntries = total;
buf = TString::Format("%d files, number of events %lld, starting event %lld",
fFiles, fEntries, fFirst);
fFilesEvents->SetText(buf);
}
Float_t pos = Float_t(Double_t(evproc * 100)/Double_t(total));
fBar->SetPosition(pos);
fEndTime = gSystem->Now();
TTime tdiff = fEndTime - fStartTime;
Float_t eta = 0;
if (evproc > 0)
eta = ((Float_t)((Long_t)tdiff)*total/Float_t(evproc) - Long_t(tdiff))/1000.;
if (processed >= 0 && processed >= total) {
tt = (Long_t(tdiff)/1000);
if (tt > 0) {
hh = (UInt_t)(tt / 3600);
mm = (UInt_t)((tt % 3600) / 60);
ss = (UInt_t)((tt % 3600) % 60);
}
if (hh)
sprintf(stm, "%d h %d min %d sec", hh, mm, ss);
else if (mm)
sprintf(stm, "%d min %d sec", mm, ss);
else
sprintf(stm, "%d sec", ss);
fProcessed->SetText("Processed:");
buf = TString::Format("%lld events in %s", total, stm);
fTotal->SetText(buf);
if (fProof) {
fProof->Disconnect("Progress(Long64_t,Long64_t)", this,
"Progress(Long64_t,Long64_t)");
fProof->Disconnect("StopProcess(Bool_t)", this,
"IndicateStop(Bool_t)");
fProof->Disconnect("DisableGoAsyn()", this, "DisableAsyn()");
}
fAsyn->SetState(kButtonDisabled);
fStop->SetState(kButtonDisabled);
fAbort->SetState(kButtonDisabled);
fClose->SetState(kButtonUp);
if (!fKeep) DoClose();
fStatus = kDone;
} else {
Bool_t incomplete = (processed < 0 &&
(fPrevProcessed < total || fPrevProcessed == 0))
? kTRUE : kFALSE;
if (incomplete) {
fStatus = kIncomplete;
fBar->SetBarColor("magenta");
}
tt = (Long_t)eta;
if (tt > 0) {
hh = (UInt_t)(tt / 3600);
mm = (UInt_t)((tt % 3600) / 60);
ss = (UInt_t)((tt % 3600) % 60);
}
if (hh)
sprintf(stm, "%d h %d min %d sec", hh, mm, ss);
else if (mm)
sprintf(stm, "%d min %d sec", mm, ss);
else
sprintf(stm, "%d sec", ss);
if (fStatus > kDone) {
buf = TString::Format("%s (%lld events of %lld processed) - %s",
stm, evproc, total, cproc[fStatus]);
} else {
buf = TString::Format("%s (%lld events of %lld processed)",
stm, evproc, total);
}
fTotal->SetText(buf);
buf = TString::Format("%.1f events/sec", Float_t(evproc)/Long_t(tdiff)*1000.);
fRate->SetText(buf);
if (processed < 0) {
fAsyn->SetState(kButtonDisabled);
fStop->SetState(kButtonDisabled);
fAbort->SetState(kButtonDisabled);
fClose->SetState(kButtonUp);
fStatus = kDone;
}
}
fPrevProcessed = evproc;
fDialog->Layout();
}
void TProofProgressDialog::Progress(Long64_t total, Long64_t processed,
Long64_t bytesread,
Float_t initTime, Float_t procTime,
Float_t evtrti, Float_t mbrti)
{
Long_t tt;
UInt_t hh=0, mm=0, ss=0;
TString buf;
char stm[256];
static const char *cproc[] = { "running", "done",
"STOPPED", "ABORTED", "***EVENTS SKIPPED***"};
buf = TString::Format("Executing on PROOF cluster \"%s\" with %d parallel workers:",
fProof ? fProof->GetMaster() : "<dummy>",
fProof ? fProof->GetParallel() : 0);
fTitleLab->SetText(buf);
if (initTime >= 0.) {
buf = TString::Format("%.1f secs", initTime);
fInit->SetText(buf);
fDialog->Layout();
}
Bool_t over = kFALSE;
if (total < 0) {
total = fPrevTotal;
over = kTRUE;
} else {
fPrevTotal = total;
}
if (fPrevProcessed == processed)
return;
Long64_t evproc = (processed >= 0) ? processed : fPrevProcessed;
Float_t mbsproc = bytesread / TMath::Power(2.,20.);
if (fEntries != total) {
fEntries = total;
buf = TString::Format("%d files, number of events %lld, starting event %lld",
fFiles, fEntries, fFirst);
fFilesEvents->SetText(buf);
}
Float_t pos = Float_t(Double_t(evproc * 100)/Double_t(total));
fBar->SetPosition(pos);
Float_t eta = 0;
if (evproc > 0 && procTime > 0.)
eta = (Float_t) (total - evproc) / (Double_t)evproc * procTime;
if (procTime > 0.) {
fProcTime = procTime;
fAvgRate = Float_t(evproc) / procTime;
fAvgMBRate = mbsproc / procTime;
}
if (over || (processed >= 0 && processed >= total)) {
Bool_t incomplete = (processed < 0 &&
(fPrevProcessed < total || fPrevProcessed == 0))
? kTRUE : kFALSE;
TString st = "";
if (incomplete) {
fStatus = kIncomplete;
fBar->SetBarColor("magenta");
st = TString::Format(" %s", cproc[fStatus]);
}
tt = (Long_t)fProcTime;
if (tt > 0) {
hh = (UInt_t)(tt / 3600);
mm = (UInt_t)((tt % 3600) / 60);
ss = (UInt_t)((tt % 3600) % 60);
}
if (hh)
sprintf(stm, "%d h %d min %d sec", hh, mm, ss);
else if (mm)
sprintf(stm, "%d min %d sec", mm, ss);
else
sprintf(stm, "%d sec", ss);
fProcessed->SetText("Processed:");
buf = TString::Format("%lld events (%.2f MBs) in %s %s",
std::max(fPrevProcessed, processed), fAvgMBRate*fProcTime, stm, st.Data());
fTotal->SetText(buf);
buf = TString::Format("%.1f evts/sec (%.1f MBs/sec)", fAvgRate, fAvgMBRate);
fRate->SetText(buf);
Bool_t useAvg = gEnv->GetValue("Proof.RatePlotUseAvg", 0);
if (useAvg) {
if (fAvgRate > 0.) {
fRatePoints->Fill(procTime, fAvgRate, fAvgMBRate);
fRatePlot->SetState(kButtonUp);
}
} else {
if (evtrti > 0.) {
fRatePoints->Fill(procTime, evtrti, mbrti);
fRatePlot->SetState(kButtonUp);
}
}
if (fProof) {
fProof->Disconnect("Progress(Long64_t,Long64_t)", this,
"Progress(Long64_t,Long64_t)");
fProof->Disconnect("Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t)",
this,
"Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t)");
fProof->Disconnect("StopProcess(Bool_t)", this, "IndicateStop(Bool_t)");
fProof->Disconnect("DisableGoAsyn()", this, "DisableAsyn()");
}
fAsyn->SetState(kButtonDisabled);
fStop->SetState(kButtonDisabled);
fAbort->SetState(kButtonDisabled);
fClose->SetState(kButtonUp);
if (!fKeep) DoClose();
fStatus = kDone;
} else {
Bool_t incomplete = (processed < 0 &&
(fPrevProcessed < total || fPrevProcessed == 0))
? kTRUE : kFALSE;
if (incomplete) {
fStatus = kIncomplete;
fBar->SetBarColor("magenta");
}
tt = (Long_t)eta;
if (tt > 0) {
hh = (UInt_t)(tt / 3600);
mm = (UInt_t)((tt % 3600) / 60);
ss = (UInt_t)((tt % 3600) % 60);
}
if (hh)
sprintf(stm, "%d h %d min %d sec", hh, mm, ss);
else if (mm)
sprintf(stm, "%d min %d sec", mm, ss);
else
sprintf(stm, "%d sec", ss);
if (fStatus > kDone) {
buf = TString::Format("%s (processed %lld events out of %lld - %.2f MBs of data) - %s",
stm, evproc, total, mbsproc, cproc[fStatus]);
} else {
buf = TString::Format("%s (processed %lld events out of %lld - %.2f MBs of data)",
stm, evproc, total, mbsproc);
}
fTotal->SetText(buf);
if (evtrti > 0.) {
buf = TString::Format("%.1f evts/sec (%.1f MBs/sec) - avg: %.1f evts/sec (%.1f MBs/sec)",
evtrti, mbrti, fAvgRate, fAvgMBRate);
fRatePoints->Fill(procTime, evtrti, mbrti);
fRatePlot->SetState(kButtonUp);
} else {
buf = TString::Format("avg: %.1f evts/sec (%.1f MBs/sec)", fAvgRate, fAvgMBRate);
}
fRate->SetText(buf);
if (processed < 0) {
fAsyn->SetState(kButtonDisabled);
fStop->SetState(kButtonDisabled);
fAbort->SetState(kButtonDisabled);
fClose->SetState(kButtonUp);
fStatus = kDone;
}
}
fPrevProcessed = evproc;
fDialog->Layout();
}
TProofProgressDialog::~TProofProgressDialog()
{
if (fProof) {
fProof->Disconnect("Progress(Long64_t,Long64_t)", this,
"Progress(Long64_t,Long64_t)");
fProof->Disconnect("Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t)",
this,
"Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t)");
fProof->Disconnect("StopProcess(Bool_t)", this, "IndicateStop(Bool_t)");
fProof->Disconnect("DisableGoAsyn()", this, "DisableAsyn()");
fProof->Disconnect("ResetProgressDialog(const char*,Int_t,Long64_t,Long64_t)",
this,
"ResetProgressDialog(const char*,Int_t,Long64_t,Long64_t)");
fProof->Disconnect("CloseProgressDialog()", this, "CloseProgressDialog()");
fProof->ResetProgressDialogStatus();
if (!fProof->IsValid())
SafeDelete(fProof);
}
if (fLogWindow)
delete fLogWindow;
if (fMemWindow)
delete fMemWindow;
fDialog->Cleanup();
delete fDialog;
}
void TProofProgressDialog::CloseWindow()
{
delete this;
}
void TProofProgressDialog::DisableAsyn()
{
fProof->Disconnect("DisableGoAsyn()", this, "DisableAsyn()");
fAsyn->SetState(kButtonDisabled);
}
void TProofProgressDialog::IndicateStop(Bool_t aborted)
{
if (aborted == kTRUE)
fBar->SetBarColor("red");
else
fBar->SetBarColor("yellow");
if (fProof) {
fProof->Disconnect("Progress(Long64_t,Long64_t)", this,
"Progress(Long64_t,Long64_t)");
fProof->Disconnect("Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t)",
this,
"Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t)");
fProof->Disconnect("StopProcess(Bool_t)", this, "IndicateStop(Bool_t)");
fProof->Disconnect("DisableGoAsyn()", this, "DisableAsyn()");
fAsyn->SetState(kButtonDisabled);
fStop->SetState(kButtonDisabled);
fAbort->SetState(kButtonDisabled);
}
fClose->SetState(kButtonUp);
if (!fKeep)
DoClose();
}
void TProofProgressDialog::LogMessage(const char *msg, Bool_t all)
{
if (fLogWindow) {
if (all) {
fLogWindow->LoadBuffer(msg);
} else {
fLogWindow->AddBuffer(msg);
}
}
}
void TProofProgressDialog::DoClose()
{
fClose->SetState(kButtonDisabled);
TTimer::SingleShot(50, "TProofProgressDialog", this, "CloseWindow()");
}
void TProofProgressDialog::DoLog()
{
if (fProof) {
if (!fLogWindow) {
fLogWindow = new TProofProgressLog(this);
if (!fLogWindow->TestBit(TObject::kInvalidObject))
fLogWindow->DoLog();
} else {
if (!fLogWindow->TestBit(TObject::kInvalidObject)) {
fLogWindow->Clear();
fLogWindow->DoLog();
}
}
}
}
void TProofProgressDialog::DoKeep(Bool_t)
{
fKeep = !fKeep;
fgKeepDefault = fKeep;
}
void TProofProgressDialog::DoSetLogQuery(Bool_t)
{
fLogQuery = !fLogQuery;
fEntry->SetEnabled(fLogQuery);
if (fLogQuery)
fEntry->SetToolTipText("Enter the query number ('last' for the last query)",50);
else
fEntry->SetToolTipText(0);
fgLogQueryDefault = fLogQuery;
}
void TProofProgressDialog::DoStop()
{
Long_t timeout = gEnv->GetValue("Proof.ShutdownTimeout", 60) / 2;
timeout = (timeout > 10) ? timeout : 10;
fProof->StopProcess(kFALSE, timeout);
fStatus = kStopped;
fAsyn->SetState(kButtonDisabled);
fStop->SetState(kButtonDisabled);
fAbort->SetState(kButtonDisabled);
fClose->SetState(kButtonUp);
}
void TProofProgressDialog::DoAbort()
{
fProof->StopProcess(kTRUE);
fStatus = kAborted;
fAsyn->SetState(kButtonDisabled);
fStop->SetState(kButtonDisabled);
fAbort->SetState(kButtonDisabled);
fClose->SetState(kButtonUp);
}
void TProofProgressDialog::DoAsyn()
{
fProof->GoAsynchronous();
fAsyn->SetState(kButtonDisabled);
}
void TProofProgressDialog::DoPlotRateGraph()
{
if (!fRatePoints || fRatePoints->GetEntries() <= 0) {
Info("DoPlotRateGraph","list is empty!");
return;
}
TCanvas *c1 = new TCanvas("c1","Rate vs Time",200,10,700,500);
c1->SetFillColor(0);
c1->SetGrid();
c1->SetBorderMode(0);
c1->SetFrameBorderMode(0);
Int_t np = (Int_t)fRatePoints->GetEntries();
Double_t ymx = -1.;
SafeDelete(fRateGraph);
fRateGraph = new TGraph(np);
Float_t *nar = fRatePoints->GetArgs();
Int_t ii = 0;
for ( ; ii < np; ++ii) {
fRatePoints->GetEntry(ii);
fRateGraph->SetPoint(ii, (Double_t) nar[0], (Double_t) nar[1]);
ymx = (nar[1] > ymx) ? nar[1] : ymx;
}
fRateGraph->SetMinimum(0.);
fRateGraph->SetMaximum(ymx*1.1);
fRateGraph->SetLineColor(2);
fRateGraph->SetLineWidth(4);
fRateGraph->SetMarkerColor(4);
fRateGraph->SetMarkerStyle(21);
fRateGraph->SetTitle("Processing rate (evts/sec)");
fRateGraph->GetXaxis()->SetTitle("elapsed time (sec)");
fRateGraph->Draw("ALP");
TLine *line = new TLine(fRateGraph->GetXaxis()->GetXmin(),fAvgRate,
fRateGraph->GetXaxis()->GetXmax(),fAvgRate);
Int_t ci;
ci = TColor::GetColor("#008200");
line->SetLineColor(ci);
line->SetLineWidth(2);
line->Draw("P");
Double_t xax0 = fRateGraph->GetXaxis()->GetXmin();
Double_t xax1 = fRateGraph->GetXaxis()->GetXmax();
Double_t yax0 = 0.;
Double_t yax1 = ymx*1.1;
Double_t x0 = xax0 + 0.05 * (xax1 - xax0);
Double_t x1 = xax0 + 0.60 * (xax1 - xax0);
Double_t y0 = yax0 + 0.10 * (yax1 - yax0);
Double_t y1 = yax0 + 0.20 * (yax1 - yax0);
TPaveText *pt = new TPaveText(x0, y0, x1, y1, "br");
pt->SetFillColor(0);
pt->AddText(Form("Global average: %.2f evts/sec", fAvgRate));
pt->Draw();
c1->Modified();
}
void TProofProgressDialog::DoMemoryPlot()
{
if (!fMemWindow) {
fMemWindow = new TProofProgressMemoryPlot(this, 500, 300);
fMemWindow->DoPlot();
} else {
fMemWindow->Clear();
fMemWindow->DoPlot();
}
}
TProofProgressDialog.cxx:1 TProofProgressDialog.cxx:2 TProofProgressDialog.cxx:3 TProofProgressDialog.cxx:4 TProofProgressDialog.cxx:5 TProofProgressDialog.cxx:6 TProofProgressDialog.cxx:7 TProofProgressDialog.cxx:8 TProofProgressDialog.cxx:9 TProofProgressDialog.cxx:10 TProofProgressDialog.cxx:11 TProofProgressDialog.cxx:12 TProofProgressDialog.cxx:13 TProofProgressDialog.cxx:14 TProofProgressDialog.cxx:15 TProofProgressDialog.cxx:16 TProofProgressDialog.cxx:17 TProofProgressDialog.cxx:18 TProofProgressDialog.cxx:19 TProofProgressDialog.cxx:20 TProofProgressDialog.cxx:21 TProofProgressDialog.cxx:22 TProofProgressDialog.cxx:23 TProofProgressDialog.cxx:24 TProofProgressDialog.cxx:25 TProofProgressDialog.cxx:26 TProofProgressDialog.cxx:27 TProofProgressDialog.cxx:28 TProofProgressDialog.cxx:29 TProofProgressDialog.cxx:30 TProofProgressDialog.cxx:31 TProofProgressDialog.cxx:32 TProofProgressDialog.cxx:33 TProofProgressDialog.cxx:34 TProofProgressDialog.cxx:35 TProofProgressDialog.cxx:36 TProofProgressDialog.cxx:37 TProofProgressDialog.cxx:38 TProofProgressDialog.cxx:39 TProofProgressDialog.cxx:40 TProofProgressDialog.cxx:41 TProofProgressDialog.cxx:42 TProofProgressDialog.cxx:43 TProofProgressDialog.cxx:44 TProofProgressDialog.cxx:45 TProofProgressDialog.cxx:46 TProofProgressDialog.cxx:47 TProofProgressDialog.cxx:48 TProofProgressDialog.cxx:49 TProofProgressDialog.cxx:50 TProofProgressDialog.cxx:51 TProofProgressDialog.cxx:52 TProofProgressDialog.cxx:53 TProofProgressDialog.cxx:54 TProofProgressDialog.cxx:55 TProofProgressDialog.cxx:56 TProofProgressDialog.cxx:57 TProofProgressDialog.cxx:58 TProofProgressDialog.cxx:59 TProofProgressDialog.cxx:60 TProofProgressDialog.cxx:61 TProofProgressDialog.cxx:62 TProofProgressDialog.cxx:63 TProofProgressDialog.cxx:64 TProofProgressDialog.cxx:65 TProofProgressDialog.cxx:66 TProofProgressDialog.cxx:67 TProofProgressDialog.cxx:68 TProofProgressDialog.cxx:69 TProofProgressDialog.cxx:70 TProofProgressDialog.cxx:71 TProofProgressDialog.cxx:72 TProofProgressDialog.cxx:73 TProofProgressDialog.cxx:74 TProofProgressDialog.cxx:75 TProofProgressDialog.cxx:76 TProofProgressDialog.cxx:77 TProofProgressDialog.cxx:78 TProofProgressDialog.cxx:79 TProofProgressDialog.cxx:80 TProofProgressDialog.cxx:81 TProofProgressDialog.cxx:82 TProofProgressDialog.cxx:83 TProofProgressDialog.cxx:84 TProofProgressDialog.cxx:85 TProofProgressDialog.cxx:86 TProofProgressDialog.cxx:87 TProofProgressDialog.cxx:88 TProofProgressDialog.cxx:89 TProofProgressDialog.cxx:90 TProofProgressDialog.cxx:91 TProofProgressDialog.cxx:92 TProofProgressDialog.cxx:93 TProofProgressDialog.cxx:94 TProofProgressDialog.cxx:95 TProofProgressDialog.cxx:96 TProofProgressDialog.cxx:97 TProofProgressDialog.cxx:98 TProofProgressDialog.cxx:99 TProofProgressDialog.cxx:100 TProofProgressDialog.cxx:101 TProofProgressDialog.cxx:102 TProofProgressDialog.cxx:103 TProofProgressDialog.cxx:104 TProofProgressDialog.cxx:105 TProofProgressDialog.cxx:106 TProofProgressDialog.cxx:107 TProofProgressDialog.cxx:108 TProofProgressDialog.cxx:109 TProofProgressDialog.cxx:110 TProofProgressDialog.cxx:111 TProofProgressDialog.cxx:112 TProofProgressDialog.cxx:113 TProofProgressDialog.cxx:114 TProofProgressDialog.cxx:115 TProofProgressDialog.cxx:116 TProofProgressDialog.cxx:117 TProofProgressDialog.cxx:118 TProofProgressDialog.cxx:119 TProofProgressDialog.cxx:120 TProofProgressDialog.cxx:121 TProofProgressDialog.cxx:122 TProofProgressDialog.cxx:123 TProofProgressDialog.cxx:124 TProofProgressDialog.cxx:125 TProofProgressDialog.cxx:126 TProofProgressDialog.cxx:127 TProofProgressDialog.cxx:128 TProofProgressDialog.cxx:129 TProofProgressDialog.cxx:130 TProofProgressDialog.cxx:131 TProofProgressDialog.cxx:132 TProofProgressDialog.cxx:133 TProofProgressDialog.cxx:134 TProofProgressDialog.cxx:135 TProofProgressDialog.cxx:136 TProofProgressDialog.cxx:137 TProofProgressDialog.cxx:138 TProofProgressDialog.cxx:139 TProofProgressDialog.cxx:140 TProofProgressDialog.cxx:141 TProofProgressDialog.cxx:142 TProofProgressDialog.cxx:143 TProofProgressDialog.cxx:144 TProofProgressDialog.cxx:145 TProofProgressDialog.cxx:146 TProofProgressDialog.cxx:147 TProofProgressDialog.cxx:148 TProofProgressDialog.cxx:149 TProofProgressDialog.cxx:150 TProofProgressDialog.cxx:151 TProofProgressDialog.cxx:152 TProofProgressDialog.cxx:153 TProofProgressDialog.cxx:154 TProofProgressDialog.cxx:155 TProofProgressDialog.cxx:156 TProofProgressDialog.cxx:157 TProofProgressDialog.cxx:158 TProofProgressDialog.cxx:159 TProofProgressDialog.cxx:160 TProofProgressDialog.cxx:161 TProofProgressDialog.cxx:162 TProofProgressDialog.cxx:163 TProofProgressDialog.cxx:164 TProofProgressDialog.cxx:165 TProofProgressDialog.cxx:166 TProofProgressDialog.cxx:167 TProofProgressDialog.cxx:168 TProofProgressDialog.cxx:169 TProofProgressDialog.cxx:170 TProofProgressDialog.cxx:171 TProofProgressDialog.cxx:172 TProofProgressDialog.cxx:173 TProofProgressDialog.cxx:174 TProofProgressDialog.cxx:175 TProofProgressDialog.cxx:176 TProofProgressDialog.cxx:177 TProofProgressDialog.cxx:178 TProofProgressDialog.cxx:179 TProofProgressDialog.cxx:180 TProofProgressDialog.cxx:181 TProofProgressDialog.cxx:182 TProofProgressDialog.cxx:183 TProofProgressDialog.cxx:184 TProofProgressDialog.cxx:185 TProofProgressDialog.cxx:186 TProofProgressDialog.cxx:187 TProofProgressDialog.cxx:188 TProofProgressDialog.cxx:189 TProofProgressDialog.cxx:190 TProofProgressDialog.cxx:191 TProofProgressDialog.cxx:192 TProofProgressDialog.cxx:193 TProofProgressDialog.cxx:194 TProofProgressDialog.cxx:195 TProofProgressDialog.cxx:196 TProofProgressDialog.cxx:197 TProofProgressDialog.cxx:198 TProofProgressDialog.cxx:199 TProofProgressDialog.cxx:200 TProofProgressDialog.cxx:201 TProofProgressDialog.cxx:202 TProofProgressDialog.cxx:203 TProofProgressDialog.cxx:204 TProofProgressDialog.cxx:205 TProofProgressDialog.cxx:206 TProofProgressDialog.cxx:207 TProofProgressDialog.cxx:208 TProofProgressDialog.cxx:209 TProofProgressDialog.cxx:210 TProofProgressDialog.cxx:211 TProofProgressDialog.cxx:212 TProofProgressDialog.cxx:213 TProofProgressDialog.cxx:214 TProofProgressDialog.cxx:215 TProofProgressDialog.cxx:216 TProofProgressDialog.cxx:217 TProofProgressDialog.cxx:218 TProofProgressDialog.cxx:219 TProofProgressDialog.cxx:220 TProofProgressDialog.cxx:221 TProofProgressDialog.cxx:222 TProofProgressDialog.cxx:223 TProofProgressDialog.cxx:224 TProofProgressDialog.cxx:225 TProofProgressDialog.cxx:226 TProofProgressDialog.cxx:227 TProofProgressDialog.cxx:228 TProofProgressDialog.cxx:229 TProofProgressDialog.cxx:230 TProofProgressDialog.cxx:231 TProofProgressDialog.cxx:232 TProofProgressDialog.cxx:233 TProofProgressDialog.cxx:234 TProofProgressDialog.cxx:235 TProofProgressDialog.cxx:236 TProofProgressDialog.cxx:237 TProofProgressDialog.cxx:238 TProofProgressDialog.cxx:239 TProofProgressDialog.cxx:240 TProofProgressDialog.cxx:241 TProofProgressDialog.cxx:242 TProofProgressDialog.cxx:243 TProofProgressDialog.cxx:244 TProofProgressDialog.cxx:245 TProofProgressDialog.cxx:246 TProofProgressDialog.cxx:247 TProofProgressDialog.cxx:248 TProofProgressDialog.cxx:249 TProofProgressDialog.cxx:250 TProofProgressDialog.cxx:251 TProofProgressDialog.cxx:252 TProofProgressDialog.cxx:253 TProofProgressDialog.cxx:254 TProofProgressDialog.cxx:255 TProofProgressDialog.cxx:256 TProofProgressDialog.cxx:257 TProofProgressDialog.cxx:258 TProofProgressDialog.cxx:259 TProofProgressDialog.cxx:260 TProofProgressDialog.cxx:261 TProofProgressDialog.cxx:262 TProofProgressDialog.cxx:263 TProofProgressDialog.cxx:264 TProofProgressDialog.cxx:265 TProofProgressDialog.cxx:266 TProofProgressDialog.cxx:267 TProofProgressDialog.cxx:268 TProofProgressDialog.cxx:269 TProofProgressDialog.cxx:270 TProofProgressDialog.cxx:271 TProofProgressDialog.cxx:272 TProofProgressDialog.cxx:273 TProofProgressDialog.cxx:274 TProofProgressDialog.cxx:275 TProofProgressDialog.cxx:276 TProofProgressDialog.cxx:277 TProofProgressDialog.cxx:278 TProofProgressDialog.cxx:279 TProofProgressDialog.cxx:280 TProofProgressDialog.cxx:281 TProofProgressDialog.cxx:282 TProofProgressDialog.cxx:283 TProofProgressDialog.cxx:284 TProofProgressDialog.cxx:285 TProofProgressDialog.cxx:286 TProofProgressDialog.cxx:287 TProofProgressDialog.cxx:288 TProofProgressDialog.cxx:289 TProofProgressDialog.cxx:290 TProofProgressDialog.cxx:291 TProofProgressDialog.cxx:292 TProofProgressDialog.cxx:293 TProofProgressDialog.cxx:294 TProofProgressDialog.cxx:295 TProofProgressDialog.cxx:296 TProofProgressDialog.cxx:297 TProofProgressDialog.cxx:298 TProofProgressDialog.cxx:299 TProofProgressDialog.cxx:300 TProofProgressDialog.cxx:301 TProofProgressDialog.cxx:302 TProofProgressDialog.cxx:303 TProofProgressDialog.cxx:304 TProofProgressDialog.cxx:305 TProofProgressDialog.cxx:306 TProofProgressDialog.cxx:307 TProofProgressDialog.cxx:308 TProofProgressDialog.cxx:309 TProofProgressDialog.cxx:310 TProofProgressDialog.cxx:311 TProofProgressDialog.cxx:312 TProofProgressDialog.cxx:313 TProofProgressDialog.cxx:314 TProofProgressDialog.cxx:315 TProofProgressDialog.cxx:316 TProofProgressDialog.cxx:317 TProofProgressDialog.cxx:318 TProofProgressDialog.cxx:319 TProofProgressDialog.cxx:320 TProofProgressDialog.cxx:321 TProofProgressDialog.cxx:322 TProofProgressDialog.cxx:323 TProofProgressDialog.cxx:324 TProofProgressDialog.cxx:325 TProofProgressDialog.cxx:326 TProofProgressDialog.cxx:327 TProofProgressDialog.cxx:328 TProofProgressDialog.cxx:329 TProofProgressDialog.cxx:330 TProofProgressDialog.cxx:331 TProofProgressDialog.cxx:332 TProofProgressDialog.cxx:333 TProofProgressDialog.cxx:334 TProofProgressDialog.cxx:335 TProofProgressDialog.cxx:336 TProofProgressDialog.cxx:337 TProofProgressDialog.cxx:338 TProofProgressDialog.cxx:339 TProofProgressDialog.cxx:340 TProofProgressDialog.cxx:341 TProofProgressDialog.cxx:342 TProofProgressDialog.cxx:343 TProofProgressDialog.cxx:344 TProofProgressDialog.cxx:345 TProofProgressDialog.cxx:346 TProofProgressDialog.cxx:347 TProofProgressDialog.cxx:348 TProofProgressDialog.cxx:349 TProofProgressDialog.cxx:350 TProofProgressDialog.cxx:351 TProofProgressDialog.cxx:352 TProofProgressDialog.cxx:353 TProofProgressDialog.cxx:354 TProofProgressDialog.cxx:355 TProofProgressDialog.cxx:356 TProofProgressDialog.cxx:357 TProofProgressDialog.cxx:358 TProofProgressDialog.cxx:359 TProofProgressDialog.cxx:360 TProofProgressDialog.cxx:361 TProofProgressDialog.cxx:362 TProofProgressDialog.cxx:363 TProofProgressDialog.cxx:364 TProofProgressDialog.cxx:365 TProofProgressDialog.cxx:366 TProofProgressDialog.cxx:367 TProofProgressDialog.cxx:368 TProofProgressDialog.cxx:369 TProofProgressDialog.cxx:370 TProofProgressDialog.cxx:371 TProofProgressDialog.cxx:372 TProofProgressDialog.cxx:373 TProofProgressDialog.cxx:374 TProofProgressDialog.cxx:375 TProofProgressDialog.cxx:376 TProofProgressDialog.cxx:377 TProofProgressDialog.cxx:378 TProofProgressDialog.cxx:379 TProofProgressDialog.cxx:380 TProofProgressDialog.cxx:381 TProofProgressDialog.cxx:382 TProofProgressDialog.cxx:383 TProofProgressDialog.cxx:384 TProofProgressDialog.cxx:385 TProofProgressDialog.cxx:386 TProofProgressDialog.cxx:387 TProofProgressDialog.cxx:388 TProofProgressDialog.cxx:389 TProofProgressDialog.cxx:390 TProofProgressDialog.cxx:391 TProofProgressDialog.cxx:392 TProofProgressDialog.cxx:393 TProofProgressDialog.cxx:394 TProofProgressDialog.cxx:395 TProofProgressDialog.cxx:396 TProofProgressDialog.cxx:397 TProofProgressDialog.cxx:398 TProofProgressDialog.cxx:399 TProofProgressDialog.cxx:400 TProofProgressDialog.cxx:401 TProofProgressDialog.cxx:402 TProofProgressDialog.cxx:403 TProofProgressDialog.cxx:404 TProofProgressDialog.cxx:405 TProofProgressDialog.cxx:406 TProofProgressDialog.cxx:407 TProofProgressDialog.cxx:408 TProofProgressDialog.cxx:409 TProofProgressDialog.cxx:410 TProofProgressDialog.cxx:411 TProofProgressDialog.cxx:412 TProofProgressDialog.cxx:413 TProofProgressDialog.cxx:414 TProofProgressDialog.cxx:415 TProofProgressDialog.cxx:416 TProofProgressDialog.cxx:417 TProofProgressDialog.cxx:418 TProofProgressDialog.cxx:419 TProofProgressDialog.cxx:420 TProofProgressDialog.cxx:421 TProofProgressDialog.cxx:422 TProofProgressDialog.cxx:423 TProofProgressDialog.cxx:424 TProofProgressDialog.cxx:425 TProofProgressDialog.cxx:426 TProofProgressDialog.cxx:427 TProofProgressDialog.cxx:428 TProofProgressDialog.cxx:429 TProofProgressDialog.cxx:430 TProofProgressDialog.cxx:431 TProofProgressDialog.cxx:432 TProofProgressDialog.cxx:433 TProofProgressDialog.cxx:434 TProofProgressDialog.cxx:435 TProofProgressDialog.cxx:436 TProofProgressDialog.cxx:437 TProofProgressDialog.cxx:438 TProofProgressDialog.cxx:439 TProofProgressDialog.cxx:440 TProofProgressDialog.cxx:441 TProofProgressDialog.cxx:442 TProofProgressDialog.cxx:443 TProofProgressDialog.cxx:444 TProofProgressDialog.cxx:445 TProofProgressDialog.cxx:446 TProofProgressDialog.cxx:447 TProofProgressDialog.cxx:448 TProofProgressDialog.cxx:449 TProofProgressDialog.cxx:450 TProofProgressDialog.cxx:451 TProofProgressDialog.cxx:452 TProofProgressDialog.cxx:453 TProofProgressDialog.cxx:454 TProofProgressDialog.cxx:455 TProofProgressDialog.cxx:456 TProofProgressDialog.cxx:457 TProofProgressDialog.cxx:458 TProofProgressDialog.cxx:459 TProofProgressDialog.cxx:460 TProofProgressDialog.cxx:461 TProofProgressDialog.cxx:462 TProofProgressDialog.cxx:463 TProofProgressDialog.cxx:464 TProofProgressDialog.cxx:465 TProofProgressDialog.cxx:466 TProofProgressDialog.cxx:467 TProofProgressDialog.cxx:468 TProofProgressDialog.cxx:469 TProofProgressDialog.cxx:470 TProofProgressDialog.cxx:471 TProofProgressDialog.cxx:472 TProofProgressDialog.cxx:473 TProofProgressDialog.cxx:474 TProofProgressDialog.cxx:475 TProofProgressDialog.cxx:476 TProofProgressDialog.cxx:477 TProofProgressDialog.cxx:478 TProofProgressDialog.cxx:479 TProofProgressDialog.cxx:480 TProofProgressDialog.cxx:481 TProofProgressDialog.cxx:482 TProofProgressDialog.cxx:483 TProofProgressDialog.cxx:484 TProofProgressDialog.cxx:485 TProofProgressDialog.cxx:486 TProofProgressDialog.cxx:487 TProofProgressDialog.cxx:488 TProofProgressDialog.cxx:489 TProofProgressDialog.cxx:490 TProofProgressDialog.cxx:491 TProofProgressDialog.cxx:492 TProofProgressDialog.cxx:493 TProofProgressDialog.cxx:494 TProofProgressDialog.cxx:495 TProofProgressDialog.cxx:496 TProofProgressDialog.cxx:497 TProofProgressDialog.cxx:498 TProofProgressDialog.cxx:499 TProofProgressDialog.cxx:500 TProofProgressDialog.cxx:501 TProofProgressDialog.cxx:502 TProofProgressDialog.cxx:503 TProofProgressDialog.cxx:504 TProofProgressDialog.cxx:505 TProofProgressDialog.cxx:506 TProofProgressDialog.cxx:507 TProofProgressDialog.cxx:508 TProofProgressDialog.cxx:509 TProofProgressDialog.cxx:510 TProofProgressDialog.cxx:511 TProofProgressDialog.cxx:512 TProofProgressDialog.cxx:513 TProofProgressDialog.cxx:514 TProofProgressDialog.cxx:515 TProofProgressDialog.cxx:516 TProofProgressDialog.cxx:517 TProofProgressDialog.cxx:518 TProofProgressDialog.cxx:519 TProofProgressDialog.cxx:520 TProofProgressDialog.cxx:521 TProofProgressDialog.cxx:522 TProofProgressDialog.cxx:523 TProofProgressDialog.cxx:524 TProofProgressDialog.cxx:525 TProofProgressDialog.cxx:526 TProofProgressDialog.cxx:527 TProofProgressDialog.cxx:528 TProofProgressDialog.cxx:529 TProofProgressDialog.cxx:530 TProofProgressDialog.cxx:531 TProofProgressDialog.cxx:532 TProofProgressDialog.cxx:533 TProofProgressDialog.cxx:534 TProofProgressDialog.cxx:535 TProofProgressDialog.cxx:536 TProofProgressDialog.cxx:537 TProofProgressDialog.cxx:538 TProofProgressDialog.cxx:539 TProofProgressDialog.cxx:540 TProofProgressDialog.cxx:541 TProofProgressDialog.cxx:542 TProofProgressDialog.cxx:543 TProofProgressDialog.cxx:544 TProofProgressDialog.cxx:545 TProofProgressDialog.cxx:546 TProofProgressDialog.cxx:547 TProofProgressDialog.cxx:548 TProofProgressDialog.cxx:549 TProofProgressDialog.cxx:550 TProofProgressDialog.cxx:551 TProofProgressDialog.cxx:552 TProofProgressDialog.cxx:553 TProofProgressDialog.cxx:554 TProofProgressDialog.cxx:555 TProofProgressDialog.cxx:556 TProofProgressDialog.cxx:557 TProofProgressDialog.cxx:558 TProofProgressDialog.cxx:559 TProofProgressDialog.cxx:560 TProofProgressDialog.cxx:561 TProofProgressDialog.cxx:562 TProofProgressDialog.cxx:563 TProofProgressDialog.cxx:564 TProofProgressDialog.cxx:565 TProofProgressDialog.cxx:566 TProofProgressDialog.cxx:567 TProofProgressDialog.cxx:568 TProofProgressDialog.cxx:569 TProofProgressDialog.cxx:570 TProofProgressDialog.cxx:571 TProofProgressDialog.cxx:572 TProofProgressDialog.cxx:573 TProofProgressDialog.cxx:574 TProofProgressDialog.cxx:575 TProofProgressDialog.cxx:576 TProofProgressDialog.cxx:577 TProofProgressDialog.cxx:578 TProofProgressDialog.cxx:579 TProofProgressDialog.cxx:580 TProofProgressDialog.cxx:581 TProofProgressDialog.cxx:582 TProofProgressDialog.cxx:583 TProofProgressDialog.cxx:584 TProofProgressDialog.cxx:585 TProofProgressDialog.cxx:586 TProofProgressDialog.cxx:587 TProofProgressDialog.cxx:588 TProofProgressDialog.cxx:589 TProofProgressDialog.cxx:590 TProofProgressDialog.cxx:591 TProofProgressDialog.cxx:592 TProofProgressDialog.cxx:593 TProofProgressDialog.cxx:594 TProofProgressDialog.cxx:595 TProofProgressDialog.cxx:596 TProofProgressDialog.cxx:597 TProofProgressDialog.cxx:598 TProofProgressDialog.cxx:599 TProofProgressDialog.cxx:600 TProofProgressDialog.cxx:601 TProofProgressDialog.cxx:602 TProofProgressDialog.cxx:603 TProofProgressDialog.cxx:604 TProofProgressDialog.cxx:605 TProofProgressDialog.cxx:606 TProofProgressDialog.cxx:607 TProofProgressDialog.cxx:608 TProofProgressDialog.cxx:609 TProofProgressDialog.cxx:610 TProofProgressDialog.cxx:611 TProofProgressDialog.cxx:612 TProofProgressDialog.cxx:613 TProofProgressDialog.cxx:614 TProofProgressDialog.cxx:615 TProofProgressDialog.cxx:616 TProofProgressDialog.cxx:617 TProofProgressDialog.cxx:618 TProofProgressDialog.cxx:619 TProofProgressDialog.cxx:620 TProofProgressDialog.cxx:621 TProofProgressDialog.cxx:622 TProofProgressDialog.cxx:623 TProofProgressDialog.cxx:624 TProofProgressDialog.cxx:625 TProofProgressDialog.cxx:626 TProofProgressDialog.cxx:627 TProofProgressDialog.cxx:628 TProofProgressDialog.cxx:629 TProofProgressDialog.cxx:630 TProofProgressDialog.cxx:631 TProofProgressDialog.cxx:632 TProofProgressDialog.cxx:633 TProofProgressDialog.cxx:634 TProofProgressDialog.cxx:635 TProofProgressDialog.cxx:636 TProofProgressDialog.cxx:637 TProofProgressDialog.cxx:638 TProofProgressDialog.cxx:639 TProofProgressDialog.cxx:640 TProofProgressDialog.cxx:641 TProofProgressDialog.cxx:642 TProofProgressDialog.cxx:643 TProofProgressDialog.cxx:644 TProofProgressDialog.cxx:645 TProofProgressDialog.cxx:646 TProofProgressDialog.cxx:647 TProofProgressDialog.cxx:648 TProofProgressDialog.cxx:649 TProofProgressDialog.cxx:650 TProofProgressDialog.cxx:651 TProofProgressDialog.cxx:652 TProofProgressDialog.cxx:653 TProofProgressDialog.cxx:654 TProofProgressDialog.cxx:655 TProofProgressDialog.cxx:656 TProofProgressDialog.cxx:657 TProofProgressDialog.cxx:658 TProofProgressDialog.cxx:659 TProofProgressDialog.cxx:660 TProofProgressDialog.cxx:661 TProofProgressDialog.cxx:662 TProofProgressDialog.cxx:663 TProofProgressDialog.cxx:664 TProofProgressDialog.cxx:665 TProofProgressDialog.cxx:666 TProofProgressDialog.cxx:667 TProofProgressDialog.cxx:668 TProofProgressDialog.cxx:669 TProofProgressDialog.cxx:670 TProofProgressDialog.cxx:671 TProofProgressDialog.cxx:672 TProofProgressDialog.cxx:673 TProofProgressDialog.cxx:674 TProofProgressDialog.cxx:675 TProofProgressDialog.cxx:676 TProofProgressDialog.cxx:677 TProofProgressDialog.cxx:678 TProofProgressDialog.cxx:679 TProofProgressDialog.cxx:680 TProofProgressDialog.cxx:681 TProofProgressDialog.cxx:682 TProofProgressDialog.cxx:683 TProofProgressDialog.cxx:684 TProofProgressDialog.cxx:685 TProofProgressDialog.cxx:686 TProofProgressDialog.cxx:687 TProofProgressDialog.cxx:688 TProofProgressDialog.cxx:689 TProofProgressDialog.cxx:690 TProofProgressDialog.cxx:691 TProofProgressDialog.cxx:692 TProofProgressDialog.cxx:693 TProofProgressDialog.cxx:694 TProofProgressDialog.cxx:695 TProofProgressDialog.cxx:696 TProofProgressDialog.cxx:697 TProofProgressDialog.cxx:698 TProofProgressDialog.cxx:699 TProofProgressDialog.cxx:700 TProofProgressDialog.cxx:701 TProofProgressDialog.cxx:702 TProofProgressDialog.cxx:703 TProofProgressDialog.cxx:704 TProofProgressDialog.cxx:705 TProofProgressDialog.cxx:706 TProofProgressDialog.cxx:707 TProofProgressDialog.cxx:708 TProofProgressDialog.cxx:709 TProofProgressDialog.cxx:710 TProofProgressDialog.cxx:711 TProofProgressDialog.cxx:712 TProofProgressDialog.cxx:713 TProofProgressDialog.cxx:714 TProofProgressDialog.cxx:715 TProofProgressDialog.cxx:716 TProofProgressDialog.cxx:717 TProofProgressDialog.cxx:718 TProofProgressDialog.cxx:719 TProofProgressDialog.cxx:720 TProofProgressDialog.cxx:721 TProofProgressDialog.cxx:722 TProofProgressDialog.cxx:723 TProofProgressDialog.cxx:724 TProofProgressDialog.cxx:725 TProofProgressDialog.cxx:726 TProofProgressDialog.cxx:727 TProofProgressDialog.cxx:728 TProofProgressDialog.cxx:729 TProofProgressDialog.cxx:730 TProofProgressDialog.cxx:731 TProofProgressDialog.cxx:732 TProofProgressDialog.cxx:733 TProofProgressDialog.cxx:734 TProofProgressDialog.cxx:735 TProofProgressDialog.cxx:736 TProofProgressDialog.cxx:737 TProofProgressDialog.cxx:738 TProofProgressDialog.cxx:739 TProofProgressDialog.cxx:740 TProofProgressDialog.cxx:741 TProofProgressDialog.cxx:742 TProofProgressDialog.cxx:743 TProofProgressDialog.cxx:744 TProofProgressDialog.cxx:745 TProofProgressDialog.cxx:746 TProofProgressDialog.cxx:747 TProofProgressDialog.cxx:748 TProofProgressDialog.cxx:749 TProofProgressDialog.cxx:750 TProofProgressDialog.cxx:751 TProofProgressDialog.cxx:752 TProofProgressDialog.cxx:753 TProofProgressDialog.cxx:754 TProofProgressDialog.cxx:755 TProofProgressDialog.cxx:756 TProofProgressDialog.cxx:757 TProofProgressDialog.cxx:758 TProofProgressDialog.cxx:759 TProofProgressDialog.cxx:760 TProofProgressDialog.cxx:761 TProofProgressDialog.cxx:762 TProofProgressDialog.cxx:763 TProofProgressDialog.cxx:764 TProofProgressDialog.cxx:765 TProofProgressDialog.cxx:766 TProofProgressDialog.cxx:767 TProofProgressDialog.cxx:768 TProofProgressDialog.cxx:769 TProofProgressDialog.cxx:770 TProofProgressDialog.cxx:771 TProofProgressDialog.cxx:772 TProofProgressDialog.cxx:773 TProofProgressDialog.cxx:774 TProofProgressDialog.cxx:775 TProofProgressDialog.cxx:776 TProofProgressDialog.cxx:777 TProofProgressDialog.cxx:778 TProofProgressDialog.cxx:779 TProofProgressDialog.cxx:780 TProofProgressDialog.cxx:781 TProofProgressDialog.cxx:782 TProofProgressDialog.cxx:783 TProofProgressDialog.cxx:784 TProofProgressDialog.cxx:785 TProofProgressDialog.cxx:786 TProofProgressDialog.cxx:787 TProofProgressDialog.cxx:788 TProofProgressDialog.cxx:789 TProofProgressDialog.cxx:790 TProofProgressDialog.cxx:791 TProofProgressDialog.cxx:792 TProofProgressDialog.cxx:793 TProofProgressDialog.cxx:794 TProofProgressDialog.cxx:795 TProofProgressDialog.cxx:796 TProofProgressDialog.cxx:797 TProofProgressDialog.cxx:798 TProofProgressDialog.cxx:799 TProofProgressDialog.cxx:800 TProofProgressDialog.cxx:801 TProofProgressDialog.cxx:802 TProofProgressDialog.cxx:803 TProofProgressDialog.cxx:804 TProofProgressDialog.cxx:805 TProofProgressDialog.cxx:806 TProofProgressDialog.cxx:807 TProofProgressDialog.cxx:808 TProofProgressDialog.cxx:809 TProofProgressDialog.cxx:810 TProofProgressDialog.cxx:811 TProofProgressDialog.cxx:812 TProofProgressDialog.cxx:813 TProofProgressDialog.cxx:814 TProofProgressDialog.cxx:815 TProofProgressDialog.cxx:816 TProofProgressDialog.cxx:817 TProofProgressDialog.cxx:818 TProofProgressDialog.cxx:819 TProofProgressDialog.cxx:820 TProofProgressDialog.cxx:821 TProofProgressDialog.cxx:822 TProofProgressDialog.cxx:823 TProofProgressDialog.cxx:824 TProofProgressDialog.cxx:825 TProofProgressDialog.cxx:826 TProofProgressDialog.cxx:827 TProofProgressDialog.cxx:828 TProofProgressDialog.cxx:829 TProofProgressDialog.cxx:830 TProofProgressDialog.cxx:831 TProofProgressDialog.cxx:832 TProofProgressDialog.cxx:833 TProofProgressDialog.cxx:834 TProofProgressDialog.cxx:835 TProofProgressDialog.cxx:836 TProofProgressDialog.cxx:837 TProofProgressDialog.cxx:838 TProofProgressDialog.cxx:839 TProofProgressDialog.cxx:840 TProofProgressDialog.cxx:841 TProofProgressDialog.cxx:842 TProofProgressDialog.cxx:843 TProofProgressDialog.cxx:844 TProofProgressDialog.cxx:845 TProofProgressDialog.cxx:846 TProofProgressDialog.cxx:847 TProofProgressDialog.cxx:848 TProofProgressDialog.cxx:849 TProofProgressDialog.cxx:850 TProofProgressDialog.cxx:851 TProofProgressDialog.cxx:852 TProofProgressDialog.cxx:853 TProofProgressDialog.cxx:854 TProofProgressDialog.cxx:855 TProofProgressDialog.cxx:856 TProofProgressDialog.cxx:857 TProofProgressDialog.cxx:858 TProofProgressDialog.cxx:859 TProofProgressDialog.cxx:860 TProofProgressDialog.cxx:861 TProofProgressDialog.cxx:862 TProofProgressDialog.cxx:863 TProofProgressDialog.cxx:864 TProofProgressDialog.cxx:865 TProofProgressDialog.cxx:866 TProofProgressDialog.cxx:867 TProofProgressDialog.cxx:868 TProofProgressDialog.cxx:869 TProofProgressDialog.cxx:870 TProofProgressDialog.cxx:871 TProofProgressDialog.cxx:872 TProofProgressDialog.cxx:873 TProofProgressDialog.cxx:874 TProofProgressDialog.cxx:875 TProofProgressDialog.cxx:876 TProofProgressDialog.cxx:877 TProofProgressDialog.cxx:878 TProofProgressDialog.cxx:879 TProofProgressDialog.cxx:880 TProofProgressDialog.cxx:881 TProofProgressDialog.cxx:882 TProofProgressDialog.cxx:883 TProofProgressDialog.cxx:884 TProofProgressDialog.cxx:885 TProofProgressDialog.cxx:886 TProofProgressDialog.cxx:887 TProofProgressDialog.cxx:888 TProofProgressDialog.cxx:889 TProofProgressDialog.cxx:890 TProofProgressDialog.cxx:891 TProofProgressDialog.cxx:892 TProofProgressDialog.cxx:893 TProofProgressDialog.cxx:894 TProofProgressDialog.cxx:895 TProofProgressDialog.cxx:896 TProofProgressDialog.cxx:897 TProofProgressDialog.cxx:898 TProofProgressDialog.cxx:899 TProofProgressDialog.cxx:900 TProofProgressDialog.cxx:901 TProofProgressDialog.cxx:902 TProofProgressDialog.cxx:903 TProofProgressDialog.cxx:904 TProofProgressDialog.cxx:905 TProofProgressDialog.cxx:906 TProofProgressDialog.cxx:907 TProofProgressDialog.cxx:908 TProofProgressDialog.cxx:909 TProofProgressDialog.cxx:910 TProofProgressDialog.cxx:911 TProofProgressDialog.cxx:912 TProofProgressDialog.cxx:913 TProofProgressDialog.cxx:914 TProofProgressDialog.cxx:915 TProofProgressDialog.cxx:916 TProofProgressDialog.cxx:917 TProofProgressDialog.cxx:918 TProofProgressDialog.cxx:919 TProofProgressDialog.cxx:920 TProofProgressDialog.cxx:921 TProofProgressDialog.cxx:922 TProofProgressDialog.cxx:923 TProofProgressDialog.cxx:924 TProofProgressDialog.cxx:925 TProofProgressDialog.cxx:926 TProofProgressDialog.cxx:927 TProofProgressDialog.cxx:928 TProofProgressDialog.cxx:929 TProofProgressDialog.cxx:930 TProofProgressDialog.cxx:931 TProofProgressDialog.cxx:932 TProofProgressDialog.cxx:933 TProofProgressDialog.cxx:934 TProofProgressDialog.cxx:935 TProofProgressDialog.cxx:936 TProofProgressDialog.cxx:937 TProofProgressDialog.cxx:938 TProofProgressDialog.cxx:939 TProofProgressDialog.cxx:940 TProofProgressDialog.cxx:941 TProofProgressDialog.cxx:942 TProofProgressDialog.cxx:943 TProofProgressDialog.cxx:944 TProofProgressDialog.cxx:945 TProofProgressDialog.cxx:946 TProofProgressDialog.cxx:947 TProofProgressDialog.cxx:948 TProofProgressDialog.cxx:949 TProofProgressDialog.cxx:950 TProofProgressDialog.cxx:951 TProofProgressDialog.cxx:952 TProofProgressDialog.cxx:953 TProofProgressDialog.cxx:954 TProofProgressDialog.cxx:955 TProofProgressDialog.cxx:956 TProofProgressDialog.cxx:957 TProofProgressDialog.cxx:958 TProofProgressDialog.cxx:959 TProofProgressDialog.cxx:960 TProofProgressDialog.cxx:961 TProofProgressDialog.cxx:962 TProofProgressDialog.cxx:963 TProofProgressDialog.cxx:964 TProofProgressDialog.cxx:965 TProofProgressDialog.cxx:966 TProofProgressDialog.cxx:967 TProofProgressDialog.cxx:968 TProofProgressDialog.cxx:969 TProofProgressDialog.cxx:970 TProofProgressDialog.cxx:971 TProofProgressDialog.cxx:972 TProofProgressDialog.cxx:973 TProofProgressDialog.cxx:974 TProofProgressDialog.cxx:975 TProofProgressDialog.cxx:976 TProofProgressDialog.cxx:977 TProofProgressDialog.cxx:978 TProofProgressDialog.cxx:979 TProofProgressDialog.cxx:980 TProofProgressDialog.cxx:981 TProofProgressDialog.cxx:982 TProofProgressDialog.cxx:983 TProofProgressDialog.cxx:984 TProofProgressDialog.cxx:985 TProofProgressDialog.cxx:986 TProofProgressDialog.cxx:987 TProofProgressDialog.cxx:988 TProofProgressDialog.cxx:989 TProofProgressDialog.cxx:990 TProofProgressDialog.cxx:991 TProofProgressDialog.cxx:992 TProofProgressDialog.cxx:993 TProofProgressDialog.cxx:994 TProofProgressDialog.cxx:995 TProofProgressDialog.cxx:996 TProofProgressDialog.cxx:997 TProofProgressDialog.cxx:998 TProofProgressDialog.cxx:999 TProofProgressDialog.cxx:1000 TProofProgressDialog.cxx:1001 TProofProgressDialog.cxx:1002 TProofProgressDialog.cxx:1003 TProofProgressDialog.cxx:1004 TProofProgressDialog.cxx:1005 TProofProgressDialog.cxx:1006 TProofProgressDialog.cxx:1007 TProofProgressDialog.cxx:1008 TProofProgressDialog.cxx:1009