ROOT logo
// @(#)root/sessionviewer:$Id: TProofProgressDialog.cxx 31813 2009-12-10 15:50:14Z bellenot $
// Author: Fons Rademakers   21/03/03

/*************************************************************************
 * Copyright (C) 1995-2003, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TProofProgressDialog                                                 //
//                                                                      //
// This class provides a query progress bar.                            //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#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 "TGSpeedo.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"
#include "TH1F.h"
#include "THLimitsFinder.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)
{
   // Create PROOF processing progress dialog.

   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;
   fMBRtGraph     = 0;
   fActWGraph     = 0;
   fTotSGraph     = 0;
   fEffSGraph     = 0;
   fProcTime      = 0.;
   fInitTime      = 0.;
   fAvgRate       = 0.;
   fAvgMBRate     = 0.;
   fSVNRev        = -1;
   fRightInfo     = 0;

   // Make sure we are attached to a good instance
   if (!proof || !(proof->IsValid())) {
      Error("TProofProgressDialog", "proof instance is invalid (%p, %s): protocol error?",
                                    proof, (proof && !(proof->IsValid())) ? "invalid" : "undef");
      return;
   }

   // Have to save this information here, in case gProof is dead when
   // the logs are requested
   fSessionUrl = (proof && proof->GetManager()) ? proof->GetManager()->GetUrl() : "";

   // SVN version run by the master
   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;
         // Strip of also the 'r' in front of the number
         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(25)) {
      fRatePoints = new TNtuple("RateNtuple","Rate progress info","tm:evr:mbr:act:tos:efs");
   } else 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();
   fDialog->SetCleanup(kDeepCleanup);

//=======================================================================================

   TGHorizontalFrame *hf4 = new TGHorizontalFrame(fDialog, 100, 100);

   TGVerticalFrame *vf4 = new TGVerticalFrame(hf4, 100, 100);

   // Title label
   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(vf4, buf);
   fTitleLab->SetTextJustify(kTextTop | kTextLeft);
   vf4->AddFrame(fTitleLab, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 10, 10, 5, 0));
   buf = TString::Format("Selector: %s", selector);
   fSelector = new TGLabel(vf4, buf);
   fSelector->SetTextJustify(kTextTop | kTextLeft);
   vf4->AddFrame(fSelector, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 10, 10, 5, 0));
   buf = TString::Format("%d files, number of events %lld, starting event %lld",
           fFiles, fEntries, fFirst);
   fFilesEvents = new TGLabel(vf4, buf);
   fFilesEvents->SetTextJustify(kTextTop | kTextLeft);
   vf4->AddFrame(fFilesEvents, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 10, 10, 5, 0));

   // Progress bar
   fBar = new TGHProgressBar(vf4, TGProgressBar::kFancy, 200);
   fBar->SetBarColor("green");
   fBar->UsePercent();
   fBar->ShowPos(kTRUE);
   vf4->AddFrame(fBar, new TGLayoutHints(kLHintsTop | kLHintsLeft |
                     kLHintsExpandX, 10, 10, 5, 5));

   // Status labels
   if (PPD_SRV_NEWER(11)) {
      TGHorizontalFrame *hf0 = new TGHorizontalFrame(vf4, 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");
      fInit->SetTextJustify(kTextTop | kTextLeft);
      hf0->AddFrame(fInit, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 10, 10, 0, 0));
      vf4->AddFrame(hf0, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 10, 10, 5, 0));
   }

   TGHorizontalFrame *hf1 = new TGHorizontalFrame(vf4, 0, 0);
   TGCompositeFrame *cf1 = new TGCompositeFrame(hf1, 110, 0, kFixedWidth);
   fTimeLab = new TGLabel(cf1, "Estimated time left:");
   fTimeLab->SetTextJustify(kTextTop | kTextLeft);
   cf1->AddFrame(fTimeLab, new TGLayoutHints(kLHintsLeft));
   hf1->AddFrame(cf1);
   fEstim = new TGLabel(hf1, "- sec");
   fEstim->SetTextJustify(kTextTop | kTextLeft);
   hf1->AddFrame(fEstim, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 10, 10, 0, 0));
   vf4->AddFrame(hf1, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 10, 10, 5, 0));

   hf1 = new TGHorizontalFrame(vf4, 0, 0);
   cf1 = new TGCompositeFrame(hf1, 110, 0, kFixedWidth);
   fProcessed = new TGLabel(cf1, "Processing status:");
   fProcessed->SetTextJustify(kTextTop | kTextLeft);
   cf1->AddFrame(fProcessed, new TGLayoutHints(kLHintsLeft));
   hf1->AddFrame(cf1);
   fTotal= new TGLabel(hf1, "- / - events");
   fTotal->SetTextJustify(kTextTop | kTextLeft);
   hf1->AddFrame(fTotal, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 10, 10, 0, 0));

   vf4->AddFrame(hf1, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 10, 10, 5, 0));

   TGHorizontalFrame *hf2 = new TGHorizontalFrame(vf4, 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 \n");
   fRate->SetTextJustify(kTextTop | kTextLeft);
   hf2->AddFrame(fRate, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 10, 10, 0, 0));
   vf4->AddFrame(hf2, new TGLayoutHints(kLHintsLeft | kLHintsExpandX, 10, 10, 5, 0));

   // Keep toggle button
   fKeepToggle = new TGCheckButton(vf4,
                    new TGHotString("Close dialog when processing is complete"));
   if (!fKeep) fKeepToggle->SetState(kButtonDown);
   fKeepToggle->Connect("Toggled(Bool_t)",
                        "TProofProgressDialog", this, "DoKeep(Bool_t)");
   vf4->AddFrame(fKeepToggle, new TGLayoutHints(kLHintsBottom, 10, 10, 10, 5));

   hf4->AddFrame(vf4, new TGLayoutHints(kLHintsExpandY | kLHintsExpandX));

   TGVerticalFrame *vf51 = new TGVerticalFrame(hf4, 20, 20);

   fSpeedo = new TGSpeedo(vf51, 0.0, 1.0, "", "  Ev/s");
   fSpeedo->Connect("OdoClicked()", "TProofProgressDialog", this, "ToggleOdometerInfos()");
   fSpeedo->Connect("LedClicked()", "TProofProgressDialog", this, "ToggleThreshold()");
   vf51->AddFrame(fSpeedo);
   fSpeedo->SetDisplayText("Init Time", "[ms]");
   fSpeedo->EnablePeakMark();
   fSpeedo->SetThresholds(0.0, 25.0, 50.0);
   fSpeedo->SetThresholdColors(TGSpeedo::kRed, TGSpeedo::kOrange, TGSpeedo::kGreen);
   fSpeedo->SetOdoValue(0);
   fSpeedo->EnableMeanMark();

   fSmoothSpeedo = new TGCheckButton(vf51, new TGHotString("Smooth speedometer update"));
   fSmoothSpeedo->SetState(kButtonDown);
   vf51->AddFrame(fSmoothSpeedo, new TGLayoutHints(kLHintsBottom | kLHintsCenterX, 0, 0, 5, 0));

   hf4->AddFrame(vf51, new TGLayoutHints(kLHintsBottom, 5, 5, 5, 5));

   fDialog->AddFrame(hf4, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 5, 5, 5, 5));

//==========================================================================================

   // Stop, cancel and close buttons
   TGHorizontalFrame *hf3 = new TGHorizontalFrame(fDialog, 60, 20);

   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, 5, 5));

   TGHorizontalFrame *hf5 = new TGHorizontalFrame(fDialog, 60, 20);

   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));

   if (PPD_SRV_NEWER(11)) {
      fRatePlot = new TGTextButton(hf5, "&Performance plot");
      fRatePlot->SetToolTipText("Show rates, chunck sizes, cluster activities ... vs time");
      fRatePlot->SetState(kButtonDisabled);
      fRatePlot->Connect("Clicked()", "TProofProgressDialog", this, "DoPlotRateGraph()");
      hf5->AddFrame(fRatePlot, new TGLayoutHints(kLHintsCenterY | kLHintsExpandX, 7, 7, 0, 0));
   }

   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, 7, 7, 0, 0));

   fDialog->AddFrame(hf5, new TGLayoutHints(kLHintsBottom | kLHintsCenterX | kLHintsExpandX, 5, 5, 5, 5));

   // Only enable if master supports it
   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");
   }

   // Connect slot to proof progress signal
   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("Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t,Int_t,Int_t,Float_t)",
                      "TProofProgressDialog", this,
                      "Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t,Int_t,Int_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()");
   }

   // Set dialog title
   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>");

   // Map all widgets and calculate size of dialog
   fDialog->MapSubwindows();

   fDialog->Resize(fDialog->GetDefaultSize());

   const TGWindow *main = gClient->GetRoot();
   // Position relative to the parent window (which is the root window)
   Window_t wdum;
   int      ax, ay;
   Int_t    mw = ((TGFrame *) main)->GetWidth();
   Int_t    mh = ((TGFrame *) main)->GetHeight();
   Int_t    width  = fDialog->GetDefaultWidth();
   Int_t    height = fDialog->GetDefaultHeight();

   gVirtualX->TranslateCoordinates(main->GetId(), main->GetId(),
                          (mw - width), (mh - height) >> 1, ax, ay, wdum);

   // Make the message box non-resizable
   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);
   // Popup dialog and wait till user replies
   fDialog->MapWindow();

   fStartTime = gSystem->Now();
}

//______________________________________________________________________________
void TProofProgressDialog::ToggleOdometerInfos()
{
   // Toggle information displayed in Analog Meter

   if (fRightInfo < 1)
      fRightInfo++;
   else
      fRightInfo = 0;
   if (fRightInfo == 0) {
      fSpeedo->SetDisplayText("Init Time", "[ms]");
      fSpeedo->SetOdoValue((Int_t)(fInitTime * 1000.0));
   }
   else if (fRightInfo == 1) {
      fSpeedo->SetDisplayText("Proc Time", "[ms]");
      fSpeedo->SetOdoValue((Int_t)(fProcTime * 1000.0));
   }
}

//______________________________________________________________________________
void TProofProgressDialog::ToggleThreshold()
{
   if (fSpeedo->IsThresholdActive()) {
      fSpeedo->DisableThreshold();
      fSpeedo->Glow(TGSpeedo::kNoglow);
   }
   else
      fSpeedo->EnableThreshold();
}

//______________________________________________________________________________
void TProofProgressDialog::ResetProgressDialog(const char *selec,
                                               Int_t files, Long64_t first,
                                               Long64_t entries)
{
   // Reset dialog box preparing for new query
   TString buf;

   // Update title
   buf = TString::Format("Executing on PROOF cluster \"%s\" with %d parallel workers:",
           fProof ? fProof->GetMaster() : "<dummy>",
           fProof ? fProof->GetParallel() : 0);
   fTitleLab->SetText(buf);

   // Reset members
   fFiles         = files;
   fFirst         = first;
   fEntries       = entries;
   fPrevProcessed = 0;
   fPrevTotal     = 0;
   fStatus        = kRunning;

   // Update selector name
   buf = TString::Format("Selector: %s", selec);
   fSelector->SetText(buf);

   // Reset 'estim' and 'processed' text
   fTimeLab->SetText("Estimated time left:");
   fProcessed->SetText("Processing status:");

   // Update numbers
   buf = TString::Format("%d files, number of events %lld, starting event %lld",
           fFiles, fEntries, fFirst);
   fFilesEvents->SetText(buf);

   // Reset progress bar
   fBar->SetBarColor("green");
   fBar->Reset();

   // Reset speedo
   fSpeedo->SetMinMaxScale(0.0, 1.0);
   fSpeedo->SetMeanValue(0.0);
   fSpeedo->ResetPeakVal();

   // Reset buttons
   fStop->SetState(kButtonUp);
   fAbort->SetState(kButtonUp);
   fClose->SetState(kButtonDisabled);
   if (fProof && fProof->IsSync() && fProof->GetRemoteProtocol() >= 22) {
      fAsyn->SetState(kButtonUp);
   } else {
      fAsyn->SetState(kButtonDisabled);
   }

   // Reconnect the slots
   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("Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t,Int_t,Int_t,Float_t)",
                      "TProofProgressDialog", this,
                      "Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t,Int_t,Int_t,Float_t)");
      fProof->Connect("StopProcess(Bool_t)", "TProofProgressDialog", this,
                      "IndicateStop(Bool_t)");
      fProof->Connect("DisableGoAsyn()", "TProofProgressDialog", this, "DisableAsyn()");
   }

   // Reset start time
   fStartTime = gSystem->Now();

   // Clear the list of performances points
   if (PPD_SRV_NEWER(11))
      fRatePoints->Reset();
   SafeDelete(fRateGraph);
   SafeDelete(fMBRtGraph);
   SafeDelete(fActWGraph);
   SafeDelete(fTotSGraph);
   SafeDelete(fEffSGraph);
   fAvgRate = 0.;
   fAvgMBRate = 0.;
}

//______________________________________________________________________________
void TProofProgressDialog::Progress(Long64_t total, Long64_t processed)
{
   // Update progress bar and status labels.
   // Use "processed == total" or "processed < 0" to indicate end of processing.

   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***"};

   // Update title
   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;

   // Nothing to update
   if (fPrevProcessed == processed)
      return;

   // Number of processed events
   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);
   }

   // Update position
   Float_t pos = Float_t(Double_t(evproc * 100)/Double_t(total));
   fBar->SetPosition(pos);

   // get current time
   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\n", total, stm);
      fTotal->SetText(buf);

      fEstim->SetText("0 sec");

      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()");
      }

      // Set button state
      fAsyn->SetState(kButtonDisabled);
      fStop->SetState(kButtonDisabled);
      fAbort->SetState(kButtonDisabled);
      fClose->SetState(kButtonUp);
      if (!fKeep) DoClose();

      // Set the status to done
      fStatus = kDone;

   } else {
      // A negative value for process indicates that we are finished,
      // no matter whether the processing was complete
      Bool_t incomplete = (processed < 0 &&
                          (fPrevProcessed < total || fPrevProcessed == 0))
                        ? kTRUE : kFALSE;
      if (incomplete) {
         fStatus = kIncomplete;
         // We use a different color to highlight incompletion
         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);

      fEstim->SetText(stm);
      buf = TString::Format("%lld / %lld events", evproc, total);
      if (fStatus > kDone) {
         buf += TString::Format(" - %s", cproc[fStatus]);
      }
      fTotal->SetText(buf);
      
      buf = TString::Format("%.1f events/sec\n", Float_t(evproc)/Long_t(tdiff)*1000.);
      fRate->SetText(buf);

      if (processed < 0) {
         // And we disable the buttons
         fAsyn->SetState(kButtonDisabled);
         fStop->SetState(kButtonDisabled);
         fAbort->SetState(kButtonDisabled);
         fClose->SetState(kButtonUp);

         // Set the status to done
         fStatus = kDone;
      }
   }
   fPrevProcessed = evproc;
}

//______________________________________________________________________________
void TProofProgressDialog::Progress(Long64_t total, Long64_t processed,
                                    Long64_t bytesread,
                                    Float_t initTime, Float_t procTime,
                                    Float_t evtrti, Float_t mbrti,
                                    Int_t actw, Int_t tses, Float_t eses)
{
   // Update progress bar and status labels.
   // Use "processed == total" or "processed < 0" to indicate end of processing.

   Double_t BinLow, BinHigh;
   Int_t nbins;
   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***"};

   // Update title
   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.) {
      // Set init time
      fInitTime = initTime;
      buf = TString::Format("%.1f secs", initTime);
      fInit->SetText(buf);
      if (fRightInfo == 0)
         fSpeedo->SetOdoValue((Int_t)(fInitTime * 1000.0));
   }

   Bool_t over = kFALSE;
   if (total < 0) {
      total = fPrevTotal;
      over = kTRUE;
   } else {
      fPrevTotal = total;
   }

   // Show proc time by default when switching from init to proc
   if (processed > 0 && fPrevProcessed <= 0)
      while (fRightInfo != 1)
         ToggleOdometerInfos();

   // Nothing to update
   if (fPrevProcessed == processed)
      return;

   // Number of processed events
   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);
   }

   // Update position
   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;

   // Update average rates
   if (procTime > 0.) {
      fProcTime = procTime;
      fAvgRate = Float_t(evproc) / procTime;
      fAvgMBRate = mbsproc / procTime;
   }

   if (fRightInfo == 0)
      fSpeedo->SetOdoValue((Int_t)(fInitTime * 1000.0));
   else if (fRightInfo == 1)
      fSpeedo->SetOdoValue((Int_t)(fProcTime * 1000.0));
      
   if (over || (processed >= 0 && processed >= total)) {

      // A negative value for process indicates that we are finished,
      // no matter whether the processing was complete
      Bool_t incomplete = (processed < 0 &&
                          (fPrevProcessed < total || fPrevProcessed == 0))
                        ? kTRUE : kFALSE;
      TString st = "";
      if (incomplete) {
         fStatus = kIncomplete;
         // We use a different color to highlight incompletion
         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:");
      TString sf("MB");
      Float_t xb = fAvgMBRate*fProcTime;
      xb = AdjustBytes(xb, sf);
      buf = TString::Format("%lld events (%.2f %s)\n",
                            std::max(fPrevProcessed, processed), xb, sf.Data());
      fTotal->SetText(buf);
      buf = TString::Format("%s %s\n", stm, st.Data());
      fTimeLab->SetText("Processing time:");
      fEstim->SetText(buf);
      buf = TString::Format("%.1f evts/sec (%.1f MB/sec)\n", fAvgRate, fAvgMBRate);
      fRate->SetText(buf);
      // Fill rate graph
      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, (Float_t)actw, (Float_t)tses, eses);
            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("Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t,Int_t,Int_t,Float_t)",
                            this,
                            "Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t,Int_t,Int_t,Float_t)");
         fProof->Disconnect("StopProcess(Bool_t)", this, "IndicateStop(Bool_t)");
         fProof->Disconnect("DisableGoAsyn()", this, "DisableAsyn()");
      }

      // Set button state
      fAsyn->SetState(kButtonDisabled);
      fStop->SetState(kButtonDisabled);
      fAbort->SetState(kButtonDisabled);
      fClose->SetState(kButtonUp);
      
      if (fSmoothSpeedo->GetState() == kButtonDown)
         fSpeedo->SetScaleValue(0.0, 0);
      else
         fSpeedo->SetScaleValue(0.0);
      fSpeedo->Glow(TGSpeedo::kNoglow);

      if (!fKeep) DoClose();

      // Set the status to done
      fStatus = kDone;

   } else {
      // A negative value for process indicates that we are finished,
      // no matter whether the processing was complete
      Bool_t incomplete = (processed < 0 &&
                          (fPrevProcessed < total || fPrevProcessed == 0))
                        ? kTRUE : kFALSE;
      if (incomplete) {
         fStatus = kIncomplete;
         // We use a different color to highlight incompletion
         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);

      fEstim->SetText(stm);
      TString sf("MB");
      Float_t xb = AdjustBytes(mbsproc, sf);
      buf = TString::Format("%lld / %lld events - %.2f %s", evproc, total, xb, sf.Data());
      if (fStatus > kDone) {
         buf += TString::Format(" - %s", cproc[fStatus]);
      }
      fTotal->SetText(buf);

      // Post
      if (evtrti > 0.) {
         buf = TString::Format("%.1f evts/sec \navg: %.1f evts/sec (%.1f MB/sec)",
                      evtrti, fAvgRate, fAvgMBRate);
         fRatePoints->Fill(procTime, evtrti, mbrti, (Float_t)actw, (Float_t)tses, eses);
         fRatePlot->SetState(kButtonUp);
         if (evtrti > fSpeedo->GetScaleMax()) {
            nbins = 4;
            BinLow = fSpeedo->GetScaleMin();
            BinHigh = 1.5 * evtrti;
            THLimitsFinder::OptimizeLimits(4, nbins, BinLow, BinHigh, kFALSE);
            fSpeedo->SetMinMaxScale(fSpeedo->GetScaleMin(), BinHigh);
         }
         if (fSmoothSpeedo->GetState() == kButtonDown)
            fSpeedo->SetScaleValue(evtrti, 0);
         else
            fSpeedo->SetScaleValue(evtrti);
         fSpeedo->SetMeanValue(fAvgRate);
      } else {
         buf = TString::Format("avg: %.1f evts/sec (%.1f MB/sec)", fAvgRate, fAvgMBRate);
      }
      fRate->SetText(buf);

      if (processed < 0) {
         // And we disable the buttons
         fAsyn->SetState(kButtonDisabled);
         fStop->SetState(kButtonDisabled);
         fAbort->SetState(kButtonDisabled);
         fClose->SetState(kButtonUp);

         if (fSmoothSpeedo->GetState() == kButtonDown)
            fSpeedo->SetScaleValue(0.0, 0);
         else
            fSpeedo->SetScaleValue(0.0);
         fSpeedo->Glow(TGSpeedo::kNoglow);

         // Set the status to done
         fStatus = kDone;
      }
   }
   fPrevProcessed = evproc;
}

//______________________________________________________________________________
Float_t TProofProgressDialog::AdjustBytes(Float_t mbs, TString &sf)
{
   // Transform MBs to GBs ot TBs and get the correct suffix

   Float_t xb = mbs;
   sf = "MB";
   if (xb > 1024.) {
      xb = xb / 1024.;
      sf = "GB";
   }
   if (xb > 1024.) {
      xb = xb / 1024.;
      sf = "TB";
   }
   // Done
   return xb;
}

//______________________________________________________________________________
TProofProgressDialog::~TProofProgressDialog()
{
   // Cleanup dialog.

   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("Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t,Int_t,Int_t,Float_t)",
                         this,
                         "Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t,Int_t,Int_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();
      // We are called after a TProofDetach: we delete the instance
      if (!fProof->IsValid())
         SafeDelete(fProof);
   }
   if (fLogWindow)
      delete fLogWindow;
   if (fMemWindow)
      delete fMemWindow;
   fDialog->Cleanup();
   delete fDialog;
}

//______________________________________________________________________________
void TProofProgressDialog::CloseWindow()
{
   // Called when dialog is closed.

   delete this;
}

//______________________________________________________________________________
void TProofProgressDialog::DisableAsyn()
{
   // Disable the asyn switch when an external request for going asynchronous is issued

   fProof->Disconnect("DisableGoAsyn()", this, "DisableAsyn()");
   fAsyn->SetState(kButtonDisabled);
}

//______________________________________________________________________________
void TProofProgressDialog::IndicateStop(Bool_t aborted)
{
   // Indicate that Cancel or Stop was clicked.

   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("Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t,Int_t,Int_t,Float_t)",
                         this,
                         "Progress(Long64_t,Long64_t,Long64_t,Float_t,Float_t,Float_t,Float_t,Int_t,Int_t,Float_t)");
      fProof->Disconnect("StopProcess(Bool_t)", this, "IndicateStop(Bool_t)");
      fProof->Disconnect("DisableGoAsyn()", this, "DisableAsyn()");
      // These buttons are meaningless at this point
      fAsyn->SetState(kButtonDisabled);
      fStop->SetState(kButtonDisabled);
      fAbort->SetState(kButtonDisabled);
   }

   fClose->SetState(kButtonUp);
   if (!fKeep)
      DoClose();
}

//______________________________________________________________________________
void TProofProgressDialog::LogMessage(const char *msg, Bool_t all)
{
   // Load/append a log msg in the log frame, if open

   if (fLogWindow) {
      if (all) {
         // load buffer
         fLogWindow->LoadBuffer(msg);
      } else {
         // append
         fLogWindow->AddBuffer(msg);
      }
   }
}

//______________________________________________________________________________
void TProofProgressDialog::DoClose()
{
   // Close dialog.

   fClose->SetState(kButtonDisabled);
   TTimer::SingleShot(50, "TProofProgressDialog", this, "CloseWindow()");
}

//______________________________________________________________________________
void TProofProgressDialog::DoLog()
{
   // Ask proof session for logs

   if (fProof) {
      if (!fLogWindow) {
         fLogWindow = new TProofProgressLog(this);
         if (!fLogWindow->TestBit(TObject::kInvalidObject))
            fLogWindow->DoLog();
      } else {
         // Clear window
         if (!fLogWindow->TestBit(TObject::kInvalidObject)) {
            fLogWindow->Clear();
            fLogWindow->DoLog();
         }
      }
   }
}

//______________________________________________________________________________
void TProofProgressDialog::DoKeep(Bool_t)
{
   // Handle keep toggle button.

   fKeep = !fKeep;

   // Last choice will be the default for the future
   fgKeepDefault = fKeep;
}

//______________________________________________________________________________
void TProofProgressDialog::DoSetLogQuery(Bool_t)
{
   // Handle log-current-query-only toggle button.

   fLogQuery = !fLogQuery;
   fEntry->SetEnabled(fLogQuery);
   if (fLogQuery)
      fEntry->SetToolTipText("Enter the query number ('last' for the last query)",50);
   else
      fEntry->SetToolTipText(0);

   // Last choice will be the default for the future
   fgLogQueryDefault = fLogQuery;
}

//______________________________________________________________________________
void TProofProgressDialog::DoStop()
{
   // Handle Stop button.

   // Do not wait for ever, but al least 10 seconds
   Long_t timeout = gEnv->GetValue("Proof.ShutdownTimeout", 60) / 2;
   timeout = (timeout > 10) ? timeout : 10;
   fProof->StopProcess(kFALSE, timeout);
   fStatus = kStopped;

   // Set buttons states
   fAsyn->SetState(kButtonDisabled);
   fStop->SetState(kButtonDisabled);
   fAbort->SetState(kButtonDisabled);
   fClose->SetState(kButtonUp);
}

//______________________________________________________________________________
void TProofProgressDialog::DoAbort()
{
   // Handle Cancel button.

   fProof->StopProcess(kTRUE);
   fStatus = kAborted;

   // Set buttons states
   fAsyn->SetState(kButtonDisabled);
   fStop->SetState(kButtonDisabled);
   fAbort->SetState(kButtonDisabled);
   fClose->SetState(kButtonUp);
}

//______________________________________________________________________________
void TProofProgressDialog::DoAsyn()
{
   // Handle Asyn button.

   fProof->GoAsynchronous();

   // Set buttons states
   fAsyn->SetState(kButtonDisabled);
}

//______________________________________________________________________________
void TProofProgressDialog::DoPlotRateGraph()
{
   // Handle Plot Rate Graph.

   // We must have some point to plot
   if (!fRatePoints || fRatePoints->GetEntries() <= 0) {
      Info("DoPlotRateGraph","list is empty!");
      return;
   }

   // Fill the graphs
   Int_t np = (Int_t)fRatePoints->GetEntries();
   Double_t eymx = -1., bymx = -1., wymx = -1., tymx=-1., symx = -1.;
   SafeDelete(fRateGraph);
   SafeDelete(fMBRtGraph);
   SafeDelete(fActWGraph);
   SafeDelete(fTotSGraph);
   SafeDelete(fEffSGraph);
   fRateGraph = new TGraph(np);
   fMBRtGraph = new TGraph(np);
   if (PPD_SRV_NEWER(25)) {
      fActWGraph = new TGraph(np);
      fTotSGraph = new TGraph(np);
      fEffSGraph = new TGraph(np);
   }
   Float_t *nar = fRatePoints->GetArgs();
   Int_t ii = 0;
   for ( ; ii < np; ++ii) {
      fRatePoints->GetEntry(ii);
      if (!(nar[1] > 0.)) continue;
      // Evts/s
      fRateGraph->SetPoint(ii, (Double_t) nar[0], (Double_t) nar[1]);
      eymx = (nar[1] > eymx) ? nar[1] : eymx;
      // MBs/s
      fMBRtGraph->SetPoint(ii, (Double_t) nar[0], (Double_t) nar[2]);
      bymx = (nar[2] > bymx) ? nar[2] : bymx;
      // Active workers
      if (PPD_SRV_NEWER(25)) {
         fActWGraph->SetPoint(ii, (Double_t) nar[0], (Double_t) nar[3]);
         wymx = (nar[3] > wymx) ? nar[3] : wymx;
      }
      // Sessions info
      if (PPD_SRV_NEWER(25)) {
         fTotSGraph->SetPoint(ii, (Double_t) nar[0], (Double_t) nar[4]);
         tymx = (nar[4] > tymx) ? nar[4] : tymx;
         fEffSGraph->SetPoint(ii, (Double_t) nar[0], (Double_t) nar[5]);
         symx = (nar[5] > symx) ? nar[5] : symx;
      }
   }

   // Pad numbering
   Int_t npads = 4;
   Int_t kEvrt = 1;
   Int_t kMBrt = 2;
   Int_t kActW = 3;
   Int_t kSess = 4;
   if (bymx <= 0.) {
      SafeDelete(fMBRtGraph);
      npads--;
      kActW--;
      kSess--;
   }
   if (wymx <= 0.) {
      SafeDelete(fActWGraph);
      npads--;
      kSess--;
   }
   // Plot only if more than one active session during the query
   if (tymx <= 1.) {
      SafeDelete(fTotSGraph);
      SafeDelete(fEffSGraph);
      npads--;
      kSess--;
   }
   if (tymx <= 0.) SafeDelete(fTotSGraph);
   if (symx <= 0.) SafeDelete(fEffSGraph);

   // Create a canvas
   Int_t jsz = 200*npads;
   TCanvas *c1 = new TCanvas("c1","Rate vs Time",200,10,700,jsz);
   c1->SetFillColor(0);
   c1->SetGrid();
   c1->SetBorderMode(0);
   c1->SetFrameBorderMode(0);

   // Padding
   c1->Divide(1, npads);

   // Event Rate plot
   TPad *cpad = (TPad *) c1->GetPad(kEvrt);
   cpad->cd();
   cpad->SetFillColor(0);
   cpad->SetBorderMode(20);
   cpad->SetFrameBorderMode(0);

   fRateGraph->SetMinimum(0.);
   fRateGraph->SetMaximum(eymx*1.1);
   fRateGraph->SetLineColor(50);
   fRateGraph->SetLineWidth(2);
   fRateGraph->SetMarkerColor(38);
   fRateGraph->SetMarkerStyle(25);
   fRateGraph->SetMarkerSize(0.8);
   fRateGraph->SetTitle("Processing rate (evts/sec)");
   fRateGraph->GetXaxis()->SetTitle("elapsed time (sec)");
   fRateGraph->Draw("ALP");

   // Line with average
   TLine *line = new TLine(fRateGraph->GetXaxis()->GetXmin(),fAvgRate,
                           fRateGraph->GetXaxis()->GetXmax(),fAvgRate);
   line->SetLineColor(8);
   line->SetLineStyle(2);
   line->SetLineWidth(2);
   line->Draw();

   // Label
   Double_t xax0 = fRateGraph->GetXaxis()->GetXmin();
   Double_t xax1 = fRateGraph->GetXaxis()->GetXmax();
   Double_t yax0 = 0.;
   Double_t yax1 = eymx*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();

   // MB Rate plot
   if (fMBRtGraph) {
      cpad = (TPad *) c1->GetPad(kMBrt);
      cpad->cd();
      cpad->SetFillColor(0);
      cpad->SetBorderMode(0);
      cpad->SetFrameBorderMode(0);

      fMBRtGraph->SetFillColor(38);
      TH1F *graph2 = new TH1F("graph2","Average read chunck size (MBs/request)",100,
                               fRateGraph->GetXaxis()->GetXmin(),fRateGraph->GetXaxis()->GetXmax());
      graph2->SetMinimum(0);
      graph2->SetMaximum(1.1*bymx);
      graph2->SetDirectory(0);
      graph2->SetStats(0);
      graph2->GetXaxis()->SetTitle("elapsed time (sec)");
      fMBRtGraph->SetHistogram(graph2);
      fMBRtGraph->Draw("AB");
   }

   // MB Rate plot
   if (fActWGraph) {
      cpad = (TPad *) c1->GetPad(kActW);
      cpad->cd();
      cpad->SetFillColor(0);
      cpad->SetBorderMode(0);
      cpad->SetFrameBorderMode(0);

      fActWGraph->SetMinimum(0.);
      fActWGraph->SetMaximum(wymx*1.1);
      fActWGraph->SetLineColor(50);
      fActWGraph->SetLineWidth(2);
      fActWGraph->SetMarkerColor(38);
      fActWGraph->SetMarkerStyle(25);
      fActWGraph->SetMarkerSize(0.8);
      fActWGraph->SetTitle("Active workers");
      fActWGraph->GetXaxis()->SetTitle("elapsed time (sec)");
      fActWGraph->Draw("ALP");
   }

   // MB Rate plot
   if (fTotSGraph) {
      cpad = (TPad *) c1->GetPad(kSess);
      cpad->cd();
      cpad->SetFillColor(0);
      cpad->SetBorderMode(0);
      cpad->SetFrameBorderMode(0);

      fTotSGraph->SetMinimum(0.);
      fTotSGraph->SetMaximum(tymx*1.1);
      fTotSGraph->SetLineColor(50);
      fTotSGraph->SetLineWidth(2);
      fTotSGraph->SetMarkerColor(38);
      fTotSGraph->SetMarkerStyle(25);
      fTotSGraph->SetMarkerSize(0.8);
      fTotSGraph->SetTitle("Active, Effective sessions");
      fTotSGraph->GetXaxis()->SetTitle("elapsed time (sec)");
      fTotSGraph->Draw("ALP");

      // Effective sessions
      if (fEffSGraph) {
         fEffSGraph->SetMinimum(0.);
         fEffSGraph->SetMaximum(tymx*1.1);
         fEffSGraph->SetLineColor(38);
         fEffSGraph->SetLineWidth(2);
         fEffSGraph->SetMarkerColor(50);
         fEffSGraph->SetMarkerStyle(21);
         fEffSGraph->SetMarkerSize(0.6);
         fEffSGraph->Draw("SLP");
      }
   }

   c1->Modified();
}

//______________________________________________________________________________
void TProofProgressDialog::DoMemoryPlot()
{
   // Do a memory plot

   if (!fMemWindow) {
      fMemWindow = new TProofProgressMemoryPlot(this, 500, 300);
      fMemWindow->DoPlot();
   } else {
      // Clear window
      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
 TProofProgressDialog.cxx:1010
 TProofProgressDialog.cxx:1011
 TProofProgressDialog.cxx:1012
 TProofProgressDialog.cxx:1013
 TProofProgressDialog.cxx:1014
 TProofProgressDialog.cxx:1015
 TProofProgressDialog.cxx:1016
 TProofProgressDialog.cxx:1017
 TProofProgressDialog.cxx:1018
 TProofProgressDialog.cxx:1019
 TProofProgressDialog.cxx:1020
 TProofProgressDialog.cxx:1021
 TProofProgressDialog.cxx:1022
 TProofProgressDialog.cxx:1023
 TProofProgressDialog.cxx:1024
 TProofProgressDialog.cxx:1025
 TProofProgressDialog.cxx:1026
 TProofProgressDialog.cxx:1027
 TProofProgressDialog.cxx:1028
 TProofProgressDialog.cxx:1029
 TProofProgressDialog.cxx:1030
 TProofProgressDialog.cxx:1031
 TProofProgressDialog.cxx:1032
 TProofProgressDialog.cxx:1033
 TProofProgressDialog.cxx:1034
 TProofProgressDialog.cxx:1035
 TProofProgressDialog.cxx:1036
 TProofProgressDialog.cxx:1037
 TProofProgressDialog.cxx:1038
 TProofProgressDialog.cxx:1039
 TProofProgressDialog.cxx:1040
 TProofProgressDialog.cxx:1041
 TProofProgressDialog.cxx:1042
 TProofProgressDialog.cxx:1043
 TProofProgressDialog.cxx:1044
 TProofProgressDialog.cxx:1045
 TProofProgressDialog.cxx:1046
 TProofProgressDialog.cxx:1047
 TProofProgressDialog.cxx:1048
 TProofProgressDialog.cxx:1049
 TProofProgressDialog.cxx:1050
 TProofProgressDialog.cxx:1051
 TProofProgressDialog.cxx:1052
 TProofProgressDialog.cxx:1053
 TProofProgressDialog.cxx:1054
 TProofProgressDialog.cxx:1055
 TProofProgressDialog.cxx:1056
 TProofProgressDialog.cxx:1057
 TProofProgressDialog.cxx:1058
 TProofProgressDialog.cxx:1059
 TProofProgressDialog.cxx:1060
 TProofProgressDialog.cxx:1061
 TProofProgressDialog.cxx:1062
 TProofProgressDialog.cxx:1063
 TProofProgressDialog.cxx:1064
 TProofProgressDialog.cxx:1065
 TProofProgressDialog.cxx:1066
 TProofProgressDialog.cxx:1067
 TProofProgressDialog.cxx:1068
 TProofProgressDialog.cxx:1069
 TProofProgressDialog.cxx:1070
 TProofProgressDialog.cxx:1071
 TProofProgressDialog.cxx:1072
 TProofProgressDialog.cxx:1073
 TProofProgressDialog.cxx:1074
 TProofProgressDialog.cxx:1075
 TProofProgressDialog.cxx:1076
 TProofProgressDialog.cxx:1077
 TProofProgressDialog.cxx:1078
 TProofProgressDialog.cxx:1079
 TProofProgressDialog.cxx:1080
 TProofProgressDialog.cxx:1081
 TProofProgressDialog.cxx:1082
 TProofProgressDialog.cxx:1083
 TProofProgressDialog.cxx:1084
 TProofProgressDialog.cxx:1085
 TProofProgressDialog.cxx:1086
 TProofProgressDialog.cxx:1087
 TProofProgressDialog.cxx:1088
 TProofProgressDialog.cxx:1089
 TProofProgressDialog.cxx:1090
 TProofProgressDialog.cxx:1091
 TProofProgressDialog.cxx:1092
 TProofProgressDialog.cxx:1093
 TProofProgressDialog.cxx:1094
 TProofProgressDialog.cxx:1095
 TProofProgressDialog.cxx:1096
 TProofProgressDialog.cxx:1097
 TProofProgressDialog.cxx:1098
 TProofProgressDialog.cxx:1099
 TProofProgressDialog.cxx:1100
 TProofProgressDialog.cxx:1101
 TProofProgressDialog.cxx:1102
 TProofProgressDialog.cxx:1103
 TProofProgressDialog.cxx:1104
 TProofProgressDialog.cxx:1105
 TProofProgressDialog.cxx:1106
 TProofProgressDialog.cxx:1107
 TProofProgressDialog.cxx:1108
 TProofProgressDialog.cxx:1109
 TProofProgressDialog.cxx:1110
 TProofProgressDialog.cxx:1111
 TProofProgressDialog.cxx:1112
 TProofProgressDialog.cxx:1113
 TProofProgressDialog.cxx:1114
 TProofProgressDialog.cxx:1115
 TProofProgressDialog.cxx:1116
 TProofProgressDialog.cxx:1117
 TProofProgressDialog.cxx:1118
 TProofProgressDialog.cxx:1119
 TProofProgressDialog.cxx:1120
 TProofProgressDialog.cxx:1121
 TProofProgressDialog.cxx:1122
 TProofProgressDialog.cxx:1123
 TProofProgressDialog.cxx:1124
 TProofProgressDialog.cxx:1125
 TProofProgressDialog.cxx:1126
 TProofProgressDialog.cxx:1127
 TProofProgressDialog.cxx:1128
 TProofProgressDialog.cxx:1129
 TProofProgressDialog.cxx:1130
 TProofProgressDialog.cxx:1131
 TProofProgressDialog.cxx:1132
 TProofProgressDialog.cxx:1133
 TProofProgressDialog.cxx:1134
 TProofProgressDialog.cxx:1135
 TProofProgressDialog.cxx:1136
 TProofProgressDialog.cxx:1137
 TProofProgressDialog.cxx:1138
 TProofProgressDialog.cxx:1139
 TProofProgressDialog.cxx:1140
 TProofProgressDialog.cxx:1141
 TProofProgressDialog.cxx:1142
 TProofProgressDialog.cxx:1143
 TProofProgressDialog.cxx:1144
 TProofProgressDialog.cxx:1145
 TProofProgressDialog.cxx:1146
 TProofProgressDialog.cxx:1147
 TProofProgressDialog.cxx:1148
 TProofProgressDialog.cxx:1149
 TProofProgressDialog.cxx:1150
 TProofProgressDialog.cxx:1151
 TProofProgressDialog.cxx:1152
 TProofProgressDialog.cxx:1153
 TProofProgressDialog.cxx:1154
 TProofProgressDialog.cxx:1155
 TProofProgressDialog.cxx:1156
 TProofProgressDialog.cxx:1157
 TProofProgressDialog.cxx:1158
 TProofProgressDialog.cxx:1159
 TProofProgressDialog.cxx:1160
 TProofProgressDialog.cxx:1161
 TProofProgressDialog.cxx:1162
 TProofProgressDialog.cxx:1163
 TProofProgressDialog.cxx:1164
 TProofProgressDialog.cxx:1165
 TProofProgressDialog.cxx:1166
 TProofProgressDialog.cxx:1167
 TProofProgressDialog.cxx:1168
 TProofProgressDialog.cxx:1169
 TProofProgressDialog.cxx:1170
 TProofProgressDialog.cxx:1171
 TProofProgressDialog.cxx:1172
 TProofProgressDialog.cxx:1173
 TProofProgressDialog.cxx:1174
 TProofProgressDialog.cxx:1175
 TProofProgressDialog.cxx:1176
 TProofProgressDialog.cxx:1177
 TProofProgressDialog.cxx:1178
 TProofProgressDialog.cxx:1179
 TProofProgressDialog.cxx:1180
 TProofProgressDialog.cxx:1181
 TProofProgressDialog.cxx:1182
 TProofProgressDialog.cxx:1183
 TProofProgressDialog.cxx:1184
 TProofProgressDialog.cxx:1185
 TProofProgressDialog.cxx:1186
 TProofProgressDialog.cxx:1187
 TProofProgressDialog.cxx:1188
 TProofProgressDialog.cxx:1189
 TProofProgressDialog.cxx:1190
 TProofProgressDialog.cxx:1191
 TProofProgressDialog.cxx:1192
 TProofProgressDialog.cxx:1193
 TProofProgressDialog.cxx:1194
 TProofProgressDialog.cxx:1195
 TProofProgressDialog.cxx:1196
 TProofProgressDialog.cxx:1197
 TProofProgressDialog.cxx:1198
 TProofProgressDialog.cxx:1199
 TProofProgressDialog.cxx:1200
 TProofProgressDialog.cxx:1201
 TProofProgressDialog.cxx:1202
 TProofProgressDialog.cxx:1203
 TProofProgressDialog.cxx:1204
 TProofProgressDialog.cxx:1205
 TProofProgressDialog.cxx:1206
 TProofProgressDialog.cxx:1207
 TProofProgressDialog.cxx:1208
 TProofProgressDialog.cxx:1209
 TProofProgressDialog.cxx:1210
 TProofProgressDialog.cxx:1211
 TProofProgressDialog.cxx:1212
 TProofProgressDialog.cxx:1213
 TProofProgressDialog.cxx:1214
 TProofProgressDialog.cxx:1215
 TProofProgressDialog.cxx:1216
 TProofProgressDialog.cxx:1217
 TProofProgressDialog.cxx:1218
 TProofProgressDialog.cxx:1219
 TProofProgressDialog.cxx:1220
 TProofProgressDialog.cxx:1221
 TProofProgressDialog.cxx:1222
 TProofProgressDialog.cxx:1223
 TProofProgressDialog.cxx:1224
 TProofProgressDialog.cxx:1225
 TProofProgressDialog.cxx:1226
 TProofProgressDialog.cxx:1227
 TProofProgressDialog.cxx:1228
 TProofProgressDialog.cxx:1229
 TProofProgressDialog.cxx:1230
 TProofProgressDialog.cxx:1231
 TProofProgressDialog.cxx:1232
 TProofProgressDialog.cxx:1233
 TProofProgressDialog.cxx:1234
 TProofProgressDialog.cxx:1235
 TProofProgressDialog.cxx:1236
 TProofProgressDialog.cxx:1237
 TProofProgressDialog.cxx:1238
 TProofProgressDialog.cxx:1239
 TProofProgressDialog.cxx:1240
 TProofProgressDialog.cxx:1241
 TProofProgressDialog.cxx:1242
 TProofProgressDialog.cxx:1243
 TProofProgressDialog.cxx:1244
 TProofProgressDialog.cxx:1245
 TProofProgressDialog.cxx:1246
 TProofProgressDialog.cxx:1247
 TProofProgressDialog.cxx:1248
 TProofProgressDialog.cxx:1249
 TProofProgressDialog.cxx:1250
 TProofProgressDialog.cxx:1251
 TProofProgressDialog.cxx:1252
 TProofProgressDialog.cxx:1253
 TProofProgressDialog.cxx:1254
 TProofProgressDialog.cxx:1255
 TProofProgressDialog.cxx:1256
 TProofProgressDialog.cxx:1257
 TProofProgressDialog.cxx:1258
 TProofProgressDialog.cxx:1259
 TProofProgressDialog.cxx:1260
 TProofProgressDialog.cxx:1261
 TProofProgressDialog.cxx:1262
 TProofProgressDialog.cxx:1263
 TProofProgressDialog.cxx:1264
 TProofProgressDialog.cxx:1265
 TProofProgressDialog.cxx:1266
 TProofProgressDialog.cxx:1267
 TProofProgressDialog.cxx:1268
 TProofProgressDialog.cxx:1269
 TProofProgressDialog.cxx:1270
 TProofProgressDialog.cxx:1271
 TProofProgressDialog.cxx:1272
 TProofProgressDialog.cxx:1273
 TProofProgressDialog.cxx:1274
 TProofProgressDialog.cxx:1275
 TProofProgressDialog.cxx:1276
 TProofProgressDialog.cxx:1277
 TProofProgressDialog.cxx:1278
 TProofProgressDialog.cxx:1279
 TProofProgressDialog.cxx:1280
 TProofProgressDialog.cxx:1281
 TProofProgressDialog.cxx:1282
 TProofProgressDialog.cxx:1283
 TProofProgressDialog.cxx:1284
 TProofProgressDialog.cxx:1285
 TProofProgressDialog.cxx:1286
 TProofProgressDialog.cxx:1287
 TProofProgressDialog.cxx:1288
 TProofProgressDialog.cxx:1289
 TProofProgressDialog.cxx:1290
 TProofProgressDialog.cxx:1291
 TProofProgressDialog.cxx:1292
 TProofProgressDialog.cxx:1293
 TProofProgressDialog.cxx:1294
 TProofProgressDialog.cxx:1295
 TProofProgressDialog.cxx:1296
 TProofProgressDialog.cxx:1297
 TProofProgressDialog.cxx:1298
 TProofProgressDialog.cxx:1299
 TProofProgressDialog.cxx:1300
 TProofProgressDialog.cxx:1301
 TProofProgressDialog.cxx:1302
 TProofProgressDialog.cxx:1303
 TProofProgressDialog.cxx:1304
 TProofProgressDialog.cxx:1305
 TProofProgressDialog.cxx:1306
 TProofProgressDialog.cxx:1307
 TProofProgressDialog.cxx:1308
 TProofProgressDialog.cxx:1309
 TProofProgressDialog.cxx:1310