// @(#)root/proofplayer:$Id$
// Author: Maarten Ballintijn, Marek Biskup  24/09/2003

/*************************************************************************
 * 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.             *
 *************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TProofDraw                                                           //
//                                                                      //
// Implement Tree drawing using PROOF.                                  //
//                                                                      //
//////////////////////////////////////////////////////////////////////////


#include "TProofDraw.h"
#include "TAttFill.h"
#include "TAttLine.h"
#include "TAttMarker.h"
#include "TCanvas.h"
#include "TClass.h"
#include "TError.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TH3F.h"
#include "TProof.h"
#include "TProofDebug.h"
#include "TStatus.h"
#include "TTreeDrawArgsParser.h"
#include "TTreeFormula.h"
#include "TTreeFormulaManager.h"
#include "TTree.h"
#include "TEventList.h"
#include "TEntryList.h"
#include "TProfile.h"
#include "TProfile2D.h"
#include "TEnv.h"
#include "TNamed.h"
#include "TGraph.h"
#include "TPolyMarker3D.h"
#include "TVirtualPad.h"
#include "THLimitsFinder.h"
#include "TView.h"
#include "TStyle.h"
#include "TDirectory.h"
#include "TROOT.h"

#include <algorithm>
using namespace std;


// Simple call to draw a canvas on the fly from applications loading
// this plug-in dynamically
extern "C" {
   Int_t DrawCanvas(TObject *obj)
   {
      // Draw the object if deriving from a canvas

      if (TCanvas* c = dynamic_cast<TCanvas *> (obj)) {
         c->Draw();
         return 0;
      }
      // Not a TCanvas
      return 1;
   }
}

// Simple call to parse arguments on the fly from applications loading
// this plug-in dynamically
extern "C" {
   Int_t GetDrawArgs(const char *var, const char *sel, Option_t *opt,
                     TString &selector, TString &objname)
   {
      // Parse arguments with the help of TTreeDrawArgsParser

      TTreeDrawArgsParser info;
      info.Parse(var, sel, opt);
      selector = info.GetProofSelectorName();
      objname = info.GetObjectName();

      // Done
      return 0;
   }
}

// Simple call to create destroy a 'named' canvas
extern "C" {
   void FeedBackCanvas(const char *name, Bool_t create)
   {
      // Create or destroy canvas 'name'

      if (create) {
         new TCanvas(name, "FeedBack", 800,30,700,500);
      } else {
         TCanvas *c = (gROOT->GetListOfCanvases()) ?
            (TCanvas *) gROOT->GetListOfCanvases()->FindObject(name) : 0;
         if (c) delete c;
      }
      // Done
      return;
   }
}

ClassImp(TProofDraw)

//______________________________________________________________________________
TProofDraw::TProofDraw()
   : fStatus(0), fManager(0), fTree(0)
{
   // Constructor.

   fVar[0]         = 0;
   fVar[1]         = 0;
   fVar[2]         = 0;
   fVar[3]         = 0;
   fManager        = 0;
   fMultiplicity   = 0;
   fSelect         = 0;
   fObjEval        = kFALSE;
   fDimension      = 0;
   fWeight         = 1.;
}


//______________________________________________________________________________
TProofDraw::~TProofDraw()
{
   // Destructor.

   ClearFormula();
}


//______________________________________________________________________________
void TProofDraw::Init(TTree *tree)
{
   // Init the tree.

   PDB(kDraw,1) Info("Init","Enter tree = %p", tree);
   fTree = tree;
   CompileVariables();
}


//______________________________________________________________________________
Bool_t TProofDraw::Notify()
{
   // Called when a new tree is loaded.

   PDB(kDraw,1) Info("Notify","Enter");
   if (fStatus == 0) {
      if (!fOutput || (fOutput &&
         !(fStatus = dynamic_cast<TStatus*>(fOutput->FindObject("PROOF_Status")))))
         return kFALSE;
   }
   if (!fStatus->IsOk()) return kFALSE;
   if (!fManager) {
      fAbort = TSelector::kAbortProcess;
      return kFALSE;
   }
   fManager->UpdateFormulaLeaves();
   return kTRUE;
}

//______________________________________________________________________________
void TProofDraw::Begin(TTree *tree)
{
   // Executed by the client before processing.

   PDB(kDraw,1) Info("Begin","Enter tree = %p", tree);

   TObject *os = fInput->FindObject("selection");
   TObject *ov = fInput->FindObject("varexp");

   if (os && ov) {
      fSelection = os->GetTitle();
      fInitialExp = ov->GetTitle();
      fTreeDrawArgsParser.Parse(fInitialExp, fSelection, fOption);
      if (fTreeDrawArgsParser.GetObjectName() == "")
         fTreeDrawArgsParser.SetObjectName("htemp");
   }

   PDB(kDraw,1) Info("Begin","selection: %s", fSelection.Data());
   PDB(kDraw,1) Info("Begin","varexp: %s", fInitialExp.Data());
   fTree = 0;
}


//______________________________________________________________________________
void TProofDraw::SlaveBegin(TTree* /*tree*/)
{
   // Executed by each slave before processing.

   // Get the weight
   TProofDraw::FillWeight();
}

//______________________________________________________________________________
void TProofDraw::FillWeight()
{
   // Get weight from input list, if any

   Double_t ww;
   if (TProof::GetParameter(fInput, "PROOF_ChainWeight", ww) == 0)
      fWeight = ww;
   PDB(kDraw,1) Info("FillWeight","fWeight= %f", fWeight);
}


//______________________________________________________________________________
Bool_t TProofDraw::ProcessSingle(Long64_t entry, Int_t i)
{
   // Processes a single variable from an entry.

   Double_t w;
   Double_t v[4]; //[TTreeDrawArgsParser::fgMaxDimension];

   if (fSelect)
      w = fWeight * fSelect->EvalInstance(i);
   else
      w = fWeight;

   PDB(kDraw,3) Info("ProcessSingle","w[%d] = %f", i, w);

   if (w != 0.0) {
      R__ASSERT(fDimension <= TTreeDrawArgsParser::GetMaxDimension());
      for (int j = 0; j < fDimension; j++)
         v[j] = fVar[j]->EvalInstance(i);
      if (fDimension >= 1)
         PDB(kDraw,4) Info("Process","v[0] = %f", v[0]);
      DoFill(entry, w, v);
   }
   return kTRUE;
}


//______________________________________________________________________________
Bool_t TProofDraw::Process(Long64_t entry)
{
   // Executed for each entry.

   PDB(kDraw,3) Info("Process", "enter entry = %lld", entry);

   fTree->LoadTree(entry);
   Int_t ndata = fManager->GetNdata();

   PDB(kDraw,3) Info("Process","ndata = %d", ndata);

   for (Int_t i=0;i<ndata;i++) {
      ProcessSingle(entry, i);
   }
   return kTRUE;
}


//______________________________________________________________________________
void TProofDraw::SlaveTerminate(void)
{
   // Executed by each slave after the processing has finished,
   // before returning the results to the client.

   PDB(kDraw,1) Info("SlaveTerminate","Enter");
}


//______________________________________________________________________________
void TProofDraw::Terminate(void)
{
   // Executed by the client after getting the processing retults.

   PDB(kDraw,1) Info("Terminate","Enter");
   if (fStatus == 0) {
      fStatus = dynamic_cast<TStatus*>(fOutput->FindObject("PROOF_Status"));
      if (fStatus == 0) {
         // did not run selector, error messages were already printed
         return;
      }
   }

   if (!fStatus->IsOk()) {
      fStatus->Print();
      return;
   }
}


//______________________________________________________________________________
void TProofDraw::ClearFormula()
{
   // Delete internal buffers.

   ResetBit(kWarn);
   for (Int_t i = 0; i < 4; i++)
      SafeDelete(fVar[i]);
   SafeDelete(fSelect);
   fManager = 0;  // This is intentional. The manager is deleted when the last formula it manages
                  // is deleted. This is unusual but was usefull for backward compatibility.
   fMultiplicity = 0;
}

//______________________________________________________________________________
void TProofDraw::SetCanvas(const char *objname)
{
   // Move to a canvas named <name>_canvas; create the canvas if not existing.
   // Used to avoid screwing up existing plots when non default names are used
   // for the final objects

   TString name = objname;
   if (!gPad) {
      gROOT->MakeDefCanvas();
      gPad->SetName(name);
      PDB(kDraw,2) Info("SetCanvas", "created canvas %s", name.Data());
   } else {
      PDB(kDraw,2)
         Info("SetCanvas", "using canvas %s", gPad->GetName());
   }
}

//______________________________________________________________________________
void TProofDraw::SetDrawAtt(TObject *o)
{
   // Set the drawing attributes from the input list

   Int_t att = -1;
   PDB(kDraw,2) Info("SetDrawAtt", "setting attributes for %s", o->GetName());

   // Line Attributes
   TAttLine *al = dynamic_cast<TAttLine *> (o);
   if (al) {
      // Line color
      if (TProof::GetParameter(fInput, "PROOF_LineColor", att) == 0)
         al->SetLineColor((Color_t)att);
      // Line style
      if (TProof::GetParameter(fInput, "PROOF_LineStyle", att) == 0)
         al->SetLineStyle((Style_t)att);
      // Line color
      if (TProof::GetParameter(fInput, "PROOF_LineWidth", att) == 0)
         al->SetLineWidth((Width_t)att);
      PDB(kDraw,2) Info("SetDrawAtt", "line:   c:%d, s:%d, wd:%d",
                                      al->GetLineColor(), al->GetLineStyle(), al->GetLineWidth());
   }

   // Marker Attributes
   TAttMarker *am = dynamic_cast<TAttMarker *> (o);
   if (am) {
      // Marker color
      if (TProof::GetParameter(fInput, "PROOF_MarkerColor", att) == 0)
         am->SetMarkerColor((Color_t)att);
      // Marker size
      if (TProof::GetParameter(fInput, "PROOF_MarkerSize", att) == 0) {
         Info("SetDrawAtt", "att: %d", att);
         Float_t msz = (Float_t)att / 1000.;
         am->SetMarkerSize((Size_t)msz);
      }
      // Marker style
      if (TProof::GetParameter(fInput, "PROOF_MarkerStyle", att) == 0)
         am->SetMarkerStyle((Style_t)att);
      PDB(kDraw,2) Info("SetDrawAtt", "marker: c:%d, s:%d, sz:%f",
                                      am->GetMarkerColor(), am->GetMarkerStyle(), am->GetMarkerSize());
   }

   // Area Fill Attributes
   TAttFill *af = dynamic_cast<TAttFill *> (o);
   if (af) {
      // Area fill color
      if (TProof::GetParameter(fInput, "PROOF_FillColor", att) == 0)
         af->SetFillColor((Color_t)att);
      // Area fill style
      if (TProof::GetParameter(fInput, "PROOF_FillStyle", att) == 0)
         af->SetFillStyle((Style_t)att);
      PDB(kDraw,2) Info("SetDrawAtt", "area:   c:%d, s:%d",
                                      af->GetFillColor(), af->GetFillStyle());
   }
}

//______________________________________________________________________________
void TProofDraw::SetError(const char *sub, const char *mesg)
{
   // Sets the error status.

   if (fStatus == 0) {
      if (!(fStatus = dynamic_cast<TStatus*>(fOutput->FindObject("PROOF_Status"))))
         return;
   }

   TString m;
   if (IsA())
      m.Form("%s::%s: %s", IsA()->GetName(), sub, mesg);
   else
      m.Form("TProofDraw::%s: %s", sub, mesg);
   fStatus->Add(m);
}


//______________________________________________________________________________
Bool_t TProofDraw::CompileVariables()
{
   // Compiles each variable from fTreeDrawArgsParser for the tree fTree.
   // Return kFALSE if any of the variable is not compilable.

   // Set aliases, if any
   TNamed *nms = (TNamed *) fInput->FindObject("PROOF_ListOfAliases");
   if (nms) {
      TString names = nms->GetTitle(), n, na;
      Ssiz_t from = 0;
      while(names.Tokenize(n, from, ",")) {
         if (!n.IsNull()) {
            na.Form("alias:%s", n.Data());
            TNamed *nm = (TNamed *) fInput->FindObject(na);
            if (na) fTree->SetAlias(n.Data(), nm->GetTitle());
         }
      }
   }
   PDB(kDraw,2)
      if (fTree->GetListOfAliases()) fTree->GetListOfAliases()->Print();

   fDimension = fTreeDrawArgsParser.GetDimension();
   fMultiplicity = 0;
   fObjEval = kFALSE;
   if (strlen(fTreeDrawArgsParser.GetSelection())) {
      fSelect = new TTreeFormula("Selection", fTreeDrawArgsParser.GetSelection(), fTree);
      fSelect->SetQuickLoad(kTRUE);
      if (!fSelect->GetNdim()) {delete fSelect; fSelect = 0; return kFALSE; }
   }

   fManager = new TTreeFormulaManager();
   if (fSelect) fManager->Add(fSelect);
   fTree->ResetBit(TTree::kForceRead);

   for (int i = 0; i < fDimension; i++) {
      fVar[i] = new TTreeFormula(Form("Var%d", i),fTreeDrawArgsParser.GetVarExp(i),fTree);
      fVar[i]->SetQuickLoad(kTRUE);
      if (!fVar[i]->GetNdim()) {
         ClearFormula();
         Error("CompileVariables", "Error compiling expression");
         SetError("CompileVariables", "Error compiling variables");

         return kFALSE;
      }
      fManager->Add(fVar[i]);
   }

   fManager->Sync();
   if (fManager->GetMultiplicity()==-1) fTree->SetBit(TTree::kForceRead);
   if (fManager->GetMultiplicity()>=1) fMultiplicity = fManager->GetMultiplicity();

   return kTRUE;
#if 0
   // Commenting out to silence Coverity:
   // but why was this made inactive?
   if (fDimension==1) {
      TClass *cl = fVar[0]->EvalClass();
      if (cl) {
         fObjEval = kTRUE;
      }
   }
   return kTRUE;
#endif
}


ClassImp(TProofDrawHist)


//______________________________________________________________________________
void TProofDrawHist::Begin1D(TTree *)
{
   // Initialization for 1D Histogram.

   R__ASSERT(fTreeDrawArgsParser.GetDimension() == 1);
   TObject* orig = fTreeDrawArgsParser.GetOriginal();
   TH1* hold;
   if (fTreeDrawArgsParser.GetNoParameters() == 0 && (hold = dynamic_cast<TH1*> (orig))) {
      hold->Reset();
      fInput->Add(hold);
   } else {
      delete orig;
      DefVar1D();
   }
}


//______________________________________________________________________________
void TProofDrawHist::Begin2D(TTree *)
{
   // Initialization for 2D histogram.

   R__ASSERT(fTreeDrawArgsParser.GetDimension() == 2);
   TObject* orig = fTreeDrawArgsParser.GetOriginal();
   TH2* hold;
   if (fTreeDrawArgsParser.GetNoParameters() == 0 && (hold = dynamic_cast<TH2*> (orig))) {
      hold->Reset();
      fInput->Add(hold);
   } else {
      delete orig;
      DefVar2D();
   }
}


//______________________________________________________________________________
void TProofDrawHist::Begin3D(TTree *)
{
   // Initialization for 3D histogram.

   R__ASSERT(fTreeDrawArgsParser.GetDimension() == 3);
   TObject* orig = fTreeDrawArgsParser.GetOriginal();
   TH3* hold;
   if ((hold = dynamic_cast<TH3*> (orig)) && fTreeDrawArgsParser.GetNoParameters() == 0) {
      hold->Reset();
      fInput->Add(hold);
   } else {
      delete orig;
      DefVar3D();
   }
}

//______________________________________________________________________________
void TProofDrawHist::Begin(TTree *tree)
{
   // See TProofDraw::Begin().

   PDB(kDraw,1) Info("Begin","Enter tree = %p", tree);

   TObject *os = fInput->FindObject("selection");
   TObject *ov = fInput->FindObject("varexp");

   if (os && ov) {
      fSelection = os->GetTitle();
      fInitialExp = ov->GetTitle();

      fTreeDrawArgsParser.Parse(fInitialExp, fSelection, fOption);
      if (fTreeDrawArgsParser.GetObjectName() == "")
         fTreeDrawArgsParser.SetObjectName("htemp");

      switch (fTreeDrawArgsParser.GetDimension()) {
         case 1:
            Begin1D(tree);
            break;
         case 2:
            Begin2D(tree);
            break;
         case 3:
            Begin3D(tree);
            break;
         default:
            Error("Begin", "Wrong dimension");
            break;
      }
   }
   PDB(kDraw,1) Info("Begin","selection: %s", fSelection.Data());
   PDB(kDraw,1) Info("Begin","varexp: %s", fInitialExp.Data());
   fTree = 0;
}

//______________________________________________________________________________
void TProofDrawHist::DefVar1D()
{
   // Define vars for 1D Histogram.

   R__ASSERT(fTreeDrawArgsParser.GetDimension() == 1);

   fTreeDrawArgsParser.SetOriginal(0);
   TString exp = fTreeDrawArgsParser.GetVarExp();
   exp += ">>";
   double binsx, minx, maxx;
   if (fTreeDrawArgsParser.IsSpecified(0))
      gEnv->SetValue("Hist.Binning.1D.x", fTreeDrawArgsParser.GetParameter(0));
   binsx = gEnv->GetValue("Hist.Binning.1D.x",100);
   minx =  fTreeDrawArgsParser.GetIfSpecified(1, 0);
   maxx =  fTreeDrawArgsParser.GetIfSpecified(2, 0);
   exp += fTreeDrawArgsParser.GetObjectName();
   exp += '(';
   exp +=      binsx;
   exp +=         ',';
   exp +=      minx;
   exp +=         ',';
   exp +=      maxx;
   exp += ')';

   fInitialExp = exp;
   TNamed *n = dynamic_cast<TNamed*> (fInput->FindObject("varexp"));
   if (n)
      n->SetTitle(exp);
   else
      Error("DefVar1D", "Cannot find varexp on the fInput");
   if (fTreeDrawArgsParser.GetNoParameters() != 3)
      fInput->Add(new TNamed("PROOF_OPTIONS", "rebin"));
}

//______________________________________________________________________________
void TProofDrawHist::DefVar2D()
{
   // Define variables for 2D histogram.

   R__ASSERT(fTreeDrawArgsParser.GetDimension() == 2);

   fTreeDrawArgsParser.SetOriginal(0);
   TString exp = fTreeDrawArgsParser.GetVarExp();
   exp += ">>";
   double binsx, minx, maxx;
   double binsy, miny, maxy;
   if (fTreeDrawArgsParser.IsSpecified(0))
      gEnv->SetValue("Hist.Binning.2D.x", fTreeDrawArgsParser.GetParameter(0));
   if (fTreeDrawArgsParser.IsSpecified(3))
      gEnv->SetValue("Hist.Binning.2D.y", fTreeDrawArgsParser.GetParameter(3));
   binsx = gEnv->GetValue("Hist.Binning.2D.x",100);
   minx =  fTreeDrawArgsParser.GetIfSpecified(1, 0);
   maxx =  fTreeDrawArgsParser.GetIfSpecified(2, 0);
   binsy = gEnv->GetValue("Hist.Binning.2D.y",100);
   miny =  fTreeDrawArgsParser.GetIfSpecified(4, 0);
   maxy =  fTreeDrawArgsParser.GetIfSpecified(5, 0);
   exp += fTreeDrawArgsParser.GetObjectName();
   exp += '(';
   exp +=      binsx;
   exp +=         ',';
   exp +=      minx;
   exp +=         ',';
   exp +=      maxx;
   exp += ',';
   exp +=      binsy;
   exp +=         ',';
   exp +=      miny;
   exp +=         ',';
   exp +=      maxy;
   exp += ')';
   fInitialExp = exp;
   TNamed *n = dynamic_cast<TNamed*> (fInput->FindObject("varexp"));
   if (n)
      n->SetTitle(exp);
   else
      Error("DefVar2D", "Cannot find varexp on the fInput");
   if (fTreeDrawArgsParser.GetNoParameters() != 6)
      fInput->Add(new TNamed("PROOF_OPTIONS", "rebin"));
}

//______________________________________________________________________________
void TProofDrawHist::DefVar3D()
{
   // Define variables for 3D histogram.

   R__ASSERT(fTreeDrawArgsParser.GetDimension() == 3);

   fTreeDrawArgsParser.SetOriginal(0);
   TString exp = fTreeDrawArgsParser.GetVarExp();
   exp += ">>";
   double binsx, minx, maxx;
   double binsy, miny, maxy;
   double binsz, minz, maxz;
   if (fTreeDrawArgsParser.IsSpecified(0))
      gEnv->SetValue("Hist.Binning.3D.x", fTreeDrawArgsParser.GetParameter(0));
   if (fTreeDrawArgsParser.IsSpecified(3))
      gEnv->SetValue("Hist.Binning.3D.y", fTreeDrawArgsParser.GetParameter(3));
   if (fTreeDrawArgsParser.IsSpecified(6))
      gEnv->SetValue("Hist.Binning.3D.z", fTreeDrawArgsParser.GetParameter(6));
   binsx = gEnv->GetValue("Hist.Binning.3D.x",100);
   minx =  fTreeDrawArgsParser.GetIfSpecified(1, 0);
   maxx =  fTreeDrawArgsParser.GetIfSpecified(2, 0);
   binsy = gEnv->GetValue("Hist.Binning.3D.y",100);
   miny =  fTreeDrawArgsParser.GetIfSpecified(4, 0);
   maxy =  fTreeDrawArgsParser.GetIfSpecified(5, 0);
   binsz = gEnv->GetValue("Hist.Binning.3D.z",100);
   minz =  fTreeDrawArgsParser.GetIfSpecified(7, 0);
   maxz =  fTreeDrawArgsParser.GetIfSpecified(8, 0);
   exp += fTreeDrawArgsParser.GetObjectName();
   exp += '(';
   exp +=      binsx;
   exp +=         ',';
   exp +=      minx;
   exp +=         ',';
   exp +=      maxx;
   exp += ',';
   exp +=      binsy;
   exp +=         ',';
   exp +=      miny;
   exp +=         ',';
   exp +=      maxy;
   exp += ',';
   exp +=      binsz;
   exp +=         ',';
   exp +=      minz;
   exp +=         ',';
   exp +=      maxz;
   exp += ')';
   fInitialExp = exp;
   TNamed *n = dynamic_cast<TNamed*> (fInput->FindObject("varexp"));
   if (n)
      n->SetTitle(exp);
   else
      Error("DefVar3D", "Cannot find varexp on the fInput");
   if (fTreeDrawArgsParser.GetNoParameters() != 9)
      fInput->Add(new TNamed("PROOF_OPTIONS", "rebin"));
}

//______________________________________________________________________________
void TProofDrawHist::DefVar()
{
   // Define variables according to arguments.

   PDB(kDraw,1) Info("DefVar","Enter");

   TObject *os = fInput->FindObject("selection");
   TObject *ov = fInput->FindObject("varexp");

   if (os && ov) {
      fSelection = os->GetTitle();
      fInitialExp = ov->GetTitle();

      fTreeDrawArgsParser.Parse(fInitialExp, fSelection, fOption);
      if (fTreeDrawArgsParser.GetObjectName() == "")
         fTreeDrawArgsParser.SetObjectName("htemp");

      switch (fTreeDrawArgsParser.GetDimension()) {
         case 1:
            DefVar1D();
            break;
         case 2:
            DefVar2D();
            break;
         case 3:
            DefVar3D();
            break;
         default:
            Error("DefVar", "Wrong dimension");
            break;
      }
   }
   PDB(kDraw,1) Info("DefVar","selection: %s", fSelection.Data());
   PDB(kDraw,1) Info("DefVar","varexp: %s", fInitialExp.Data());
   fTree = 0;
}

//______________________________________________________________________________
void TProofDrawHist::Init(TTree *tree)
{
   // See TProofDraw::Init().

   PDB(kDraw,1) Info("Init","Enter tree = %p", tree);
   if (fTree == 0) {
      if (!dynamic_cast<TH1*> (fTreeDrawArgsParser.GetOriginal())) {
         fHistogram->SetLineColor(tree->GetLineColor());
         fHistogram->SetLineWidth(tree->GetLineWidth());
         fHistogram->SetLineStyle(tree->GetLineStyle());
         fHistogram->SetFillColor(tree->GetFillColor());
         fHistogram->SetFillStyle(tree->GetFillStyle());
         fHistogram->SetMarkerStyle(tree->GetMarkerStyle());
         fHistogram->SetMarkerColor(tree->GetMarkerColor());
         fHistogram->SetMarkerSize(tree->GetMarkerSize());
      }
   }
   fTree = tree;
   CompileVariables();
}


//______________________________________________________________________________
void TProofDrawHist::SlaveBegin(TTree *tree)
{
   // See TProofDraw::SlaveBegin().

   PDB(kDraw,1) Info("SlaveBegin","Enter tree = %p", tree);

   // Get the weight
   TProofDraw::FillWeight();

   TObject *os = fInput->FindObject("selection");
   TObject *ov = fInput->FindObject("varexp");

   if (os && ov) {
      fSelection = os->GetTitle();
      fInitialExp = ov->GetTitle();

      SafeDelete(fHistogram);

      fTreeDrawArgsParser.Parse(fInitialExp, fSelection, fOption);
      fDimension = fTreeDrawArgsParser.GetDimension();
      TString exp = fTreeDrawArgsParser.GetExp();
      const char *objname = fTreeDrawArgsParser.GetObjectName();
      if (objname && strlen(objname) > 0 && strcmp(objname, "htemp")) {
         TH1 *hist = dynamic_cast<TH1*> (fInput->FindObject(objname));
         if (hist) {
            fHistogram = (TH1 *) hist->Clone();
            PDB(kDraw,1) Info("SlaveBegin","original histogram found");
         } else {
            PDB(kDraw,1) Info("SlaveBegin", "original object '%s' not found"
                                          " or it is not a histogram", objname);
         }
      }

      // Create the histogram if not found in the input list
      if (!fHistogram) {
         Int_t countx = 100; double minx = 0, maxx = 0;
         Int_t county = 100; double miny = 0, maxy = 0;
         Int_t countz = 100; double minz = 0, maxz = 0;
         if (fTreeDrawArgsParser.GetNoParameters() != 0) {
            countx = (Int_t) fTreeDrawArgsParser.GetIfSpecified(0, countx);
            county = (Int_t) fTreeDrawArgsParser.GetIfSpecified(3, county);
            countz = (Int_t) fTreeDrawArgsParser.GetIfSpecified(6, countz);
            minx =  fTreeDrawArgsParser.GetIfSpecified(1, minx);
            maxx =  fTreeDrawArgsParser.GetIfSpecified(2, maxx);
            miny =  fTreeDrawArgsParser.GetIfSpecified(4, miny);
            maxy =  fTreeDrawArgsParser.GetIfSpecified(5, maxy);
            minz =  fTreeDrawArgsParser.GetIfSpecified(7, minz);
            maxz =  fTreeDrawArgsParser.GetIfSpecified(8, maxz);
         }
         if (fTreeDrawArgsParser.GetNoParameters() != 3*fDimension)
            Error("SlaveBegin", "Impossible - Wrong number of parameters");

         if (fDimension == 1)
            fHistogram = new TH1F(fTreeDrawArgsParser.GetObjectName(),
                                 fTreeDrawArgsParser.GetObjectTitle(),
                                 countx, minx, maxx);
         else if (fDimension == 2){
            fHistogram = new TH2F(fTreeDrawArgsParser.GetObjectName(),
                                 fTreeDrawArgsParser.GetObjectTitle(),
                                 countx, minx, maxx,
                                 county, miny, maxy);
         }
         else if (fDimension == 3) {
            fHistogram = new TH3F(fTreeDrawArgsParser.GetObjectName(),
                                 fTreeDrawArgsParser.GetObjectTitle(),
                                 countx, minx, maxx,
                                 county, miny, maxy,
                                 countz, minz, maxz);
         } else {
            Info("Begin", "Wrong dimension");
            return;        // FIXME: end the session
         }
         if (minx >= maxx)
            fHistogram->SetBuffer(TH1::GetDefaultBufferSize());
         if (TNamed *opt = dynamic_cast<TNamed*> (fInput->FindObject("PROOF_OPTIONS"))) {
            if (strstr(opt->GetTitle(), "rebin"))
               fHistogram->SetCanExtend(TH1::kAllAxes);
         }
      }
      fHistogram->SetDirectory(0);   // take ownership
      fOutput->Add(fHistogram);      // release ownership
   }

   fTree = 0;
   PDB(kDraw,1) Info("Begin","selection: %s", fSelection.Data());
   PDB(kDraw,1) Info("Begin","varexp: %s", fInitialExp.Data());
}


//______________________________________________________________________________
void TProofDrawHist::DoFill(Long64_t, Double_t w, const Double_t *v)
{
   // Fills the histgram with given values.

   if (fDimension == 1)
      fHistogram->Fill(v[0], w);
   else if (fDimension == 2)
      ((TH2F *)fHistogram)->Fill(v[1], v[0], w);
   else if (fDimension == 3)
      ((TH3F *)fHistogram)->Fill(v[2], v[1], v[0], w);
}


//______________________________________________________________________________
void TProofDrawHist::Terminate(void)
{
   // See TProofDraw::Terminate().

   PDB(kDraw,1) Info("Terminate","Enter");
   TProofDraw::Terminate();
   if (!fStatus)
      return;

   fHistogram = (TH1F *) fOutput->FindObject(fTreeDrawArgsParser.GetObjectName());
   if (fHistogram) {
      SetStatus((Int_t) fHistogram->GetEntries());
      TH1 *h = 0;
      if ((h = dynamic_cast<TH1*> (fTreeDrawArgsParser.GetOriginal()))) {
         if (!fTreeDrawArgsParser.GetAdd())
            h->Reset();
         TList l;
         l.Add(fHistogram);
         h->Merge(&l);
         l.Remove(fHistogram);
         fOutput->Remove(fHistogram);
         delete fHistogram;
      } else {
         // Set the title
         fHistogram->SetTitle(fTreeDrawArgsParser.GetObjectTitle());
         h = fHistogram;
      }
      if (fTreeDrawArgsParser.GetShouldDraw()) {
         // Choose the right canvas
         SetCanvas(h->GetName());
         // Draw
         SetDrawAtt(h);
         h->Draw(fOption.Data());
      }
   }
   fHistogram = 0;
}

ClassImp(TProofDrawEventList)

//______________________________________________________________________________
TProofDrawEventList::~TProofDrawEventList()
{
   // Destructor.

   SafeDelete(fElist);
   SafeDelete(fEventLists);
}


//______________________________________________________________________________
void TProofDrawEventList::Init(TTree *tree)
{
   // See TProofDraw::Init().

   PDB(kDraw,1) Info("Init","Enter tree = %p", tree);

   if (fTree) {      // new tree is being set
      if (!fElist)
         Error("Init", "Impossible - fElist cannot be 0");
      fEventLists->Add(fElist);
   }
   fElist = new TEventList(tree->GetDirectory()->GetName(), tree->GetName());
   fTree = tree;
   CompileVariables();
}


//______________________________________________________________________________
void TProofDrawEventList::SlaveBegin(TTree *tree)
{
   // See TProofDraw::SlaveBegin().

   PDB(kDraw,1) Info("SlaveBegin","Enter tree = %p", tree);

   // Get the weight
   TProofDraw::FillWeight();

   TObject *os = fInput->FindObject("selection");
   TObject *ov = fInput->FindObject("varexp");

   if (os && ov) {
      fSelection = os->GetTitle();
      fInitialExp = ov->GetTitle();

      fTreeDrawArgsParser.Parse(fInitialExp, fSelection, fOption);

      SafeDelete(fEventLists);

      fDimension = 0;
      fTree = 0;
      fEventLists = new TList();
      fEventLists->SetName("PROOF_EventListsList");
      fOutput->Add(fEventLists);
   }

   PDB(kDraw,1) Info("Begin","selection: %s", fSelection.Data());
   PDB(kDraw,1) Info("Begin","varexp: %s", fInitialExp.Data());
}


//______________________________________________________________________________
void TProofDrawEventList::DoFill(Long64_t entry, Double_t , const Double_t *)
{
   // Fills the eventlist with given values.

   fElist->Enter(entry);
}


//______________________________________________________________________________
void TProofDrawEventList::SlaveTerminate(void)
{
   // See TProofDraw::SlaveTerminate().

   PDB(kDraw,1) Info("SlaveTerminate","Enter");
   fEventLists->Add(fElist);
   fEventLists = 0;
   fElist = 0;
}


//______________________________________________________________________________
void TProofDrawEventList::Terminate(void)
{
   // See TProofDraw::Terminate().

   TProofDraw::Terminate();   // take care of fStatus
   if (!fStatus)
      return;

   fTreeDrawArgsParser.Parse(fInitialExp, fSelection, fOption);

   TEventList *el = dynamic_cast<TEventList*> (fOutput->FindObject("PROOF_EventList"));
   if (el) {
      el->SetName(fInitialExp.Data()+2);
      SetStatus(el->GetN());
      if (TEventList* old = dynamic_cast<TEventList*> (fTreeDrawArgsParser.GetOriginal())) {
         if (!fTreeDrawArgsParser.GetAdd())
            old->Reset();
         old->Add(el);
         fOutput->Remove(el);
         delete el;
      }
   }
   else
      Error("Terminate", "Cannot find output EventList");

}

ClassImp(TProofDrawEntryList)

//______________________________________________________________________________
TProofDrawEntryList::~TProofDrawEntryList()
{
   //class destructor
   SafeDelete(fElist);
}

//______________________________________________________________________________
void TProofDrawEntryList::Init(TTree *tree)
{
   // See TProofDraw::Init().

   PDB(kDraw,1) Info("Init","Enter tree = %p", tree);

   fTree = tree;
   CompileVariables();
}

//______________________________________________________________________________
void TProofDrawEntryList::SlaveBegin(TTree *tree)
{
   // See TProofDraw::SlaveBegin().

   PDB(kDraw,1) Info("SlaveBegin","Enter tree = %p", tree);

   // Get the weight
   TProofDraw::FillWeight();

   TObject *os = fInput->FindObject("selection");
   TObject *ov = fInput->FindObject("varexp");

   if (os && ov) {
      fSelection = os->GetTitle();
      fInitialExp = ov->GetTitle();

      fTreeDrawArgsParser.Parse(fInitialExp, fSelection, fOption);

      SafeDelete(fElist);

      fDimension = 0;
      fTree = 0;
      fElist = new TEntryList("PROOF_EntryList", "PROOF_EntryList");
      fOutput->Add(fElist);
   }

   PDB(kDraw,1) Info("Begin","selection: %s", fSelection.Data());
   PDB(kDraw,1) Info("Begin","varexp: %s", fInitialExp.Data());
}

//______________________________________________________________________________
void TProofDrawEntryList::DoFill(Long64_t entry, Double_t , const Double_t *)
{
   // Fills the eventlist with given values.

   fElist->Enter(entry);
}

//______________________________________________________________________________
void TProofDrawEntryList::SlaveTerminate(void)
{
   // See TProofDraw::SlaveTerminate().

   PDB(kDraw,1) Info("SlaveTerminate","Enter");
   fElist->OptimizeStorage();
   fElist = 0;
}

//______________________________________________________________________________
void TProofDrawEntryList::Terminate(void)
{
   // See TProofDraw::Terminate().

   TProofDraw::Terminate();   // take care of fStatus
   if (!fStatus)
      return;

   fTreeDrawArgsParser.Parse(fInitialExp, fSelection, fOption);

   TEntryList *el = dynamic_cast<TEntryList*> (fOutput->FindObject("PROOF_EntryList"));

   if (el) {
      el->SetName(fInitialExp.Data()+2);
      SetStatus(el->GetN());
      if (TEntryList* old = dynamic_cast<TEntryList*> (fTreeDrawArgsParser.GetOriginal())) {
         if (!fTreeDrawArgsParser.GetAdd())
            old->Reset();
         old->Add(el);
         fOutput->Remove(el);
         delete el;
      }
   }
   else
      Error("Terminate", "Cannot find output EventList");

}

ClassImp(TProofDrawProfile)

//______________________________________________________________________________
void TProofDrawProfile::Init(TTree *tree)
{
   // See TProofDraw::Init().

   PDB(kDraw,1) Info("Init","Enter tree = %p", tree);

   if (fTree == 0) {
      if (!dynamic_cast<TProfile*> (fTreeDrawArgsParser.GetOriginal())) {
         fProfile->SetLineColor(tree->GetLineColor());
         fProfile->SetLineWidth(tree->GetLineWidth());
         fProfile->SetLineStyle(tree->GetLineStyle());
         fProfile->SetFillColor(tree->GetFillColor());
         fProfile->SetFillStyle(tree->GetFillStyle());
         fProfile->SetMarkerStyle(tree->GetMarkerStyle());
         fProfile->SetMarkerColor(tree->GetMarkerColor());
         fProfile->SetMarkerSize(tree->GetMarkerSize());
      }
   }
   fTree = tree;
   CompileVariables();
}

//______________________________________________________________________________
void TProofDrawProfile::DefVar()
{
   // Define relevant variables

   PDB(kDraw,1) Info("DefVar","Enter");

   if (fTreeDrawArgsParser.GetDimension() < 0) {

      // Init parser
      TObject *os = fInput->FindObject("selection");
      TObject *ov = fInput->FindObject("varexp");

      if (os && ov) {
         fSelection = ov->GetTitle();
         fInitialExp = ov->GetTitle();

         fTreeDrawArgsParser.Parse(fInitialExp, fSelection, fOption);
      }
   }

   R__ASSERT(fTreeDrawArgsParser.GetDimension() == 2);

   fTreeDrawArgsParser.SetOriginal(0);
   TString exp = fTreeDrawArgsParser.GetVarExp();
   exp += ">>";
   double binsx, minx, maxx;
   if (fTreeDrawArgsParser.IsSpecified(0))
      gEnv->SetValue("Hist.Binning.2D.Prof", fTreeDrawArgsParser.GetParameter(0));
   binsx = gEnv->GetValue("Hist.Binning.2D.Prof",100);
   minx =  fTreeDrawArgsParser.GetIfSpecified(1, 0);
   maxx =  fTreeDrawArgsParser.GetIfSpecified(2, 0);
   if (fTreeDrawArgsParser.GetObjectName() == "")
      fTreeDrawArgsParser.SetObjectName("htemp");
   exp += fTreeDrawArgsParser.GetObjectName();
   exp += '(';
   exp +=      binsx;
   exp +=         ',';
   exp +=      minx;
   exp +=         ',';
   exp +=      maxx;
   exp += ')';
   fInitialExp = exp;
   TNamed *n = dynamic_cast<TNamed*> (fInput->FindObject("varexp"));
   if (n)
      n->SetTitle(exp);
   else
      Error("DefVar", "Cannot find varexp on the fInput");
   if (fTreeDrawArgsParser.GetNoParameters() != 3)
      fInput->Add(new TNamed("PROOF_OPTIONS", "rebin"));
}

//______________________________________________________________________________
void TProofDrawProfile::Begin(TTree *tree)
{
   // See TProofDraw::Begin().

   PDB(kDraw,1) Info("Begin","Enter tree = %p", tree);


   TObject *os = fInput->FindObject("selection");
   TObject *ov = fInput->FindObject("varexp");

   if (os && ov) {
      fSelection = os->GetTitle();
      fInitialExp = ov->GetTitle();

      fTreeDrawArgsParser.Parse(fInitialExp, fSelection, fOption);

      R__ASSERT(fTreeDrawArgsParser.GetDimension() == 2);

      TObject *orig = fTreeDrawArgsParser.GetOriginal();
      TH1* pold;
      if ((pold = dynamic_cast<TProfile*> (orig)) && fTreeDrawArgsParser.GetNoParameters() == 0) {
         TProfile* pnew = (TProfile*) pold->Clone();
         pnew->Reset();
         fInput->Add(pnew);
      } else {
         delete orig;
         DefVar();
      }
   }
   PDB(kDraw,1) Info("Begin","selection: %s", fSelection.Data());
   PDB(kDraw,1) Info("Begin","varexp: %s", fInitialExp.Data());
   fTree = 0;
}


//______________________________________________________________________________
void TProofDrawProfile::SlaveBegin(TTree *tree)
{
   // See TProofDraw::SlaveBegin().

   PDB(kDraw,1) Info("SlaveBegin","Enter tree = %p", tree);

   // Get the weight
   TProofDraw::FillWeight();


   TObject *os = fInput->FindObject("selection");
   TObject *ov = fInput->FindObject("varexp");

   if (os && ov) {
      fSelection = os->GetTitle();
      fInitialExp = ov->GetTitle();

      SafeDelete(fProfile);


      fTreeDrawArgsParser.Parse(fInitialExp, fSelection, fOption);
      fDimension = 2;
      TString exp = fTreeDrawArgsParser.GetExp();

      if (fTreeDrawArgsParser.GetOriginal()) {
         fProfile = dynamic_cast<TProfile*> (fTreeDrawArgsParser.GetOriginal());
         if (fProfile) {
            fOutput->Add(fProfile);
            PDB(kDraw,1) Info("SlaveBegin","Original profile histogram found");
            return;
         }
         else
            Error("SlaveBegin","Original object found but it is not a histogram");
      }
      Int_t countx = 100; double minx = 0, maxx = 0;
      if (fTreeDrawArgsParser.GetNoParameters() != 0) {
         countx = (Int_t) fTreeDrawArgsParser.GetIfSpecified(0, countx);
         minx =  fTreeDrawArgsParser.GetIfSpecified(1, minx);
         maxx =  fTreeDrawArgsParser.GetIfSpecified(2, maxx);
      }
      if (fTreeDrawArgsParser.GetNoParameters() != 3)
         Error("SlaveBegin", "Impossible - Wrong number of parameters");
      TString constructorOptions = "";
      if (fOption.Contains("profs"))
         constructorOptions = "s";
      else if (fOption.Contains("profi"))
         constructorOptions = "i";
      else if (fOption.Contains("profg"))
         constructorOptions = "g";

      fProfile = new TProfile(fTreeDrawArgsParser.GetObjectName(),
                              fTreeDrawArgsParser.GetObjectTitle(),
                              countx, minx, maxx,
                              constructorOptions);
      if (minx >= maxx)
         fProfile->SetBuffer(TH1::GetDefaultBufferSize());

      if (TNamed *opt = dynamic_cast<TNamed*> (fInput->FindObject("PROOF_OPTIONS"))) {
         if (strstr(opt->GetTitle(), "rebin"))
            fProfile->SetCanExtend(TH1::kAllAxes);
      }
      fProfile->SetDirectory(0);   // take ownership
      fOutput->Add(fProfile);      // release ownership
   }
   fTree = 0;
   PDB(kDraw,1) Info("Begin","selection: %s", fSelection.Data());
   PDB(kDraw,1) Info("Begin","varexp: %s", fInitialExp.Data());
}


//______________________________________________________________________________
void TProofDrawProfile::DoFill(Long64_t , Double_t w, const Double_t *v)
{
   // Fills the profile histogram with the given values.

   fProfile->Fill(v[1], v[0], w);
}


//______________________________________________________________________________
void TProofDrawProfile::Terminate(void)
{
   // See TProofDraw::Terminate().

   PDB(kDraw,1) Info("Terminate","Enter");
   TProofDraw::Terminate();
   if (!fStatus)
      return;

   fProfile = (TProfile *) fOutput->FindObject(fTreeDrawArgsParser.GetObjectName());
   if (fProfile) {
      SetStatus((Int_t) fProfile->GetEntries());
      TProfile *pf = 0;
      if ((pf = dynamic_cast<TProfile*> (fTreeDrawArgsParser.GetOriginal()))) {
         if (!fTreeDrawArgsParser.GetAdd())
            pf->Reset();
         TList l;
         l.Add(fProfile);
         pf->Merge(&l);
         l.Remove(fProfile);
         fOutput->Remove(fProfile);
         delete fProfile;
      } else {
         fProfile->SetTitle(fTreeDrawArgsParser.GetObjectTitle());
         pf = fProfile;
      }
      if (fTreeDrawArgsParser.GetShouldDraw()) {
         // Choose the right canvas
         SetCanvas(pf->GetName());
         // Draw
         SetDrawAtt(pf);
         pf->Draw(fOption.Data());
      }
   }
   fProfile = 0;
}


ClassImp(TProofDrawProfile2D)

//______________________________________________________________________________
void TProofDrawProfile2D::Init(TTree *tree)
{
   // See TProofDraw::Init().

   PDB(kDraw,1) Info("Init","Enter tree = %p", tree);
   if (fTree == 0) {
      if (!dynamic_cast<TProfile2D*> (fTreeDrawArgsParser.GetOriginal())) {
         fProfile->SetLineColor(tree->GetLineColor());
         fProfile->SetLineWidth(tree->GetLineWidth());
         fProfile->SetLineStyle(tree->GetLineStyle());
         fProfile->SetFillColor(tree->GetFillColor());
         fProfile->SetFillStyle(tree->GetFillStyle());
         fProfile->SetMarkerStyle(tree->GetMarkerStyle());
         fProfile->SetMarkerColor(tree->GetMarkerColor());
         fProfile->SetMarkerSize(tree->GetMarkerSize());
      }
   }

   fTree = tree;
   CompileVariables();
}

//______________________________________________________________________________
void TProofDrawProfile2D::DefVar()
{
   // Define relevant variables

   PDB(kDraw,1) Info("DefVar","Enter");

   if (fTreeDrawArgsParser.GetDimension() < 0) {

      // Init parser
      TObject *os = fInput->FindObject("selection");
      TObject *ov = fInput->FindObject("varexp");

      if (os && ov) {
         fSelection = os->GetTitle();
         fInitialExp = ov->GetTitle();

         fTreeDrawArgsParser.Parse(fInitialExp, fSelection, fOption);
      }
   }
   R__ASSERT(fTreeDrawArgsParser.GetDimension() == 3);

   fTreeDrawArgsParser.SetOriginal(0);
   TString exp = fTreeDrawArgsParser.GetVarExp();
   exp += ">>";
   double binsx, minx, maxx;
   double binsy, miny, maxy;
   if (fTreeDrawArgsParser.IsSpecified(0))
      gEnv->SetValue("Hist.Binning.3D.Profx", fTreeDrawArgsParser.GetParameter(0));
   if (fTreeDrawArgsParser.IsSpecified(3))
      gEnv->SetValue("Hist.Binning.3D.Profy", fTreeDrawArgsParser.GetParameter(3));
   binsx = gEnv->GetValue("Hist.Binning.3D.Profx",20);
   minx =  fTreeDrawArgsParser.GetIfSpecified(1, 0);
   maxx =  fTreeDrawArgsParser.GetIfSpecified(2, 0);
   binsy = gEnv->GetValue("Hist.Binning.3D.Profy",20);
   miny =  fTreeDrawArgsParser.GetIfSpecified(4, 0);
   maxy =  fTreeDrawArgsParser.GetIfSpecified(5, 0);
   if (fTreeDrawArgsParser.GetObjectName() == "")
      fTreeDrawArgsParser.SetObjectName("htemp");
   exp += fTreeDrawArgsParser.GetObjectName();
   exp += '(';
   exp +=      binsx;
   exp +=         ',';
   exp +=      minx;
   exp +=         ',';
   exp +=      maxx;
   exp += ',';
   exp +=      binsy;
   exp +=         ',';
   exp +=      miny;
   exp +=         ',';
   exp +=      maxy;
   exp += ')';
   fInitialExp = exp;
   TNamed *n = dynamic_cast<TNamed*> (fInput->FindObject("varexp"));
   if (n)
      n->SetTitle(exp);
   else
      Error("DefVar", "Cannot find varexp on the fInput");
   if (fTreeDrawArgsParser.GetNoParameters() != 6)
      fInput->Add(new TNamed("PROOF_OPTIONS", "rebin"));
}

//______________________________________________________________________________
void TProofDrawProfile2D::Begin(TTree *tree)
{
   // See TProofDraw::Begin().

   PDB(kDraw,1) Info("Begin","Enter tree = %p", tree);

   TObject *os = fInput->FindObject("selection");
   TObject *ov = fInput->FindObject("varexp");

   if (os && ov) {
      fSelection = os->GetTitle();
      fInitialExp = ov->GetTitle();

      fTreeDrawArgsParser.Parse(fInitialExp, fSelection, fOption);

      R__ASSERT(fTreeDrawArgsParser.GetDimension() == 3);

      TObject *orig = fTreeDrawArgsParser.GetOriginal();
      TProfile2D *pold;
      if ((pold = dynamic_cast<TProfile2D*> (orig)) && fTreeDrawArgsParser.GetNoParameters() == 0) {
         TProfile2D* pnew = (TProfile2D*) pold->Clone();
         pnew->Reset();
         fInput->Add(pnew);
      } else {
         delete orig;
         DefVar();
      }
   }
   PDB(kDraw,1) Info("Begin","selection: %s", fSelection.Data());
   PDB(kDraw,1) Info("Begin","varexp: %s", fInitialExp.Data());
}

//______________________________________________________________________________
void TProofDrawProfile2D::SlaveBegin(TTree *tree)
{
   // See TProofDraw::SlaveBegin().

   PDB(kDraw,1) Info("SlaveBegin","Enter tree = %p", tree);

   // Get the weight
   TProofDraw::FillWeight();

   TObject *os = fInput->FindObject("selection");
   TObject *ov = fInput->FindObject("varexp");

   if (os && ov) {
      fSelection = os->GetTitle();
      fInitialExp = ov->GetTitle();

      SafeDelete(fProfile);

      fTreeDrawArgsParser.Parse(fInitialExp, fSelection, fOption);
      fDimension = 2;
      TString exp = fTreeDrawArgsParser.GetExp();

      if (fTreeDrawArgsParser.GetOriginal()) {
         fProfile = dynamic_cast<TProfile2D*> (fTreeDrawArgsParser.GetOriginal());
         if (fProfile) {
            fOutput->Add(fProfile);
            PDB(kDraw,1) Info("SlaveBegin","Original profile histogram found");
            return;
         } else
            Error("SlaveBegin","Original object found but it is not a histogram");
      }
      Int_t countx = 40; double minx = 0, maxx = 0;
      Int_t county = 40; double miny = 0, maxy = 0;
      if (fTreeDrawArgsParser.GetNoParameters() != 0) {
         countx = (Int_t) fTreeDrawArgsParser.GetIfSpecified(0, countx);
         minx =  fTreeDrawArgsParser.GetIfSpecified(1, minx);
         maxx =  fTreeDrawArgsParser.GetIfSpecified(2, maxx);
         county = (Int_t) fTreeDrawArgsParser.GetIfSpecified(3, countx);
         miny =  fTreeDrawArgsParser.GetIfSpecified(4, minx);
         maxy =  fTreeDrawArgsParser.GetIfSpecified(5, maxx);
      }
      if (fTreeDrawArgsParser.GetNoParameters() != 6)
         Error("SlaveBegin", "Impossible - Wrong number of parameters");

      TString constructorOptions = "";
      if (fOption.Contains("profs"))
         constructorOptions = "s";
      else if (fOption.Contains("profi"))
         constructorOptions = "i";
      else if (fOption.Contains("profg"))
         constructorOptions = "g";

      fProfile = new TProfile2D(fTreeDrawArgsParser.GetObjectName(),
                              fTreeDrawArgsParser.GetObjectTitle(),
                              countx, minx, maxx,
                              county, miny, maxy,
                              constructorOptions);
      if (minx >= maxx)
         fProfile->SetBuffer(TH1::GetDefaultBufferSize());

      if (TNamed *opt = dynamic_cast<TNamed*> (fInput->FindObject("PROOF_OPTIONS"))) {
         if (strstr(opt->GetTitle(), "rebin"))
            fProfile->SetCanExtend(TH1::kAllAxes);
      }
      fProfile->SetDirectory(0);   // take ownership
      fOutput->Add(fProfile);      // release ownership
   }
   fTree = 0;
   PDB(kDraw,1) Info("Begin","selection: %s", fSelection.Data());
   PDB(kDraw,1) Info("Begin","varexp: %s", fInitialExp.Data());
}


//______________________________________________________________________________
void TProofDrawProfile2D::DoFill(Long64_t , Double_t w, const Double_t *v)
{
   // Fills the histogram with the given values.

   fProfile->Fill(v[2], v[1], v[0], w);
}


//______________________________________________________________________________
void TProofDrawProfile2D::Terminate(void)
{
   // See TProofDraw::Terminate().

   PDB(kDraw,1) Info("Terminate","Enter");
   TProofDraw::Terminate();
   if (!fStatus)
      return;

   fProfile = (TProfile2D *) fOutput->FindObject(fTreeDrawArgsParser.GetObjectName());
   if (fProfile) {
      SetStatus((Int_t) fProfile->GetEntries());
      TProfile2D *pf = 0;
      if ((pf = dynamic_cast<TProfile2D*> (fTreeDrawArgsParser.GetOriginal()))) {
         if (!fTreeDrawArgsParser.GetAdd())
            pf->Reset();
         TList l;
         l.Add(fProfile);
         pf->Merge(&l);
         l.Remove(fProfile);
         fOutput->Remove(fProfile);
         delete fProfile;
      } else {
         fProfile->SetTitle(fTreeDrawArgsParser.GetObjectTitle());
         pf = fProfile;
      }
      if (fTreeDrawArgsParser.GetShouldDraw()) {
         // Choose the right canvas
         SetCanvas(pf->GetName());
         // Draw
         SetDrawAtt(pf);
         pf->Draw(fOption.Data());
      }
   }
   fProfile = 0;
}


ClassImp(TProofDrawGraph)

//______________________________________________________________________________
void TProofDrawGraph::Init(TTree *tree)
{
   // See TProofDraw::Init().

   PDB(kDraw,1) Info("Init","Enter tree = %p", tree);

   if (fTree == 0) {
      R__ASSERT(fGraph);
      fGraph->SetMarkerStyle(tree->GetMarkerStyle());
      fGraph->SetMarkerColor(tree->GetMarkerColor());
      fGraph->SetMarkerSize(tree->GetMarkerSize());
      fGraph->SetLineColor(tree->GetLineColor());
      fGraph->SetLineStyle(tree->GetLineStyle());
      fGraph->SetFillColor(tree->GetFillColor());
      fGraph->SetFillStyle(tree->GetFillStyle());
   }
   fTree = tree;
   CompileVariables();
}


//______________________________________________________________________________
void TProofDrawGraph::SlaveBegin(TTree *tree)
{
   // See TProofDraw::SlaveBegin().

   PDB(kDraw,1) Info("SlaveBegin","Enter tree = %p", tree);

   // Get the weight
   TProofDraw::FillWeight();

   TObject *os = fInput->FindObject("selection");
   TObject *ov = fInput->FindObject("varexp");

   if (os && ov) {
      fSelection = os->GetTitle();
      fInitialExp = ov->GetTitle();
      fTreeDrawArgsParser.Parse(fInitialExp, fSelection, fOption);

      SafeDelete(fGraph);
      fDimension = 2;

      fGraph = new TGraph();
      fGraph->SetName("PROOF_GRAPH");
      fOutput->Add(fGraph);                         // release ownership
   }
   PDB(kDraw,1) Info("Begin","selection: %s", fSelection.Data());
   PDB(kDraw,1) Info("Begin","varexp: %s", fInitialExp.Data());
}


//______________________________________________________________________________
void TProofDrawGraph::DoFill(Long64_t , Double_t , const Double_t *v)
{
   // Fills the graph with the given values.

   fGraph->SetPoint(fGraph->GetN(), v[1], v[0]);
}


//______________________________________________________________________________
void TProofDrawGraph::Terminate(void)
{
   // See TProofDraw::Terminate().

   PDB(kDraw,1) Info("Terminate","Enter");
   TProofDraw::Terminate();
   if (!fStatus)
      return;

   fGraph = dynamic_cast<TGraph*> (fOutput->FindObject("PROOF_GRAPH"));
   if (fGraph) {
      SetStatus((Int_t) fGraph->GetN());
      TH2F* hist;
      TObject *orig = fTreeDrawArgsParser.GetOriginal();
      if ( (hist = dynamic_cast<TH2F*> (orig)) == 0 ) {
         delete orig;
         fTreeDrawArgsParser.SetOriginal(0);
         double binsx, minx, maxx;
         double binsy, miny, maxy;
         if (fTreeDrawArgsParser.IsSpecified(0))
            gEnv->SetValue("Hist.Binning.2D.x", fTreeDrawArgsParser.GetParameter(0));
         if (fTreeDrawArgsParser.IsSpecified(3))
            gEnv->SetValue("Hist.Binning.2D.y", fTreeDrawArgsParser.GetParameter(3));
         binsx = gEnv->GetValue("Hist.Binning.2D.x",100);
         minx =  fTreeDrawArgsParser.GetIfSpecified(1, 0);
         maxx =  fTreeDrawArgsParser.GetIfSpecified(2, 0);
         binsy = gEnv->GetValue("Hist.Binning.2D.y",100);
         miny =  fTreeDrawArgsParser.GetIfSpecified(4, 0);
         maxy =  fTreeDrawArgsParser.GetIfSpecified(5, 0);
         hist = new TH2F(fTreeDrawArgsParser.GetObjectName(), fTreeDrawArgsParser.GetObjectTitle(),
                        (Int_t) binsx, minx, maxx, (Int_t) binsy, miny, maxy);
         hist->SetBit(TH1::kNoStats);
         hist->SetBit(kCanDelete);
         if (fTreeDrawArgsParser.GetNoParameters() != 6)
            hist->SetCanExtend(TH1::kAllAxes);
         else
            hist->SetCanExtend(TH1::kNoAxis);
//         if (fTreeDrawArgsParser.GetShouldDraw())    // ?? FIXME
//            hist->SetDirectory(0);
      } else {
         if (!fTreeDrawArgsParser.GetAdd())
            hist->Reset();
      }
      if (hist->CanExtendAllAxes() && hist->TestBit(kCanDelete)) {
         Double_t* xArray = fGraph->GetX();
         Double_t* yArray = fGraph->GetY();
         Double_t xmin = *std::min_element(xArray, xArray+fGraph->GetN());
         Double_t xmax = *std::max_element(xArray, xArray+fGraph->GetN());
         Double_t ymin = *std::min_element(yArray, yArray+fGraph->GetN());
         Double_t ymax = *std::max_element(yArray, yArray+fGraph->GetN());
         THLimitsFinder::GetLimitsFinder()->FindGoodLimits(hist,xmin,xmax,ymin,ymax);
      }
      if (!hist->TestBit(kCanDelete)) {
         TH1 *h2c = hist->DrawCopy(fOption.Data());
         h2c->SetStats(kFALSE);
      } else {
         SetDrawAtt(hist);
         hist->Draw();
      }
      gPad->Update();

      fGraph->SetEditable(kFALSE);
      // FIXME set color, marker size, etc.

      if (fTreeDrawArgsParser.GetShouldDraw()) {
         SetDrawAtt(fGraph);
         if (fOption == "" || strcmp(fOption, "same") == 0)
            fGraph->Draw("p");
         else
            fGraph->Draw(fOption);
         gPad->Update();
      }
      if (!hist->TestBit(kCanDelete)) {
         for (int i = 0; i < fGraph->GetN(); i++) {
            Double_t x = 0, y = 0;
            fGraph->GetPoint(i, x, y);
            hist->Fill(x, y, 1);
         }
      }
   }
   fGraph = 0;
}


ClassImp(TProofDrawPolyMarker3D)

//______________________________________________________________________________
void TProofDrawPolyMarker3D::Init(TTree *tree)
{
   // See TProofDraw::Init().

   PDB(kDraw,1) Info("Init","Enter tree = %p", tree);

   if (fTree == 0) {
      R__ASSERT(fPolyMarker3D);
      fPolyMarker3D->SetMarkerStyle(tree->GetMarkerStyle());
      fPolyMarker3D->SetMarkerColor(tree->GetMarkerColor());
      fPolyMarker3D->SetMarkerSize(tree->GetMarkerSize());
   }
   fTree = tree;
   CompileVariables();
}

//______________________________________________________________________________
void TProofDrawPolyMarker3D::SlaveBegin(TTree *tree)
{
   // See TProofDraw::SlaveBegin().

   PDB(kDraw,1) Info("SlaveBegin","Enter tree = %p", tree);

   // Get the weight
   TProofDraw::FillWeight();

   TObject *os = fInput->FindObject("selection");
   TObject *ov = fInput->FindObject("varexp");

   if (os && ov) {
      fSelection = os->GetTitle();
      fInitialExp = ov->GetTitle();
      fTreeDrawArgsParser.Parse(fInitialExp, fSelection, fOption);
      R__ASSERT(fTreeDrawArgsParser.GetDimension() == 3);

      SafeDelete(fPolyMarker3D);
      fDimension = 3;

      fPolyMarker3D = new TPolyMarker3D();
      fOutput->Add(fPolyMarker3D);      // release ownership
   }
   PDB(kDraw,1) Info("Begin","selection: %s", fSelection.Data());
   PDB(kDraw,1) Info("Begin","varexp: %s", fInitialExp.Data());
}


//______________________________________________________________________________
void TProofDrawPolyMarker3D::DoFill(Long64_t , Double_t , const Double_t *v)
{
   // Fills the scatter plot with the given values.

   fPolyMarker3D->SetNextPoint(v[2], v[1], v[0]);
}


//______________________________________________________________________________
void TProofDrawPolyMarker3D::Terminate(void)
{
   // See TProofDraw::Terminate().

   PDB(kDraw,1) Info("Terminate","Enter");
   TProofDraw::Terminate();
   if (!fStatus)
      return;

   fPolyMarker3D = 0;
   TIter next(fOutput);
   while (TObject* o = next()) {
      if (dynamic_cast<TPolyMarker3D*> (o)) {
         fPolyMarker3D = dynamic_cast<TPolyMarker3D*> (o);
         break;
      }
   }

   Bool_t checkPrevious = kFALSE;
   if (fPolyMarker3D) {
      SetStatus((Int_t) fPolyMarker3D->Size());
      TH3F* hist;
      TObject *orig = fTreeDrawArgsParser.GetOriginal();
      if ( (hist = dynamic_cast<TH3F*> (orig)) == 0 ) {
         delete orig;
         fTreeDrawArgsParser.SetOriginal(0);
         if (fOption.Contains("same")) {
            // Check existing histogram
            hist = dynamic_cast<TH3F *> (gDirectory->Get(fTreeDrawArgsParser.GetObjectName()));
         }
         if (!hist) {
            double binsx, minx, maxx;
            double binsy, miny, maxy;
            double binsz, minz, maxz;
            if (fTreeDrawArgsParser.IsSpecified(0))
               gEnv->SetValue("Hist.Binning.3D.x", fTreeDrawArgsParser.GetParameter(0));
            if (fTreeDrawArgsParser.IsSpecified(3))
               gEnv->SetValue("Hist.Binning.3D.y", fTreeDrawArgsParser.GetParameter(3));
            if (fTreeDrawArgsParser.IsSpecified(6))
               gEnv->SetValue("Hist.Binning.3D.z", fTreeDrawArgsParser.GetParameter(6));
            binsx = gEnv->GetValue("Hist.Binning.3D.x",100);
            minx =  fTreeDrawArgsParser.GetIfSpecified(1, 0);
            maxx =  fTreeDrawArgsParser.GetIfSpecified(2, 0);
            binsy = gEnv->GetValue("Hist.Binning.3D.y",100);
            miny =  fTreeDrawArgsParser.GetIfSpecified(4, 0);
            maxy =  fTreeDrawArgsParser.GetIfSpecified(5, 0);
            binsz = gEnv->GetValue("Hist.Binning.3D.z",100);
            minz =  fTreeDrawArgsParser.GetIfSpecified(7, 0);
            maxz =  fTreeDrawArgsParser.GetIfSpecified(8, 0);
            hist = new TH3F(fTreeDrawArgsParser.GetObjectName(), fTreeDrawArgsParser.GetObjectTitle(),
                           (Int_t) binsx, minx, maxx,
                           (Int_t) binsy, miny, maxy,
                           (Int_t) binsz, minz, maxz);
            hist->SetBit(TH1::kNoStats);
            hist->SetBit(kCanDelete);
            if (fTreeDrawArgsParser.GetNoParameters() != 9)
               hist->SetCanExtend(TH1::kAllAxes);
            else
               hist->SetCanExtend(TH1::kNoAxis);
         } else {
            checkPrevious = kTRUE;
            PDB(kDraw,2)
               Info("Terminate", "found histo '%s' in gDirectory",
                                 fTreeDrawArgsParser.GetObjectName().Data());
         }
      } else {
         if (!fTreeDrawArgsParser.GetAdd())
            hist->Reset();
      }

      // Set the ranges; take into account previous histos for 'same' runs
      Double_t rmin[3], rmax[3];
      if (hist->CanExtendAllAxes() && hist->TestBit(kCanDelete)) {
         rmin[0] = rmax[0] = rmin[1] = rmax[1] = rmin[2] = rmax[2] = 0;
         if (fPolyMarker3D->Size() > 0) {
            fPolyMarker3D->GetPoint(0, rmin[0], rmin[1], rmin[2]);
            fPolyMarker3D->GetPoint(0, rmax[0], rmax[1], rmax[2]);
         }
         for (int i = 1; i < fPolyMarker3D->Size(); i++) {
            Double_t v[3] = {0};
            fPolyMarker3D->GetPoint(i, v[0], v[1], v[2]);
            for (int ii = 0; ii < 3; ii++) {
               if (v[ii] < rmin[ii]) rmin[ii] = v[ii];
               if (v[ii] > rmax[ii]) rmax[ii] = v[ii];
            }
         }
         // Compare with previous histo, if any
         if (checkPrevious) {
            rmin[0] = (hist->GetXaxis()->GetXmin() < rmin[0]) ? hist->GetXaxis()->GetXmin()
                                                              : rmin[0];
            rmin[1] = (hist->GetYaxis()->GetXmin() < rmin[1]) ? hist->GetYaxis()->GetXmin()
                                                              : rmin[1];
            rmin[2] = (hist->GetZaxis()->GetXmin() < rmin[2]) ? hist->GetZaxis()->GetXmin()
                                                              : rmin[2];
            rmax[0] = (hist->GetXaxis()->GetXmax() > rmax[0]) ? hist->GetXaxis()->GetXmax()
                                                              : rmax[0];
            rmax[1] = (hist->GetYaxis()->GetXmax() > rmax[1]) ? hist->GetYaxis()->GetXmax()
                                                              : rmax[1];
            rmax[2] = (hist->GetZaxis()->GetXmax() > rmax[2]) ? hist->GetZaxis()->GetXmax()
                                                              : rmax[2];
         }

         THLimitsFinder::GetLimitsFinder()->FindGoodLimits(hist,
                           rmin[0], rmax[0], rmin[1], rmax[1], rmin[2], rmax[2]);
      }
      if (fTreeDrawArgsParser.GetShouldDraw()) {
         if (!hist->TestBit(kCanDelete)) {
            TH1 *histcopy = hist->DrawCopy(fOption.Data());
            histcopy->SetStats(kFALSE);
         } else {
            SetDrawAtt(hist);
            hist->Draw(fOption);        // no draw options on purpose
         }
         gPad->Update();
      } else {
         gPad->Clear();
         gPad->Range(-1,-1,1,1);
         TView::CreateView(1,rmin,rmax);
      }
      if (fTreeDrawArgsParser.GetShouldDraw()) {
         SetDrawAtt(fPolyMarker3D);
         fPolyMarker3D->Draw(fOption);
      }
      gPad->Update();
      if (!hist->TestBit(kCanDelete)) {
         for (int i = 0; i < fPolyMarker3D->Size(); i++) {
            Double_t x = 0, y = 0, z = 0;
            fPolyMarker3D->GetPoint(i, x, y, z);
            hist->Fill(x, y, z, 1);
         }
      }
   }
}


ClassImp(TProofDrawListOfGraphs)

//______________________________________________________________________________
void TProofDrawListOfGraphs::SlaveBegin(TTree *tree)
{
   // See TProofDraw::SlaveBegin().

   PDB(kDraw,1) Info("SlaveBegin","Enter tree = %p", tree);

   // Get the weight
   TProofDraw::FillWeight();

   TObject *os = fInput->FindObject("selection");
   TObject *ov = fInput->FindObject("varexp");

   if (os && ov) {
      fSelection = os->GetTitle();
      fInitialExp = ov->GetTitle();
      fTreeDrawArgsParser.Parse(fInitialExp, fSelection, fOption);
      R__ASSERT(fTreeDrawArgsParser.GetDimension() == 3);

      SafeDelete(fPoints);

      fDimension = 3;

      fPoints = new TProofVectorContainer<Point3D_t>(new std::vector<Point3D_t>);
      fPoints->SetName("PROOF_SCATTERPLOT");
      fOutput->Add(fPoints);      // release ownership (? FIXME)
   }
   PDB(kDraw,1) Info("Begin","selection: %s", fSelection.Data());
   PDB(kDraw,1) Info("Begin","varexp: %s", fInitialExp.Data());
}


//______________________________________________________________________________
void TProofDrawListOfGraphs::DoFill(Long64_t , Double_t , const Double_t *v)
{
   // Fills the scatter plot with the given values.

   fPoints->GetVector()->push_back(Point3D_t(v[2], v[1], v[0]));
}


//______________________________________________________________________________
void TProofDrawListOfGraphs::Terminate(void)
{
   // See TProofDraw::Terminate().

   PDB(kDraw,1) Info("Terminate","Enter");
   TProofDraw::Terminate();
   if (!fStatus)
      return;

   fPoints = dynamic_cast<TProofVectorContainer<Point3D_t>*>
               (fOutput->FindObject("PROOF_SCATTERPLOT"));
   if (fPoints) {
      std::vector<Point3D_t> *points = fPoints->GetVector();
      R__ASSERT(points);
      SetStatus((Int_t) points->size());
      TH2F* hist;
      TObject *orig = fTreeDrawArgsParser.GetOriginal();
      if ( (hist = dynamic_cast<TH2F*> (orig)) == 0 ) {
         delete orig;
         fTreeDrawArgsParser.SetOriginal(0);
         double binsx, minx, maxx;
         double binsy, miny, maxy;
         if (fTreeDrawArgsParser.IsSpecified(0))
            gEnv->SetValue("Hist.Binning.2D.x", fTreeDrawArgsParser.GetParameter(0));
         if (fTreeDrawArgsParser.IsSpecified(3))
            gEnv->SetValue("Hist.Binning.2D.y", fTreeDrawArgsParser.GetParameter(3));
         binsx = gEnv->GetValue("Hist.Binning.2D.x", 40);
         minx =  fTreeDrawArgsParser.GetIfSpecified(1, 0);
         maxx =  fTreeDrawArgsParser.GetIfSpecified(2, 0);
         binsy = gEnv->GetValue("Hist.Binning.2D.y", 40);
         miny =  fTreeDrawArgsParser.GetIfSpecified(4, 0);
         maxy =  fTreeDrawArgsParser.GetIfSpecified(5, 0);
         hist = new TH2F(fTreeDrawArgsParser.GetObjectName(), fTreeDrawArgsParser.GetObjectTitle(),
                        (Int_t) binsx, minx, maxx, (Int_t) binsy, miny, maxy);
         hist->SetBit(TH1::kNoStats);
         hist->SetBit(kCanDelete);
         if (fTreeDrawArgsParser.GetNoParameters() != 6)
            hist->SetCanExtend(TH1::kAllAxes);
         else
            hist->SetCanExtend(TH1::kNoAxis);

//         if (fTreeDrawArgsParser.GetShouldDraw())         // ?? FIXME
//            hist->SetDirectory(0);
      }
      Double_t rmin[3], rmax[3];

      // FIXME take rmin and rmax from the old histogram
      rmin[0] = rmax[0] = rmin[1] = rmax[1] = rmin[2] = rmax[2] = 0;
      if (points->size() > 0) {
         rmin[0] = rmax[0] = (*points)[0].fX;
         rmin[1] = rmax[1] = (*points)[0].fY;
         rmin[2] = rmax[2] = (*points)[0].fZ;

         for (vector<Point3D_t>::const_iterator i = points->begin() + 1; i < points->end(); ++i) {
            if (rmax[0] < i->fX) rmax[0] = i->fX;
            if (rmax[1] < i->fY) rmax[1] = i->fY;
            if (rmax[2] < i->fZ) rmax[2] = i->fZ;
            if (rmin[0] > i->fX) rmin[0] = i->fX;
            if (rmin[1] > i->fY) rmin[1] = i->fY;
            if (rmin[2] > i->fZ) rmin[2] = i->fZ;
         }
         // in this case we don't care about user-specified limits
         if (hist->CanExtendAllAxes() && hist->TestBit(kCanDelete)) {
            THLimitsFinder::GetLimitsFinder()->FindGoodLimits(hist,
                           rmin[1], rmax[1], rmin[2], rmax[2]);
         }
      }

      Int_t ncolors  = gStyle->GetNumberOfColors();
      TObjArray *grs = (TObjArray*)hist->GetListOfFunctions()->FindObject("graphs");
      Int_t col;
      TGraph *gr;
      if (!grs) {
         grs = new TObjArray(ncolors);
         grs->SetOwner();
         grs->SetName("graphs");
         hist->GetListOfFunctions()->Add(grs, "P");
         for (col=0;col<ncolors;col++) {
            gr = new TGraph();
            gr->SetMarkerColor(col);
//            gr->SetMarkerStyle(fTree->GetMarkerStyle());
//            gr->SetMarkerSize(fTree->GetMarkerSize());
            grs->AddAt(gr,col);
         }
      }
      // Fill the graphs acording to the color
      for (vector<Point3D_t>::const_iterator i = points->begin();
           i < points->end(); ++i) {
         col = Int_t((ncolors-1)*((i->fX-rmin[0])/(rmax[0]-rmin[0])));
         if (col < 0) col = 0;
         if (col > ncolors-1) col = ncolors-1;
         gr = (TGraph*)grs->UncheckedAt(col);
         if (gr) gr->SetPoint(gr->GetN(), i->fY, i->fZ);
      }
      // Remove potential empty graphs
      for (col=0;col<ncolors;col++) {
         gr = (TGraph*)grs->At(col);
         if (gr && gr->GetN() <= 0) grs->Remove(gr);
      }
      if (fTreeDrawArgsParser.GetShouldDraw()) {
         SetDrawAtt(hist);
         hist->Draw(fOption.Data());
         gPad->Update();
      }
      fOutput->Remove(fPoints);
      SafeDelete(fPoints);
   }
}


ClassImp(TProofDrawListOfPolyMarkers3D)


//______________________________________________________________________________
void TProofDrawListOfPolyMarkers3D::SlaveBegin(TTree *tree)
{
   // See TProofDraw::SlaveBegin().

   PDB(kDraw,1) Info("SlaveBegin","Enter tree = %p", tree);

   // Get the weight
   TProofDraw::FillWeight();

   TObject *os = fInput->FindObject("selection");
   TObject *ov = fInput->FindObject("varexp");

   if (os && ov) {
      fSelection = os->GetTitle();
      fInitialExp = ov->GetTitle();
      fTreeDrawArgsParser.Parse(fInitialExp, fSelection, fOption);
      R__ASSERT(fTreeDrawArgsParser.GetDimension() == 4);

      SafeDelete(fPoints);

      fDimension = 4;

      fPoints = new TProofVectorContainer<Point4D_t>(new std::vector<Point4D_t>);
      fPoints->SetName("PROOF_SCATTERPLOT");
      fOutput->Add(fPoints);      // release ownership (? FIXME)
   }
   PDB(kDraw,1) Info("Begin","selection: %s", fSelection.Data());
   PDB(kDraw,1) Info("Begin","varexp: %s", fInitialExp.Data());
}


//______________________________________________________________________________
void TProofDrawListOfPolyMarkers3D::DoFill(Long64_t , Double_t , const Double_t *v)
{
   // Fills the scatter plot with the given values.

   fPoints->GetVector()->push_back(Point4D_t(v[3], v[2], v[1], v[0]));
}



//______________________________________________________________________________
void TProofDrawListOfPolyMarkers3D::Terminate(void)
{
   // See TProofDraw::Terminate().

   PDB(kDraw,1) Info("Terminate","Enter");
   TProofDraw::Terminate();
   if (!fStatus)
      return;

   fPoints = dynamic_cast<TProofVectorContainer<Point4D_t>*>
               (fOutput->FindObject("PROOF_SCATTERPLOT"));
   if (fPoints) {
      std::vector<Point4D_t> *points = fPoints->GetVector();
      R__ASSERT(points);
      SetStatus((Int_t) points->size());
      TH3F* hist;
      TObject *orig = fTreeDrawArgsParser.GetOriginal();
      if ( (hist = dynamic_cast<TH3F*> (orig)) == 0 || fTreeDrawArgsParser.GetNoParameters() != 0) {
         delete orig;
         fTreeDrawArgsParser.SetOriginal(0);
         double binsx, minx, maxx;
         double binsy, miny, maxy;
         double binsz, minz, maxz;
         if (fTreeDrawArgsParser.IsSpecified(0))
            gEnv->SetValue("Hist.Binning.3D.x", fTreeDrawArgsParser.GetParameter(0));
         if (fTreeDrawArgsParser.IsSpecified(3))
            gEnv->SetValue("Hist.Binning.3D.y", fTreeDrawArgsParser.GetParameter(3));
         if (fTreeDrawArgsParser.IsSpecified(6))
            gEnv->SetValue("Hist.Binning.3D.z", fTreeDrawArgsParser.GetParameter(3));
         binsx = gEnv->GetValue("Hist.Binning.3D.x", 20);
         minx =  fTreeDrawArgsParser.GetIfSpecified(1, 0);
         maxx =  fTreeDrawArgsParser.GetIfSpecified(2, 0);
         binsy = gEnv->GetValue("Hist.Binning.3D.y", 20);
         miny =  fTreeDrawArgsParser.GetIfSpecified(4, 0);
         maxy =  fTreeDrawArgsParser.GetIfSpecified(5, 0);
         binsz = gEnv->GetValue("Hist.Binning.3D.z", 20);
         minz =  fTreeDrawArgsParser.GetIfSpecified(7, 0);
         maxz =  fTreeDrawArgsParser.GetIfSpecified(8, 0);
         hist = new TH3F(fTreeDrawArgsParser.GetObjectName(), fTreeDrawArgsParser.GetObjectTitle(),
                        (Int_t) binsx, minx, maxx,
                        (Int_t) binsy, miny, maxy,
                        (Int_t) binsz, minz, maxz);
         hist->SetBit(TH1::kNoStats);
         hist->SetBit(kCanDelete);
         if (fTreeDrawArgsParser.GetNoParameters() != 9)
            hist->SetCanExtend(TH1::kAllAxes);
         else
            hist->SetCanExtend(TH1::kNoAxis);

//         if (fTreeDrawArgsParser.GetShouldDraw())          // ?? FIXME
//            hist->SetDirectory(0);
      }
      Double_t rmin[4], rmax[4];


      // FIXME take rmin and rmax from the old histogram
      rmin[0] = rmax[0] = rmin[1] = rmax[1] = rmin[2] = rmax[2] = 0;
      if (points->size() > 0) {
         rmin[0] = rmax[0] = (*points)[0].fX;
         rmin[1] = rmax[1] = (*points)[0].fY;
         rmin[2] = rmax[2] = (*points)[0].fZ;
         rmin[3] = rmax[3] = (*points)[0].fT;

         for (vector<Point4D_t>::const_iterator i = points->begin() + 1; i < points->end(); ++i) {
            if (rmax[0] < i->fX) rmax[0] = i->fX;
            if (rmax[1] < i->fY) rmax[1] = i->fY;
            if (rmax[2] < i->fZ) rmax[2] = i->fZ;
            if (rmax[3] < i->fT) rmax[3] = i->fT;
            if (rmin[0] > i->fX) rmin[0] = i->fX;
            if (rmin[1] > i->fY) rmin[1] = i->fY;
            if (rmin[2] > i->fZ) rmin[2] = i->fZ;
            if (rmin[3] > i->fT) rmin[3] = i->fT;
         }
         // in this case we don't care about user-specified limits
         if (hist->CanExtendAllAxes() && hist->TestBit(kCanDelete)) {
            THLimitsFinder::GetLimitsFinder()->FindGoodLimits(hist,
                              rmin[1], rmax[1], rmin[2], rmax[2], rmin[3], rmax[3]);
         }
      }
      Int_t ncolors  = gStyle->GetNumberOfColors();
      TObjArray *pms = (TObjArray*)hist->GetListOfFunctions()->FindObject("polymarkers");
      Int_t col;
      TPolyMarker3D *pm3d;
      if (!pms) {
         pms = new TObjArray(ncolors);
         pms->SetOwner();
         pms->SetName("polymarkers");
         hist->GetListOfFunctions()->Add(pms);
         for (col=0;col<ncolors;col++) {
            pm3d = new TPolyMarker3D();
            pm3d->SetMarkerColor(col);
//            pm3d->SetMarkerStyle(fTree->GetMarkerStyle());
//            pm3d->SetMarkerSize(fTree->GetMarkerSize());
            pms->AddAt(pm3d,col);
         }
      }
      for (vector<Point4D_t>::const_iterator i = points->begin();
            i < points->end(); ++i) {
         col = Int_t(i->fX);
         if (col < 0) col = 0;
         if (col > ncolors-1) col = ncolors-1;
         pm3d = (TPolyMarker3D*)pms->UncheckedAt(col);
         pm3d->SetPoint(pm3d->GetLastPoint()+1, i->fY, i->fZ, i->fT);
      }
      if (fTreeDrawArgsParser.GetShouldDraw()) {
         SetDrawAtt(hist);
         hist->Draw(fOption.Data());
         gPad->Update();
      }
      fOutput->Remove(fPoints);
      SafeDelete(fPoints);
   }
}
 TProofDraw.cxx:1
 TProofDraw.cxx:2
 TProofDraw.cxx:3
 TProofDraw.cxx:4
 TProofDraw.cxx:5
 TProofDraw.cxx:6
 TProofDraw.cxx:7
 TProofDraw.cxx:8
 TProofDraw.cxx:9
 TProofDraw.cxx:10
 TProofDraw.cxx:11
 TProofDraw.cxx:12
 TProofDraw.cxx:13
 TProofDraw.cxx:14
 TProofDraw.cxx:15
 TProofDraw.cxx:16
 TProofDraw.cxx:17
 TProofDraw.cxx:18
 TProofDraw.cxx:19
 TProofDraw.cxx:20
 TProofDraw.cxx:21
 TProofDraw.cxx:22
 TProofDraw.cxx:23
 TProofDraw.cxx:24
 TProofDraw.cxx:25
 TProofDraw.cxx:26
 TProofDraw.cxx:27
 TProofDraw.cxx:28
 TProofDraw.cxx:29
 TProofDraw.cxx:30
 TProofDraw.cxx:31
 TProofDraw.cxx:32
 TProofDraw.cxx:33
 TProofDraw.cxx:34
 TProofDraw.cxx:35
 TProofDraw.cxx:36
 TProofDraw.cxx:37
 TProofDraw.cxx:38
 TProofDraw.cxx:39
 TProofDraw.cxx:40
 TProofDraw.cxx:41
 TProofDraw.cxx:42
 TProofDraw.cxx:43
 TProofDraw.cxx:44
 TProofDraw.cxx:45
 TProofDraw.cxx:46
 TProofDraw.cxx:47
 TProofDraw.cxx:48
 TProofDraw.cxx:49
 TProofDraw.cxx:50
 TProofDraw.cxx:51
 TProofDraw.cxx:52
 TProofDraw.cxx:53
 TProofDraw.cxx:54
 TProofDraw.cxx:55
 TProofDraw.cxx:56
 TProofDraw.cxx:57
 TProofDraw.cxx:58
 TProofDraw.cxx:59
 TProofDraw.cxx:60
 TProofDraw.cxx:61
 TProofDraw.cxx:62
 TProofDraw.cxx:63
 TProofDraw.cxx:64
 TProofDraw.cxx:65
 TProofDraw.cxx:66
 TProofDraw.cxx:67
 TProofDraw.cxx:68
 TProofDraw.cxx:69
 TProofDraw.cxx:70
 TProofDraw.cxx:71
 TProofDraw.cxx:72
 TProofDraw.cxx:73
 TProofDraw.cxx:74
 TProofDraw.cxx:75
 TProofDraw.cxx:76
 TProofDraw.cxx:77
 TProofDraw.cxx:78
 TProofDraw.cxx:79
 TProofDraw.cxx:80
 TProofDraw.cxx:81
 TProofDraw.cxx:82
 TProofDraw.cxx:83
 TProofDraw.cxx:84
 TProofDraw.cxx:85
 TProofDraw.cxx:86
 TProofDraw.cxx:87
 TProofDraw.cxx:88
 TProofDraw.cxx:89
 TProofDraw.cxx:90
 TProofDraw.cxx:91
 TProofDraw.cxx:92
 TProofDraw.cxx:93
 TProofDraw.cxx:94
 TProofDraw.cxx:95
 TProofDraw.cxx:96
 TProofDraw.cxx:97
 TProofDraw.cxx:98
 TProofDraw.cxx:99
 TProofDraw.cxx:100
 TProofDraw.cxx:101
 TProofDraw.cxx:102
 TProofDraw.cxx:103
 TProofDraw.cxx:104
 TProofDraw.cxx:105
 TProofDraw.cxx:106
 TProofDraw.cxx:107
 TProofDraw.cxx:108
 TProofDraw.cxx:109
 TProofDraw.cxx:110
 TProofDraw.cxx:111
 TProofDraw.cxx:112
 TProofDraw.cxx:113
 TProofDraw.cxx:114
 TProofDraw.cxx:115
 TProofDraw.cxx:116
 TProofDraw.cxx:117
 TProofDraw.cxx:118
 TProofDraw.cxx:119
 TProofDraw.cxx:120
 TProofDraw.cxx:121
 TProofDraw.cxx:122
 TProofDraw.cxx:123
 TProofDraw.cxx:124
 TProofDraw.cxx:125
 TProofDraw.cxx:126
 TProofDraw.cxx:127
 TProofDraw.cxx:128
 TProofDraw.cxx:129
 TProofDraw.cxx:130
 TProofDraw.cxx:131
 TProofDraw.cxx:132
 TProofDraw.cxx:133
 TProofDraw.cxx:134
 TProofDraw.cxx:135
 TProofDraw.cxx:136
 TProofDraw.cxx:137
 TProofDraw.cxx:138
 TProofDraw.cxx:139
 TProofDraw.cxx:140
 TProofDraw.cxx:141
 TProofDraw.cxx:142
 TProofDraw.cxx:143
 TProofDraw.cxx:144
 TProofDraw.cxx:145
 TProofDraw.cxx:146
 TProofDraw.cxx:147
 TProofDraw.cxx:148
 TProofDraw.cxx:149
 TProofDraw.cxx:150
 TProofDraw.cxx:151
 TProofDraw.cxx:152
 TProofDraw.cxx:153
 TProofDraw.cxx:154
 TProofDraw.cxx:155
 TProofDraw.cxx:156
 TProofDraw.cxx:157
 TProofDraw.cxx:158
 TProofDraw.cxx:159
 TProofDraw.cxx:160
 TProofDraw.cxx:161
 TProofDraw.cxx:162
 TProofDraw.cxx:163
 TProofDraw.cxx:164
 TProofDraw.cxx:165
 TProofDraw.cxx:166
 TProofDraw.cxx:167
 TProofDraw.cxx:168
 TProofDraw.cxx:169
 TProofDraw.cxx:170
 TProofDraw.cxx:171
 TProofDraw.cxx:172
 TProofDraw.cxx:173
 TProofDraw.cxx:174
 TProofDraw.cxx:175
 TProofDraw.cxx:176
 TProofDraw.cxx:177
 TProofDraw.cxx:178
 TProofDraw.cxx:179
 TProofDraw.cxx:180
 TProofDraw.cxx:181
 TProofDraw.cxx:182
 TProofDraw.cxx:183
 TProofDraw.cxx:184
 TProofDraw.cxx:185
 TProofDraw.cxx:186
 TProofDraw.cxx:187
 TProofDraw.cxx:188
 TProofDraw.cxx:189
 TProofDraw.cxx:190
 TProofDraw.cxx:191
 TProofDraw.cxx:192
 TProofDraw.cxx:193
 TProofDraw.cxx:194
 TProofDraw.cxx:195
 TProofDraw.cxx:196
 TProofDraw.cxx:197
 TProofDraw.cxx:198
 TProofDraw.cxx:199
 TProofDraw.cxx:200
 TProofDraw.cxx:201
 TProofDraw.cxx:202
 TProofDraw.cxx:203
 TProofDraw.cxx:204
 TProofDraw.cxx:205
 TProofDraw.cxx:206
 TProofDraw.cxx:207
 TProofDraw.cxx:208
 TProofDraw.cxx:209
 TProofDraw.cxx:210
 TProofDraw.cxx:211
 TProofDraw.cxx:212
 TProofDraw.cxx:213
 TProofDraw.cxx:214
 TProofDraw.cxx:215
 TProofDraw.cxx:216
 TProofDraw.cxx:217
 TProofDraw.cxx:218
 TProofDraw.cxx:219
 TProofDraw.cxx:220
 TProofDraw.cxx:221
 TProofDraw.cxx:222
 TProofDraw.cxx:223
 TProofDraw.cxx:224
 TProofDraw.cxx:225
 TProofDraw.cxx:226
 TProofDraw.cxx:227
 TProofDraw.cxx:228
 TProofDraw.cxx:229
 TProofDraw.cxx:230
 TProofDraw.cxx:231
 TProofDraw.cxx:232
 TProofDraw.cxx:233
 TProofDraw.cxx:234
 TProofDraw.cxx:235
 TProofDraw.cxx:236
 TProofDraw.cxx:237
 TProofDraw.cxx:238
 TProofDraw.cxx:239
 TProofDraw.cxx:240
 TProofDraw.cxx:241
 TProofDraw.cxx:242
 TProofDraw.cxx:243
 TProofDraw.cxx:244
 TProofDraw.cxx:245
 TProofDraw.cxx:246
 TProofDraw.cxx:247
 TProofDraw.cxx:248
 TProofDraw.cxx:249
 TProofDraw.cxx:250
 TProofDraw.cxx:251
 TProofDraw.cxx:252
 TProofDraw.cxx:253
 TProofDraw.cxx:254
 TProofDraw.cxx:255
 TProofDraw.cxx:256
 TProofDraw.cxx:257
 TProofDraw.cxx:258
 TProofDraw.cxx:259
 TProofDraw.cxx:260
 TProofDraw.cxx:261
 TProofDraw.cxx:262
 TProofDraw.cxx:263
 TProofDraw.cxx:264
 TProofDraw.cxx:265
 TProofDraw.cxx:266
 TProofDraw.cxx:267
 TProofDraw.cxx:268
 TProofDraw.cxx:269
 TProofDraw.cxx:270
 TProofDraw.cxx:271
 TProofDraw.cxx:272
 TProofDraw.cxx:273
 TProofDraw.cxx:274
 TProofDraw.cxx:275
 TProofDraw.cxx:276
 TProofDraw.cxx:277
 TProofDraw.cxx:278
 TProofDraw.cxx:279
 TProofDraw.cxx:280
 TProofDraw.cxx:281
 TProofDraw.cxx:282
 TProofDraw.cxx:283
 TProofDraw.cxx:284
 TProofDraw.cxx:285
 TProofDraw.cxx:286
 TProofDraw.cxx:287
 TProofDraw.cxx:288
 TProofDraw.cxx:289
 TProofDraw.cxx:290
 TProofDraw.cxx:291
 TProofDraw.cxx:292
 TProofDraw.cxx:293
 TProofDraw.cxx:294
 TProofDraw.cxx:295
 TProofDraw.cxx:296
 TProofDraw.cxx:297
 TProofDraw.cxx:298
 TProofDraw.cxx:299
 TProofDraw.cxx:300
 TProofDraw.cxx:301
 TProofDraw.cxx:302
 TProofDraw.cxx:303
 TProofDraw.cxx:304
 TProofDraw.cxx:305
 TProofDraw.cxx:306
 TProofDraw.cxx:307
 TProofDraw.cxx:308
 TProofDraw.cxx:309
 TProofDraw.cxx:310
 TProofDraw.cxx:311
 TProofDraw.cxx:312
 TProofDraw.cxx:313
 TProofDraw.cxx:314
 TProofDraw.cxx:315
 TProofDraw.cxx:316
 TProofDraw.cxx:317
 TProofDraw.cxx:318
 TProofDraw.cxx:319
 TProofDraw.cxx:320
 TProofDraw.cxx:321
 TProofDraw.cxx:322
 TProofDraw.cxx:323
 TProofDraw.cxx:324
 TProofDraw.cxx:325
 TProofDraw.cxx:326
 TProofDraw.cxx:327
 TProofDraw.cxx:328
 TProofDraw.cxx:329
 TProofDraw.cxx:330
 TProofDraw.cxx:331
 TProofDraw.cxx:332
 TProofDraw.cxx:333
 TProofDraw.cxx:334
 TProofDraw.cxx:335
 TProofDraw.cxx:336
 TProofDraw.cxx:337
 TProofDraw.cxx:338
 TProofDraw.cxx:339
 TProofDraw.cxx:340
 TProofDraw.cxx:341
 TProofDraw.cxx:342
 TProofDraw.cxx:343
 TProofDraw.cxx:344
 TProofDraw.cxx:345
 TProofDraw.cxx:346
 TProofDraw.cxx:347
 TProofDraw.cxx:348
 TProofDraw.cxx:349
 TProofDraw.cxx:350
 TProofDraw.cxx:351
 TProofDraw.cxx:352
 TProofDraw.cxx:353
 TProofDraw.cxx:354
 TProofDraw.cxx:355
 TProofDraw.cxx:356
 TProofDraw.cxx:357
 TProofDraw.cxx:358
 TProofDraw.cxx:359
 TProofDraw.cxx:360
 TProofDraw.cxx:361
 TProofDraw.cxx:362
 TProofDraw.cxx:363
 TProofDraw.cxx:364
 TProofDraw.cxx:365
 TProofDraw.cxx:366
 TProofDraw.cxx:367
 TProofDraw.cxx:368
 TProofDraw.cxx:369
 TProofDraw.cxx:370
 TProofDraw.cxx:371
 TProofDraw.cxx:372
 TProofDraw.cxx:373
 TProofDraw.cxx:374
 TProofDraw.cxx:375
 TProofDraw.cxx:376
 TProofDraw.cxx:377
 TProofDraw.cxx:378
 TProofDraw.cxx:379
 TProofDraw.cxx:380
 TProofDraw.cxx:381
 TProofDraw.cxx:382
 TProofDraw.cxx:383
 TProofDraw.cxx:384
 TProofDraw.cxx:385
 TProofDraw.cxx:386
 TProofDraw.cxx:387
 TProofDraw.cxx:388
 TProofDraw.cxx:389
 TProofDraw.cxx:390
 TProofDraw.cxx:391
 TProofDraw.cxx:392
 TProofDraw.cxx:393
 TProofDraw.cxx:394
 TProofDraw.cxx:395
 TProofDraw.cxx:396
 TProofDraw.cxx:397
 TProofDraw.cxx:398
 TProofDraw.cxx:399
 TProofDraw.cxx:400
 TProofDraw.cxx:401
 TProofDraw.cxx:402
 TProofDraw.cxx:403
 TProofDraw.cxx:404
 TProofDraw.cxx:405
 TProofDraw.cxx:406
 TProofDraw.cxx:407
 TProofDraw.cxx:408
 TProofDraw.cxx:409
 TProofDraw.cxx:410
 TProofDraw.cxx:411
 TProofDraw.cxx:412
 TProofDraw.cxx:413
 TProofDraw.cxx:414
 TProofDraw.cxx:415
 TProofDraw.cxx:416
 TProofDraw.cxx:417
 TProofDraw.cxx:418
 TProofDraw.cxx:419
 TProofDraw.cxx:420
 TProofDraw.cxx:421
 TProofDraw.cxx:422
 TProofDraw.cxx:423
 TProofDraw.cxx:424
 TProofDraw.cxx:425
 TProofDraw.cxx:426
 TProofDraw.cxx:427
 TProofDraw.cxx:428
 TProofDraw.cxx:429
 TProofDraw.cxx:430
 TProofDraw.cxx:431
 TProofDraw.cxx:432
 TProofDraw.cxx:433
 TProofDraw.cxx:434
 TProofDraw.cxx:435
 TProofDraw.cxx:436
 TProofDraw.cxx:437
 TProofDraw.cxx:438
 TProofDraw.cxx:439
 TProofDraw.cxx:440
 TProofDraw.cxx:441
 TProofDraw.cxx:442
 TProofDraw.cxx:443
 TProofDraw.cxx:444
 TProofDraw.cxx:445
 TProofDraw.cxx:446
 TProofDraw.cxx:447
 TProofDraw.cxx:448
 TProofDraw.cxx:449
 TProofDraw.cxx:450
 TProofDraw.cxx:451
 TProofDraw.cxx:452
 TProofDraw.cxx:453
 TProofDraw.cxx:454
 TProofDraw.cxx:455
 TProofDraw.cxx:456
 TProofDraw.cxx:457
 TProofDraw.cxx:458
 TProofDraw.cxx:459
 TProofDraw.cxx:460
 TProofDraw.cxx:461
 TProofDraw.cxx:462
 TProofDraw.cxx:463
 TProofDraw.cxx:464
 TProofDraw.cxx:465
 TProofDraw.cxx:466
 TProofDraw.cxx:467
 TProofDraw.cxx:468
 TProofDraw.cxx:469
 TProofDraw.cxx:470
 TProofDraw.cxx:471
 TProofDraw.cxx:472
 TProofDraw.cxx:473
 TProofDraw.cxx:474
 TProofDraw.cxx:475
 TProofDraw.cxx:476
 TProofDraw.cxx:477
 TProofDraw.cxx:478
 TProofDraw.cxx:479
 TProofDraw.cxx:480
 TProofDraw.cxx:481
 TProofDraw.cxx:482
 TProofDraw.cxx:483
 TProofDraw.cxx:484
 TProofDraw.cxx:485
 TProofDraw.cxx:486
 TProofDraw.cxx:487
 TProofDraw.cxx:488
 TProofDraw.cxx:489
 TProofDraw.cxx:490
 TProofDraw.cxx:491
 TProofDraw.cxx:492
 TProofDraw.cxx:493
 TProofDraw.cxx:494
 TProofDraw.cxx:495
 TProofDraw.cxx:496
 TProofDraw.cxx:497
 TProofDraw.cxx:498
 TProofDraw.cxx:499
 TProofDraw.cxx:500
 TProofDraw.cxx:501
 TProofDraw.cxx:502
 TProofDraw.cxx:503
 TProofDraw.cxx:504
 TProofDraw.cxx:505
 TProofDraw.cxx:506
 TProofDraw.cxx:507
 TProofDraw.cxx:508
 TProofDraw.cxx:509
 TProofDraw.cxx:510
 TProofDraw.cxx:511
 TProofDraw.cxx:512
 TProofDraw.cxx:513
 TProofDraw.cxx:514
 TProofDraw.cxx:515
 TProofDraw.cxx:516
 TProofDraw.cxx:517
 TProofDraw.cxx:518
 TProofDraw.cxx:519
 TProofDraw.cxx:520
 TProofDraw.cxx:521
 TProofDraw.cxx:522
 TProofDraw.cxx:523
 TProofDraw.cxx:524
 TProofDraw.cxx:525
 TProofDraw.cxx:526
 TProofDraw.cxx:527
 TProofDraw.cxx:528
 TProofDraw.cxx:529
 TProofDraw.cxx:530
 TProofDraw.cxx:531
 TProofDraw.cxx:532
 TProofDraw.cxx:533
 TProofDraw.cxx:534
 TProofDraw.cxx:535
 TProofDraw.cxx:536
 TProofDraw.cxx:537
 TProofDraw.cxx:538
 TProofDraw.cxx:539
 TProofDraw.cxx:540
 TProofDraw.cxx:541
 TProofDraw.cxx:542
 TProofDraw.cxx:543
 TProofDraw.cxx:544
 TProofDraw.cxx:545
 TProofDraw.cxx:546
 TProofDraw.cxx:547
 TProofDraw.cxx:548
 TProofDraw.cxx:549
 TProofDraw.cxx:550
 TProofDraw.cxx:551
 TProofDraw.cxx:552
 TProofDraw.cxx:553
 TProofDraw.cxx:554
 TProofDraw.cxx:555
 TProofDraw.cxx:556
 TProofDraw.cxx:557
 TProofDraw.cxx:558
 TProofDraw.cxx:559
 TProofDraw.cxx:560
 TProofDraw.cxx:561
 TProofDraw.cxx:562
 TProofDraw.cxx:563
 TProofDraw.cxx:564
 TProofDraw.cxx:565
 TProofDraw.cxx:566
 TProofDraw.cxx:567
 TProofDraw.cxx:568
 TProofDraw.cxx:569
 TProofDraw.cxx:570
 TProofDraw.cxx:571
 TProofDraw.cxx:572
 TProofDraw.cxx:573
 TProofDraw.cxx:574
 TProofDraw.cxx:575
 TProofDraw.cxx:576
 TProofDraw.cxx:577
 TProofDraw.cxx:578
 TProofDraw.cxx:579
 TProofDraw.cxx:580
 TProofDraw.cxx:581
 TProofDraw.cxx:582
 TProofDraw.cxx:583
 TProofDraw.cxx:584
 TProofDraw.cxx:585
 TProofDraw.cxx:586
 TProofDraw.cxx:587
 TProofDraw.cxx:588
 TProofDraw.cxx:589
 TProofDraw.cxx:590
 TProofDraw.cxx:591
 TProofDraw.cxx:592
 TProofDraw.cxx:593
 TProofDraw.cxx:594
 TProofDraw.cxx:595
 TProofDraw.cxx:596
 TProofDraw.cxx:597
 TProofDraw.cxx:598
 TProofDraw.cxx:599
 TProofDraw.cxx:600
 TProofDraw.cxx:601
 TProofDraw.cxx:602
 TProofDraw.cxx:603
 TProofDraw.cxx:604
 TProofDraw.cxx:605
 TProofDraw.cxx:606
 TProofDraw.cxx:607
 TProofDraw.cxx:608
 TProofDraw.cxx:609
 TProofDraw.cxx:610
 TProofDraw.cxx:611
 TProofDraw.cxx:612
 TProofDraw.cxx:613
 TProofDraw.cxx:614
 TProofDraw.cxx:615
 TProofDraw.cxx:616
 TProofDraw.cxx:617
 TProofDraw.cxx:618
 TProofDraw.cxx:619
 TProofDraw.cxx:620
 TProofDraw.cxx:621
 TProofDraw.cxx:622
 TProofDraw.cxx:623
 TProofDraw.cxx:624
 TProofDraw.cxx:625
 TProofDraw.cxx:626
 TProofDraw.cxx:627
 TProofDraw.cxx:628
 TProofDraw.cxx:629
 TProofDraw.cxx:630
 TProofDraw.cxx:631
 TProofDraw.cxx:632
 TProofDraw.cxx:633
 TProofDraw.cxx:634
 TProofDraw.cxx:635
 TProofDraw.cxx:636
 TProofDraw.cxx:637
 TProofDraw.cxx:638
 TProofDraw.cxx:639
 TProofDraw.cxx:640
 TProofDraw.cxx:641
 TProofDraw.cxx:642
 TProofDraw.cxx:643
 TProofDraw.cxx:644
 TProofDraw.cxx:645
 TProofDraw.cxx:646
 TProofDraw.cxx:647
 TProofDraw.cxx:648
 TProofDraw.cxx:649
 TProofDraw.cxx:650
 TProofDraw.cxx:651
 TProofDraw.cxx:652
 TProofDraw.cxx:653
 TProofDraw.cxx:654
 TProofDraw.cxx:655
 TProofDraw.cxx:656
 TProofDraw.cxx:657
 TProofDraw.cxx:658
 TProofDraw.cxx:659
 TProofDraw.cxx:660
 TProofDraw.cxx:661
 TProofDraw.cxx:662
 TProofDraw.cxx:663
 TProofDraw.cxx:664
 TProofDraw.cxx:665
 TProofDraw.cxx:666
 TProofDraw.cxx:667
 TProofDraw.cxx:668
 TProofDraw.cxx:669
 TProofDraw.cxx:670
 TProofDraw.cxx:671
 TProofDraw.cxx:672
 TProofDraw.cxx:673
 TProofDraw.cxx:674
 TProofDraw.cxx:675
 TProofDraw.cxx:676
 TProofDraw.cxx:677
 TProofDraw.cxx:678
 TProofDraw.cxx:679
 TProofDraw.cxx:680
 TProofDraw.cxx:681
 TProofDraw.cxx:682
 TProofDraw.cxx:683
 TProofDraw.cxx:684
 TProofDraw.cxx:685
 TProofDraw.cxx:686
 TProofDraw.cxx:687
 TProofDraw.cxx:688
 TProofDraw.cxx:689
 TProofDraw.cxx:690
 TProofDraw.cxx:691
 TProofDraw.cxx:692
 TProofDraw.cxx:693
 TProofDraw.cxx:694
 TProofDraw.cxx:695
 TProofDraw.cxx:696
 TProofDraw.cxx:697
 TProofDraw.cxx:698
 TProofDraw.cxx:699
 TProofDraw.cxx:700
 TProofDraw.cxx:701
 TProofDraw.cxx:702
 TProofDraw.cxx:703
 TProofDraw.cxx:704
 TProofDraw.cxx:705
 TProofDraw.cxx:706
 TProofDraw.cxx:707
 TProofDraw.cxx:708
 TProofDraw.cxx:709
 TProofDraw.cxx:710
 TProofDraw.cxx:711
 TProofDraw.cxx:712
 TProofDraw.cxx:713
 TProofDraw.cxx:714
 TProofDraw.cxx:715
 TProofDraw.cxx:716
 TProofDraw.cxx:717
 TProofDraw.cxx:718
 TProofDraw.cxx:719
 TProofDraw.cxx:720
 TProofDraw.cxx:721
 TProofDraw.cxx:722
 TProofDraw.cxx:723
 TProofDraw.cxx:724
 TProofDraw.cxx:725
 TProofDraw.cxx:726
 TProofDraw.cxx:727
 TProofDraw.cxx:728
 TProofDraw.cxx:729
 TProofDraw.cxx:730
 TProofDraw.cxx:731
 TProofDraw.cxx:732
 TProofDraw.cxx:733
 TProofDraw.cxx:734
 TProofDraw.cxx:735
 TProofDraw.cxx:736
 TProofDraw.cxx:737
 TProofDraw.cxx:738
 TProofDraw.cxx:739
 TProofDraw.cxx:740
 TProofDraw.cxx:741
 TProofDraw.cxx:742
 TProofDraw.cxx:743
 TProofDraw.cxx:744
 TProofDraw.cxx:745
 TProofDraw.cxx:746
 TProofDraw.cxx:747
 TProofDraw.cxx:748
 TProofDraw.cxx:749
 TProofDraw.cxx:750
 TProofDraw.cxx:751
 TProofDraw.cxx:752
 TProofDraw.cxx:753
 TProofDraw.cxx:754
 TProofDraw.cxx:755
 TProofDraw.cxx:756
 TProofDraw.cxx:757
 TProofDraw.cxx:758
 TProofDraw.cxx:759
 TProofDraw.cxx:760
 TProofDraw.cxx:761
 TProofDraw.cxx:762
 TProofDraw.cxx:763
 TProofDraw.cxx:764
 TProofDraw.cxx:765
 TProofDraw.cxx:766
 TProofDraw.cxx:767
 TProofDraw.cxx:768
 TProofDraw.cxx:769
 TProofDraw.cxx:770
 TProofDraw.cxx:771
 TProofDraw.cxx:772
 TProofDraw.cxx:773
 TProofDraw.cxx:774
 TProofDraw.cxx:775
 TProofDraw.cxx:776
 TProofDraw.cxx:777
 TProofDraw.cxx:778
 TProofDraw.cxx:779
 TProofDraw.cxx:780
 TProofDraw.cxx:781
 TProofDraw.cxx:782
 TProofDraw.cxx:783
 TProofDraw.cxx:784
 TProofDraw.cxx:785
 TProofDraw.cxx:786
 TProofDraw.cxx:787
 TProofDraw.cxx:788
 TProofDraw.cxx:789
 TProofDraw.cxx:790
 TProofDraw.cxx:791
 TProofDraw.cxx:792
 TProofDraw.cxx:793
 TProofDraw.cxx:794
 TProofDraw.cxx:795
 TProofDraw.cxx:796
 TProofDraw.cxx:797
 TProofDraw.cxx:798
 TProofDraw.cxx:799
 TProofDraw.cxx:800
 TProofDraw.cxx:801
 TProofDraw.cxx:802
 TProofDraw.cxx:803
 TProofDraw.cxx:804
 TProofDraw.cxx:805
 TProofDraw.cxx:806
 TProofDraw.cxx:807
 TProofDraw.cxx:808
 TProofDraw.cxx:809
 TProofDraw.cxx:810
 TProofDraw.cxx:811
 TProofDraw.cxx:812
 TProofDraw.cxx:813
 TProofDraw.cxx:814
 TProofDraw.cxx:815
 TProofDraw.cxx:816
 TProofDraw.cxx:817
 TProofDraw.cxx:818
 TProofDraw.cxx:819
 TProofDraw.cxx:820
 TProofDraw.cxx:821
 TProofDraw.cxx:822
 TProofDraw.cxx:823
 TProofDraw.cxx:824
 TProofDraw.cxx:825
 TProofDraw.cxx:826
 TProofDraw.cxx:827
 TProofDraw.cxx:828
 TProofDraw.cxx:829
 TProofDraw.cxx:830
 TProofDraw.cxx:831
 TProofDraw.cxx:832
 TProofDraw.cxx:833
 TProofDraw.cxx:834
 TProofDraw.cxx:835
 TProofDraw.cxx:836
 TProofDraw.cxx:837
 TProofDraw.cxx:838
 TProofDraw.cxx:839
 TProofDraw.cxx:840
 TProofDraw.cxx:841
 TProofDraw.cxx:842
 TProofDraw.cxx:843
 TProofDraw.cxx:844
 TProofDraw.cxx:845
 TProofDraw.cxx:846
 TProofDraw.cxx:847
 TProofDraw.cxx:848
 TProofDraw.cxx:849
 TProofDraw.cxx:850
 TProofDraw.cxx:851
 TProofDraw.cxx:852
 TProofDraw.cxx:853
 TProofDraw.cxx:854
 TProofDraw.cxx:855
 TProofDraw.cxx:856
 TProofDraw.cxx:857
 TProofDraw.cxx:858
 TProofDraw.cxx:859
 TProofDraw.cxx:860
 TProofDraw.cxx:861
 TProofDraw.cxx:862
 TProofDraw.cxx:863
 TProofDraw.cxx:864
 TProofDraw.cxx:865
 TProofDraw.cxx:866
 TProofDraw.cxx:867
 TProofDraw.cxx:868
 TProofDraw.cxx:869
 TProofDraw.cxx:870
 TProofDraw.cxx:871
 TProofDraw.cxx:872
 TProofDraw.cxx:873
 TProofDraw.cxx:874
 TProofDraw.cxx:875
 TProofDraw.cxx:876
 TProofDraw.cxx:877
 TProofDraw.cxx:878
 TProofDraw.cxx:879
 TProofDraw.cxx:880
 TProofDraw.cxx:881
 TProofDraw.cxx:882
 TProofDraw.cxx:883
 TProofDraw.cxx:884
 TProofDraw.cxx:885
 TProofDraw.cxx:886
 TProofDraw.cxx:887
 TProofDraw.cxx:888
 TProofDraw.cxx:889
 TProofDraw.cxx:890
 TProofDraw.cxx:891
 TProofDraw.cxx:892
 TProofDraw.cxx:893
 TProofDraw.cxx:894
 TProofDraw.cxx:895
 TProofDraw.cxx:896
 TProofDraw.cxx:897
 TProofDraw.cxx:898
 TProofDraw.cxx:899
 TProofDraw.cxx:900
 TProofDraw.cxx:901
 TProofDraw.cxx:902
 TProofDraw.cxx:903
 TProofDraw.cxx:904
 TProofDraw.cxx:905
 TProofDraw.cxx:906
 TProofDraw.cxx:907
 TProofDraw.cxx:908
 TProofDraw.cxx:909
 TProofDraw.cxx:910
 TProofDraw.cxx:911
 TProofDraw.cxx:912
 TProofDraw.cxx:913
 TProofDraw.cxx:914
 TProofDraw.cxx:915
 TProofDraw.cxx:916
 TProofDraw.cxx:917
 TProofDraw.cxx:918
 TProofDraw.cxx:919
 TProofDraw.cxx:920
 TProofDraw.cxx:921
 TProofDraw.cxx:922
 TProofDraw.cxx:923
 TProofDraw.cxx:924
 TProofDraw.cxx:925
 TProofDraw.cxx:926
 TProofDraw.cxx:927
 TProofDraw.cxx:928
 TProofDraw.cxx:929
 TProofDraw.cxx:930
 TProofDraw.cxx:931
 TProofDraw.cxx:932
 TProofDraw.cxx:933
 TProofDraw.cxx:934
 TProofDraw.cxx:935
 TProofDraw.cxx:936
 TProofDraw.cxx:937
 TProofDraw.cxx:938
 TProofDraw.cxx:939
 TProofDraw.cxx:940
 TProofDraw.cxx:941
 TProofDraw.cxx:942
 TProofDraw.cxx:943
 TProofDraw.cxx:944
 TProofDraw.cxx:945
 TProofDraw.cxx:946
 TProofDraw.cxx:947
 TProofDraw.cxx:948
 TProofDraw.cxx:949
 TProofDraw.cxx:950
 TProofDraw.cxx:951
 TProofDraw.cxx:952
 TProofDraw.cxx:953
 TProofDraw.cxx:954
 TProofDraw.cxx:955
 TProofDraw.cxx:956
 TProofDraw.cxx:957
 TProofDraw.cxx:958
 TProofDraw.cxx:959
 TProofDraw.cxx:960
 TProofDraw.cxx:961
 TProofDraw.cxx:962
 TProofDraw.cxx:963
 TProofDraw.cxx:964
 TProofDraw.cxx:965
 TProofDraw.cxx:966
 TProofDraw.cxx:967
 TProofDraw.cxx:968
 TProofDraw.cxx:969
 TProofDraw.cxx:970
 TProofDraw.cxx:971
 TProofDraw.cxx:972
 TProofDraw.cxx:973
 TProofDraw.cxx:974
 TProofDraw.cxx:975
 TProofDraw.cxx:976
 TProofDraw.cxx:977
 TProofDraw.cxx:978
 TProofDraw.cxx:979
 TProofDraw.cxx:980
 TProofDraw.cxx:981
 TProofDraw.cxx:982
 TProofDraw.cxx:983
 TProofDraw.cxx:984
 TProofDraw.cxx:985
 TProofDraw.cxx:986
 TProofDraw.cxx:987
 TProofDraw.cxx:988
 TProofDraw.cxx:989
 TProofDraw.cxx:990
 TProofDraw.cxx:991
 TProofDraw.cxx:992
 TProofDraw.cxx:993
 TProofDraw.cxx:994
 TProofDraw.cxx:995
 TProofDraw.cxx:996
 TProofDraw.cxx:997
 TProofDraw.cxx:998
 TProofDraw.cxx:999
 TProofDraw.cxx:1000
 TProofDraw.cxx:1001
 TProofDraw.cxx:1002
 TProofDraw.cxx:1003
 TProofDraw.cxx:1004
 TProofDraw.cxx:1005
 TProofDraw.cxx:1006
 TProofDraw.cxx:1007
 TProofDraw.cxx:1008
 TProofDraw.cxx:1009
 TProofDraw.cxx:1010
 TProofDraw.cxx:1011
 TProofDraw.cxx:1012
 TProofDraw.cxx:1013
 TProofDraw.cxx:1014
 TProofDraw.cxx:1015
 TProofDraw.cxx:1016
 TProofDraw.cxx:1017
 TProofDraw.cxx:1018
 TProofDraw.cxx:1019
 TProofDraw.cxx:1020
 TProofDraw.cxx:1021
 TProofDraw.cxx:1022
 TProofDraw.cxx:1023
 TProofDraw.cxx:1024
 TProofDraw.cxx:1025
 TProofDraw.cxx:1026
 TProofDraw.cxx:1027
 TProofDraw.cxx:1028
 TProofDraw.cxx:1029
 TProofDraw.cxx:1030
 TProofDraw.cxx:1031
 TProofDraw.cxx:1032
 TProofDraw.cxx:1033
 TProofDraw.cxx:1034
 TProofDraw.cxx:1035
 TProofDraw.cxx:1036
 TProofDraw.cxx:1037
 TProofDraw.cxx:1038
 TProofDraw.cxx:1039
 TProofDraw.cxx:1040
 TProofDraw.cxx:1041
 TProofDraw.cxx:1042
 TProofDraw.cxx:1043
 TProofDraw.cxx:1044
 TProofDraw.cxx:1045
 TProofDraw.cxx:1046
 TProofDraw.cxx:1047
 TProofDraw.cxx:1048
 TProofDraw.cxx:1049
 TProofDraw.cxx:1050
 TProofDraw.cxx:1051
 TProofDraw.cxx:1052
 TProofDraw.cxx:1053
 TProofDraw.cxx:1054
 TProofDraw.cxx:1055
 TProofDraw.cxx:1056
 TProofDraw.cxx:1057
 TProofDraw.cxx:1058
 TProofDraw.cxx:1059
 TProofDraw.cxx:1060
 TProofDraw.cxx:1061
 TProofDraw.cxx:1062
 TProofDraw.cxx:1063
 TProofDraw.cxx:1064
 TProofDraw.cxx:1065
 TProofDraw.cxx:1066
 TProofDraw.cxx:1067
 TProofDraw.cxx:1068
 TProofDraw.cxx:1069
 TProofDraw.cxx:1070
 TProofDraw.cxx:1071
 TProofDraw.cxx:1072
 TProofDraw.cxx:1073
 TProofDraw.cxx:1074
 TProofDraw.cxx:1075
 TProofDraw.cxx:1076
 TProofDraw.cxx:1077
 TProofDraw.cxx:1078
 TProofDraw.cxx:1079
 TProofDraw.cxx:1080
 TProofDraw.cxx:1081
 TProofDraw.cxx:1082
 TProofDraw.cxx:1083
 TProofDraw.cxx:1084
 TProofDraw.cxx:1085
 TProofDraw.cxx:1086
 TProofDraw.cxx:1087
 TProofDraw.cxx:1088
 TProofDraw.cxx:1089
 TProofDraw.cxx:1090
 TProofDraw.cxx:1091
 TProofDraw.cxx:1092
 TProofDraw.cxx:1093
 TProofDraw.cxx:1094
 TProofDraw.cxx:1095
 TProofDraw.cxx:1096
 TProofDraw.cxx:1097
 TProofDraw.cxx:1098
 TProofDraw.cxx:1099
 TProofDraw.cxx:1100
 TProofDraw.cxx:1101
 TProofDraw.cxx:1102
 TProofDraw.cxx:1103
 TProofDraw.cxx:1104
 TProofDraw.cxx:1105
 TProofDraw.cxx:1106
 TProofDraw.cxx:1107
 TProofDraw.cxx:1108
 TProofDraw.cxx:1109
 TProofDraw.cxx:1110
 TProofDraw.cxx:1111
 TProofDraw.cxx:1112
 TProofDraw.cxx:1113
 TProofDraw.cxx:1114
 TProofDraw.cxx:1115
 TProofDraw.cxx:1116
 TProofDraw.cxx:1117
 TProofDraw.cxx:1118
 TProofDraw.cxx:1119
 TProofDraw.cxx:1120
 TProofDraw.cxx:1121
 TProofDraw.cxx:1122
 TProofDraw.cxx:1123
 TProofDraw.cxx:1124
 TProofDraw.cxx:1125
 TProofDraw.cxx:1126
 TProofDraw.cxx:1127
 TProofDraw.cxx:1128
 TProofDraw.cxx:1129
 TProofDraw.cxx:1130
 TProofDraw.cxx:1131
 TProofDraw.cxx:1132
 TProofDraw.cxx:1133
 TProofDraw.cxx:1134
 TProofDraw.cxx:1135
 TProofDraw.cxx:1136
 TProofDraw.cxx:1137
 TProofDraw.cxx:1138
 TProofDraw.cxx:1139
 TProofDraw.cxx:1140
 TProofDraw.cxx:1141
 TProofDraw.cxx:1142
 TProofDraw.cxx:1143
 TProofDraw.cxx:1144
 TProofDraw.cxx:1145
 TProofDraw.cxx:1146
 TProofDraw.cxx:1147
 TProofDraw.cxx:1148
 TProofDraw.cxx:1149
 TProofDraw.cxx:1150
 TProofDraw.cxx:1151
 TProofDraw.cxx:1152
 TProofDraw.cxx:1153
 TProofDraw.cxx:1154
 TProofDraw.cxx:1155
 TProofDraw.cxx:1156
 TProofDraw.cxx:1157
 TProofDraw.cxx:1158
 TProofDraw.cxx:1159
 TProofDraw.cxx:1160
 TProofDraw.cxx:1161
 TProofDraw.cxx:1162
 TProofDraw.cxx:1163
 TProofDraw.cxx:1164
 TProofDraw.cxx:1165
 TProofDraw.cxx:1166
 TProofDraw.cxx:1167
 TProofDraw.cxx:1168
 TProofDraw.cxx:1169
 TProofDraw.cxx:1170
 TProofDraw.cxx:1171
 TProofDraw.cxx:1172
 TProofDraw.cxx:1173
 TProofDraw.cxx:1174
 TProofDraw.cxx:1175
 TProofDraw.cxx:1176
 TProofDraw.cxx:1177
 TProofDraw.cxx:1178
 TProofDraw.cxx:1179
 TProofDraw.cxx:1180
 TProofDraw.cxx:1181
 TProofDraw.cxx:1182
 TProofDraw.cxx:1183
 TProofDraw.cxx:1184
 TProofDraw.cxx:1185
 TProofDraw.cxx:1186
 TProofDraw.cxx:1187
 TProofDraw.cxx:1188
 TProofDraw.cxx:1189
 TProofDraw.cxx:1190
 TProofDraw.cxx:1191
 TProofDraw.cxx:1192
 TProofDraw.cxx:1193
 TProofDraw.cxx:1194
 TProofDraw.cxx:1195
 TProofDraw.cxx:1196
 TProofDraw.cxx:1197
 TProofDraw.cxx:1198
 TProofDraw.cxx:1199
 TProofDraw.cxx:1200
 TProofDraw.cxx:1201
 TProofDraw.cxx:1202
 TProofDraw.cxx:1203
 TProofDraw.cxx:1204
 TProofDraw.cxx:1205
 TProofDraw.cxx:1206
 TProofDraw.cxx:1207
 TProofDraw.cxx:1208
 TProofDraw.cxx:1209
 TProofDraw.cxx:1210
 TProofDraw.cxx:1211
 TProofDraw.cxx:1212
 TProofDraw.cxx:1213
 TProofDraw.cxx:1214
 TProofDraw.cxx:1215
 TProofDraw.cxx:1216
 TProofDraw.cxx:1217
 TProofDraw.cxx:1218
 TProofDraw.cxx:1219
 TProofDraw.cxx:1220
 TProofDraw.cxx:1221
 TProofDraw.cxx:1222
 TProofDraw.cxx:1223
 TProofDraw.cxx:1224
 TProofDraw.cxx:1225
 TProofDraw.cxx:1226
 TProofDraw.cxx:1227
 TProofDraw.cxx:1228
 TProofDraw.cxx:1229
 TProofDraw.cxx:1230
 TProofDraw.cxx:1231
 TProofDraw.cxx:1232
 TProofDraw.cxx:1233
 TProofDraw.cxx:1234
 TProofDraw.cxx:1235
 TProofDraw.cxx:1236
 TProofDraw.cxx:1237
 TProofDraw.cxx:1238
 TProofDraw.cxx:1239
 TProofDraw.cxx:1240
 TProofDraw.cxx:1241
 TProofDraw.cxx:1242
 TProofDraw.cxx:1243
 TProofDraw.cxx:1244
 TProofDraw.cxx:1245
 TProofDraw.cxx:1246
 TProofDraw.cxx:1247
 TProofDraw.cxx:1248
 TProofDraw.cxx:1249
 TProofDraw.cxx:1250
 TProofDraw.cxx:1251
 TProofDraw.cxx:1252
 TProofDraw.cxx:1253
 TProofDraw.cxx:1254
 TProofDraw.cxx:1255
 TProofDraw.cxx:1256
 TProofDraw.cxx:1257
 TProofDraw.cxx:1258
 TProofDraw.cxx:1259
 TProofDraw.cxx:1260
 TProofDraw.cxx:1261
 TProofDraw.cxx:1262
 TProofDraw.cxx:1263
 TProofDraw.cxx:1264
 TProofDraw.cxx:1265
 TProofDraw.cxx:1266
 TProofDraw.cxx:1267
 TProofDraw.cxx:1268
 TProofDraw.cxx:1269
 TProofDraw.cxx:1270
 TProofDraw.cxx:1271
 TProofDraw.cxx:1272
 TProofDraw.cxx:1273
 TProofDraw.cxx:1274
 TProofDraw.cxx:1275
 TProofDraw.cxx:1276
 TProofDraw.cxx:1277
 TProofDraw.cxx:1278
 TProofDraw.cxx:1279
 TProofDraw.cxx:1280
 TProofDraw.cxx:1281
 TProofDraw.cxx:1282
 TProofDraw.cxx:1283
 TProofDraw.cxx:1284
 TProofDraw.cxx:1285
 TProofDraw.cxx:1286
 TProofDraw.cxx:1287
 TProofDraw.cxx:1288
 TProofDraw.cxx:1289
 TProofDraw.cxx:1290
 TProofDraw.cxx:1291
 TProofDraw.cxx:1292
 TProofDraw.cxx:1293
 TProofDraw.cxx:1294
 TProofDraw.cxx:1295
 TProofDraw.cxx:1296
 TProofDraw.cxx:1297
 TProofDraw.cxx:1298
 TProofDraw.cxx:1299
 TProofDraw.cxx:1300
 TProofDraw.cxx:1301
 TProofDraw.cxx:1302
 TProofDraw.cxx:1303
 TProofDraw.cxx:1304
 TProofDraw.cxx:1305
 TProofDraw.cxx:1306
 TProofDraw.cxx:1307
 TProofDraw.cxx:1308
 TProofDraw.cxx:1309
 TProofDraw.cxx:1310
 TProofDraw.cxx:1311
 TProofDraw.cxx:1312
 TProofDraw.cxx:1313
 TProofDraw.cxx:1314
 TProofDraw.cxx:1315
 TProofDraw.cxx:1316
 TProofDraw.cxx:1317
 TProofDraw.cxx:1318
 TProofDraw.cxx:1319
 TProofDraw.cxx:1320
 TProofDraw.cxx:1321
 TProofDraw.cxx:1322
 TProofDraw.cxx:1323
 TProofDraw.cxx:1324
 TProofDraw.cxx:1325
 TProofDraw.cxx:1326
 TProofDraw.cxx:1327
 TProofDraw.cxx:1328
 TProofDraw.cxx:1329
 TProofDraw.cxx:1330
 TProofDraw.cxx:1331
 TProofDraw.cxx:1332
 TProofDraw.cxx:1333
 TProofDraw.cxx:1334
 TProofDraw.cxx:1335
 TProofDraw.cxx:1336
 TProofDraw.cxx:1337
 TProofDraw.cxx:1338
 TProofDraw.cxx:1339
 TProofDraw.cxx:1340
 TProofDraw.cxx:1341
 TProofDraw.cxx:1342
 TProofDraw.cxx:1343
 TProofDraw.cxx:1344
 TProofDraw.cxx:1345
 TProofDraw.cxx:1346
 TProofDraw.cxx:1347
 TProofDraw.cxx:1348
 TProofDraw.cxx:1349
 TProofDraw.cxx:1350
 TProofDraw.cxx:1351
 TProofDraw.cxx:1352
 TProofDraw.cxx:1353
 TProofDraw.cxx:1354
 TProofDraw.cxx:1355
 TProofDraw.cxx:1356
 TProofDraw.cxx:1357
 TProofDraw.cxx:1358
 TProofDraw.cxx:1359
 TProofDraw.cxx:1360
 TProofDraw.cxx:1361
 TProofDraw.cxx:1362
 TProofDraw.cxx:1363
 TProofDraw.cxx:1364
 TProofDraw.cxx:1365
 TProofDraw.cxx:1366
 TProofDraw.cxx:1367
 TProofDraw.cxx:1368
 TProofDraw.cxx:1369
 TProofDraw.cxx:1370
 TProofDraw.cxx:1371
 TProofDraw.cxx:1372
 TProofDraw.cxx:1373
 TProofDraw.cxx:1374
 TProofDraw.cxx:1375
 TProofDraw.cxx:1376
 TProofDraw.cxx:1377
 TProofDraw.cxx:1378
 TProofDraw.cxx:1379
 TProofDraw.cxx:1380
 TProofDraw.cxx:1381
 TProofDraw.cxx:1382
 TProofDraw.cxx:1383
 TProofDraw.cxx:1384
 TProofDraw.cxx:1385
 TProofDraw.cxx:1386
 TProofDraw.cxx:1387
 TProofDraw.cxx:1388
 TProofDraw.cxx:1389
 TProofDraw.cxx:1390
 TProofDraw.cxx:1391
 TProofDraw.cxx:1392
 TProofDraw.cxx:1393
 TProofDraw.cxx:1394
 TProofDraw.cxx:1395
 TProofDraw.cxx:1396
 TProofDraw.cxx:1397
 TProofDraw.cxx:1398
 TProofDraw.cxx:1399
 TProofDraw.cxx:1400
 TProofDraw.cxx:1401
 TProofDraw.cxx:1402
 TProofDraw.cxx:1403
 TProofDraw.cxx:1404
 TProofDraw.cxx:1405
 TProofDraw.cxx:1406
 TProofDraw.cxx:1407
 TProofDraw.cxx:1408
 TProofDraw.cxx:1409
 TProofDraw.cxx:1410
 TProofDraw.cxx:1411
 TProofDraw.cxx:1412
 TProofDraw.cxx:1413
 TProofDraw.cxx:1414
 TProofDraw.cxx:1415
 TProofDraw.cxx:1416
 TProofDraw.cxx:1417
 TProofDraw.cxx:1418
 TProofDraw.cxx:1419
 TProofDraw.cxx:1420
 TProofDraw.cxx:1421
 TProofDraw.cxx:1422
 TProofDraw.cxx:1423
 TProofDraw.cxx:1424
 TProofDraw.cxx:1425
 TProofDraw.cxx:1426
 TProofDraw.cxx:1427
 TProofDraw.cxx:1428
 TProofDraw.cxx:1429
 TProofDraw.cxx:1430
 TProofDraw.cxx:1431
 TProofDraw.cxx:1432
 TProofDraw.cxx:1433
 TProofDraw.cxx:1434
 TProofDraw.cxx:1435
 TProofDraw.cxx:1436
 TProofDraw.cxx:1437
 TProofDraw.cxx:1438
 TProofDraw.cxx:1439
 TProofDraw.cxx:1440
 TProofDraw.cxx:1441
 TProofDraw.cxx:1442
 TProofDraw.cxx:1443
 TProofDraw.cxx:1444
 TProofDraw.cxx:1445
 TProofDraw.cxx:1446
 TProofDraw.cxx:1447
 TProofDraw.cxx:1448
 TProofDraw.cxx:1449
 TProofDraw.cxx:1450
 TProofDraw.cxx:1451
 TProofDraw.cxx:1452
 TProofDraw.cxx:1453
 TProofDraw.cxx:1454
 TProofDraw.cxx:1455
 TProofDraw.cxx:1456
 TProofDraw.cxx:1457
 TProofDraw.cxx:1458
 TProofDraw.cxx:1459
 TProofDraw.cxx:1460
 TProofDraw.cxx:1461
 TProofDraw.cxx:1462
 TProofDraw.cxx:1463
 TProofDraw.cxx:1464
 TProofDraw.cxx:1465
 TProofDraw.cxx:1466
 TProofDraw.cxx:1467
 TProofDraw.cxx:1468
 TProofDraw.cxx:1469
 TProofDraw.cxx:1470
 TProofDraw.cxx:1471
 TProofDraw.cxx:1472
 TProofDraw.cxx:1473
 TProofDraw.cxx:1474
 TProofDraw.cxx:1475
 TProofDraw.cxx:1476
 TProofDraw.cxx:1477
 TProofDraw.cxx:1478
 TProofDraw.cxx:1479
 TProofDraw.cxx:1480
 TProofDraw.cxx:1481
 TProofDraw.cxx:1482
 TProofDraw.cxx:1483
 TProofDraw.cxx:1484
 TProofDraw.cxx:1485
 TProofDraw.cxx:1486
 TProofDraw.cxx:1487
 TProofDraw.cxx:1488
 TProofDraw.cxx:1489
 TProofDraw.cxx:1490
 TProofDraw.cxx:1491
 TProofDraw.cxx:1492
 TProofDraw.cxx:1493
 TProofDraw.cxx:1494
 TProofDraw.cxx:1495
 TProofDraw.cxx:1496
 TProofDraw.cxx:1497
 TProofDraw.cxx:1498
 TProofDraw.cxx:1499
 TProofDraw.cxx:1500
 TProofDraw.cxx:1501
 TProofDraw.cxx:1502
 TProofDraw.cxx:1503
 TProofDraw.cxx:1504
 TProofDraw.cxx:1505
 TProofDraw.cxx:1506
 TProofDraw.cxx:1507
 TProofDraw.cxx:1508
 TProofDraw.cxx:1509
 TProofDraw.cxx:1510
 TProofDraw.cxx:1511
 TProofDraw.cxx:1512
 TProofDraw.cxx:1513
 TProofDraw.cxx:1514
 TProofDraw.cxx:1515
 TProofDraw.cxx:1516
 TProofDraw.cxx:1517
 TProofDraw.cxx:1518
 TProofDraw.cxx:1519
 TProofDraw.cxx:1520
 TProofDraw.cxx:1521
 TProofDraw.cxx:1522
 TProofDraw.cxx:1523
 TProofDraw.cxx:1524
 TProofDraw.cxx:1525
 TProofDraw.cxx:1526
 TProofDraw.cxx:1527
 TProofDraw.cxx:1528
 TProofDraw.cxx:1529
 TProofDraw.cxx:1530
 TProofDraw.cxx:1531
 TProofDraw.cxx:1532
 TProofDraw.cxx:1533
 TProofDraw.cxx:1534
 TProofDraw.cxx:1535
 TProofDraw.cxx:1536
 TProofDraw.cxx:1537
 TProofDraw.cxx:1538
 TProofDraw.cxx:1539
 TProofDraw.cxx:1540
 TProofDraw.cxx:1541
 TProofDraw.cxx:1542
 TProofDraw.cxx:1543
 TProofDraw.cxx:1544
 TProofDraw.cxx:1545
 TProofDraw.cxx:1546
 TProofDraw.cxx:1547
 TProofDraw.cxx:1548
 TProofDraw.cxx:1549
 TProofDraw.cxx:1550
 TProofDraw.cxx:1551
 TProofDraw.cxx:1552
 TProofDraw.cxx:1553
 TProofDraw.cxx:1554
 TProofDraw.cxx:1555
 TProofDraw.cxx:1556
 TProofDraw.cxx:1557
 TProofDraw.cxx:1558
 TProofDraw.cxx:1559
 TProofDraw.cxx:1560
 TProofDraw.cxx:1561
 TProofDraw.cxx:1562
 TProofDraw.cxx:1563
 TProofDraw.cxx:1564
 TProofDraw.cxx:1565
 TProofDraw.cxx:1566
 TProofDraw.cxx:1567
 TProofDraw.cxx:1568
 TProofDraw.cxx:1569
 TProofDraw.cxx:1570
 TProofDraw.cxx:1571
 TProofDraw.cxx:1572
 TProofDraw.cxx:1573
 TProofDraw.cxx:1574
 TProofDraw.cxx:1575
 TProofDraw.cxx:1576
 TProofDraw.cxx:1577
 TProofDraw.cxx:1578
 TProofDraw.cxx:1579
 TProofDraw.cxx:1580
 TProofDraw.cxx:1581
 TProofDraw.cxx:1582
 TProofDraw.cxx:1583
 TProofDraw.cxx:1584
 TProofDraw.cxx:1585
 TProofDraw.cxx:1586
 TProofDraw.cxx:1587
 TProofDraw.cxx:1588
 TProofDraw.cxx:1589
 TProofDraw.cxx:1590
 TProofDraw.cxx:1591
 TProofDraw.cxx:1592
 TProofDraw.cxx:1593
 TProofDraw.cxx:1594
 TProofDraw.cxx:1595
 TProofDraw.cxx:1596
 TProofDraw.cxx:1597
 TProofDraw.cxx:1598
 TProofDraw.cxx:1599
 TProofDraw.cxx:1600
 TProofDraw.cxx:1601
 TProofDraw.cxx:1602
 TProofDraw.cxx:1603
 TProofDraw.cxx:1604
 TProofDraw.cxx:1605
 TProofDraw.cxx:1606
 TProofDraw.cxx:1607
 TProofDraw.cxx:1608
 TProofDraw.cxx:1609
 TProofDraw.cxx:1610
 TProofDraw.cxx:1611
 TProofDraw.cxx:1612
 TProofDraw.cxx:1613
 TProofDraw.cxx:1614
 TProofDraw.cxx:1615
 TProofDraw.cxx:1616
 TProofDraw.cxx:1617
 TProofDraw.cxx:1618
 TProofDraw.cxx:1619
 TProofDraw.cxx:1620
 TProofDraw.cxx:1621
 TProofDraw.cxx:1622
 TProofDraw.cxx:1623
 TProofDraw.cxx:1624
 TProofDraw.cxx:1625
 TProofDraw.cxx:1626
 TProofDraw.cxx:1627
 TProofDraw.cxx:1628
 TProofDraw.cxx:1629
 TProofDraw.cxx:1630
 TProofDraw.cxx:1631
 TProofDraw.cxx:1632
 TProofDraw.cxx:1633
 TProofDraw.cxx:1634
 TProofDraw.cxx:1635
 TProofDraw.cxx:1636
 TProofDraw.cxx:1637
 TProofDraw.cxx:1638
 TProofDraw.cxx:1639
 TProofDraw.cxx:1640
 TProofDraw.cxx:1641
 TProofDraw.cxx:1642
 TProofDraw.cxx:1643
 TProofDraw.cxx:1644
 TProofDraw.cxx:1645
 TProofDraw.cxx:1646
 TProofDraw.cxx:1647
 TProofDraw.cxx:1648
 TProofDraw.cxx:1649
 TProofDraw.cxx:1650
 TProofDraw.cxx:1651
 TProofDraw.cxx:1652
 TProofDraw.cxx:1653
 TProofDraw.cxx:1654
 TProofDraw.cxx:1655
 TProofDraw.cxx:1656
 TProofDraw.cxx:1657
 TProofDraw.cxx:1658
 TProofDraw.cxx:1659
 TProofDraw.cxx:1660
 TProofDraw.cxx:1661
 TProofDraw.cxx:1662
 TProofDraw.cxx:1663
 TProofDraw.cxx:1664
 TProofDraw.cxx:1665
 TProofDraw.cxx:1666
 TProofDraw.cxx:1667
 TProofDraw.cxx:1668
 TProofDraw.cxx:1669
 TProofDraw.cxx:1670
 TProofDraw.cxx:1671
 TProofDraw.cxx:1672
 TProofDraw.cxx:1673
 TProofDraw.cxx:1674
 TProofDraw.cxx:1675
 TProofDraw.cxx:1676
 TProofDraw.cxx:1677
 TProofDraw.cxx:1678
 TProofDraw.cxx:1679
 TProofDraw.cxx:1680
 TProofDraw.cxx:1681
 TProofDraw.cxx:1682
 TProofDraw.cxx:1683
 TProofDraw.cxx:1684
 TProofDraw.cxx:1685
 TProofDraw.cxx:1686
 TProofDraw.cxx:1687
 TProofDraw.cxx:1688
 TProofDraw.cxx:1689
 TProofDraw.cxx:1690
 TProofDraw.cxx:1691
 TProofDraw.cxx:1692
 TProofDraw.cxx:1693
 TProofDraw.cxx:1694
 TProofDraw.cxx:1695
 TProofDraw.cxx:1696
 TProofDraw.cxx:1697
 TProofDraw.cxx:1698
 TProofDraw.cxx:1699
 TProofDraw.cxx:1700
 TProofDraw.cxx:1701
 TProofDraw.cxx:1702
 TProofDraw.cxx:1703
 TProofDraw.cxx:1704
 TProofDraw.cxx:1705
 TProofDraw.cxx:1706
 TProofDraw.cxx:1707
 TProofDraw.cxx:1708
 TProofDraw.cxx:1709
 TProofDraw.cxx:1710
 TProofDraw.cxx:1711
 TProofDraw.cxx:1712
 TProofDraw.cxx:1713
 TProofDraw.cxx:1714
 TProofDraw.cxx:1715
 TProofDraw.cxx:1716
 TProofDraw.cxx:1717
 TProofDraw.cxx:1718
 TProofDraw.cxx:1719
 TProofDraw.cxx:1720
 TProofDraw.cxx:1721
 TProofDraw.cxx:1722
 TProofDraw.cxx:1723
 TProofDraw.cxx:1724
 TProofDraw.cxx:1725
 TProofDraw.cxx:1726
 TProofDraw.cxx:1727
 TProofDraw.cxx:1728
 TProofDraw.cxx:1729
 TProofDraw.cxx:1730
 TProofDraw.cxx:1731
 TProofDraw.cxx:1732
 TProofDraw.cxx:1733
 TProofDraw.cxx:1734
 TProofDraw.cxx:1735
 TProofDraw.cxx:1736
 TProofDraw.cxx:1737
 TProofDraw.cxx:1738
 TProofDraw.cxx:1739
 TProofDraw.cxx:1740
 TProofDraw.cxx:1741
 TProofDraw.cxx:1742
 TProofDraw.cxx:1743
 TProofDraw.cxx:1744
 TProofDraw.cxx:1745
 TProofDraw.cxx:1746
 TProofDraw.cxx:1747
 TProofDraw.cxx:1748
 TProofDraw.cxx:1749
 TProofDraw.cxx:1750
 TProofDraw.cxx:1751
 TProofDraw.cxx:1752
 TProofDraw.cxx:1753
 TProofDraw.cxx:1754
 TProofDraw.cxx:1755
 TProofDraw.cxx:1756
 TProofDraw.cxx:1757
 TProofDraw.cxx:1758
 TProofDraw.cxx:1759
 TProofDraw.cxx:1760
 TProofDraw.cxx:1761
 TProofDraw.cxx:1762
 TProofDraw.cxx:1763
 TProofDraw.cxx:1764
 TProofDraw.cxx:1765
 TProofDraw.cxx:1766
 TProofDraw.cxx:1767
 TProofDraw.cxx:1768
 TProofDraw.cxx:1769
 TProofDraw.cxx:1770
 TProofDraw.cxx:1771
 TProofDraw.cxx:1772
 TProofDraw.cxx:1773
 TProofDraw.cxx:1774
 TProofDraw.cxx:1775
 TProofDraw.cxx:1776
 TProofDraw.cxx:1777
 TProofDraw.cxx:1778
 TProofDraw.cxx:1779
 TProofDraw.cxx:1780
 TProofDraw.cxx:1781
 TProofDraw.cxx:1782
 TProofDraw.cxx:1783
 TProofDraw.cxx:1784
 TProofDraw.cxx:1785
 TProofDraw.cxx:1786
 TProofDraw.cxx:1787
 TProofDraw.cxx:1788
 TProofDraw.cxx:1789
 TProofDraw.cxx:1790
 TProofDraw.cxx:1791
 TProofDraw.cxx:1792
 TProofDraw.cxx:1793
 TProofDraw.cxx:1794
 TProofDraw.cxx:1795
 TProofDraw.cxx:1796
 TProofDraw.cxx:1797
 TProofDraw.cxx:1798
 TProofDraw.cxx:1799
 TProofDraw.cxx:1800
 TProofDraw.cxx:1801
 TProofDraw.cxx:1802
 TProofDraw.cxx:1803
 TProofDraw.cxx:1804
 TProofDraw.cxx:1805
 TProofDraw.cxx:1806
 TProofDraw.cxx:1807
 TProofDraw.cxx:1808
 TProofDraw.cxx:1809
 TProofDraw.cxx:1810
 TProofDraw.cxx:1811
 TProofDraw.cxx:1812
 TProofDraw.cxx:1813
 TProofDraw.cxx:1814
 TProofDraw.cxx:1815
 TProofDraw.cxx:1816
 TProofDraw.cxx:1817
 TProofDraw.cxx:1818
 TProofDraw.cxx:1819
 TProofDraw.cxx:1820
 TProofDraw.cxx:1821
 TProofDraw.cxx:1822
 TProofDraw.cxx:1823
 TProofDraw.cxx:1824
 TProofDraw.cxx:1825
 TProofDraw.cxx:1826
 TProofDraw.cxx:1827
 TProofDraw.cxx:1828
 TProofDraw.cxx:1829
 TProofDraw.cxx:1830
 TProofDraw.cxx:1831
 TProofDraw.cxx:1832
 TProofDraw.cxx:1833
 TProofDraw.cxx:1834
 TProofDraw.cxx:1835
 TProofDraw.cxx:1836
 TProofDraw.cxx:1837
 TProofDraw.cxx:1838
 TProofDraw.cxx:1839
 TProofDraw.cxx:1840
 TProofDraw.cxx:1841
 TProofDraw.cxx:1842
 TProofDraw.cxx:1843
 TProofDraw.cxx:1844
 TProofDraw.cxx:1845
 TProofDraw.cxx:1846
 TProofDraw.cxx:1847
 TProofDraw.cxx:1848
 TProofDraw.cxx:1849
 TProofDraw.cxx:1850
 TProofDraw.cxx:1851
 TProofDraw.cxx:1852
 TProofDraw.cxx:1853
 TProofDraw.cxx:1854
 TProofDraw.cxx:1855
 TProofDraw.cxx:1856
 TProofDraw.cxx:1857
 TProofDraw.cxx:1858
 TProofDraw.cxx:1859
 TProofDraw.cxx:1860
 TProofDraw.cxx:1861
 TProofDraw.cxx:1862
 TProofDraw.cxx:1863
 TProofDraw.cxx:1864
 TProofDraw.cxx:1865
 TProofDraw.cxx:1866
 TProofDraw.cxx:1867
 TProofDraw.cxx:1868
 TProofDraw.cxx:1869
 TProofDraw.cxx:1870
 TProofDraw.cxx:1871
 TProofDraw.cxx:1872
 TProofDraw.cxx:1873
 TProofDraw.cxx:1874
 TProofDraw.cxx:1875
 TProofDraw.cxx:1876
 TProofDraw.cxx:1877
 TProofDraw.cxx:1878
 TProofDraw.cxx:1879
 TProofDraw.cxx:1880
 TProofDraw.cxx:1881
 TProofDraw.cxx:1882
 TProofDraw.cxx:1883
 TProofDraw.cxx:1884
 TProofDraw.cxx:1885
 TProofDraw.cxx:1886
 TProofDraw.cxx:1887
 TProofDraw.cxx:1888
 TProofDraw.cxx:1889
 TProofDraw.cxx:1890
 TProofDraw.cxx:1891
 TProofDraw.cxx:1892
 TProofDraw.cxx:1893
 TProofDraw.cxx:1894
 TProofDraw.cxx:1895
 TProofDraw.cxx:1896
 TProofDraw.cxx:1897
 TProofDraw.cxx:1898
 TProofDraw.cxx:1899
 TProofDraw.cxx:1900
 TProofDraw.cxx:1901
 TProofDraw.cxx:1902
 TProofDraw.cxx:1903
 TProofDraw.cxx:1904
 TProofDraw.cxx:1905
 TProofDraw.cxx:1906
 TProofDraw.cxx:1907
 TProofDraw.cxx:1908
 TProofDraw.cxx:1909
 TProofDraw.cxx:1910
 TProofDraw.cxx:1911
 TProofDraw.cxx:1912
 TProofDraw.cxx:1913
 TProofDraw.cxx:1914
 TProofDraw.cxx:1915
 TProofDraw.cxx:1916
 TProofDraw.cxx:1917
 TProofDraw.cxx:1918
 TProofDraw.cxx:1919
 TProofDraw.cxx:1920
 TProofDraw.cxx:1921
 TProofDraw.cxx:1922
 TProofDraw.cxx:1923
 TProofDraw.cxx:1924
 TProofDraw.cxx:1925
 TProofDraw.cxx:1926
 TProofDraw.cxx:1927
 TProofDraw.cxx:1928
 TProofDraw.cxx:1929
 TProofDraw.cxx:1930
 TProofDraw.cxx:1931
 TProofDraw.cxx:1932
 TProofDraw.cxx:1933
 TProofDraw.cxx:1934
 TProofDraw.cxx:1935
 TProofDraw.cxx:1936
 TProofDraw.cxx:1937
 TProofDraw.cxx:1938
 TProofDraw.cxx:1939
 TProofDraw.cxx:1940
 TProofDraw.cxx:1941
 TProofDraw.cxx:1942
 TProofDraw.cxx:1943
 TProofDraw.cxx:1944
 TProofDraw.cxx:1945
 TProofDraw.cxx:1946
 TProofDraw.cxx:1947
 TProofDraw.cxx:1948
 TProofDraw.cxx:1949
 TProofDraw.cxx:1950
 TProofDraw.cxx:1951
 TProofDraw.cxx:1952
 TProofDraw.cxx:1953
 TProofDraw.cxx:1954
 TProofDraw.cxx:1955
 TProofDraw.cxx:1956
 TProofDraw.cxx:1957
 TProofDraw.cxx:1958
 TProofDraw.cxx:1959
 TProofDraw.cxx:1960
 TProofDraw.cxx:1961
 TProofDraw.cxx:1962
 TProofDraw.cxx:1963
 TProofDraw.cxx:1964
 TProofDraw.cxx:1965
 TProofDraw.cxx:1966
 TProofDraw.cxx:1967
 TProofDraw.cxx:1968
 TProofDraw.cxx:1969
 TProofDraw.cxx:1970
 TProofDraw.cxx:1971
 TProofDraw.cxx:1972
 TProofDraw.cxx:1973
 TProofDraw.cxx:1974
 TProofDraw.cxx:1975
 TProofDraw.cxx:1976
 TProofDraw.cxx:1977
 TProofDraw.cxx:1978
 TProofDraw.cxx:1979
 TProofDraw.cxx:1980
 TProofDraw.cxx:1981
 TProofDraw.cxx:1982
 TProofDraw.cxx:1983
 TProofDraw.cxx:1984
 TProofDraw.cxx:1985
 TProofDraw.cxx:1986
 TProofDraw.cxx:1987
 TProofDraw.cxx:1988
 TProofDraw.cxx:1989
 TProofDraw.cxx:1990
 TProofDraw.cxx:1991
 TProofDraw.cxx:1992
 TProofDraw.cxx:1993
 TProofDraw.cxx:1994
 TProofDraw.cxx:1995
 TProofDraw.cxx:1996
 TProofDraw.cxx:1997
 TProofDraw.cxx:1998
 TProofDraw.cxx:1999
 TProofDraw.cxx:2000
 TProofDraw.cxx:2001
 TProofDraw.cxx:2002
 TProofDraw.cxx:2003
 TProofDraw.cxx:2004
 TProofDraw.cxx:2005
 TProofDraw.cxx:2006
 TProofDraw.cxx:2007
 TProofDraw.cxx:2008
 TProofDraw.cxx:2009
 TProofDraw.cxx:2010
 TProofDraw.cxx:2011
 TProofDraw.cxx:2012
 TProofDraw.cxx:2013
 TProofDraw.cxx:2014
 TProofDraw.cxx:2015
 TProofDraw.cxx:2016
 TProofDraw.cxx:2017
 TProofDraw.cxx:2018
 TProofDraw.cxx:2019
 TProofDraw.cxx:2020
 TProofDraw.cxx:2021
 TProofDraw.cxx:2022
 TProofDraw.cxx:2023
 TProofDraw.cxx:2024
 TProofDraw.cxx:2025
 TProofDraw.cxx:2026
 TProofDraw.cxx:2027
 TProofDraw.cxx:2028
 TProofDraw.cxx:2029
 TProofDraw.cxx:2030
 TProofDraw.cxx:2031
 TProofDraw.cxx:2032
 TProofDraw.cxx:2033
 TProofDraw.cxx:2034
 TProofDraw.cxx:2035
 TProofDraw.cxx:2036
 TProofDraw.cxx:2037
 TProofDraw.cxx:2038
 TProofDraw.cxx:2039
 TProofDraw.cxx:2040
 TProofDraw.cxx:2041
 TProofDraw.cxx:2042
 TProofDraw.cxx:2043
 TProofDraw.cxx:2044
 TProofDraw.cxx:2045
 TProofDraw.cxx:2046
 TProofDraw.cxx:2047
 TProofDraw.cxx:2048
 TProofDraw.cxx:2049
 TProofDraw.cxx:2050
 TProofDraw.cxx:2051
 TProofDraw.cxx:2052
 TProofDraw.cxx:2053
 TProofDraw.cxx:2054
 TProofDraw.cxx:2055
 TProofDraw.cxx:2056
 TProofDraw.cxx:2057
 TProofDraw.cxx:2058
 TProofDraw.cxx:2059
 TProofDraw.cxx:2060
 TProofDraw.cxx:2061
 TProofDraw.cxx:2062
 TProofDraw.cxx:2063
 TProofDraw.cxx:2064
 TProofDraw.cxx:2065
 TProofDraw.cxx:2066
 TProofDraw.cxx:2067
 TProofDraw.cxx:2068
 TProofDraw.cxx:2069
 TProofDraw.cxx:2070
 TProofDraw.cxx:2071
 TProofDraw.cxx:2072
 TProofDraw.cxx:2073
 TProofDraw.cxx:2074
 TProofDraw.cxx:2075
 TProofDraw.cxx:2076
 TProofDraw.cxx:2077
 TProofDraw.cxx:2078
 TProofDraw.cxx:2079
 TProofDraw.cxx:2080
 TProofDraw.cxx:2081
 TProofDraw.cxx:2082
 TProofDraw.cxx:2083
 TProofDraw.cxx:2084
 TProofDraw.cxx:2085
 TProofDraw.cxx:2086
 TProofDraw.cxx:2087
 TProofDraw.cxx:2088
 TProofDraw.cxx:2089
 TProofDraw.cxx:2090
 TProofDraw.cxx:2091
 TProofDraw.cxx:2092
 TProofDraw.cxx:2093
 TProofDraw.cxx:2094
 TProofDraw.cxx:2095
 TProofDraw.cxx:2096
 TProofDraw.cxx:2097
 TProofDraw.cxx:2098
 TProofDraw.cxx:2099
 TProofDraw.cxx:2100
 TProofDraw.cxx:2101
 TProofDraw.cxx:2102
 TProofDraw.cxx:2103
 TProofDraw.cxx:2104
 TProofDraw.cxx:2105
 TProofDraw.cxx:2106
 TProofDraw.cxx:2107
 TProofDraw.cxx:2108
 TProofDraw.cxx:2109
 TProofDraw.cxx:2110
 TProofDraw.cxx:2111
 TProofDraw.cxx:2112
 TProofDraw.cxx:2113
 TProofDraw.cxx:2114
 TProofDraw.cxx:2115
 TProofDraw.cxx:2116
 TProofDraw.cxx:2117
 TProofDraw.cxx:2118
 TProofDraw.cxx:2119
 TProofDraw.cxx:2120
 TProofDraw.cxx:2121
 TProofDraw.cxx:2122
 TProofDraw.cxx:2123
 TProofDraw.cxx:2124
 TProofDraw.cxx:2125
 TProofDraw.cxx:2126
 TProofDraw.cxx:2127
 TProofDraw.cxx:2128
 TProofDraw.cxx:2129
 TProofDraw.cxx:2130
 TProofDraw.cxx:2131
 TProofDraw.cxx:2132
 TProofDraw.cxx:2133
 TProofDraw.cxx:2134
 TProofDraw.cxx:2135
 TProofDraw.cxx:2136
 TProofDraw.cxx:2137
 TProofDraw.cxx:2138
 TProofDraw.cxx:2139
 TProofDraw.cxx:2140
 TProofDraw.cxx:2141
 TProofDraw.cxx:2142
 TProofDraw.cxx:2143
 TProofDraw.cxx:2144
 TProofDraw.cxx:2145
 TProofDraw.cxx:2146
 TProofDraw.cxx:2147
 TProofDraw.cxx:2148
 TProofDraw.cxx:2149
 TProofDraw.cxx:2150
 TProofDraw.cxx:2151
 TProofDraw.cxx:2152
 TProofDraw.cxx:2153
 TProofDraw.cxx:2154
 TProofDraw.cxx:2155
 TProofDraw.cxx:2156
 TProofDraw.cxx:2157
 TProofDraw.cxx:2158
 TProofDraw.cxx:2159
 TProofDraw.cxx:2160
 TProofDraw.cxx:2161
 TProofDraw.cxx:2162
 TProofDraw.cxx:2163
 TProofDraw.cxx:2164
 TProofDraw.cxx:2165
 TProofDraw.cxx:2166
 TProofDraw.cxx:2167
 TProofDraw.cxx:2168
 TProofDraw.cxx:2169
 TProofDraw.cxx:2170
 TProofDraw.cxx:2171
 TProofDraw.cxx:2172
 TProofDraw.cxx:2173
 TProofDraw.cxx:2174
 TProofDraw.cxx:2175
 TProofDraw.cxx:2176
 TProofDraw.cxx:2177
 TProofDraw.cxx:2178
 TProofDraw.cxx:2179
 TProofDraw.cxx:2180
 TProofDraw.cxx:2181
 TProofDraw.cxx:2182
 TProofDraw.cxx:2183
 TProofDraw.cxx:2184
 TProofDraw.cxx:2185
 TProofDraw.cxx:2186
 TProofDraw.cxx:2187
 TProofDraw.cxx:2188
 TProofDraw.cxx:2189
 TProofDraw.cxx:2190
 TProofDraw.cxx:2191
 TProofDraw.cxx:2192
 TProofDraw.cxx:2193
 TProofDraw.cxx:2194
 TProofDraw.cxx:2195
 TProofDraw.cxx:2196
 TProofDraw.cxx:2197
 TProofDraw.cxx:2198
 TProofDraw.cxx:2199
 TProofDraw.cxx:2200
 TProofDraw.cxx:2201
 TProofDraw.cxx:2202
 TProofDraw.cxx:2203
 TProofDraw.cxx:2204
 TProofDraw.cxx:2205
 TProofDraw.cxx:2206
 TProofDraw.cxx:2207
 TProofDraw.cxx:2208
 TProofDraw.cxx:2209
 TProofDraw.cxx:2210
 TProofDraw.cxx:2211
 TProofDraw.cxx:2212
 TProofDraw.cxx:2213
 TProofDraw.cxx:2214
 TProofDraw.cxx:2215
 TProofDraw.cxx:2216
 TProofDraw.cxx:2217
 TProofDraw.cxx:2218
 TProofDraw.cxx:2219
 TProofDraw.cxx:2220
 TProofDraw.cxx:2221
 TProofDraw.cxx:2222
 TProofDraw.cxx:2223
 TProofDraw.cxx:2224
 TProofDraw.cxx:2225
 TProofDraw.cxx:2226
 TProofDraw.cxx:2227
 TProofDraw.cxx:2228
 TProofDraw.cxx:2229
 TProofDraw.cxx:2230
 TProofDraw.cxx:2231
 TProofDraw.cxx:2232
 TProofDraw.cxx:2233
 TProofDraw.cxx:2234
 TProofDraw.cxx:2235
 TProofDraw.cxx:2236
 TProofDraw.cxx:2237
 TProofDraw.cxx:2238
 TProofDraw.cxx:2239
 TProofDraw.cxx:2240
 TProofDraw.cxx:2241
 TProofDraw.cxx:2242
 TProofDraw.cxx:2243