From f74ff6c376e52ceb5c77dde53e88934500439e70 Mon Sep 17 00:00:00 2001
From: Fons Rademakers <Fons.Rademakers@cern.ch>
Date: Tue, 28 Nov 2006 12:10:52 +0000
Subject: [PATCH] From Gerri: This patch eliminates TVirtualProof,
 TVirtualProofMgr and TVirtualProofDesc. The first is integrated in TProof,
 the second in TProofMgr and the third becomes TProofDesc defined in
 TProofMgr.h.

git-svn-id: http://root.cern.ch/svn/root/trunk@16969 27541ba8-7e3a-0410-8455-c3a389f83636
---
 base/Module.mk                             |   2 +-
 base/inc/LinkDef3.h                        |   5 +-
 base/inc/TVirtualProof.h                   | 292 ----------------
 base/inc/TVirtualProofMgr.h                | 138 --------
 base/src/TVirtualProof.cxx                 | 267 ---------------
 base/src/TVirtualProofMgr.cxx              | 371 ---------------------
 config/rootrc.in                           |  47 ++-
 peac/inc/TPEAC.h                           |   6 +-
 peac/inc/TProofStartupDialog.h             |   8 +-
 peac/src/TPEAC.cxx                         |  12 +-
 peac/src/TProofStartupDialog.cxx           |   6 +-
 proof/inc/LinkDef.h                        |   5 +-
 proof/inc/TDSet.h                          |   6 +-
 proof/inc/TDrawFeedback.h                  |   6 +-
 proof/inc/TProof.h                         |  76 ++++-
 proof/inc/TProofMgr.h                      | 111 +++++-
 proof/inc/TProofProgressDialog.h           |   8 +-
 proof/inc/TSessionViewer.h                 |  10 +-
 proof/src/TDSet.cxx                        |   6 +-
 proof/src/TDrawFeedback.cxx                |   4 +-
 proof/src/TPerfStats.cxx                   |   4 +-
 proof/src/TProof.cxx                       | 290 +++++++++++++---
 proof/src/TProofChain.cxx                  |   4 +-
 proof/src/TProofMgr.cxx                    | 330 ++++++++++++++++--
 proof/src/TProofProgressDialog.cxx         |   4 +-
 proof/src/TProofServ.cxx                   |  20 +-
 proof/src/TSessionDialogs.cxx              |  40 +--
 proof/src/TSessionLogView.cxx              |   4 +-
 proof/src/TSessionViewer.cxx               |  44 +--
 proof/src/TSlave.cxx                       |   4 +-
 proofplayer/inc/TDrawFeedback.h            |   6 +-
 proofplayer/src/TDrawFeedback.cxx          |   4 +-
 proofplayer/src/TPerfStats.cxx             |   4 +-
 proofx/inc/TXProofMgr.h                    |  10 +-
 proofx/src/TXProofMgr.cxx                  |  53 +--
 proofx/src/TXProofServ.cxx                 |  14 +-
 proofx/src/TXSlave.cxx                     |  10 +-
 sessionviewer/inc/TProofProgressDialog.h   |   8 +-
 sessionviewer/inc/TSessionViewer.h         |  10 +-
 sessionviewer/src/TProofProgressDialog.cxx |   4 +-
 sessionviewer/src/TSessionDialogs.cxx      |  40 +--
 sessionviewer/src/TSessionLogView.cxx      |   4 +-
 sessionviewer/src/TSessionViewer.cxx       |  44 +--
 43 files changed, 943 insertions(+), 1398 deletions(-)
 delete mode 100644 base/inc/TVirtualProof.h
 delete mode 100644 base/inc/TVirtualProofMgr.h
 delete mode 100644 base/src/TVirtualProof.cxx
 delete mode 100644 base/src/TVirtualProofMgr.cxx

diff --git a/base/Module.mk b/base/Module.mk
index 6c9b8e4eeb0..8e6dae39f63 100644
--- a/base/Module.mk
+++ b/base/Module.mk
@@ -39,7 +39,7 @@ BASEDH       := $(BASEDS:.cxx=.h)
 
 BASEH1       := $(wildcard $(MODDIRI)/T*.h)
 BASEH3       := GuiTypes.h KeySymbols.h Buttons.h TTimeStamp.h TVirtualMutex.h \
-                TVirtualProofMgr.h TVirtualProof.h TVirtualPerfStats.h \
+                TVirtualPerfStats.h \
                 TVirtualX.h TParameter.h TArchiveFile.h TZIPFile.h \
                 TVirtualAuth.h TFileInfo.h TRedirectOutputGuard.h \
                 TVirtualMonitoring.h TObjectSpy.h
diff --git a/base/inc/LinkDef3.h b/base/inc/LinkDef3.h
index d007b2f6a02..fcb8282a03b 100644
--- a/base/inc/LinkDef3.h
+++ b/base/inc/LinkDef3.h
@@ -1,4 +1,4 @@
-/* @(#)root/base:$Name:  $:$Id: LinkDef3.h,v 1.25 2006/05/26 16:55:04 rdm Exp $ */
+/* @(#)root/base:$Name:  $:$Id: LinkDef3.h,v 1.26 2006/08/18 17:34:46 rdm Exp $ */
 
 /*************************************************************************
  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
@@ -166,9 +166,6 @@
 #pragma link C++ class TVirtualMutex;
 #pragma link C++ class TLockGuard;
 #pragma link C++ class TRedirectOutputGuard;
-#pragma link C++ class TVirtualProof;
-#pragma link C++ class TVirtualProofMgr;
-#pragma link C++ class TVirtualProofDesc;
 #pragma link C++ class TVirtualPerfStats;
 #pragma link C++ enum TVirtualPerfStats::EEventType;
 #pragma link C++ class TVirtualMonitoringWriter;
diff --git a/base/inc/TVirtualProof.h b/base/inc/TVirtualProof.h
deleted file mode 100644
index bbfd02f2361..00000000000
--- a/base/inc/TVirtualProof.h
+++ /dev/null
@@ -1,292 +0,0 @@
-// @(#)root/base:$Name:  $:$Id: TVirtualProof.h,v 1.43 2006/11/20 16:55:37 rdm Exp $
-// Author: Fons Rademakers   16/09/02
-
-/*************************************************************************
- * Copyright (C) 1995-2002, Rene Brun and Fons Rademakers.               *
- * All rights reserved.                                                  *
- *                                                                       *
- * For the licensing terms see $ROOTSYS/LICENSE.                         *
- * For the list of contributors see $ROOTSYS/README/CREDITS.             *
- *************************************************************************/
-
-#ifndef ROOT_TVirtualProof
-#define ROOT_TVirtualProof
-
-
-//////////////////////////////////////////////////////////////////////////
-//                                                                      //
-// TVirtualProof                                                        //
-//                                                                      //
-// Abstract interface to the Parallel ROOT Facility, PROOF.             //
-// For more information on PROOF see the TProof class.                  //
-//                                                                      //
-//////////////////////////////////////////////////////////////////////////
-
-#ifndef ROOT_TVirtualProofMgr
-#include "TVirtualProofMgr.h"
-#endif
-#ifndef ROOT_TQObject
-#include "TQObject.h"
-#endif
-
-class TList;
-class TDSet;
-class TEventList;
-class TTree;
-class TDSet;
-class TDrawFeedback;
-class TChain;
-class TQueryResult;
-
-// Global object with default PROOF session
-class TVirtualProof;
-R__EXTERN TVirtualProof *gProof;
-
-// Special type for the hook to the TProof constructor, needed to avoid
-// using the plugin manager
-typedef TVirtualProof *(*TProof_t)(const char *, const char *, const char *,
-                                   Int_t, const char *, TVirtualProofMgr *);
-
-class TVirtualProof : public TNamed, public TQObject {
-
-public:
-   // PROOF status bits
-   enum EStatusBits {
-      kUsingSessionGui = BIT(14)
-   };
-   enum EQueryMode {
-      kSync = 0,
-      kAsync = 1
-   };
-   enum EUploadOpt {
-      kAppend             = 0x1,
-      kOverwriteDataSet   = 0x2,
-      kNoOverwriteDataSet = 0x4,
-      kOverwriteAllFiles  = 0x8,
-      kOverwriteNoFiles   = 0x10,
-      kAskUser            = 0x0
-   };
-   enum EUploadDataSetAnswer {
-      kError = -1,
-      kDataSetExists = -2
-   };
-   enum EUploadPackageOpt {
-      kUntar             = 0x0,  //Untar over existing dir [default]
-      kRemoveOld         = 0x1   //Remove existing dir with same name
-   };
-
-private:
-   static TProof_t              fgProofHook;     // Hook to TProof constructor
-   static TList                *fgProofEnvList;  // List of TNameds defining environment
-                                                 // variables to pass to proofserv
-
-protected:
-   TString                      fDataPoolUrl; // Default data pool entry point URL
-   TVirtualProofMgr::EServType  fServType;    // Type of server: proofd, XrdProofd
-   TVirtualProofMgr            *fManager;     // Manager to which this session belongs (if any)
-   EQueryMode                   fQueryMode;   // default query mode
-
-   TVirtualProof() : fServType(TVirtualProofMgr::kXProofd), fManager(0), fQueryMode(kSync) { }
-
-public:
-   TVirtualProof(const char * /*masterurl*/, const char * /*conffile*/ = 0,
-                 const char * /*confdir*/ = 0, Int_t /*loglevel*/ = 0)
-      : fServType(TVirtualProofMgr::kXProofd), fManager(0), fQueryMode(kSync) { }
-   virtual ~TVirtualProof() { Emit("~TVirtualProof()"); }
-
-   virtual void        cd(Int_t = -1) { gProof = this; }
-
-   virtual void        SetAlias(const char *alias="") { TNamed::SetTitle(alias); }
-
-   virtual Int_t       Ping() = 0;
-   virtual Int_t       Exec(const char *cmd, Bool_t plusMaster = kFALSE) = 0;
-   virtual Long64_t    Process(TDSet *set, const char *selector,
-                               Option_t *option = "",
-                               Long64_t nentries = -1,
-                               Long64_t firstentry = 0,
-                               TEventList *evl = 0) = 0;
-   virtual Long64_t    DrawSelect(TDSet *set, const char *varexp,
-                                  const char *selection = "",
-                                  Option_t *option = "",
-                                  Long64_t nentries = -1,
-                                  Long64_t firstentry = 0) = 0;
-   virtual Int_t       Archive(Int_t query, const char *url) = 0;
-   virtual Int_t       Archive(const char *queryref, const char *url = 0) = 0;
-   virtual Int_t       CleanupSession(const char *sessiontag) = 0;
-   virtual Long64_t    Finalize(Int_t qry = -1, Bool_t force = kFALSE) = 0;
-   virtual Long64_t    Finalize(const char *queryref, Bool_t force = kFALSE) = 0;
-   virtual Int_t       Remove(Int_t query, Bool_t all = kFALSE) = 0;
-   virtual Int_t       Remove(const char *queryref, Bool_t all = kFALSE) = 0;
-   virtual Int_t       Retrieve(Int_t query, const char *path = 0) = 0;
-   virtual Int_t       Retrieve(const char *queryref, const char *path = 0) = 0;
-
-   virtual void        StopProcess(Bool_t abort, Int_t timeout = -1) = 0;
-   virtual void        AddInput(TObject *obj) = 0;
-   virtual void        ClearInput() = 0;
-   virtual TObject    *GetOutput(const char *name) = 0;
-   virtual TList      *GetOutputList() = 0;
-
-   virtual Int_t       SetParallel(Int_t nodes = 99999) = 0;
-   virtual void        SetLogLevel(Int_t level, UInt_t mask = 0xFFFFFFFF) = 0;
-
-   virtual void        Close(Option_t *option="") = 0;
-   virtual void        Print(Option_t *option="") const = 0;
-
-   //-- cache and package management
-   virtual void        ShowCache(Bool_t all = kFALSE) = 0;
-   virtual void        ClearCache() = 0;
-   virtual TList      *GetListOfPackages() = 0;
-   virtual TList      *GetListOfEnabledPackages() = 0;
-   virtual void        ShowPackages(Bool_t all = kFALSE) = 0;
-   virtual void        ShowEnabledPackages(Bool_t all = kFALSE) = 0;
-   virtual Int_t       ClearPackages() = 0;
-   virtual Int_t       ClearPackage(const char *package) = 0;
-   virtual Int_t       EnablePackage(const char *package) = 0;
-   virtual Int_t       UploadPackage(const char *par, EUploadPackageOpt opt = kUntar) = 0;
-
-   virtual Int_t       AddDynamicPath(const char *libpath) = 0;
-   virtual Int_t       AddIncludePath(const char *incpath) = 0;
-   virtual Int_t       RemoveDynamicPath(const char *libpath) = 0;
-   virtual Int_t       RemoveIncludePath(const char *incpath) = 0;
-
-   //-- dataset management
-   virtual Int_t       UploadDataSet(const char *dataset,
-                                     const char *files,
-                                     const char *dest = 0,
-                                     Int_t opt = kAskUser,
-                                     TList *skippedFiles = 0) = 0;
-
-   virtual Int_t       UploadDataSet(const char *dataset,
-                                     TList *files,
-                                     const char *dest = 0,
-                                     Int_t opt = kAskUser,
-                                     TList *skippedFiles = 0) = 0;
-
-   virtual Int_t       UploadDataSetFromFile(const char *dataset,
-                                             const char *file,
-                                             const char *dest = 0,
-                                             Int_t opt = kAskUser) = 0;
-
-   virtual Int_t       CreateDataSet(const char *dataset,
-                                     TList *files,
-                                     Int_t opt = kAskUser) = 0;
-
-   virtual TList      *GetDataSets(const char *dir = 0) = 0;
-   virtual void        ShowDataSets(const char * dir = 0) = 0;
-   virtual void        ShowDataSet(const char *dataset) = 0;
-   virtual Int_t       RemoveDataSet(const char *dateset) = 0;
-   virtual Int_t       VerifyDataSet(const char *dataset) = 0;
-   virtual TList      *GetDataSet(const char *dataset) = 0;
-
-   virtual const char *GetMaster() const = 0;
-   virtual const char *GetConfDir() const = 0;
-   virtual const char *GetConfFile() const = 0;
-   virtual const char *GetUser() const = 0;
-   virtual const char *GetWorkDir() const = 0;
-   virtual const char *GetSessionTag() const { return GetName(); }
-   virtual const char *GetImage() const = 0;
-   virtual const char *GetUrl() = 0;
-   virtual Int_t       GetPort() const = 0;
-   virtual Int_t       GetRemoteProtocol() const = 0;
-   virtual Int_t       GetClientProtocol() const = 0;
-   virtual Int_t       GetStatus() const = 0;
-   virtual Int_t       GetLogLevel() const = 0;
-   virtual Int_t       GetParallel() const = 0;
-   virtual Int_t       GetSessionID() const { return -1; }
-   virtual TList      *GetSlaveInfo() = 0;
-
-   virtual EQueryMode  GetQueryMode() const { return fQueryMode; }
-   virtual void        SetQueryType(EQueryMode mode) { fQueryMode = mode; }
-
-   virtual TVirtualProofMgr::EServType   GetServType() const { return fServType; }
-
-   virtual Long64_t    GetBytesRead() const = 0;
-   virtual Float_t     GetRealTime() const = 0;
-   virtual Float_t     GetCpuTime() const = 0;
-
-   virtual Bool_t      IsProofd() const { return (fServType == TVirtualProofMgr::kProofd); }
-   virtual Bool_t      IsMaster() const = 0;
-   virtual Bool_t      IsValid() const = 0;
-   virtual Bool_t      IsParallel() const = 0;
-   virtual Bool_t      IsDataReady(Long64_t &totalbytes, Long64_t &bytesready) = 0;
-   virtual Bool_t      IsIdle() const = 0;
-
-   virtual void        AddFeedback(const char *name) = 0;
-   virtual void        RemoveFeedback(const char *name) = 0;
-   virtual void        ClearFeedback() = 0;
-   virtual void        ShowFeedback() const = 0;
-   virtual TList      *GetFeedbackList() const = 0;
-
-   virtual TList      *GetListOfQueries(Option_t *opt = "") = 0;
-   virtual Int_t       GetNumberOfQueries() = 0;
-   virtual Int_t       GetNumberOfDrawQueries() = 0;
-   virtual TList      *GetQueryResults() = 0;
-   virtual TQueryResult *GetQueryResult(const char *ref = 0) = 0;
-   virtual void        GetMaxQueries() = 0;
-   virtual void        SetMaxDrawQueries(Int_t max) = 0;
-   virtual void        ShowQueries(Option_t *opt = "") = 0;
-
-   virtual void        SetActive(Bool_t active = kTRUE) = 0;
-
-   virtual void        LogMessage(const char *msg, Bool_t all) = 0; //*SIGNAL*
-   virtual void        Progress(Long64_t total, Long64_t processed) = 0; //*SIGNAL*
-   virtual void        Progress(Long64_t total, Long64_t processed, Long64_t bytesread,
-                                Float_t initTime, Float_t procTime,
-                                Float_t evtrti, Float_t mbrti) = 0; // *SIGNAL*
-   virtual void        Feedback(TList *objs) = 0; //*SIGNAL*
-   virtual void        QueryResultReady(const char *ref) = 0; //*SIGNAL*
-   virtual void        CloseProgressDialog() = 0; //*SIGNAL*
-   virtual void        ResetProgressDialog(const char *sel, Int_t sz,
-                                   Long64_t fst, Long64_t ent) = 0; //*SIGNAL*
-   virtual void        StartupMessage(const char *msg, Bool_t status,
-                                      Int_t done, Int_t total) = 0; //*SIGNAL*
-   virtual void        DataSetStatus(const char *msg, Bool_t status,
-                                      Int_t done, Int_t total) = 0; //*SIGNAL*
-
-   virtual void        SendDataSetStatus(const char *msg, UInt_t n, UInt_t tot, Bool_t st) = 0;
-
-   virtual void        GetLog(Int_t start = -1, Int_t end = -1) = 0;
-   virtual void        PutLog(TQueryResult *qr) = 0;
-   virtual void        ShowLog(Int_t qry = -1) = 0;
-   virtual void        ShowLog(const char *queryref) = 0;
-   virtual Bool_t      SendingLogToWindow() const = 0;
-   virtual void        SendLogToWindow(Bool_t mode) = 0;
-
-   virtual void        ResetProgressDialogStatus() = 0;
-
-   virtual TTree      *GetTreeHeader(TDSet* dset) = 0;
-   virtual TList      *GetOutputNames() = 0;
-
-   virtual void        AddChain(TChain* chain) = 0;
-   virtual void        RemoveChain(TChain* chain) = 0;
-
-   virtual TDrawFeedback *CreateDrawFeedback() = 0;
-   virtual void        SetDrawFeedbackOption(TDrawFeedback *f, Option_t *opt) = 0;
-   virtual void        DeleteDrawFeedback(TDrawFeedback *f) = 0;
-
-   virtual void        Detach(Option_t * = "") = 0;
-
-   virtual TVirtualProofMgr *GetManager() { return fManager; }
-   virtual void        SetManager(TVirtualProofMgr *mgr) { fManager = mgr; }
-
-   virtual void        ActivateWorker(const char *ord) = 0;
-   virtual void        DeactivateWorker(const char *ord) = 0;
-
-   virtual const char *GetDataPoolUrl() const { return fDataPoolUrl; }
-   virtual void        SetDataPoolUrl(const char *url) { fDataPoolUrl = url; }
-
-   static void         SetTProofHook(TProof_t proofhook);
-   static TProof_t     GetTProofHook();
-
-   static TVirtualProof *Open(const char *url = 0, const char *conffile = 0,
-                              const char *confdir = 0, Int_t loglevel = 0);
-   static Int_t        Reset(const char *url, const char *usr = 0);
-
-   static void          AddEnvVar(const char *name, const char *value);
-   static void          DelEnvVar(const char *name);
-   static const TList  *GetEnvVars();
-   static void          ResetEnvVars();
-
-   ClassDef(TVirtualProof,0)  // Abstract PROOF interface
-};
-#endif
diff --git a/base/inc/TVirtualProofMgr.h b/base/inc/TVirtualProofMgr.h
deleted file mode 100644
index 95a0caebd8f..00000000000
--- a/base/inc/TVirtualProofMgr.h
+++ /dev/null
@@ -1,138 +0,0 @@
-// @(#)root/base:$Name:  $:$Id: TVirtualProofMgr.h,v 1.3 2006/06/02 15:14:35 rdm Exp $
-// Author: G. Ganis, Nov 2005
-
-/*************************************************************************
- * Copyright (C) 1995-2005, Rene Brun and Fons Rademakers.               *
- * All rights reserved.                                                  *
- *                                                                       *
- * For the licensing terms see $ROOTSYS/LICENSE.                         *
- * For the list of contributors see $ROOTSYS/README/CREDITS.             *
- *************************************************************************/
-
-#ifndef ROOT_TVirtualProofMgr
-#define ROOT_TVirtualProofMgr
-
-
-//////////////////////////////////////////////////////////////////////////
-//                                                                      //
-// TVirtualProofMgr                                                     //
-//                                                                      //
-// Abstract interface to the manager for PROOF sessions.                //
-// The PROOF manager interacts with the PROOF server coordinator to     //
-// create or destroy a PROOF session, attach to or detach from          //
-// existing one, and to monitor any client activity on the cluster.     //
-// At most one manager instance per server is allowed.                  //
-//                                                                      //
-//////////////////////////////////////////////////////////////////////////
-
-#ifndef ROOT_TNamed
-#include "TNamed.h"
-#endif
-#ifndef ROOT_TUrl
-#include "TUrl.h"
-#endif
-
-class TList;
-class TVirtualProof;
-class TVirtualProofDesc;
-class TVirtualProofMgr;
-
-typedef TVirtualProofMgr
-     *(*TVirtualProofMgr_t)(const char *, Int_t, const char *);
-
-class TVirtualProofMgr : public TNamed {
-
-public:
-   enum EServType { kProofd = 0, kXProofd = 1 };
-
-private:
-   static TVirtualProofMgr_t fgTProofMgrHook[2]; // Constructor hooks for TProofMgr
-   static TVirtualProofMgr_t GetProofMgrHook(const char *type);
-
-protected:
-   Int_t          fRemoteProtocol; // Protocol number run by the daemon server
-   EServType      fServType;       // Type of server: old-proofd, XrdProofd
-   TList         *fSessions;       // PROOF session managed by this server
-   TUrl           fUrl;            // Server URL
-
-   static TList   fgListOfManagers; // Sub-list of TROOT::ListOfProofs for managers
-
-   TVirtualProofMgr() : fRemoteProtocol(-1),
-                        fServType(kXProofd), fSessions(0), fUrl() { }
-
-public:
-   TVirtualProofMgr(const char *url, Int_t /*loglevel*/ = 0, const char * /*alias*/ = 0);
-   virtual ~TVirtualProofMgr();
-
-   virtual Bool_t      IsProofd() const { return (fServType == kProofd); }
-   virtual Bool_t      IsValid() const = 0;
-
-   virtual TVirtualProof *AttachSession(Int_t, Bool_t = kFALSE) = 0;
-   virtual TVirtualProof *CreateSession(const char * = 0, const char * = 0, Int_t = -1);
-   virtual void        DetachSession(Int_t, Option_t * = "") = 0;
-   virtual TVirtualProofDesc *GetProofDesc(Int_t id);
-   virtual Int_t       GetRemoteProtocol() const { return fRemoteProtocol; }
-   virtual const char *GetUrl() { return fUrl.GetUrl(); }
-   virtual Bool_t      MatchUrl(const char *url);
-   virtual TList      *QuerySessions(Option_t *opt = "S") = 0;
-   virtual Int_t       Reset(const char *usr = 0) = 0;
-   virtual void        ShowWorkers();
-   virtual void        SetAlias(const char *alias="") { TNamed::SetTitle(alias); }
-   virtual void        ShutdownSession(Int_t id) { DetachSession(id,"S"); }
-   virtual void        ShutdownSession(TVirtualProof *p);
-
-   static TList       *GetListOfManagers();
-
-   static void SetTProofMgrHook(TVirtualProofMgr_t pmh, const char *type = 0);
-
-   static TVirtualProofMgr *Create(const char *url, Int_t loglevel = -1,
-                                   const char *alias = 0, Bool_t xpd = kTRUE);
-
-   ClassDef(TVirtualProofMgr,0)  // Abstract PROOF manager interface
-};
-
-
-//
-// Metaclass describing the essentials of a PROOF session
-//
-class TVirtualProofDesc : public TNamed {
-public:
-   enum EStatus { kUnknown = -1, kIdle = 0, kRunning =1, kShutdown = 2};
-
-private:
-   Int_t          fLocalId;  // ID in the local list
-   Int_t          fStatus;   // Session status (see EStatus)
-   TVirtualProof *fProof;    // Related instance of TVirtualProof
-   Int_t          fRemoteId; // Remote ID assigned by the coordinator to the proofserv
-   TString        fUrl;      // Url of the connection
-
-public:
-   TVirtualProofDesc(const char *tag = 0, const char *alias = 0, const char *url = 0,
-                     Int_t id = -1, Int_t remid = -1, Int_t status = kIdle, TVirtualProof *p = 0)
-                    : TNamed(tag, alias),
-                      fLocalId(id), fProof(p), fRemoteId(remid), fUrl(url) { SetStatus(status); }
-   virtual ~TVirtualProofDesc() { }
-
-   Int_t          GetLocalId() const { return fLocalId; }
-   TVirtualProof *GetProof() const { return fProof; }
-   Int_t          GetRemoteId() const { return fRemoteId; }
-   Int_t          GetStatus() const { return fStatus; }
-   const char    *GetUrl() const { return fUrl; }
-
-   Bool_t         IsIdle() const { return (fStatus == kIdle) ? kTRUE : kFALSE; }
-   Bool_t         IsRunning() const { return (fStatus == kRunning) ? kTRUE : kFALSE; }
-   Bool_t         IsShuttingDown() const { return (fStatus == kShutdown) ? kTRUE : kFALSE; }
-
-   Bool_t         MatchId(Int_t id) const { return (fLocalId == id); }
-
-   void           Print(Option_t *opt = "") const;
-
-   void           SetStatus(Int_t st) { fStatus = (st < kIdle || st > kShutdown) ? -1 : st; }
-
-   void           SetProof(TVirtualProof *p) { fProof = p; }
-   void           SetRemoteId(Int_t id) { fRemoteId = id; }
-
-   ClassDef(TVirtualProofDesc,2)  // Abstract description of a proof session
-};
-
-#endif
diff --git a/base/src/TVirtualProof.cxx b/base/src/TVirtualProof.cxx
deleted file mode 100644
index f3aa7be906c..00000000000
--- a/base/src/TVirtualProof.cxx
+++ /dev/null
@@ -1,267 +0,0 @@
-// @(#)root/base:$Name:  $:$Id: TVirtualProof.cxx,v 1.11 2006/11/20 15:56:35 rdm Exp $
-// Author: Fons Rademakers   16/09/02
-
-/*************************************************************************
- * Copyright (C) 1995-2002, Rene Brun and Fons Rademakers.               *
- * All rights reserved.                                                  *
- *                                                                       *
- * For the licensing terms see $ROOTSYS/LICENSE.                         *
- * For the list of contributors see $ROOTSYS/README/CREDITS.             *
- *************************************************************************/
-
-//////////////////////////////////////////////////////////////////////////
-//                                                                      //
-// TVirtualProof                                                        //
-//                                                                      //
-// Abstract interface to the Parallel ROOT Facility, PROOF.             //
-// For more information on PROOF see the TProof class.                  //
-//                                                                      //
-//////////////////////////////////////////////////////////////////////////
-
-#include "TError.h"
-#include "TList.h"
-#include "TPluginManager.h"
-#include "TROOT.h"
-#include "TSystem.h"
-#include "TVirtualProof.h"
-
-TVirtualProof *gProof = 0;
-
-TProof_t TVirtualProof::fgProofHook = 0;     // Hook to the TProof constructor
-TList   *TVirtualProof::fgProofEnvList = 0;  // List of env vars for proofserv
-
-ClassImp(TVirtualProof)
-
-//_____________________________________________________________________________
-TVirtualProof *TVirtualProof::Open(const char *cluster, const char *conffile,
-                                   const char *confdir, Int_t loglevel)
-{
-   // Start a PROOF session on a specific cluster. If cluster is 0 (the
-   // default) then the PROOF Session Viewer GUI pops up and 0 is returned.
-   // If cluster is "" (empty string) then we connect to a PROOF session
-   // on the localhost ("proof://localhost"). Via conffile a specific
-   // PROOF config file in the confir directory can be specified.
-   // Use loglevel to set the default loging level for debugging.
-   // The appropriate instance of TVirtualProofMgr is created, if not
-   // yet existing. The instantiated TProof object is returned.
-   // Use TProof::cd() to switch between PROOF sessions.
-   // For more info on PROOF see the TProof ctor.
-
-   const char *pn = "TVirtualProof::Open";
-
-   // Make sure libProof and dependents are loaded and TProof can be created,
-   // dependents are loaded via the information in the [system].rootmap file
-   if (!cluster) {
-
-      TPluginManager *pm = gROOT->GetPluginManager();
-      if (!pm) {
-         ::Error(pn, "plugin manager not found");
-         return 0;
-      }
-
-      if (gROOT->IsBatch()) {
-         ::Error(pn, "we are in batch mode, cannot show PROOF Session Viewer");
-         return 0;
-      }
-      // start PROOF Session Viewer
-      TPluginHandler *sv = pm->FindHandler("TSessionViewer", "");
-      if (!sv) {
-         ::Error(pn, "no plugin found for TSessionViewer");
-         return 0;
-      }
-      if (sv->LoadPlugin() == -1) {
-         ::Error(pn, "plugin for TSessionViewer could not be loaded");
-         return 0;
-      }
-      sv->ExecPlugin(0);
-      return 0;
-
-   } else {
-
-      TVirtualProof *proof = 0;
-
-      // If the master was specified as "", use "localhost"
-      TString fqdn = cluster;
-      if (fqdn == "")
-         fqdn = "localhost";
-
-      TUrl u(fqdn);
-      // in case user gave as url: "machine.dom.ain", replace
-      // "http" by "proof" and "80" by "1093"
-      if (!strcmp(u.GetProtocol(), TUrl("a").GetProtocol()))
-         u.SetProtocol("proof");
-      if (u.GetPort() == TUrl("a").GetPort())
-         u.SetPort(1093);
-
-      // Find out if we are required to attach to a specific session
-      TString o(u.GetOptions());
-      Int_t locid = -1;
-      Bool_t create = kFALSE;
-      if (o.Length() > 0) {
-         if (o.BeginsWith("N",TString::kIgnoreCase)) {
-            create = kTRUE;
-         } else if (o.IsDigit()) {
-            locid = o.Atoi();
-         }
-         u.SetOptions("");
-      }
-
-      // Attach-to or create the appropriate manager
-      TVirtualProofMgr *mgr = TVirtualProofMgr::Create(u.GetUrl());
-
-      if (mgr && mgr->IsValid()) {
-
-         // If XProofd we always attempt an attach first (unless
-         // explicitely not requested).
-         Bool_t attach = (create || mgr->IsProofd()) ? kFALSE : kTRUE;
-         if (attach) {
-            TVirtualProofDesc *d = 0;
-            if (locid < 0)
-               // Get the list of sessions
-               d = (TVirtualProofDesc *) mgr->QuerySessions("")->First();
-            else
-               d = (TVirtualProofDesc *) mgr->GetProofDesc(locid);
-            if (d) {
-               proof = (TVirtualProof*) mgr->AttachSession(d->GetLocalId());
-               if (!proof || !proof->IsValid()) {
-                  if (locid)
-                     ::Error(pn, "new session could not be attached");
-                  SafeDelete(proof);
-               }
-            }
-         }
-
-         // start the PROOF session
-         if (!proof) {
-            proof = (TVirtualProof*) mgr->CreateSession(conffile, confdir, loglevel);
-            if (!proof || !proof->IsValid()) {
-               ::Error(pn, "new session could not be created");
-               SafeDelete(proof);
-            }
-         }
-      }
-      return proof;
-   }
-}
-
-//_____________________________________________________________________________
-Int_t TVirtualProof::Reset(const char *url, const char *usr)
-{
-   // Reset the entry associated with the entity defined by 'url', which is
-   // in the form
-   //                "[proof://][user@]master.url[:port]"
-   // If 'user' has the privileges it can also ask to reset the entry of a
-   // different user specified by 'usr'; use 'usr'=='*' to reset all the
-   // sessions know remotely.
-   // 'Reset' means that all the PROOF sessions owned by the user at this
-   // master are terminated or killed, any other client connections (from other
-   // shells) closed, and the protocol instance reset and given back to the stack.
-   // After this call the user will be asked to login again and will start
-   // from scratch.
-   // To be used when the cluster is not behaving.
-   // Return 0 on success, -1 if somethign wrng happened.
-
-   if (!url)
-      return -1;
-
-   const char *pn = "TVirtualProof::Reset";
-
-   // If the master was specified as "", try to get the localhost FQDN
-   if (!strlen(url))
-      url = gSystem->GetHostByName(gSystem->HostName()).GetHostName();
-
-   TUrl u(url);
-   // in case user gave as url: "machine.dom.ain", replace
-   // "http" by "proof" and "80" by "1093"
-   if (!strcmp(u.GetProtocol(), TUrl("a").GetProtocol()))
-      u.SetProtocol("proof");
-   if (u.GetPort() == TUrl("a").GetPort())
-      u.SetPort(1093);
-
-   // Attach-to or create the appropriate manager
-   TVirtualProofMgr *mgr = TVirtualProofMgr::Create(u.GetUrl());
-
-   if (mgr && mgr->IsValid())
-      if (!(mgr->IsProofd()))
-         // Ask the manager to reset the entry
-         return mgr->Reset(usr);
-      else
-         ::Info(pn,"proofd: functionality not supported by server");
-
-   else
-      ::Info(pn,"could not open a valid connection to %s", u.GetUrl());
-
-   // Done
-   return -1;
-}
-
-//_____________________________________________________________________________
-void TVirtualProof::SetTProofHook(TProof_t proofhook)
-{
-   // Set hook to TProof ctor.
-
-   fgProofHook = proofhook;
-}
-
-//_____________________________________________________________________________
-const TList *TVirtualProof::GetEnvVars()
-{
-   // Get environemnt variables.
-
-   return fgProofEnvList;
-}
-
-//_____________________________________________________________________________
-TProof_t TVirtualProof::GetTProofHook()
-{
-   // Get the TProof hook.
-
-   return fgProofHook;
-}
-
-//_____________________________________________________________________________
-void TVirtualProof::AddEnvVar(const char *name, const char *value)
-{
-   // Add an variable to the list of environment variables passed to proofserv
-   // on the master and slaves
-
-   if (gDebug > 0) ::Info("TVirtualProof::AddEnvVar","%s=%s", name, value);
-
-   if (fgProofEnvList == 0) {
-      // initialize the list if needed
-      fgProofEnvList = new TList;
-      fgProofEnvList->SetOwner();
-   } else {
-      // replace old entries with the same name
-      TObject *o = fgProofEnvList->FindObject(name);
-      if (o != 0) {
-         fgProofEnvList->Remove(o);
-      }
-   }
-   fgProofEnvList->Add(new TNamed(name, value));
-}
-
-//_____________________________________________________________________________
-void TVirtualProof::DelEnvVar(const char *name)
-{
-   // Remove an variable from the list of environment variables passed to proofserv
-   // on the master and slaves
-
-   if (fgProofEnvList == 0) return;
-
-   TObject *o = fgProofEnvList->FindObject(name);
-   if (o != 0) {
-      fgProofEnvList->Remove(o);
-   }
-}
-
-//_____________________________________________________________________________
-void TVirtualProof::ResetEnvVars()
-{
-   // Clear the list of environment variables passed to proofserv
-   // on the master and slaves
-
-   if (fgProofEnvList == 0) return;
-
-   SafeDelete(fgProofEnvList);
-}
diff --git a/base/src/TVirtualProofMgr.cxx b/base/src/TVirtualProofMgr.cxx
deleted file mode 100644
index d498ac50b99..00000000000
--- a/base/src/TVirtualProofMgr.cxx
+++ /dev/null
@@ -1,371 +0,0 @@
-// @(#)root/base:$Name:  $:$Id: TVirtualProofMgr.cxx,v 1.10 2006/11/16 17:17:37 rdm Exp $
-// Author: G. Ganis, Nov 2005
-
-/*************************************************************************
- * Copyright (C) 1995-2005, Rene Brun and Fons Rademakers.               *
- * All rights reserved.                                                  *
- *                                                                       *
- * For the licensing terms see $ROOTSYS/LICENSE.                         *
- * For the list of contributors see $ROOTSYS/README/CREDITS.             *
- *************************************************************************/
-
-//////////////////////////////////////////////////////////////////////////
-//                                                                      //
-// TVirtualProofMgr                                                     //
-//                                                                      //
-// Abstract interface to the manager for PROOF sessions.                //
-// The PROOF manager interacts with the PROOF server coordinator to     //
-// create or destroy a PROOF session, attach to or detach from          //
-// existing one, and to monitor any client activity on the cluster.     //
-// At most one manager instance per server is allowed.                  //
-//                                                                      //
-//////////////////////////////////////////////////////////////////////////
-
-#ifdef R__HAVE_CONFIG
-#include "RConfigure.h"
-#endif
-
-#include "TError.h"
-#include "TInetAddress.h"
-#include "TList.h"
-#include "TROOT.h"
-#include "TSystem.h"
-#include "TVirtualMutex.h"
-#include "TVirtualProof.h"
-#include "TVirtualProofMgr.h"
-
-ClassImp(TVirtualProofMgr)
-
-
-// Sub-list of TROOT::fProofs with managers
-TList TVirtualProofMgr::fgListOfManagers;
-TVirtualProofMgr_t TVirtualProofMgr::fgTProofMgrHook[2] = { 0, 0 };
-
-//______________________________________________________________________________
-TVirtualProofMgr::TVirtualProofMgr(const char *url, Int_t, const char *)
-                 : TNamed("",""), fRemoteProtocol(-1),
-                   fServType(kXProofd), fSessions(0)
-{
-   // Constructor
-
-   // AVoid problems with empty URLs
-   fUrl = (!url || strlen(url) <= 0) ? TUrl("proof://localhost") : TUrl(url);
-}
-
-//______________________________________________________________________________
-TVirtualProofMgr::~TVirtualProofMgr()
-{
-   // Destroy a TVirtualProofMgr instance
-
-   SafeDelete(fSessions);
-
-   fgListOfManagers.Remove(this);
-   gROOT->GetListOfProofs()->Remove(this);
-}
-
-//______________________________________________________________________________
-void TVirtualProofMgr::ShowWorkers()
-{
-   // Show available workers
-
-   AbstractMethod("ShowWorkers");
-}
-
-//______________________________________________________________________________
-TVirtualProofDesc *TVirtualProofMgr::GetProofDesc(Int_t id)
-{
-   // Get TVirtualProof instance corresponding to 'id'.
-
-   if (id > 0) {
-      TVirtualProofDesc *d = 0;
-      // Retrieve an updated list
-      QuerySessions("");
-      if (fSessions) {
-         TIter nxd(fSessions);
-         while ((d = (TVirtualProofDesc *)nxd())) {
-            if (d->MatchId(id))
-               return d;
-         }
-      }
-   }
-
-   return 0;
-}
-
-//______________________________________________________________________________
-void TVirtualProofMgr::ShutdownSession(TVirtualProof *p)
-{
-   // Discard PROOF session 'p'
-
-   if (p) {
-      TVirtualProofDesc *d = 0;
-      if (fSessions) {
-         TIter nxd(fSessions);
-         while ((d = (TVirtualProofDesc *)nxd())) {
-            if (p == d->GetProof()) {
-               fSessions->Remove(d);
-               delete d;
-               break;
-            }
-         }
-      }
-   }
-}
-
-//______________________________________________________________________________
-TVirtualProof *TVirtualProofMgr::CreateSession(const char *cfg,
-                                               const char *cfgdir, Int_t loglevel)
-{
-   // Create a new remote session (master and associated workers).
-
-   // Create
-   if (IsProofd())
-      fUrl.SetOptions("std");
-
-   TProof_t proofhook = TVirtualProof::GetTProofHook();
-   if (!proofhook) {
-
-      // Load the library containing TProof ...
-#ifdef ROOTLIBDIR
-      TString prooflib = TString(ROOTLIBDIR) + "/libProof";
-#else
-#ifndef WIN32
-      TString prooflib = TString(gRootDir) + "/lib/libProof";
-#else
-      TString prooflib = TString(gRootDir) + "/bin/libProof";
-#endif
-#endif
-      char *p = 0;
-      if ((p = gSystem->DynamicPathName(prooflib, kTRUE))) {
-         delete[] p;
-         if (gSystem->Load(prooflib) == -1)
-            Error("CreateSession", "can't load %s", prooflib.Data());
-         proofhook = TVirtualProof::GetTProofHook();
-      } else
-         Error("CreateSession", "can't locate %s", prooflib.Data());
-   }
-   if (!proofhook) {
-      Error("CreateSession", "hook for TVirtualProof could not be loaded");
-      return 0;
-   }
-   // Create the instance
-   TVirtualProof *p =
-     (TVirtualProof*) (*proofhook)(fUrl.GetUrl(), cfg, cfgdir, loglevel, 0, this);
-
-   if (p && p->IsValid()) {
-
-      // Save record about this session
-      Int_t ns = 1;
-      if (fSessions) {
-         // To avoid ambiguities in case of removal of some elements
-         if (fSessions->Last())
-            ns = ((TVirtualProofDesc *)(fSessions->Last()))->GetLocalId() + 1;
-      } else {
-         // Create the list
-         fSessions = new TList;
-      }
-
-      // Create the description class
-      Int_t st = (p->IsIdle()) ? TVirtualProofDesc::kIdle : TVirtualProofDesc::kRunning ;
-      TVirtualProofDesc *d =
-         new TVirtualProofDesc(p->GetName(), p->GetTitle(), p->GetUrl(),
-                               ns, p->GetSessionID(), st, p);
-      fSessions->Add(d);
-
-   } else {
-      // Session creation failed
-      Error("CreateSession", "creating PROOF session");
-      SafeDelete(p);
-   }
-
-   // We are done
-   return p;
-}
-
-//______________________________________________________________________________
-Bool_t TVirtualProofMgr::MatchUrl(const char *url)
-{
-   // Checks if 'url' refers to the same 'user@host:port' entity as the URL
-   // in memory
-
-   TUrl u(url);
-
-   // Correct URL protocol
-   if (!strcmp(u.GetProtocol(), TUrl("a").GetProtocol()))
-      u.SetProtocol("proof");
-
-   // Correct port
-   if (u.GetPort() == TUrl("a").GetPort()) {
-      Int_t port = gSystem->GetServiceByName("rootd");
-      if (port < 0)
-         port = 1094;
-      u.SetPort(port);
-   }
-
-   // Now we can check
-   if (!strcmp(u.GetHostFQDN(), fUrl.GetHostFQDN()))
-      if (u.GetPort() == fUrl.GetPort())
-         if (strlen(u.GetUser()) <= 0 || !strcmp(u.GetUser(),fUrl.GetUser()))
-            return kTRUE;
-
-   // Match failed
-   return kFALSE;
-}
-
-//________________________________________________________________________
-TList *TVirtualProofMgr::GetListOfManagers()
-{
-   // Extract pointers to PROOF managers from TROOT::fProofs.
-
-   // Update the list with new entries
-   if (gROOT->GetListOfProofs()) {
-      TIter nxp(gROOT->GetListOfProofs());
-      TVirtualProofMgr *p = 0;
-      while ((p = dynamic_cast<TVirtualProofMgr *> (nxp())))
-         if (!fgListOfManagers.FindObject(p))
-            fgListOfManagers.Add(p);
-   }
-
-   // Get rid of invalid entries and notify
-   if (fgListOfManagers.GetSize() > 0) {
-      TIter nxp(&fgListOfManagers);
-      TObject *o = 0;
-      Int_t nm = 0;
-      while ((o = nxp())) {
-         if (!(gROOT->GetListOfProofs()->FindObject(o))) {
-            fgListOfManagers.Remove(o);
-         } else {
-            TVirtualProofMgr *p = (TVirtualProofMgr *)o;
-            Printf("// #%d: \"%s\" (%s)", ++nm, p->GetName(), p->GetTitle());
-         }
-      }
-   } else {
-      if (gDebug > 0)
-         Printf("No managers found");
-   }
-
-   // We are done
-   return &fgListOfManagers;
-}
-
-//______________________________________________________________________________
-TVirtualProofMgr *TVirtualProofMgr::Create(const char *url, Int_t loglevel,
-                                           const char *alias, Bool_t xpd)
-{
-   // Static method returning the appropriate TProofMgr object using
-   // the plugin manager.
-   TVirtualProofMgr *m= 0;
-
-   // Make sure we do not have already a manager for this URL
-   TList *lm = TVirtualProofMgr::GetListOfManagers();
-   if (lm) {
-      TIter nxm(lm);
-      while ((m = (TVirtualProofMgr *)nxm()))
-         if (m->MatchUrl(url))
-            if (m->IsValid()) {
-               return m;
-            } else {
-               fgListOfManagers.Remove(m);
-               SafeDelete(m);
-               break;
-            }
-   }
-
-   m = 0;
-   Bool_t trystd = kTRUE;
-
-   // If required, we assume first that the remote server is based on XrdProofd
-   if (xpd) {
-      TVirtualProofMgr_t cm = TVirtualProofMgr::GetProofMgrHook("xpd");
-      if (cm) {
-         m = (TVirtualProofMgr *) (*cm)(url, loglevel, alias);
-         // Update trystd flag
-         trystd = (m && !(m->IsValid()) && m->IsProofd()) ? kTRUE : kFALSE;
-      }
-   }
-
-   // If the first attempt failed, we instantiate an old interface
-   if (trystd) {
-      SafeDelete(m);
-      TVirtualProofMgr_t cm = TVirtualProofMgr::GetProofMgrHook("std");
-      if (cm)
-         m = (TVirtualProofMgr *) (*cm)(url, loglevel, alias);
-   }
-
-   // Record the new manager, if any
-   if (m) {
-      fgListOfManagers.Add(m);
-      if (m->IsValid() && !(m->IsProofd())) {
-         R__LOCKGUARD2(gROOTMutex);
-         gROOT->GetListOfProofs()->Add(m);
-         gROOT->GetListOfSockets()->Add(m);
-      }
-   }
-
-   // We are done
-   return m;
-}
-
-//________________________________________________________________________
-TVirtualProofMgr_t TVirtualProofMgr::GetProofMgrHook(const char *type)
-{
-   // Get the specified constructor hook.
-   // We do this without the plugin manager because it blocks the
-   // CINT mutex breaking the parallel startup.
-
-   static const char *libs[] = { "/libProof", "/libProofx" };
-
-   // Find index (default: classic)
-   Int_t idx = (type && !strncmp(type,"xpd",3)) ? 1 : 0;
-
-   if (!fgTProofMgrHook[idx]) {
-      // Load the appropriate library ...
-#ifdef ROOTLIBDIR
-      TString prooflib = TString(ROOTLIBDIR);
-#else
-#ifndef WIN32
-      TString prooflib = TString(gRootDir) + "/lib";
-#else
-      TString prooflib = TString(gRootDir) + "/bin";
-#endif
-#endif
-      prooflib += libs[idx];
-      char *p = 0;
-      if ((p = gSystem->DynamicPathName(prooflib, kTRUE))) {
-         delete[] p;
-         if (gSystem->Load(prooflib) == -1)
-            ::Error("TVirtualProofMgr::GetProofMgrCtor",
-                       "can't load %s", prooflib.Data());
-      } else
-         ::Error("TVirtualProofMgr::GetProofMgrCtor",
-                 "can't locate %s", prooflib.Data());
-   }
-
-   // Done
-   return fgTProofMgrHook[idx];
-}
-
-//_____________________________________________________________________________
-void TVirtualProofMgr::SetTProofMgrHook(TVirtualProofMgr_t pmh, const char *t)
-{
-   // Set hook to TProofMgr ctor
-
-   // Find index (default: classic)
-   Int_t idx = (t && !strncmp(t,"xpd",3)) ? 1 : 0;
-
-   fgTProofMgrHook[idx] = pmh;
-}
-
-ClassImp(TVirtualProofDesc)
-
-//________________________________________________________________________
-void TVirtualProofDesc::Print(Option_t *) const
-{
-   // Dump the content to the screen.
-   const char *st[] = { "unknown", "idle", "processsing", "shutting down"};
-
-   Printf("// # %d", fLocalId);
-   Printf("// alias: %s, url: \"%s\"", GetTitle(), GetUrl());
-   Printf("// tag: %s", GetName());
-   Printf("// status: %s, attached: %s (remote ID: %d)",st[fStatus+1], (fProof ? "YES" : "NO"), fRemoteId);
-}
diff --git a/config/rootrc.in b/config/rootrc.in
index a2e4d6af7ba..a4340daea50 100644
--- a/config/rootrc.in
+++ b/config/rootrc.in
@@ -1,4 +1,4 @@
-# @(#)root/config:$Name:  $:$Id: rootrc.in,v 1.154 2006/11/25 09:28:22 brun Exp $
+# @(#)root/config:$Name:  $:$Id: rootrc.in,v 1.155 2006/11/27 14:14:24 rdm Exp $
 # Author: Fons Rademakers  22/09/95
 
 # ROOT Environment settings are handled via the class TEnv. To see
@@ -500,33 +500,32 @@ Plugin.TGuiFactory:  root      TRootGuiFactory Gui        "TRootGuiFactory()"
 +Plugin.TGuiFactory: win32     TWin32GuiFactory Win32     "TWin32GuiFactory()"
 +Plugin.TGuiFactory: qt        TQtRootGuiFactory QtRoot   "TQtRootGuiFactory()"
 Plugin.TGPasswdDialog: *       TGPasswdDialog Gui         "TGPasswdDialog(const char*,char*,Int_t,UInt_t,UInt_t)"
-Plugin.TVirtualProof:  ^condor: TProofCondor Proof        "TProofCondor(const char*,const char*,const char*,Int_t)"
-+Plugin.TVirtualProof: ^sm:    TProofSuperMaster Proof    "TProofSuperMaster(const char*,const char*,const char*,Int_t)"
-+Plugin.TVirtualProof: ^peac:  TProofPEAC    Peac         "TProofPEAC(const char*,const char*,const char*,Int_t)"
-+Plugin.TVirtualProof:       * TProof        Proof        "TProof(const char*,const char*,const char*,Int_t,const char *)"
-Plugin.TProofProgressDialog: * TProofProgressDialog ProofGui  "TProofProgressDialog(TVirtualProof*,const char*,Int_t,Long64_t,Long64_t)"
-Plugin.TDataProgressDialog:  * TDataProgressDialog  peacGui   "TDataProgressDialog(TVirtualProof*,const char*,Int_t,Long64_t)"
+Plugin.TProof:  ^condor:       TProofCondor Proof         "TProofCondor(const char*,const char*,const char*,Int_t)"
++Plugin.TProof: ^sm:           TProofSuperMaster Proof    "TProofSuperMaster(const char*,const char*,const char*,Int_t)"
++Plugin.TProof: ^peac:         TProofPEAC    Peac         "TProofPEAC(const char*,const char*,const char*,Int_t)"
++Plugin.TProof: *              TProof        Proof        "TProof(const char*,const char*,const char*,Int_t,const char *)"
+Plugin.TProofProgressDialog: * TProofProgressDialog ProofGui  "TProofProgressDialog(TProof*,const char*,Int_t,Long64_t,Long64_t)"
+Plugin.TDataProgressDialog:  * TDataProgressDialog  peacGui   "TDataProgressDialog(TProof*,const char*,Int_t,Long64_t)"
 Plugin.TProofServ:    ^xpd     TXProofServ   Proofx       "TXProofServ(Int_t *,char **)"
 Plugin.TSlave: ^xpd  TXSlave Proofx  "TXSlave(const char *,const char *,Int_t,const char *, TProof *,Int_t,const char *,const char *)"
-Plugin.TChain:        ^proof   TProofChain   Proof        "TProofChain(TChain *)"
-Plugin.TVirtualPadEditor: Ged    TGedEditor    Ged       "TGedEditor(TCanvas*)"
-Plugin.TVirtualProofMgr: ^std  TProofMgr    Proof        "TProofMgr(const char *,Int_t,const char *)"
-@hasxrd@+Plugin.TVirtualProofMgr:  ^xpd  TXProofMgr   Proofx       "TXProofMgr(const char *,Int_t,const char *)"
-Plugin.TVirtualViewer3D:    x3d TViewerX3D    X3d   "TViewerX3D(TVirtualPad*)"
-+Plugin.TVirtualViewer3D:   ogl TGLSAViewer RGL   "TGLSAViewer(TVirtualPad*)"
-+Plugin.TVirtualViewer3D:   gl TGLViewer    RGL "TGLViewer(TVirtualPad*)"
-Plugin.TVirtualDragManager: *   TGuiBldDragManager GuiBld "TGuiBldDragManager()"
-Plugin.TGuiBuilder:         *   TRootGuiBuilder    GuiBld "TRootGuiBuilder()"
+Plugin.TChain:          ^proof TProofChain   Proof        "TProofChain(TChain *)"
+Plugin.TVirtualPadEditor:  Ged TGedEditor    Ged          "TGedEditor(TCanvas*)"
+@hasxrd@Plugin.TProofMgr: ^xpd TXProofMgr    Proofx       "TXProofMgr(const char *,Int_t,const char *)"
+Plugin.TVirtualViewer3D:   x3d TViewerX3D    X3d          "TViewerX3D(TVirtualPad*)"
++Plugin.TVirtualViewer3D:  ogl TGLSAViewer   RGL          "TGLSAViewer(TVirtualPad*)"
++Plugin.TVirtualViewer3D:   gl TGLViewer     RGL          "TGLViewer(TVirtualPad*)"
+Plugin.TVirtualDragManager:  * TGuiBldDragManager GuiBld  "TGuiBldDragManager()"
+Plugin.TGuiBuilder:          * TRootGuiBuilder    GuiBld  "TRootGuiBuilder()"
 Unix.*.Plugin.TVirtualGLImp:  * TX11GL       RGL          "TX11GL()"
 WinNT.*.Plugin.TVirtualGLImp: * TGWin32GL    RGL          "TGWin32GL()"
-Unix.*.Plugin.TGLManager:   *   TX11GLManager    RGL "TX11GLManager()"
-WinNT.*.Plugin.TGLManager:  *   TGWin32GLManager RGL "TGWin32GLManager()"
-Plugin.TGLHistPainter:        * TGLHistPainter   RGL "TGLHistPainter(TH1*)"
-Plugin.TVirtualFFT:     fftwc2c TFFTComplex     FFTW   "TFFTComplex(Int_t, Int_t *,Bool_t)"
-+Plugin.TVirtualFFT:    fftwc2r TFFTComplexReal FFTW   "TFFTComplexReal(Int_t,Int_t *, Bool_t)"
-+Plugin.TVirtualFFT:    fftwr2c TFFTRealComplex FFTW   "TFFTRealComplex(Int_t,Int_t *, Bool_t)"
-+Plugin.TVirtualFFT:    fftwr2r TFFTReal        FFTW   "TFFTReal(Int_t, Int_t *,Bool_t)"
-Plugin.TFitEditor         *  TFitEditor       FitPanel "TFitEditor(const TVirtualPad*, const TObject*)"
+Unix.*.Plugin.TGLManager:     * TX11GLManager    RGL      "TX11GLManager()"
+WinNT.*.Plugin.TGLManager:    * TGWin32GLManager RGL      "TGWin32GLManager()"
+Plugin.TGLHistPainter:        * TGLHistPainter   RGL      "TGLHistPainter(TH1*)"
+Plugin.TVirtualFFT:     fftwc2c TFFTComplex     FFTW      "TFFTComplex(Int_t, Int_t *,Bool_t)"
++Plugin.TVirtualFFT:    fftwc2r TFFTComplexReal FFTW      "TFFTComplexReal(Int_t,Int_t *, Bool_t)"
++Plugin.TVirtualFFT:    fftwr2c TFFTRealComplex FFTW      "TFFTRealComplex(Int_t,Int_t *, Bool_t)"
++Plugin.TVirtualFFT:    fftwr2r TFFTReal        FFTW      "TFFTReal(Int_t, Int_t *,Bool_t)"
+Plugin.TFitEditor         *     TFitEditor      FitPanel  "TFitEditor(const TVirtualPad*, const TObject*)"
 
 # Example of custom setting for the Rint application (root.exe).
 # This overrides the default specified above for a generic application.
diff --git a/peac/inc/TPEAC.h b/peac/inc/TPEAC.h
index fc1c3d63685..afa4e0a6c67 100644
--- a/peac/inc/TPEAC.h
+++ b/peac/inc/TPEAC.h
@@ -1,4 +1,4 @@
-// @(#)root/peac:$Name:$:$Id:$
+// @(#)root/peac:$Name:  $:$Id: TPEAC.h,v 1.1 2005/02/07 18:02:36 rdm Exp $
 // Author: Maarten Ballintijn    21/10/2004
 // Author: Kris Gulbrandsen      21/10/2004
 
@@ -32,7 +32,7 @@
 
 class TGM;
 class TDSet;
-class TVirtualProof;
+class TProof;
 
 
 class TPEAC : public TObject {
@@ -41,7 +41,7 @@ private:
    TGM           *fGM;        //global manager object
    TString        fSessionID; //session id gotten from clarens
    TString        fDataSet;   //dataset used to create session
-   TVirtualProof *fProof;     //proof session started in StartSession
+   TProof        *fProof;     //proof session started in StartSession
 
    TPEAC();
 
diff --git a/peac/inc/TProofStartupDialog.h b/peac/inc/TProofStartupDialog.h
index c54665723c9..3f3f900c901 100644
--- a/peac/inc/TProofStartupDialog.h
+++ b/peac/inc/TProofStartupDialog.h
@@ -1,4 +1,4 @@
-// @(#)root/peac:$Name:$:$Id:$
+// @(#)root/peac:$Name:  $:$Id: TProofStartupDialog.h,v 1.1 2005/02/07 18:02:36 rdm Exp $
 // Author: Maarten Ballintijn    21/10/2004
 // Author: Kris Gulbrandsen      21/10/2004
 
@@ -31,13 +31,13 @@ class TGProgressBar;
 class TGTextButton;
 class TGCheckButton;
 class TGLabel;
-class TVirtualProof;
+class TProof;
 
 
 class TProofStartupDialog {
 
 private:
-   TVirtualProof      *fProof;
+   TProof             *fProof;
    TGTransientFrame   *fDialog;  // transient frame, main dialog window
    TGProgressBar      *fBar;     // progress bar
    TGLabel            *fFilesBytes;
@@ -52,7 +52,7 @@ private:
 
 
 public:
-   TProofStartupDialog(TVirtualProof *proof, const Char_t *dataset,
+   TProofStartupDialog(TProof *proof, const Char_t *dataset,
                        Int_t nfiles, Long64_t totalbytes);
    virtual ~TProofStartupDialog();
    void Progress(Long64_t totalbytes, Long64_t bytesready);
diff --git a/peac/src/TPEAC.cxx b/peac/src/TPEAC.cxx
index 46270e473ce..8508103a301 100644
--- a/peac/src/TPEAC.cxx
+++ b/peac/src/TPEAC.cxx
@@ -1,4 +1,4 @@
-// @(#)root/peac:$Name:  $:$Id: TPEAC.cxx,v 1.1 2005/02/07 18:02:36 rdm Exp $
+// @(#)root/peac:$Name:  $:$Id: TPEAC.cxx,v 1.2 2006/08/09 07:15:42 rdm Exp $
 // Author: Maarten Ballintijn    21/10/2004
 // Author: Kris Gulbrandsen      21/10/2004
 
@@ -29,7 +29,7 @@
 #include "TROOT.h"
 #include "TSystem.h"
 #include "TUrl.h"
-#include "TVirtualProof.h"
+#include "TProof.h"
 
 
 namespace {
@@ -134,7 +134,7 @@ TDSet *TPEAC::StartSession(const Char_t *dataset)
    fDataSet   = dataset;
 
    // start proof
-   fProof = TVirtualProof::Open(purl.GetUrl(), Form("peac:%s", sessionid.Data()));
+   fProof = TProof::Open(purl.GetUrl(), Form("peac:%s", sessionid.Data()));
 
    if (!fProof || !fProof->IsValid()) {
       Error("StartSession", "PROOF session could not be started");
@@ -144,7 +144,7 @@ TDSet *TPEAC::StartSession(const Char_t *dataset)
    }
 
    //call EndSession when proof is destroyed
-   fProof->Connect("~TVirtualProof()", "TPEAC", this, "EndSessionCallback()");
+   fProof->Connect("~TProof()", "TPEAC", this, "EndSessionCallback()");
 
    //wait until data is ready
    Long64_t totalbytes, bytesready;
@@ -188,7 +188,7 @@ void TPEAC::EndSessionCallback()
    }
 
    if (fProof) {
-      fProof->Disconnect("~TVirtualProof()", this, "EndSessionCallback()");
+      fProof->Disconnect("~TProof()", this, "EndSessionCallback()");
       fProof = 0;
    }
    fGM->DestroySession(fSessionID);
@@ -212,7 +212,7 @@ void TPEAC::EndSession()
    }
 
    if (fProof) {
-      fProof->Disconnect("~TVirtualProof()", this, "EndSessionCallback()");
+      fProof->Disconnect("~TProof()", this, "EndSessionCallback()");
       delete fProof;
       fProof = 0;
    }
diff --git a/peac/src/TProofStartupDialog.cxx b/peac/src/TProofStartupDialog.cxx
index defe709bc22..46c6988e018 100644
--- a/peac/src/TProofStartupDialog.cxx
+++ b/peac/src/TProofStartupDialog.cxx
@@ -1,4 +1,4 @@
-// @(#)root/peac:$Name:$:$Id:$
+// @(#)root/peac:$Name:  $:$Id: TProofStartupDialog.cxx,v 1.1 2005/02/07 18:02:36 rdm Exp $
 // Author: Maarten Ballintijn    21/10/2004
 // Author: Kris Gulbrandsen      21/10/2004
 
@@ -24,13 +24,13 @@
 #include "TGProgressBar.h"
 #include "TSystem.h"
 #include "TTimer.h"
-#include "TVirtualProof.h"
+#include "TProof.h"
 
 
 ClassImp(TProofStartupDialog)
 
 //______________________________________________________________________________
-TProofStartupDialog::TProofStartupDialog(TVirtualProof *proof,
+TProofStartupDialog::TProofStartupDialog(TProof *proof,
                                          const Char_t *dataset,
                                          Int_t nfiles,
                                          Long64_t totalbytes)
diff --git a/proof/inc/LinkDef.h b/proof/inc/LinkDef.h
index 23b317dda5a..4c736763fd9 100644
--- a/proof/inc/LinkDef.h
+++ b/proof/inc/LinkDef.h
@@ -1,4 +1,4 @@
-/* @(#)root/proof:$Name:  $:$Id: LinkDef.h,v 1.33 2006/07/01 12:05:49 rdm Exp $ */
+/* @(#)root/proof:$Name:  $:$Id: LinkDef.h,v 1.34 2006/11/27 14:14:23 rdm Exp $ */
 
 /*************************************************************************
  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
@@ -26,6 +26,7 @@
 #pragma link C++ class TDSetElement+;
 #pragma link C++ class TProofChain+;
 #pragma link C++ class TProofMgr;
+#pragma link C++ class TProofDesc;
 #pragma link C++ class TProof;
 #pragma link C++ class TProofCondor;
 #pragma link C++ class TProofSuperMaster;
@@ -76,4 +77,6 @@
 #pragma link C++ class std::pair<TDSet*, TString>;
 #pragma link C++ class std::pair<TDSetElement*, TString>;
 
+#pragma link C++ global gProof;
+
 #endif
diff --git a/proof/inc/TDSet.h b/proof/inc/TDSet.h
index ac5bb8fa4a9..c26facf42b4 100644
--- a/proof/inc/TDSet.h
+++ b/proof/inc/TDSet.h
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TDSet.h,v 1.19 2006/08/06 07:15:00 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TDSet.h,v 1.1 2006/11/27 14:14:23 rdm Exp $
 // Author: Fons Rademakers   11/01/02
 
 /*************************************************************************
@@ -60,7 +60,7 @@ class TFileInfo;
 class TCut;
 class TTree;
 class TChain;
-class TVirtualProof;
+class TProof;
 class TEventList;
 class TProofChain;
 
@@ -201,7 +201,7 @@ public:
    TList                *GetOutputList();
    virtual void          StartViewer(); // *MENU*
 
-   virtual TTree        *GetTreeHeader(TVirtualProof *proof);
+   virtual TTree        *GetTreeHeader(TProof *proof);
    virtual void          SetEventList(TEventList *evl) { fEventList = evl;}
    TEventList           *GetEventList() const {return fEventList; }
    void                  Validate();
diff --git a/proof/inc/TDrawFeedback.h b/proof/inc/TDrawFeedback.h
index cd1eb7542c0..9d4096f84b1 100644
--- a/proof/inc/TDrawFeedback.h
+++ b/proof/inc/TDrawFeedback.h
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TDrawFeedback.h,v 1.5 2005/09/16 08:48:38 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TDrawFeedback.h,v 1.6 2006/03/20 21:43:43 pcanal Exp $
 // Author: Maarten Ballintijn   28/10/2003
 
 /*************************************************************************
@@ -28,7 +28,7 @@
 #include "TObject.h"
 #endif
 
-class TVirtualProof;
+class TProof;
 class TProof;
 class THashList;
 class TSeqCollection;
@@ -43,7 +43,7 @@ protected:
    TProof        *fProof;  //handle to PROOF session
 
 public:
-   TDrawFeedback(TVirtualProof *proof = 0, TSeqCollection *names = 0);
+   TDrawFeedback(TProof *proof = 0, TSeqCollection *names = 0);
    ~TDrawFeedback();
 
    void Feedback(TList *objs);
diff --git a/proof/inc/TProof.h b/proof/inc/TProof.h
index 35f6c6365f1..aff561b433c 100644
--- a/proof/inc/TProof.h
+++ b/proof/inc/TProof.h
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TProof.h,v 1.95 2006/11/20 15:56:35 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TProof.h,v 1.96 2006/11/22 14:16:54 rdm Exp $
 // Author: Fons Rademakers   13/02/97
 
 /*************************************************************************
@@ -24,8 +24,11 @@
 //                                                                      //
 //////////////////////////////////////////////////////////////////////////
 
-#ifndef ROOT_TVirtualProof
-#include "TVirtualProof.h"
+#ifndef ROOT_TProof
+#include "TProof.h"
+#endif
+#ifndef ROOT_TProofMgr
+#include "TProofMgr.h"
 #endif
 #ifndef ROOT_TProofDebug
 #include "TProofDebug.h"
@@ -68,11 +71,14 @@ class TSlave;
 class TProofServ;
 class TProofInputHandler;
 class TProofInterruptHandler;
+class TProofLockPath;
 class TProofPlayer;
 class TProofPlayerRemote;
 class TProofProgressDialog;
-class TProofLockPath;
+class TQueryResult;
+class TChain;
 class TCondor;
+class TEventList;
 class TTree;
 class TDrawFeedback;
 class TDSet;
@@ -216,7 +222,7 @@ public:
    ClassDef(TSlaveInfo,2) //basic info on slave
 };
 
-class TProof : public TVirtualProof {
+class TProof : public TNamed, public TQObject {
 
 friend class TPacketizer;
 friend class TPacketizerDev;
@@ -233,6 +239,32 @@ friend class TXSocketHandler; // to access fCurrentMonitor and CollectInputFrom
 friend class TXProofMgr;      // to access EUrgent
 friend class TXProofServ;     // to access EUrgent
 
+public:
+   // PROOF status bits
+   enum EStatusBits {
+      kUsingSessionGui = BIT(14)
+   };
+   enum EQueryMode {
+      kSync = 0,
+      kAsync = 1
+   };
+   enum EUploadOpt {
+      kAppend             = 0x1,
+      kOverwriteDataSet   = 0x2,
+      kNoOverwriteDataSet = 0x4,
+      kOverwriteAllFiles  = 0x8,
+      kOverwriteNoFiles   = 0x10,
+      kAskUser            = 0x0
+   };
+   enum EUploadDataSetAnswer {
+      kError = -1,
+      kDataSetExists = -2
+   };
+   enum EUploadPackageOpt {
+      kUntar             = 0x0,  //Untar over existing dir [default]
+      kRemoveOld         = 0x1   //Remove existing dir with same name
+   };
+
 private:
    enum EUrgent {
       kLocalInterrupt      = -1,
@@ -342,6 +374,8 @@ private:
    TProofLockPath *fPackageLock;     //package lock
    TList          *fEnabledPackagesOnClient; //list of packages enabled on client
 
+   static TList   *fgProofEnvList;  // List of TNameds defining environment
+                                    // variables to pass to proofserv
 protected:
    enum ESlaves { kAll, kActive, kUnique, kAllUnique };
 
@@ -359,6 +393,11 @@ protected:
    TList          *fAvailablePackages; //list of available packages
    TList          *fEnabledPackages;   //list of enabled packages
 
+   TString         fDataPoolUrl;    // default data pool entry point URL
+   TProofMgr::EServType fServType;  // type of server: proofd, XrdProofd
+   TProofMgr      *fManager;        // manager to which this session belongs (if any)
+   EQueryMode      fQueryMode;      // default query mode
+
    static TSemaphore *fgSemaphore;   //semaphore to control no of parallel startup threads
 
 private:
@@ -465,7 +504,7 @@ protected:
 public:
    TProof(const char *masterurl, const char *conffile = kPROOF_ConfFile,
           const char *confdir = kPROOF_ConfDir, Int_t loglevel = 0,
-          const char *alias = 0, TVirtualProofMgr *mgr = 0);
+          const char *alias = 0, TProofMgr *mgr = 0);
    virtual ~TProof();
 
    void        cd(Int_t id = -1);
@@ -550,6 +589,7 @@ public:
    const char *GetConfFile() const { return fConfFile; }
    const char *GetUser() const { return fUrl.GetUser(); }
    const char *GetWorkDir() const { return fWorkDir; }
+   const char *GetSessionTag() const { return GetName(); }
    const char *GetImage() const { return fImage; }
    const char *GetUrl() { return fUrl.GetUrl(); }
    Int_t       GetPort() const { return fUrl.GetPort(); }
@@ -564,11 +604,13 @@ public:
    EQueryMode  GetQueryMode() const;
    EQueryMode  GetQueryMode(Option_t *mode) const;
    void        SetQueryMode(EQueryMode mode);
+   void        SetQueryType(EQueryMode mode) { fQueryMode = mode; }
 
    Long64_t    GetBytesRead() const { return fBytesRead; }
    Float_t     GetRealTime() const { return fRealTime; }
    Float_t     GetCpuTime() const { return fCpuTime; }
 
+   Bool_t      IsProofd() const { return (fServType == TProofMgr::kProofd); }
    Bool_t      IsFolder() const { return kTRUE; }
    Bool_t      IsMaster() const { return fMasterServ; }
    Bool_t      IsValid() const { return fValid; }
@@ -632,18 +674,30 @@ public:
 
    void        Detach(Option_t *opt = "");
 
-   void        SetAlias(const char *alias="");
+   virtual void SetAlias(const char *alias="");
 
-   void        SetManager(TVirtualProofMgr *mgr);
+   TProofMgr  *GetManager() { return fManager; }
+   void        SetManager(TProofMgr *mgr);
 
    void        ActivateWorker(const char *ord);
    void        DeactivateWorker(const char *ord);
 
-   static TVirtualProof *Open(const char *url = 0, const char *conffile = 0,
-                              const char *confdir = 0, Int_t loglevel = 0);
-   static Int_t          Reset(const char *url, const char *usr = 0);
+   const char *GetDataPoolUrl() const { return fDataPoolUrl; }
+   void        SetDataPoolUrl(const char *url) { fDataPoolUrl = url; }
+
+   static TProof *Open(const char *url = 0, const char *conffile = 0,
+                       const char *confdir = 0, Int_t loglevel = 0);
+   static Int_t   Reset(const char *url, const char *usr = 0);
+
+   static void          AddEnvVar(const char *name, const char *value);
+   static void          DelEnvVar(const char *name);
+   static const TList  *GetEnvVars();
+   static void          ResetEnvVars();
 
    ClassDef(TProof,0)  //PROOF control class
 };
 
+// Global object with default PROOF session
+R__EXTERN TProof *gProof;
+
 #endif
diff --git a/proof/inc/TProofMgr.h b/proof/inc/TProofMgr.h
index 95c0c003c49..dd7867b7631 100644
--- a/proof/inc/TProofMgr.h
+++ b/proof/inc/TProofMgr.h
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TProofMgr.h,v 1.1 2005/12/10 16:51:57 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TProofMgr.h,v 1.2 2006/06/21 16:18:26 rdm Exp $
 // Author: G. Ganis, Nov 2005
 
 /*************************************************************************
@@ -24,27 +24,116 @@
 //                                                                      //
 //////////////////////////////////////////////////////////////////////////
 
-#ifndef ROOT_TVirtualProofMgr
-#include "TVirtualProofMgr.h"
+#ifndef ROOT_TNamed
+#include "TNamed.h"
 #endif
 #ifndef ROOT_TUrl
 #include "TUrl.h"
 #endif
 
-class TProofMgr : public TVirtualProofMgr {
+class TList;
+class TProof;
+class TProofDesc;
+class TProofMgr;
+
+typedef TProofMgr *(*TProofMgr_t)(const char *, Int_t, const char *);
+
+class TProofMgr : public TNamed {
+
+public:
+   enum EServType { kProofd = 0, kXProofd = 1 };
+
+private:
+   static TProofMgr_t fgTXProofMgrHook; // Constructor hooks for TXProofMgr
+   static TProofMgr_t GetXProofMgrHook();
+
+protected:
+   Int_t          fRemoteProtocol; // Protocol number run by the daemon server
+   EServType      fServType;       // Type of server: old-proofd, XrdProofd
+   TList         *fSessions;       // PROOF session managed by this server
+   TUrl           fUrl;            // Server URL
+
+   static TList   fgListOfManagers; // Sub-list of TROOT::ListOfProofs for managers
+
+   TProofMgr() : fRemoteProtocol(-1),
+                        fServType(kXProofd), fSessions(0), fUrl() { }
 
 public:
    TProofMgr(const char *url, Int_t loglevel = -1, const char *alias = "");
-   virtual ~TProofMgr() { }
+   virtual ~TProofMgr();
+
+   virtual Bool_t      IsProofd() const { return (fServType == kProofd); }
+   virtual Bool_t      IsValid() const { return kTRUE; }
+
+
+   virtual TProof *AttachSession(Int_t, Bool_t = kFALSE);
+   virtual TProof *CreateSession(const char * = 0, const char * = 0, Int_t = -1);
+   virtual void        DetachSession(Int_t, Option_t * = "");
+   virtual TProofDesc *GetProofDesc(Int_t id);
+   virtual Int_t       GetRemoteProtocol() const { return fRemoteProtocol; }
+   virtual const char *GetUrl() { return fUrl.GetUrl(); }
+   virtual Bool_t      MatchUrl(const char *url);
+   virtual TList      *QuerySessions(Option_t *opt = "S");
+   virtual Int_t       Reset(const char *usr = 0);
+   virtual void        ShowWorkers();
+   virtual void        SetAlias(const char *alias="") { TNamed::SetTitle(alias); }
+   virtual void        ShutdownSession(Int_t id) { DetachSession(id,"S"); }
+   virtual void        ShutdownSession(TProof *p);
+
+   static TList       *GetListOfManagers();
+
+   static void         SetTXProofMgrHook(TProofMgr_t pmh);
+
+   static TProofMgr *Create(const char *url, Int_t loglevel = -1,
+                                   const char *alias = 0, Bool_t xpd = kTRUE);
+
+   ClassDef(TProofMgr,0)  // Abstract PROOF manager interface
+};
+
+
+
+
+//
+// Metaclass describing the essentials of a PROOF session
+//
+class TProofDesc : public TNamed {
+public:
+   enum EStatus { kUnknown = -1, kIdle = 0, kRunning =1, kShutdown = 2};
+
+private:
+   Int_t          fLocalId;  // ID in the local list
+   Int_t          fStatus;   // Session status (see EStatus)
+   TProof *fProof;    // Related instance of TProof
+   Int_t          fRemoteId; // Remote ID assigned by the coordinator to the proofserv
+   TString        fUrl;      // Url of the connection
+
+public:
+   TProofDesc(const char *tag = 0, const char *alias = 0, const char *url = 0,
+                     Int_t id = -1, Int_t remid = -1, Int_t status = kIdle, TProof *p = 0)
+                    : TNamed(tag, alias),
+                      fLocalId(id), fProof(p), fRemoteId(remid), fUrl(url) { SetStatus(status); }
+   virtual ~TProofDesc() { }
+
+   Int_t          GetLocalId() const { return fLocalId; }
+   TProof *GetProof() const { return fProof; }
+   Int_t          GetRemoteId() const { return fRemoteId; }
+   Int_t          GetStatus() const { return fStatus; }
+   const char    *GetUrl() const { return fUrl; }
+
+   Bool_t         IsIdle() const { return (fStatus == kIdle) ? kTRUE : kFALSE; }
+   Bool_t         IsRunning() const { return (fStatus == kRunning) ? kTRUE : kFALSE; }
+   Bool_t         IsShuttingDown() const { return (fStatus == kShutdown) ? kTRUE : kFALSE; }
+
+   Bool_t         MatchId(Int_t id) const { return (fLocalId == id); }
+
+   void           Print(Option_t *opt = "") const;
 
-   Bool_t      IsValid() const { return kTRUE; }
+   void           SetStatus(Int_t st) { fStatus = (st < kIdle || st > kShutdown) ? -1 : st; }
 
-   TVirtualProof *AttachSession(Int_t id, Bool_t gui = kFALSE);
-   void           DetachSession(Int_t, Option_t * = "");
-   TList         *QuerySessions(Option_t *opt = "S");
-   Int_t          Reset(const char *usr = 0);
+   void           SetProof(TProof *p) { fProof = p; }
+   void           SetRemoteId(Int_t id) { fRemoteId = id; }
 
-   ClassDef(TProofMgr,0)  // PROOF session manager
+   ClassDef(TProofDesc,1)  // Small class describing a proof session
 };
 
 #endif
diff --git a/proof/inc/TProofProgressDialog.h b/proof/inc/TProofProgressDialog.h
index 460cea349a4..a499d8eb39b 100644
--- a/proof/inc/TProofProgressDialog.h
+++ b/proof/inc/TProofProgressDialog.h
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TProofProgressDialog.h,v 1.10 2006/06/02 15:14:35 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TProofProgressDialog.h,v 1.11 2006/11/15 17:45:54 rdm Exp $
 // Author: Fons Rademakers   21/03/03
 
 /*************************************************************************
@@ -35,7 +35,7 @@ class TGCheckButton;
 class TGLabel;
 class TGTextBuffer;
 class TGTextEntry;
-class TVirtualProof;
+class TProof;
 class TProofProgressLog;
 class TNtuple;
 class TGraph;
@@ -67,7 +67,7 @@ private:
    TGLabel            *fInit;
    TGLabel            *fSelector;
    TProofProgressLog  *fLogWindow;       // transient frame for logs
-   TVirtualProof      *fProof;
+   TProof             *fProof;
    TTime               fStartTime;
    TTime               fEndTime;
    Long64_t            fPrevProcessed;
@@ -88,7 +88,7 @@ private:
    static TString      fgTextQueryDefault;
 
 public:
-   TProofProgressDialog(TVirtualProof *proof, const char *selector,
+   TProofProgressDialog(TProof *proof, const char *selector,
                         Int_t files, Long64_t first, Long64_t entries);
    virtual ~TProofProgressDialog();
 
diff --git a/proof/inc/TSessionViewer.h b/proof/inc/TSessionViewer.h
index 7670e4e3ce4..de625c8ad85 100644
--- a/proof/inc/TSessionViewer.h
+++ b/proof/inc/TSessionViewer.h
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TSessionViewer.h,v 1.1 2006/11/17 15:50:17 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TSessionViewer.h,v 1.2 2006/11/22 14:16:54 rdm Exp $
 // Author: Marek Biskup, Jakub Madejczyk, Bertrand Bellenot 10/08/2005
 
 /*************************************************************************
@@ -84,8 +84,8 @@ class TCanvas;
 class TEnv;
 struct UserGroup_t;
 
-class TVirtualProofMgr;
-class TVirtualProof;
+class TProofMgr;
+class TProof;
 class TSessionViewer;
 class TSessionLogView;
 class TQueryResult;
@@ -164,8 +164,8 @@ public:
    TList             *fQueries;     // list of queries in this session
    TList             *fPackages;    // list of packages
    TQueryDescription *fActQuery;    // current (actual) query
-   TVirtualProof     *fProof;       // pointer on TVirtualProof used by this session
-   TVirtualProofMgr  *fProofMgr;    // Proof sessions manager
+   TProof            *fProof;       // pointer on TProof used by this session
+   TProofMgr         *fProofMgr;    // Proof sessions manager
    Int_t              fNbHistos;    // number of feedback histos
 
    const char        *GetName() const { return fName; }
diff --git a/proof/src/TDSet.cxx b/proof/src/TDSet.cxx
index 21b46c080dd..14764870db9 100644
--- a/proof/src/TDSet.cxx
+++ b/proof/src/TDSet.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TDSet.cxx,v 1.35 2006/08/06 07:15:00 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TDSet.cxx,v 1.1 2006/11/27 14:14:24 rdm Exp $
 // Author: Fons Rademakers   11/01/02
 
 /*************************************************************************
@@ -57,7 +57,7 @@
 #include "TUrl.h"
 #include "TRegexp.h"
 #include "TVirtualPerfStats.h"
-#include "TVirtualProof.h"
+#include "TProof.h"
 #include "TProofChain.h"
 #include "TPluginManager.h"
 #include "TChain.h"
@@ -1077,7 +1077,7 @@ void TDSet::StartViewer()
 }
 
 //_______________________________________________________________________
-TTree* TDSet::GetTreeHeader(TVirtualProof* proof)
+TTree* TDSet::GetTreeHeader(TProof* proof)
 {
    // Returns a tree header containing the branches' structure of the dataset.
 
diff --git a/proof/src/TDrawFeedback.cxx b/proof/src/TDrawFeedback.cxx
index f3c32ad1c61..73c82d8ec6a 100644
--- a/proof/src/TDrawFeedback.cxx
+++ b/proof/src/TDrawFeedback.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TDrawFeedback.cxx,v 1.9 2005/06/07 20:28:32 brun Exp $
+// @(#)root/proof:$Name:  $:$Id: TDrawFeedback.cxx,v 1.10 2006/05/15 09:45:03 brun Exp $
 // Author: Maarten Ballintijn   28/10/2003
 
 /*************************************************************************
@@ -34,7 +34,7 @@ ClassImp(TDrawFeedback)
 
 
 //______________________________________________________________________________
-TDrawFeedback::TDrawFeedback(TVirtualProof *proof, TSeqCollection *names)
+TDrawFeedback::TDrawFeedback(TProof *proof, TSeqCollection *names)
   : fAll(kFALSE)
 {
    // Constructor
diff --git a/proof/src/TPerfStats.cxx b/proof/src/TPerfStats.cxx
index 807e4ae1495..25c17da49a4 100644
--- a/proof/src/TPerfStats.cxx
+++ b/proof/src/TPerfStats.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TPerfStats.cxx,v 1.8 2006/06/01 16:26:57 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TPerfStats.cxx,v 1.9 2006/11/15 17:45:55 rdm Exp $
 // Author: Kristjan Gulbrandsen   11/05/04
 
 /*************************************************************************
@@ -113,7 +113,7 @@ TPerfStats::TPerfStats(TList *input, TList *output)
    // Normal Constructor.
 
    Int_t nslaves = 0;
-   TVirtualProof *proof = gProofServ->GetProof();
+   TProof *proof = gProofServ->GetProof();
    TList *l = proof ? proof->GetSlaveInfo() : 0 ;
    TIter nextslaveinfo(l);
    while (TSlaveInfo *si = dynamic_cast<TSlaveInfo*>(nextslaveinfo()))
diff --git a/proof/src/TProof.cxx b/proof/src/TProof.cxx
index ee40eb9b408..70c19df254c 100644
--- a/proof/src/TProof.cxx
+++ b/proof/src/TProof.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TProof.cxx,v 1.169 2006/11/22 14:16:54 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TProof.cxx,v 1.170 2006/11/27 14:14:24 rdm Exp $
 // Author: Fons Rademakers   13/02/97
 
 /*************************************************************************
@@ -78,8 +78,13 @@
 #include "TFileInfo.h"
 #include "TFileMerger.h"
 
+TProof *gProof = 0;
 TVirtualMutex *gProofMutex = 0;
 
+TList   *TProof::fgProofEnvList = 0;  // List of env vars for proofserv
+
+ClassImp(TProof)
+
 //----- Helper classes used for parallel startup -------------------------------
 //______________________________________________________________________________
 TProofThreadArg::TProofThreadArg(const char *h, Int_t po, const char *o,
@@ -245,27 +250,11 @@ static char *CollapseSlashesInPath(const char *path)
 
 ClassImp(TProof)
 
-// Autoloading hooks.
-// These are needed to avoid using the plugin manager which may create problems
-// in multi-threaded environments.
-extern "C" {
-   TVirtualProof *GetTProof(const char *url, const char *file,
-                            const char *dir, Int_t log, const char *al,
-                            TVirtualProofMgr *mgr)
-   { return (new TProof(url, file, dir, log, al, mgr)); }
-}
-class TProofInit {
-public:
-   TProofInit() {
-      TVirtualProof::SetTProofHook(&GetTProof);
-}};
-static TProofInit gproof_init;
-
 TSemaphore    *TProof::fgSemaphore = 0;
 
 //______________________________________________________________________________
 TProof::TProof(const char *masterurl, const char *conffile, const char *confdir,
-               Int_t loglevel, const char *alias, TVirtualProofMgr *mgr)
+               Int_t loglevel, const char *alias, TProofMgr *mgr)
        : fUrl(masterurl)
 {
    // Create a PROOF environment. Starting PROOF involves either connecting
@@ -282,6 +271,9 @@ TProof::TProof(const char *masterurl, const char *conffile, const char *confdir,
    // This may be needed during init
    fManager = mgr;
 
+   // Default server type
+   fServType = TProofMgr::kXProofd;
+
    if (!conffile || strlen(conffile) == 0)
       conffile = kPROOF_ConfFile;
    if (!confdir  || strlen(confdir) == 0)
@@ -306,7 +298,7 @@ TProof::TProof(const char *masterurl, const char *conffile, const char *confdir,
 }
 
 //______________________________________________________________________________
-TProof::TProof() : fUrl("")
+TProof::TProof() : fUrl(""), fServType(TProofMgr::kXProofd)
 {
    // Protected constructor to be used by classes deriving from TProof
    // (they have to call Init themselves and override StartSlaves
@@ -362,6 +354,9 @@ TProof::~TProof()
       if (fLogFileName.Length())
          gSystem->Unlink(fLogFileName);
    }
+
+   // For those interested in our destruction ...
+   Emit("~TProof()");
 }
 
 //______________________________________________________________________________
@@ -380,7 +375,7 @@ Int_t TProof::Init(const char *masterurl, const char *conffile,
    fValid = kFALSE;
 
    if (strlen(fUrl.GetOptions()) > 0 && !(strncmp(fUrl.GetOptions(),"std",3))) {
-      fServType = TVirtualProofMgr::kProofd;
+      fServType = TProofMgr::kProofd;
       fUrl.SetOptions("");
    }
 
@@ -400,7 +395,7 @@ Int_t TProof::Init(const char *masterurl, const char *conffile,
       // A flag from the GUI
       TString opts = fUrl.GetOptions();
       if (opts.Contains("GUI")) {
-         SetBit(TVirtualProof::kUsingSessionGui);
+         SetBit(TProof::kUsingSessionGui);
          opts.Remove(opts.Index("GUI"));
          fUrl.SetOptions(opts);
       }
@@ -607,7 +602,7 @@ Int_t TProof::Init(const char *masterurl, const char *conffile,
 }
 
 //______________________________________________________________________________
-void TProof::SetManager(TVirtualProofMgr *mgr)
+void TProof::SetManager(TProofMgr *mgr)
 {
    // Set manager and schedule its destruction after this for clean
    // operations.
@@ -966,7 +961,7 @@ void TProof::Close(Option_t *opt)
          if (gProof && gProof == this) {
             // Set previous proofd-related as default
             TIter pvp(gROOT->GetListOfProofs(), kIterBackward);
-            while ((gProof = (TVirtualProof *)pvp())) {
+            while ((gProof = (TProof *)pvp())) {
                if (gProof->IsProofd())
                   break;
             }
@@ -4286,7 +4281,7 @@ Int_t TProof::UploadPackageOnClient(const TString &par, EUploadPackageOpt opt, T
       if (!md5local || (*md5) != (*md5local)) {
          // if not, unzip and untar package in package directory
          Int_t st = 0;
-         if ((opt & TVirtualProof::kRemoveOld)) {
+         if ((opt & TProof::kRemoveOld)) {
             // remove any previous package directory with same name
             st = gSystem->Exec(Form("%s %s/%s", kRM, fPackageDir.Data(),
                                packnam.Data()));
@@ -4822,7 +4817,7 @@ TTree *TProof::GetTreeHeader(TDSet *dset)
 //______________________________________________________________________________
 TDrawFeedback *TProof::CreateDrawFeedback()
 {
-   // Draw feedback creation proxy. When accessed via TVirtualProof avoids
+   // Draw feedback creation proxy. When accessed via TProof avoids
    // link dependency on libProof.
 
    return new TDrawFeedback(this);
@@ -5200,7 +5195,7 @@ void TProof::cd(Int_t id)
    // the current session is set as default
 
    if (GetManager()) {
-      TVirtualProofDesc *d = GetManager()->GetProofDesc(id);
+      TProofDesc *d = GetManager()->GetProofDesc(id);
       if (d) {
          if (d->GetProof()) {
             gProof = d->GetProof();
@@ -5263,8 +5258,8 @@ void TProof::Detach(Option_t *opt)
    // Update info in the table of our manager, if any
    if (GetManager() && GetManager()->QuerySessions("L")) {
       TIter nxd(GetManager()->QuerySessions("L"));
-      TVirtualProofDesc *d = 0;
-      while ((d = (TVirtualProofDesc *)nxd())) {
+      TProofDesc *d = 0;
+      while ((d = (TProofDesc *)nxd())) {
          if (d->GetProof() == this) {
             d->SetProof(0);
             GetManager()->QuerySessions("L")->Remove(d);
@@ -5952,25 +5947,6 @@ Int_t TProof::VerifyDataSet(const char *dataSet)
    return nMissingFiles;
 }
 
-//_____________________________________________________________________________
-TVirtualProof *TProof::Open(const char *url, const char *conffile,
-                            const char *confdir, Int_t loglevel)
-{
-   // Start a PROOF session on a specific cluster. Wrapper around
-   // TVirtualProof::Open().
-
-   return TVirtualProof::Open(url, conffile, confdir, loglevel);
-}
-
-//_____________________________________________________________________________
-Int_t TProof::Reset(const char *url, const char *usr)
-{
-   // Start a PROOF session on a specific cluster. Wrapper around
-   // TVirtualProof::Reset().
-
-   return TVirtualProof::Reset(url, usr);
-}
-
 //_____________________________________________________________________________
 void TProof::InterruptCurrentMonitor()
 {
@@ -6076,3 +6052,223 @@ void TProof::ModifyWorkerLists(const char *ord, Bool_t add)
       Collect();
    }
 }
+
+//_____________________________________________________________________________
+TProof *TProof::Open(const char *cluster, const char *conffile,
+                                   const char *confdir, Int_t loglevel)
+{
+   // Start a PROOF session on a specific cluster. If cluster is 0 (the
+   // default) then the PROOF Session Viewer GUI pops up and 0 is returned.
+   // If cluster is "" (empty string) then we connect to a PROOF session
+   // on the localhost ("proof://localhost"). Via conffile a specific
+   // PROOF config file in the confir directory can be specified.
+   // Use loglevel to set the default loging level for debugging.
+   // The appropriate instance of TProofMgr is created, if not
+   // yet existing. The instantiated TProof object is returned.
+   // Use TProof::cd() to switch between PROOF sessions.
+   // For more info on PROOF see the TProof ctor.
+
+   const char *pn = "TProof::Open";
+
+   // Make sure libProof and dependents are loaded and TProof can be created,
+   // dependents are loaded via the information in the [system].rootmap file
+   if (!cluster) {
+
+      TPluginManager *pm = gROOT->GetPluginManager();
+      if (!pm) {
+         ::Error(pn, "plugin manager not found");
+         return 0;
+      }
+
+      if (gROOT->IsBatch()) {
+         ::Error(pn, "we are in batch mode, cannot show PROOF Session Viewer");
+         return 0;
+      }
+      // start PROOF Session Viewer
+      TPluginHandler *sv = pm->FindHandler("TSessionViewer", "");
+      if (!sv) {
+         ::Error(pn, "no plugin found for TSessionViewer");
+         return 0;
+      }
+      if (sv->LoadPlugin() == -1) {
+         ::Error(pn, "plugin for TSessionViewer could not be loaded");
+         return 0;
+      }
+      sv->ExecPlugin(0);
+      return 0;
+
+   } else {
+
+      TProof *proof = 0;
+
+      // If the master was specified as "", use "localhost"
+      TString fqdn = cluster;
+      if (fqdn == "")
+         fqdn = "localhost";
+
+      TUrl u(fqdn);
+      // in case user gave as url: "machine.dom.ain", replace
+      // "http" by "proof" and "80" by "1093"
+      if (!strcmp(u.GetProtocol(), TUrl("a").GetProtocol()))
+         u.SetProtocol("proof");
+      if (u.GetPort() == TUrl("a").GetPort())
+         u.SetPort(1093);
+
+      // Find out if we are required to attach to a specific session
+      TString o(u.GetOptions());
+      Int_t locid = -1;
+      Bool_t create = kFALSE;
+      if (o.Length() > 0) {
+         if (o.BeginsWith("N",TString::kIgnoreCase)) {
+            create = kTRUE;
+         } else if (o.IsDigit()) {
+            locid = o.Atoi();
+         }
+         u.SetOptions("");
+      }
+
+      // Attach-to or create the appropriate manager
+      TProofMgr *mgr = TProofMgr::Create(u.GetUrl());
+
+      if (mgr && mgr->IsValid()) {
+
+         // If XProofd we always attempt an attach first (unless
+         // explicitely not requested).
+         Bool_t attach = (create || mgr->IsProofd()) ? kFALSE : kTRUE;
+         if (attach) {
+            TProofDesc *d = 0;
+            if (locid < 0)
+               // Get the list of sessions
+               d = (TProofDesc *) mgr->QuerySessions("")->First();
+            else
+               d = (TProofDesc *) mgr->GetProofDesc(locid);
+            if (d) {
+               proof = (TProof*) mgr->AttachSession(d->GetLocalId());
+               if (!proof || !proof->IsValid()) {
+                  if (locid)
+                     ::Error(pn, "new session could not be attached");
+                  SafeDelete(proof);
+               }
+            }
+         }
+
+         // start the PROOF session
+         if (!proof) {
+            proof = (TProof*) mgr->CreateSession(conffile, confdir, loglevel);
+            if (!proof || !proof->IsValid()) {
+               ::Error(pn, "new session could not be created");
+               SafeDelete(proof);
+            }
+         }
+      }
+      return proof;
+   }
+}
+
+//_____________________________________________________________________________
+Int_t TProof::Reset(const char *url, const char *usr)
+{
+   // Reset the entry associated with the entity defined by 'url', which is
+   // in the form
+   //                "[proof://][user@]master.url[:port]"
+   // If 'user' has the privileges it can also ask to reset the entry of a
+   // different user specified by 'usr'; use 'usr'=='*' to reset all the
+   // sessions know remotely.
+   // 'Reset' means that all the PROOF sessions owned by the user at this
+   // master are terminated or killed, any other client connections (from other
+   // shells) closed, and the protocol instance reset and given back to the stack.
+   // After this call the user will be asked to login again and will start
+   // from scratch.
+   // To be used when the cluster is not behaving.
+   // Return 0 on success, -1 if somethign wrng happened.
+
+   if (!url)
+      return -1;
+
+   const char *pn = "TProof::Reset";
+
+   // If the master was specified as "", try to get the localhost FQDN
+   if (!strlen(url))
+      url = gSystem->GetHostByName(gSystem->HostName()).GetHostName();
+
+   TUrl u(url);
+   // in case user gave as url: "machine.dom.ain", replace
+   // "http" by "proof" and "80" by "1093"
+   if (!strcmp(u.GetProtocol(), TUrl("a").GetProtocol()))
+      u.SetProtocol("proof");
+   if (u.GetPort() == TUrl("a").GetPort())
+      u.SetPort(1093);
+
+   // Attach-to or create the appropriate manager
+   TProofMgr *mgr = TProofMgr::Create(u.GetUrl());
+
+   if (mgr && mgr->IsValid())
+      if (!(mgr->IsProofd()))
+         // Ask the manager to reset the entry
+         return mgr->Reset(usr);
+      else
+         ::Info(pn,"proofd: functionality not supported by server");
+
+   else
+      ::Info(pn,"could not open a valid connection to %s", u.GetUrl());
+
+   // Done
+   return -1;
+}
+
+//_____________________________________________________________________________
+const TList *TProof::GetEnvVars()
+{
+   // Get environemnt variables.
+
+   return fgProofEnvList;
+}
+
+//_____________________________________________________________________________
+void TProof::AddEnvVar(const char *name, const char *value)
+{
+   // Add an variable to the list of environment variables passed to proofserv
+   // on the master and slaves
+
+   if (gDebug > 0) ::Info("TProof::AddEnvVar","%s=%s", name, value);
+
+   if (fgProofEnvList == 0) {
+      // initialize the list if needed
+      fgProofEnvList = new TList;
+      fgProofEnvList->SetOwner();
+   } else {
+      // replace old entries with the same name
+      TObject *o = fgProofEnvList->FindObject(name);
+      if (o != 0) {
+         fgProofEnvList->Remove(o);
+      }
+   }
+   fgProofEnvList->Add(new TNamed(name, value));
+}
+
+//_____________________________________________________________________________
+void TProof::DelEnvVar(const char *name)
+{
+   // Remove an variable from the list of environment variables passed to proofserv
+   // on the master and slaves
+
+   if (fgProofEnvList == 0) return;
+
+   TObject *o = fgProofEnvList->FindObject(name);
+   if (o != 0) {
+      fgProofEnvList->Remove(o);
+   }
+}
+
+//_____________________________________________________________________________
+void TProof::ResetEnvVars()
+{
+   // Clear the list of environment variables passed to proofserv
+   // on the master and slaves
+
+   if (fgProofEnvList == 0) return;
+
+   SafeDelete(fgProofEnvList);
+}
+
+
diff --git a/proof/src/TProofChain.cxx b/proof/src/TProofChain.cxx
index 4878395a9a2..cc82705e9fc 100644
--- a/proof/src/TProofChain.cxx
+++ b/proof/src/TProofChain.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TProofChain.cxx,v 1.1 2006/11/27 14:14:24 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TProofChain.cxx,v 1.2 2006/11/27 15:57:11 rdm Exp $
 // Author: G. Ganis  Nov 2006
 
 /*************************************************************************
@@ -20,7 +20,7 @@
 
 #include "TProofChain.h"
 #include "TDSet.h"
-#include "TVirtualProof.h"
+#include "TProof.h"
 
 
 ClassImp(TProofChain)
diff --git a/proof/src/TProofMgr.cxx b/proof/src/TProofMgr.cxx
index fcbdc1d4161..93336d21f3a 100644
--- a/proof/src/TProofMgr.cxx
+++ b/proof/src/TProofMgr.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TProofMgr.cxx,v 1.7 2006/06/21 16:18:26 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TProofMgr.cxx,v 1.8 2006/10/03 13:31:07 rdm Exp $
 // Author: G. Ganis, Nov 2005
 
 /*************************************************************************
@@ -20,6 +20,7 @@
 //                                                                      //
 //////////////////////////////////////////////////////////////////////////
 
+#include "TError.h"
 #include "TList.h"
 #include "TProof.h"
 #include "TProofMgr.h"
@@ -27,31 +28,21 @@
 
 ClassImp(TProofMgr)
 
-// Autoloading hooks.
-// These are needed to avoid using the plugin manager which may create
-// problems in multi-threaded environments.
-extern "C" {
-   TVirtualProofMgr *GetTProofMgr(const char *url, Int_t l, const char *al)
-   { return ((TVirtualProofMgr *) new TProofMgr(url, l, al)); }
-}
-
-class TProofMgrInit {
-public:
-   TProofMgrInit() {
-      TVirtualProofMgr::SetTProofMgrHook(&GetTProofMgr);
-   }
-};
-static TProofMgrInit gproofmgr_init;
-
+// Sub-list of TROOT::fProofs with managers
+TList TProofMgr::fgListOfManagers;
+TProofMgr_t TProofMgr::fgTXProofMgrHook = 0;
 
 //______________________________________________________________________________
 TProofMgr::TProofMgr(const char *url, Int_t, const char *alias)
-         : TVirtualProofMgr(url)
+   : TNamed("",""), fRemoteProtocol(-1), fServType(kXProofd), fSessions(0)
 {
    // Create a PROOF manager for the standard (old) environment.
 
    fServType = kProofd;
 
+   // AVoid problems with empty URLs
+   fUrl = (!url || strlen(url) <= 0) ? TUrl("proof://localhost") : TUrl(url);
+
    // Correct URL protocol
    if (!strcmp(fUrl.GetProtocol(), TUrl("a").GetProtocol()))
       fUrl.SetProtocol("proof");
@@ -68,13 +59,13 @@ TProofMgr::TProofMgr(const char *url, Int_t, const char *alias)
 }
 
 //______________________________________________________________________________
-TVirtualProof *TProofMgr::AttachSession(Int_t id, Bool_t)
+TProof *TProofMgr::AttachSession(Int_t id, Bool_t)
 {
    // Dummy version provided for completeness. Just returns a pointer to
    // existing session 'id' (as shown by TProof::QuerySessions) or 0 if 'id' is
    // not valid.
 
-   TVirtualProofDesc *d = GetProofDesc(id);
+   TProofDesc *d = GetProofDesc(id);
    if (d) {
       if (d->GetProof())
          // Nothing to do if already in contact with proofserv
@@ -91,7 +82,7 @@ void TProofMgr::DetachSession(Int_t id, Option_t *opt)
    // Detach session with 'id' from its proofserv. The 'id' is the number
    // shown by QuerySessions.
 
-   TVirtualProofDesc *d = GetProofDesc(id);
+   TProofDesc *d = GetProofDesc(id);
    if (d) {
       if (d->GetProof())
          d->GetProof()->Detach(opt);
@@ -121,16 +112,16 @@ TList *TProofMgr::QuerySessions(Option_t *opt)
    if (gROOT->GetListOfProofs()) {
       // Loop over
       TIter nxp(gROOT->GetListOfProofs());
-      TVirtualProof *p = 0;
+      TProof *p = 0;
       Int_t ns = 0;
-      while ((p = (TVirtualProof *)nxp())) {
+      while ((p = (TProof *)nxp())) {
          // Only those belonginh to this server
          if (MatchUrl(p->GetUrl())) {
             if (!(fSessions->FindObject(p->GetSessionTag()))) {
-               Int_t st = (p->IsIdle()) ? TVirtualProofDesc::kIdle
-                                        : TVirtualProofDesc::kRunning;
-               TVirtualProofDesc *d =
-                   new TVirtualProofDesc(p->GetName(), p->GetTitle(), p->GetUrl(),
+               Int_t st = (p->IsIdle()) ? TProofDesc::kIdle
+                                        : TProofDesc::kRunning;
+               TProofDesc *d =
+                   new TProofDesc(p->GetName(), p->GetTitle(), p->GetUrl(),
                                          ++ns, p->GetSessionID(), st, p);
                fSessions->Add(d);
             }
@@ -141,8 +132,8 @@ TList *TProofMgr::QuerySessions(Option_t *opt)
    // Drop entries not existing any longer
    if (fSessions->GetSize() > 0) {
       TIter nxd(fSessions);
-      TVirtualProofDesc *d = 0;
-      while ((d = (TVirtualProofDesc *)nxd())) {
+      TProofDesc *d = 0;
+      while ((d = (TProofDesc *)nxd())) {
          if (d->GetProof()) {
             if (!(gROOT->GetListOfProofs()->FindObject(d->GetProof()))) {
                fSessions->Remove(d);
@@ -170,3 +161,284 @@ Int_t TProofMgr::Reset(const char *)
 
    return -1;
 }
+
+//______________________________________________________________________________
+TProofMgr::~TProofMgr()
+{
+   // Destroy a TProofMgr instance
+
+   SafeDelete(fSessions);
+
+   fgListOfManagers.Remove(this);
+   gROOT->GetListOfProofs()->Remove(this);
+}
+
+//______________________________________________________________________________
+void TProofMgr::ShowWorkers()
+{
+   // Show available workers
+
+   AbstractMethod("ShowWorkers");
+}
+
+//______________________________________________________________________________
+TProofDesc *TProofMgr::GetProofDesc(Int_t id)
+{
+   // Get TProof instance corresponding to 'id'.
+
+   if (id > 0) {
+      TProofDesc *d = 0;
+      // Retrieve an updated list
+      QuerySessions("");
+      if (fSessions) {
+         TIter nxd(fSessions);
+         while ((d = (TProofDesc *)nxd())) {
+            if (d->MatchId(id))
+               return d;
+         }
+      }
+   }
+
+   return 0;
+}
+
+//______________________________________________________________________________
+void TProofMgr::ShutdownSession(TProof *p)
+{
+   // Discard PROOF session 'p'
+
+   if (p) {
+      TProofDesc *d = 0;
+      if (fSessions) {
+         TIter nxd(fSessions);
+         while ((d = (TProofDesc *)nxd())) {
+            if (p == d->GetProof()) {
+               fSessions->Remove(d);
+               delete d;
+               break;
+            }
+         }
+      }
+   }
+}
+
+//______________________________________________________________________________
+TProof *TProofMgr::CreateSession(const char *cfg,
+                                 const char *cfgdir, Int_t loglevel)
+{
+   // Create a new remote session (master and associated workers).
+
+   // Create
+   if (IsProofd())
+      fUrl.SetOptions("std");
+
+   // Create the instance
+   TProof *p = new TProof(fUrl.GetUrl(), cfg, cfgdir, loglevel, 0, this);
+
+   if (p && p->IsValid()) {
+
+      // Save record about this session
+      Int_t ns = 1;
+      if (fSessions) {
+         // To avoid ambiguities in case of removal of some elements
+         if (fSessions->Last())
+            ns = ((TProofDesc *)(fSessions->Last()))->GetLocalId() + 1;
+      } else {
+         // Create the list
+         fSessions = new TList;
+      }
+
+      // Create the description class
+      Int_t st = (p->IsIdle()) ? TProofDesc::kIdle : TProofDesc::kRunning ;
+      TProofDesc *d =
+         new TProofDesc(p->GetName(), p->GetTitle(), p->GetUrl(),
+                               ns, p->GetSessionID(), st, p);
+      fSessions->Add(d);
+
+   } else {
+      // Session creation failed
+      Error("CreateSession", "creating PROOF session");
+      SafeDelete(p);
+   }
+
+   // We are done
+   return p;
+}
+
+//______________________________________________________________________________
+Bool_t TProofMgr::MatchUrl(const char *url)
+{
+   // Checks if 'url' refers to the same 'user@host:port' entity as the URL
+   // in memory
+
+   TUrl u(url);
+
+   // Correct URL protocol
+   if (!strcmp(u.GetProtocol(), TUrl("a").GetProtocol()))
+      u.SetProtocol("proof");
+
+   // Correct port
+   if (u.GetPort() == TUrl("a").GetPort()) {
+      Int_t port = gSystem->GetServiceByName("rootd");
+      if (port < 0)
+         port = 1094;
+      u.SetPort(port);
+   }
+
+   // Now we can check
+   if (!strcmp(u.GetHostFQDN(), fUrl.GetHostFQDN()))
+      if (u.GetPort() == fUrl.GetPort())
+         if (strlen(u.GetUser()) <= 0 || !strcmp(u.GetUser(),fUrl.GetUser()))
+            return kTRUE;
+
+   // Match failed
+   return kFALSE;
+}
+
+//________________________________________________________________________
+TList *TProofMgr::GetListOfManagers()
+{
+   // Extract pointers to PROOF managers from TROOT::fProofs.
+
+   // Update the list with new entries
+   if (gROOT->GetListOfProofs()) {
+      TIter nxp(gROOT->GetListOfProofs());
+      TProofMgr *p = 0;
+      while ((p = dynamic_cast<TProofMgr *> (nxp())))
+         if (!fgListOfManagers.FindObject(p))
+            fgListOfManagers.Add(p);
+   }
+
+   // Get rid of invalid entries and notify
+   if (fgListOfManagers.GetSize() > 0) {
+      TIter nxp(&fgListOfManagers);
+      TObject *o = 0;
+      Int_t nm = 0;
+      while ((o = nxp())) {
+         if (!(gROOT->GetListOfProofs()->FindObject(o))) {
+            fgListOfManagers.Remove(o);
+         } else {
+            TProofMgr *p = (TProofMgr *)o;
+            Printf("// #%d: \"%s\" (%s)", ++nm, p->GetName(), p->GetTitle());
+         }
+      }
+   } else {
+      if (gDebug > 0)
+         Printf("No managers found");
+   }
+
+   // We are done
+   return &fgListOfManagers;
+}
+
+//______________________________________________________________________________
+TProofMgr *TProofMgr::Create(const char *url, Int_t loglevel,
+                             const char *alias, Bool_t xpd)
+{
+   // Static method returning the appropriate TProofMgr object using
+   // the plugin manager.
+   TProofMgr *m= 0;
+
+   // Make sure we do not have already a manager for this URL
+   TList *lm = TProofMgr::GetListOfManagers();
+   if (lm) {
+      TIter nxm(lm);
+      while ((m = (TProofMgr *)nxm()))
+         if (m->MatchUrl(url))
+            if (m->IsValid()) {
+               return m;
+            } else {
+               fgListOfManagers.Remove(m);
+               SafeDelete(m);
+               break;
+            }
+   }
+
+   m = 0;
+   Bool_t trystd = kTRUE;
+
+   // If required, we assume first that the remote server is based on XrdProofd
+   if (xpd) {
+      TProofMgr_t cm = TProofMgr::GetXProofMgrHook();
+      if (cm) {
+         m = (TProofMgr *) (*cm)(url, loglevel, alias);
+         // Update trystd flag
+         trystd = (m && !(m->IsValid()) && m->IsProofd()) ? kTRUE : kFALSE;
+      }
+   }
+
+   // If the first attempt failed, we instantiate an old interface
+   if (trystd) {
+      SafeDelete(m);
+      m = new TProofMgr(url, loglevel, alias);
+   }
+
+   // Record the new manager, if any
+   if (m) {
+      fgListOfManagers.Add(m);
+      if (m->IsValid() && !(m->IsProofd())) {
+         R__LOCKGUARD2(gROOTMutex);
+         gROOT->GetListOfProofs()->Add(m);
+         gROOT->GetListOfSockets()->Add(m);
+      }
+   }
+
+   // We are done
+   return m;
+}
+
+//________________________________________________________________________
+TProofMgr_t TProofMgr::GetXProofMgrHook()
+{
+   // Get the constructor hook fro TXProofMgr.
+   // We do this without the plugin manager because it blocks the
+   // CINT mutex breaking the parallel startup.
+
+   if (!fgTXProofMgrHook) {
+      // Load the appropriate library ...
+#ifdef ROOTLIBDIR
+      TString prooflib = TString(ROOTLIBDIR);
+#else
+#ifndef WIN32
+      TString prooflib = TString(gRootDir) + "/lib";
+#else
+      TString prooflib = TString(gRootDir) + "/bin";
+#endif
+#endif
+      prooflib += "/libProofx";
+      char *p = 0;
+      if ((p = gSystem->DynamicPathName(prooflib, kTRUE))) {
+         delete[] p;
+         if (gSystem->Load(prooflib) == -1)
+            ::Error("TProofMgr::GetXProofMgrCtor",
+                    "can't load %s", prooflib.Data());
+      } else
+         ::Error("TProofMgr::GetXProofMgrCtor",
+                 "can't locate %s", prooflib.Data());
+   }
+
+   // Done
+   return fgTXProofMgrHook;
+}
+
+//_____________________________________________________________________________
+void TProofMgr::SetTXProofMgrHook(TProofMgr_t pmh)
+{
+   // Set hook to TXProofMgr ctor
+
+   fgTXProofMgrHook = pmh;
+}
+
+ClassImp(TProofDesc)
+
+//________________________________________________________________________
+void TProofDesc::Print(Option_t *) const
+{
+   // Dump the content to the screen.
+   const char *st[] = { "unknown", "idle", "processsing", "shutting down"};
+
+   Printf("// # %d", fLocalId);
+   Printf("// alias: %s, url: \"%s\"", GetTitle(), GetUrl());
+   Printf("// tag: %s", GetName());
+   Printf("// status: %s, attached: %s (remote ID: %d)",st[fStatus+1], (fProof ? "YES" : "NO"), fRemoteId);
+}
diff --git a/proof/src/TProofProgressDialog.cxx b/proof/src/TProofProgressDialog.cxx
index 34f88a14c66..c3665841677 100644
--- a/proof/src/TProofProgressDialog.cxx
+++ b/proof/src/TProofProgressDialog.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TProofProgressDialog.cxx,v 1.26 2006/11/21 11:41:46 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TProofProgressDialog.cxx,v 1.27 2006/11/22 16:52:54 rdm Exp $
 // Author: Fons Rademakers   21/03/03
 
 /*************************************************************************
@@ -49,7 +49,7 @@ TString TProofProgressDialog::fgTextQueryDefault = "last";
 ClassImp(TProofProgressDialog)
 
 //______________________________________________________________________________
-TProofProgressDialog::TProofProgressDialog(TVirtualProof *proof,
+TProofProgressDialog::TProofProgressDialog(TProof *proof,
                                            const char *selector,
                                            Int_t files,
                                            Long64_t first,
diff --git a/proof/src/TProofServ.cxx b/proof/src/TProofServ.cxx
index 89170c90288..c8595622d6b 100644
--- a/proof/src/TProofServ.cxx
+++ b/proof/src/TProofServ.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TProofServ.cxx,v 1.149 2006/11/20 15:56:35 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TProofServ.cxx,v 1.150 2006/11/27 14:14:24 rdm Exp $
 // Author: Fons Rademakers   16/02/97
 
 /*************************************************************************
@@ -379,7 +379,7 @@ Int_t TProofServ::CreateServer()
          master += a.GetPort();
       }
 
-      // Get plugin manager to load appropriate TVirtualProof from
+      // Get plugin manager to load appropriate TProof from
       TPluginManager *pm = gROOT->GetPluginManager();
       if (!pm) {
          Error("CreateServer", "no plugin manager found");
@@ -389,9 +389,9 @@ Int_t TProofServ::CreateServer()
       }
 
       // Find the appropriate handler
-      TPluginHandler *h = pm->FindHandler("TVirtualProof", fConfFile);
+      TPluginHandler *h = pm->FindHandler("TProof", fConfFile);
       if (!h) {
-         Error("CreateServer", "no plugin found for TVirtualProof with a"
+         Error("CreateServer", "no plugin found for TProof with a"
                              " config file of '%s'", fConfFile.Data());
          SendLogFile(-99);
          Terminate(0);
@@ -400,7 +400,7 @@ Int_t TProofServ::CreateServer()
 
       // load the plugin
       if (h->LoadPlugin() == -1) {
-         Error("CreateServer", "plugin for TVirtualProof could not be loaded");
+         Error("CreateServer", "plugin for TProof could not be loaded");
          SendLogFile(-99);
          Terminate(0);
          return -1;
@@ -412,7 +412,7 @@ Int_t TProofServ::CreateServer()
                                                           GetConfDir(),
                                                           fLogLevel));
       if (!fProof || !fProof->IsValid()) {
-         Error("CreateServer", "plugin for TVirtualProof could not be executed");
+         Error("CreateServer", "plugin for TProof could not be executed");
          delete fProof;
          fProof = 0;
          SendLogFile(-99);
@@ -622,7 +622,7 @@ void TProofServ::GetOptions(Int_t *argc, char **argv)
       fMasterServ = kFALSE;
       fEndMaster = kFALSE;
    } else {
-      Fatal("GetOptions", "Must be started as proofmaster or proofslave");
+      Fatal("GetOptions", "Must be started as 'proofserv' or 'proofslave'");
       exit(1);
    }
 
@@ -1975,7 +1975,7 @@ Int_t TProofServ::Setup()
    while (all_vars.Tokenize(name, from, ",")) {
       if (!name.IsNull()) {
          TString value = gSystem->Getenv(name);
-         TVirtualProof::AddEnvVar(name, value);
+         TProof::AddEnvVar(name, value);
       }
    }
 
@@ -3438,7 +3438,7 @@ void TProofServ::HandleCheckFile(TMessage *mess)
 
    TString filenam;
    TMD5    md5;
-   UInt_t  opt = TVirtualProof::kUntar;
+   UInt_t  opt = TProof::kUntar;
 
    // Parse message
    (*mess) >> filenam >> md5;
@@ -3456,7 +3456,7 @@ void TProofServ::HandleCheckFile(TMessage *mess)
       // compare md5's to check if transmission was ok
       TMD5 *md5local = TMD5::FileChecksum(fPackageDir + "/" + filenam);
       if (md5local && md5 == (*md5local)) {
-         if ((opt & TVirtualProof::kRemoveOld)) {
+         if ((opt & TProof::kRemoveOld)) {
             // remove any previous package directory with same name
             st = gSystem->Exec(Form("%s %s/%s", kRM, fPackageDir.Data(),
                                packnam.Data()));
diff --git a/proof/src/TSessionDialogs.cxx b/proof/src/TSessionDialogs.cxx
index e0f2f9bbbef..8e89ace60f7 100644
--- a/proof/src/TSessionDialogs.cxx
+++ b/proof/src/TSessionDialogs.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TSessionDialogs.cxx,v 1.32 2006/11/17 15:42:13 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TSessionDialogs.cxx,v 1.1 2006/11/17 15:50:17 rdm Exp $
 // Author: Marek Biskup, Jakub Madejczyk, Bertrand Bellenot 10/08/2005
 
 /*************************************************************************
@@ -39,7 +39,7 @@
 #include "TKey.h"
 #include "TGTableLayout.h"
 #include "TGFileDialog.h"
-#include "TVirtualProof.h"
+#include "TProof.h"
 #include "TFileInfo.h"
 #include "TGMsgBox.h"
 #include "TRegexp.h"
@@ -1152,17 +1152,17 @@ void TUploadDataSetDlg::UploadDataSet()
    }
    // Format upload flags with user selection
    if (fOverwriteDSet->IsOn())
-      flags |= TVirtualProof::kOverwriteDataSet;
+      flags |= TProof::kOverwriteDataSet;
    else
-      flags |= TVirtualProof::kNoOverwriteDataSet;
+      flags |= TProof::kNoOverwriteDataSet;
    if (fOverwriteFiles->IsOn())
-      flags |= TVirtualProof::kOverwriteAllFiles;
+      flags |= TProof::kOverwriteAllFiles;
    else
-      flags |= TVirtualProof::kOverwriteNoFiles;
+      flags |= TProof::kOverwriteNoFiles;
    if (fAppendFiles->IsOn()) {
-      flags |= TVirtualProof::kAppend;
-      if (flags & TVirtualProof::kNoOverwriteDataSet)
-         flags &= ~TVirtualProof::kNoOverwriteDataSet;
+      flags |= TProof::kAppend;
+      if (flags & TProof::kNoOverwriteDataSet)
+         flags &= ~TProof::kNoOverwriteDataSet;
    }
 
    Int_t ret = 0;
@@ -1182,7 +1182,7 @@ void TUploadDataSetDlg::UploadDataSet()
    if (strlen(destination) < 2) destination = 0;
    ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
                   datasetFiles, destination, flags, skippedFiles);
-   if (ret == TVirtualProof::kDataSetExists) {
+   if (ret == TProof::kDataSetExists) {
       // ask user what to do :
       // cancel/overwrite and change option
       new TGMsgBox(fClient->GetRoot(), this, "Upload DataSet",
@@ -1192,19 +1192,19 @@ void TUploadDataSetDlg::UploadDataSet()
       if (retval == kMBYes) {
          ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
                           datasetFiles, destination,
-                          TVirtualProof::kOverwriteDataSet |
-                          TVirtualProof::kOverwriteNoFiles,
+                          TProof::kOverwriteDataSet |
+                          TProof::kOverwriteNoFiles,
                           skippedFiles);
       }
       if (retval == kMBAppend) {
          ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
                           datasetFiles, destination,
-                          TVirtualProof::kAppend |
-                          TVirtualProof::kOverwriteNoFiles,
+                          TProof::kAppend |
+                          TProof::kOverwriteNoFiles,
                           skippedFiles);
       }
    }
-   if (ret == TVirtualProof::kError) {
+   if (ret == TProof::kError) {
       // Inform user
       new TGMsgBox(fClient->GetRoot(), this, "Upload DataSet",
                    "Failed uploading dataset/files to the cluster",
@@ -1227,9 +1227,9 @@ void TUploadDataSetDlg::UploadDataSet()
          if (retval == kMBYesAll) {
             ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
                            skippedFiles, destination,
-                           TVirtualProof::kAppend |
-                           TVirtualProof::kOverwriteAllFiles);
-            if (ret == TVirtualProof::kError) {
+                           TProof::kAppend |
+                           TProof::kOverwriteAllFiles);
+            if (ret == TProof::kError) {
                // Inform user
                new TGMsgBox(fClient->GetRoot(), this, "Upload DataSet",
                             Form("Failed uploading \"%s\" to the cluster",
@@ -1253,8 +1253,8 @@ void TUploadDataSetDlg::UploadDataSet()
             // Append one file to the dataSet
             ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
                   obj->GetFirstUrl()->GetUrl(), destination,
-                  TVirtualProof::kAppend | TVirtualProof::kOverwriteAllFiles);
-            if (ret == TVirtualProof::kError) {
+                  TProof::kAppend | TProof::kOverwriteAllFiles);
+            if (ret == TProof::kError) {
                // Inform user
                new TGMsgBox(fClient->GetRoot(), this, "Upload DataSet",
                             Form("Failed uploading \"%s\" to the cluster",
diff --git a/proof/src/TSessionLogView.cxx b/proof/src/TSessionLogView.cxx
index 9f97754c382..84f79acdfc5 100644
--- a/proof/src/TSessionLogView.cxx
+++ b/proof/src/TSessionLogView.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TSessionLogView.cxx,v 1.4 2006/01/30 17:42:06 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TSessionLogView.cxx,v 1.1 2006/11/17 15:50:17 rdm Exp $
 // Author: Bertrand Bellenot, Gerri Ganis 15/09/2005
 
 /*************************************************************************
@@ -11,7 +11,7 @@
 
 #include "TSessionLogView.h"
 #include "TSessionViewer.h"
-#include "TVirtualProof.h"
+#include "TProof.h"
 #include "KeySymbols.h"
 
 //____________________________________________________________________________
diff --git a/proof/src/TSessionViewer.cxx b/proof/src/TSessionViewer.cxx
index e0fcf9c760e..6ab7f3b5702 100644
--- a/proof/src/TSessionViewer.cxx
+++ b/proof/src/TSessionViewer.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TSessionViewer.cxx,v 1.1 2006/11/17 15:50:17 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TSessionViewer.cxx,v 1.2 2006/11/27 14:14:24 rdm Exp $
 // Author: Marek Biskup, Jakub Madejczyk, Bertrand Bellenot 10/08/2005
 
 /*************************************************************************
@@ -42,7 +42,7 @@
 #include "TChain.h"
 #include "TDSet.h"
 #include "TFileInfo.h"
-#include "TVirtualProof.h"
+#include "TProof.h"
 #include "TRandom.h"
 #include "TSessionViewer.h"
 #include "TSessionLogView.h"
@@ -462,8 +462,8 @@ void TSessionServerFrame::OnBtnConnectClicked()
       url += fNumPort->GetIntNumber();
    }
 
-   TVirtualProofDesc *desc;
-   fViewer->GetActDesc()->fProofMgr = TVirtualProofMgr::Create(url);
+   TProofDesc *desc;
+   fViewer->GetActDesc()->fProofMgr = TProofMgr::Create(url);
    if (!fViewer->GetActDesc()->fProofMgr->IsValid()) {
       // hide connection progress bar from status bar
       fViewer->GetStatusBar()->GetBarPart(0)->HideFrame(fViewer->GetConnectProg());
@@ -484,7 +484,7 @@ void TSessionServerFrame::OnBtnConnectClicked()
    if (sessions) {
       TIter nextp(sessions);
       // loop over existing Proof sessions
-      while ((desc = (TVirtualProofDesc *)nextp())) {
+      while ((desc = (TProofDesc *)nextp())) {
          if ((desc->GetName() == fViewer->GetActDesc()->fTag) ||
              (desc->GetTitle() == fViewer->GetActDesc()->fName)) {
             fViewer->GetActDesc()->fProof =
@@ -524,7 +524,7 @@ void TSessionServerFrame::OnBtnConnectClicked()
          fViewer->GetActDesc()->fProof = fViewer->GetActDesc()->fProofMgr->CreateSession(
          fViewer->GetActDesc()->fConfigFile);
          sessions = fViewer->GetActDesc()->fProofMgr->QuerySessions("");
-         desc = (TVirtualProofDesc *)sessions->Last();
+         desc = (TProofDesc *)sessions->Last();
          if (desc) {
             fViewer->GetActDesc()->fProof->SetAlias(fViewer->GetActDesc()->fName);
             fViewer->GetActDesc()->fTag = desc->GetName();
@@ -542,7 +542,7 @@ void TSessionServerFrame::OnBtnConnectClicked()
          fViewer->GetActDesc()->fLogLevel = 0;
       fViewer->GetActDesc()->fAddress    = fViewer->GetActDesc()->fProof->GetMaster();
       fViewer->GetActDesc()->fConnected = kTRUE;
-      fViewer->GetActDesc()->fProof->SetBit(TVirtualProof::kUsingSessionGui);
+      fViewer->GetActDesc()->fProof->SetBit(TProof::kUsingSessionGui);
    }
    fViewer->UpdateListOfSessions();
 
@@ -553,7 +553,7 @@ void TSessionServerFrame::OnBtnConnectClicked()
       fViewer->GetActDesc()->fProof->SetLogLevel(fViewer->GetActDesc()->fLogLevel);
       // set query type (synch / asynch)
       fViewer->GetActDesc()->fProof->SetQueryType(fViewer->GetActDesc()->fSync ?
-                             TVirtualProof::kSync : TVirtualProof::kAsync);
+                             TProof::kSync : TProof::kAsync);
       // set connected flag
       fViewer->GetActDesc()->fConnected = kTRUE;
       // change list tree item picture to connected pixmap
@@ -2429,7 +2429,7 @@ void TSessionQueryFrame::Feedback(TList *objs)
        (fViewer->GetActDesc()->fActQuery->fStatus !=
         TQueryDescription::kSessionQueryRunning) )
       return;
-   TVirtualProof *sender = dynamic_cast<TVirtualProof*>((TQObject*)gTQSender);
+   TProof *sender = dynamic_cast<TProof*>((TQObject*)gTQSender);
    // if Proof sender match actual session one, update feedback histos
    if (sender && (sender == fViewer->GetActDesc()->fProof))
       UpdateHistos(objs);
@@ -2486,7 +2486,7 @@ void TSessionQueryFrame::Progress(Long64_t total, Long64_t processed)
    if (!fViewer->GetActDesc()->fProof)
       return;
    // if Proof sender does't match actual session one, return
-   TVirtualProof *sender = dynamic_cast<TVirtualProof*>((TQObject*)gTQSender);
+   TProof *sender = dynamic_cast<TProof*>((TQObject*)gTQSender);
    if (!sender || (sender != fViewer->GetActDesc()->fProof))
       return;
 
@@ -2917,7 +2917,7 @@ void TSessionQueryFrame::OnBtnSubmit()
    // check for proof validity
    if (fViewer->GetActDesc()->fProof &&
        fViewer->GetActDesc()->fProof->IsValid()) {
-      fViewer->GetActDesc()->fProof->SetBit(TVirtualProof::kUsingSessionGui);
+      fViewer->GetActDesc()->fProof->SetBit(TProof::kUsingSessionGui);
       // set query description status to submitted
       newquery->fStatus = TQueryDescription::kSessionQuerySubmitted;
       // if feedback option selected
@@ -3678,13 +3678,13 @@ void TSessionViewer::UpdateListOfProofs()
    TSessionDescription *newdesc;
    if (proofs) {
       TObject *o = proofs->First();
-      if (o && dynamic_cast<TVirtualProofMgr *>(o)) {
-         TVirtualProofMgr *mgr = dynamic_cast<TVirtualProofMgr *>(o);
+      if (o && dynamic_cast<TProofMgr *>(o)) {
+         TProofMgr *mgr = dynamic_cast<TProofMgr *>(o);
          if (mgr->QuerySessions("L")) {
             TIter nxd(mgr->QuerySessions("L"));
-            TVirtualProofDesc *d = 0;
-            TVirtualProof *p = 0;
-            while ((d = (TVirtualProofDesc *)nxd())) {
+            TProofDesc *d = 0;
+            TProof *p = 0;
+            while ((d = (TProofDesc *)nxd())) {
                TIter nextfs(fSessions);
                // check if session exists in the list
                while ((desc = (TSessionDescription *)nextfs())) {
@@ -3833,9 +3833,9 @@ void TSessionViewer::UpdateListOfProofs()
          return;
       }
       TIter nextp(proofs);
-      TVirtualProof *proof;
+      TProof *proof;
       // loop over existing Proof sessions
-      while ((proof = (TVirtualProof *)nextp())) {
+      while ((proof = (TProof *)nextp())) {
          TIter nexts(fSessions);
          found = kFALSE;
          // check if session is already in the list
@@ -3890,11 +3890,11 @@ void TSessionViewer::UpdateListOfSessions()
    TList *sessions = fActDesc->fProofMgr->QuerySessions("");
    if (sessions) {
       TIter nextp(sessions);
-      TVirtualProofDesc *pdesc;
-      TVirtualProof *proof;
+      TProofDesc *pdesc;
+      TProof *proof;
       TSessionDescription *newdesc;
       // loop over existing Proof sessions
-      while ((pdesc = (TVirtualProofDesc *)nextp())) {
+      while ((pdesc = (TProofDesc *)nextp())) {
          TIter nexts(fSessions);
          TSessionDescription *desc = 0;
          Bool_t found = kFALSE;
@@ -4905,7 +4905,7 @@ void TSessionViewer::ResetSession()
          kMBYes | kMBNo | kMBCancel, &result);
    if (result == kMBYes) {
       // reset the session
-      TVirtualProof::Reset(fActDesc->fAddress.Data(),
+      TProof::Reset(fActDesc->fAddress.Data(),
                            fActDesc->fUserName.Data());
       // reset connected flag
       fActDesc->fAttached = kFALSE;
diff --git a/proof/src/TSlave.cxx b/proof/src/TSlave.cxx
index 3d4445b9db0..d5eecf3b69a 100644
--- a/proof/src/TSlave.cxx
+++ b/proof/src/TSlave.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TSlave.cxx,v 1.54 2006/11/16 17:17:38 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TSlave.cxx,v 1.55 2006/11/20 15:56:35 rdm Exp $
 // Author: Fons Rademakers   14/02/97
 
 /*************************************************************************
@@ -146,7 +146,7 @@ void TSlave::Init(const char *host, Int_t port, Int_t stype)
    if (fSocket->GetRemoteProtocol() >= 14 ) {
       TMessage m(kPROOF_SETENV);
 
-      const TList *envs = TVirtualProof::GetEnvVars();
+      const TList *envs = TProof::GetEnvVars();
       if (envs != 0 ) {
          TIter next(envs);
          for (TObject *o = next(); o != 0; o = next()) {
diff --git a/proofplayer/inc/TDrawFeedback.h b/proofplayer/inc/TDrawFeedback.h
index cd1eb7542c0..9d4096f84b1 100644
--- a/proofplayer/inc/TDrawFeedback.h
+++ b/proofplayer/inc/TDrawFeedback.h
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TDrawFeedback.h,v 1.5 2005/09/16 08:48:38 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TDrawFeedback.h,v 1.6 2006/03/20 21:43:43 pcanal Exp $
 // Author: Maarten Ballintijn   28/10/2003
 
 /*************************************************************************
@@ -28,7 +28,7 @@
 #include "TObject.h"
 #endif
 
-class TVirtualProof;
+class TProof;
 class TProof;
 class THashList;
 class TSeqCollection;
@@ -43,7 +43,7 @@ protected:
    TProof        *fProof;  //handle to PROOF session
 
 public:
-   TDrawFeedback(TVirtualProof *proof = 0, TSeqCollection *names = 0);
+   TDrawFeedback(TProof *proof = 0, TSeqCollection *names = 0);
    ~TDrawFeedback();
 
    void Feedback(TList *objs);
diff --git a/proofplayer/src/TDrawFeedback.cxx b/proofplayer/src/TDrawFeedback.cxx
index f3c32ad1c61..73c82d8ec6a 100644
--- a/proofplayer/src/TDrawFeedback.cxx
+++ b/proofplayer/src/TDrawFeedback.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TDrawFeedback.cxx,v 1.9 2005/06/07 20:28:32 brun Exp $
+// @(#)root/proof:$Name:  $:$Id: TDrawFeedback.cxx,v 1.10 2006/05/15 09:45:03 brun Exp $
 // Author: Maarten Ballintijn   28/10/2003
 
 /*************************************************************************
@@ -34,7 +34,7 @@ ClassImp(TDrawFeedback)
 
 
 //______________________________________________________________________________
-TDrawFeedback::TDrawFeedback(TVirtualProof *proof, TSeqCollection *names)
+TDrawFeedback::TDrawFeedback(TProof *proof, TSeqCollection *names)
   : fAll(kFALSE)
 {
    // Constructor
diff --git a/proofplayer/src/TPerfStats.cxx b/proofplayer/src/TPerfStats.cxx
index 807e4ae1495..25c17da49a4 100644
--- a/proofplayer/src/TPerfStats.cxx
+++ b/proofplayer/src/TPerfStats.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TPerfStats.cxx,v 1.8 2006/06/01 16:26:57 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TPerfStats.cxx,v 1.9 2006/11/15 17:45:55 rdm Exp $
 // Author: Kristjan Gulbrandsen   11/05/04
 
 /*************************************************************************
@@ -113,7 +113,7 @@ TPerfStats::TPerfStats(TList *input, TList *output)
    // Normal Constructor.
 
    Int_t nslaves = 0;
-   TVirtualProof *proof = gProofServ->GetProof();
+   TProof *proof = gProofServ->GetProof();
    TList *l = proof ? proof->GetSlaveInfo() : 0 ;
    TIter nextslaveinfo(l);
    while (TSlaveInfo *si = dynamic_cast<TSlaveInfo*>(nextslaveinfo()))
diff --git a/proofx/inc/TXProofMgr.h b/proofx/inc/TXProofMgr.h
index 81aa234459f..df0aecce518 100644
--- a/proofx/inc/TXProofMgr.h
+++ b/proofx/inc/TXProofMgr.h
@@ -1,4 +1,4 @@
-// @(#)root/proofx:$Name:  $:$Id: TXProofMgr.h,v 1.5 2006/06/05 22:51:14 rdm Exp $
+// @(#)root/proofx:$Name:  $:$Id: TXProofMgr.h,v 1.6 2006/06/21 16:18:26 rdm Exp $
 // Author: G. Ganis, Nov 2005
 
 /*************************************************************************
@@ -24,8 +24,8 @@
 //                                                                      //
 //////////////////////////////////////////////////////////////////////////
 
-#ifndef ROOT_TVirtualProofMgr
-#include "TVirtualProofMgr.h"
+#ifndef ROOT_TProofMgr
+#include "TProofMgr.h"
 #endif
 #ifndef ROOT_TUrl
 #include "TUrl.h"
@@ -42,7 +42,7 @@ const Int_t kXPROOF_Protocol = 1;
 
 class TXSocket;
 
-class TXProofMgr : public TVirtualProofMgr, public TXHandler {
+class TXProofMgr : public TProofMgr, public TXHandler {
 
 private:
 
@@ -58,7 +58,7 @@ public:
 
    Bool_t      IsValid() const { return fSocket; }
 
-   TVirtualProof *AttachSession(Int_t id, Bool_t gui = kFALSE);
+   TProof *AttachSession(Int_t id, Bool_t gui = kFALSE);
    void        DetachSession(Int_t, Option_t * = "");
    Bool_t      MatchUrl(const char *url);
    TList      *QuerySessions(Option_t *opt = "S");
diff --git a/proofx/src/TXProofMgr.cxx b/proofx/src/TXProofMgr.cxx
index a524510735d..736423ab435 100644
--- a/proofx/src/TXProofMgr.cxx
+++ b/proofx/src/TXProofMgr.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proofx:$Name:  $:$Id: TXProofMgr.cxx,v 1.13 2006/10/19 12:38:07 rdm Exp $
+// @(#)root/proofx:$Name:  $:$Id: TXProofMgr.cxx,v 1.14 2006/11/15 17:45:55 rdm Exp $
 // Author: Gerardo Ganis  12/12/2005
 
 /*************************************************************************
@@ -34,27 +34,30 @@ ClassImp(TXProofMgr)
 // These are needed to avoid using the plugin manager which may create
 // problems in multi-threaded environments.
 extern "C" {
-   TVirtualProofMgr *GetTXProofMgr(const char *url, Int_t l, const char *al)
-   { return ((TVirtualProofMgr *) new TXProofMgr(url, l, al)); }
+   TProofMgr *GetTXProofMgr(const char *url, Int_t l, const char *al)
+   { return ((TProofMgr *) new TXProofMgr(url, l, al)); }
 }
 class TXProofMgrInit {
 public:
    TXProofMgrInit() {
-      TVirtualProofMgr::SetTProofMgrHook(&GetTXProofMgr, "xpd");
+      TProofMgr::SetTXProofMgrHook(&GetTXProofMgr);
 }};
 static TXProofMgrInit gxproofmgr_init;
 
 //______________________________________________________________________________
 TXProofMgr::TXProofMgr(const char *url, Int_t dbg, const char *alias)
-          : TVirtualProofMgr(url)
+          : TProofMgr(url)
 {
    // Create a PROOF manager for the standard (old) environment.
 
+   // Set the correct servert type
+   fServType = kXProofd;
+
    // Correct URL protocol
    if (!strcmp(fUrl.GetProtocol(), TUrl("a").GetProtocol()))
       fUrl.SetProtocol("proof");
    // Check port
-  if (fUrl.GetPort() == TUrl("a").GetPort()) {
+   if (fUrl.GetPort() == TUrl("a").GetPort()) {
       // For the time being we use 'rootd' service as default.
       // This will be changed to 'proofd' as soon as XRD will be able to
       // accept on multiple ports
@@ -108,7 +111,7 @@ Int_t TXProofMgr::Init(Int_t)
       if (!fSocket || !(fSocket->IsServProofd()))
          Error("Init", "while opening the connection to %s - exit", u.Data());
       if (fSocket && fSocket->IsServProofd())
-         fServType = TVirtualProofMgr::kProofd;
+         fServType = TProofMgr::kProofd;
       return -1;
    }
 
@@ -135,13 +138,13 @@ TXProofMgr::~TXProofMgr()
 }
 
 //______________________________________________________________________________
-TVirtualProof *TXProofMgr::AttachSession(Int_t id, Bool_t gui)
+TProof *TXProofMgr::AttachSession(Int_t id, Bool_t gui)
 {
    // Dummy version provided for completeness. Just returns a pointer to
    // existing session 'id' (as shown by TProof::QuerySessions) or 0 if 'id' is
    // not valid. The boolena 'gui' should be kTRUE when invoked from the GUI.
 
-   TVirtualProofDesc *d = GetProofDesc(id);
+   TProofDesc *d = GetProofDesc(id);
    if (d) {
       if (d->GetProof())
          // Nothing to do if already in contact with proofserv
@@ -156,15 +159,15 @@ TVirtualProof *TXProofMgr::AttachSession(Int_t id, Bool_t gui)
          u += "GUI";
 
       // Attach
-      TVirtualProof *p = new TProof(u);
+      TProof *p = new TProof(u);
       if (p && p->IsValid()) {
 
          // Set reference manager
          p->SetManager(this);
 
          // Save record about this session
-         Int_t st = (p->IsIdle()) ? TVirtualProofDesc::kIdle
-                                  : TVirtualProofDesc::kRunning;
+         Int_t st = (p->IsIdle()) ? TProofDesc::kIdle
+                                  : TProofDesc::kRunning;
          d->SetStatus(st);
          d->SetProof(p);
 
@@ -190,11 +193,11 @@ void TXProofMgr::DetachSession(Int_t id, Option_t *opt)
 
    if (id > 0) {
       // Single session request
-      TVirtualProofDesc *d = GetProofDesc(id);
+      TProofDesc *d = GetProofDesc(id);
       if (d) {
          if (fSocket)
             fSocket->DisconnectSession(d->GetRemoteId(), opt);
-         TVirtualProof *p = d->GetProof();
+         TProof *p = d->GetProof();
          SafeDelete(p);
          fSessions->Remove(d);
          delete d;
@@ -209,9 +212,9 @@ void TXProofMgr::DetachSession(Int_t id, Option_t *opt)
       if (fSessions) {
          // Delete PROOF sessions
          TIter nxd(fSessions);
-         TVirtualProofDesc *d = 0;
-         while ((d = (TVirtualProofDesc *)nxd())) {
-            TVirtualProof *p = d->GetProof();
+         TProofDesc *d = 0;
+         while ((d = (TProofDesc *)nxd())) {
+            TProof *p = d->GetProof();
             SafeDelete(p);
          }
          fSessions->Delete();
@@ -225,7 +228,7 @@ void TXProofMgr::DetachSession(Int_t id, Option_t *opt)
 Bool_t TXProofMgr::MatchUrl(const char *url)
 {
    // Checks if 'url' refers to the same 'user@host:port' entity as the URL
-   // in memory. TVirtualProofMgr::MatchUrl cannot be used here because of the
+   // in memory. TProofMgr::MatchUrl cannot be used here because of the
    // 'double' default port, implying an additional check on the port effectively
    // open.
 
@@ -301,7 +304,7 @@ TList *TXProofMgr::QuerySessions(Option_t *opt)
    if (os) {
       TObjArray *oa = TString(os->GetName()).Tokenize(TString("|"));
       if (oa) {
-         TVirtualProofDesc *d = 0;
+         TProofDesc *d = 0;
          TIter nxos(oa);
          TObjString *to = (TObjString *) nxos();
          while ((to = (TObjString *) nxos())) {
@@ -311,9 +314,9 @@ TList *TXProofMgr::QuerySessions(Option_t *opt)
             Int_t id = -1, st = -1, nc = 0;
             sscanf(to->GetName(),"%d %s %s %d %d", &id, tg, al, &st, &nc);
             // Add to the list, if not already there
-            if (!(d = (TVirtualProofDesc *) fSessions->FindObject(tg))) {
+            if (!(d = (TProofDesc *) fSessions->FindObject(tg))) {
                Int_t locid = fSessions->GetSize() + 1;
-               d = new TVirtualProofDesc(tg, al, GetUrl(), locid, id, st, 0);
+               d = new TProofDesc(tg, al, GetUrl(), locid, id, st, 0);
                fSessions->Add(d);
             } else {
                // Set missing / update info
@@ -332,8 +335,8 @@ TList *TXProofMgr::QuerySessions(Option_t *opt)
    // Printout and Garbage collection
    if (fSessions->GetSize() > 0) {
       TIter nxd(fSessions);
-      TVirtualProofDesc *d = 0;
-      while ((d = (TVirtualProofDesc *)nxd())) {
+      TProofDesc *d = 0;
+      while ((d = (TProofDesc *)nxd())) {
          if (ocl->FindObject(d->GetName())) {
             if (opt && !strncasecmp(opt,"S",1))
                d->Print("");
@@ -358,8 +361,8 @@ Bool_t TXProofMgr::HandleError(const void *)
    // Interrupt any PROOF session in Collect
    if (fSessions && fSessions->GetSize() > 0) {
       TIter nxd(fSessions);
-      TVirtualProofDesc *d = 0;
-      while ((d = (TVirtualProofDesc *)nxd())) {
+      TProofDesc *d = 0;
+      while ((d = (TProofDesc *)nxd())) {
          TProof *p = (TProof *) d->GetProof();
          if (p)
             p->InterruptCurrentMonitor();
diff --git a/proofx/src/TXProofServ.cxx b/proofx/src/TXProofServ.cxx
index d20b801d7c2..a131d6e98d7 100644
--- a/proofx/src/TXProofServ.cxx
+++ b/proofx/src/TXProofServ.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proofx:$Name:  $:$Id: TXProofServ.cxx,v 1.20 2006/11/20 10:31:48 rdm Exp $
+// @(#)root/proofx:$Name:  $:$Id: TXProofServ.cxx,v 1.21 2006/11/20 15:56:36 rdm Exp $
 // Author: Gerardo Ganis  12/12/2005
 
 /*************************************************************************
@@ -376,7 +376,7 @@ Int_t TXProofServ::CreateServer()
       // (it is broken for xpd because of the locks on gCINTMutex)
       gEnv->SetValue("Proof.ParallelStartup", 0);
 
-      // Get plugin manager to load appropriate TVirtualProof from
+      // Get plugin manager to load appropriate TProof from
       TPluginManager *pm = gROOT->GetPluginManager();
       if (!pm) {
          Error("CreateServer", "no plugin manager found");
@@ -386,9 +386,9 @@ Int_t TXProofServ::CreateServer()
       }
 
       // Find the appropriate handler
-      TPluginHandler *h = pm->FindHandler("TVirtualProof", fConfFile);
+      TPluginHandler *h = pm->FindHandler("TProof", fConfFile);
       if (!h) {
-         Error("CreateServer", "no plugin found for TVirtualProof with a"
+         Error("CreateServer", "no plugin found for TProof with a"
                              " config file of '%s'", fConfFile.Data());
          SendLogFile(-99);
          Terminate(0);
@@ -397,7 +397,7 @@ Int_t TXProofServ::CreateServer()
 
       // load the plugin
       if (h->LoadPlugin() == -1) {
-         Error("CreateServer", "plugin for TVirtualProof could not be loaded");
+         Error("CreateServer", "plugin for TProof could not be loaded");
          SendLogFile(-99);
          Terminate(0);
          return -1;
@@ -410,7 +410,7 @@ Int_t TXProofServ::CreateServer()
                                                           fLogLevel,
                                                           fSessionTag.Data()));
       if (!fProof || !fProof->IsValid()) {
-         Error("CreateServer", "plugin for TVirtualProof could not be executed");
+         Error("CreateServer", "plugin for TProof could not be executed");
          delete fProof;
          fProof = 0;
          SendLogFile(-99);
@@ -790,7 +790,7 @@ Int_t TXProofServ::Setup()
    while (all_vars.Tokenize(name, from, ",")) {
       if (!name.IsNull()) {
          TString value = gSystem->Getenv(name);
-         TVirtualProof::AddEnvVar(name, value);
+         TProof::AddEnvVar(name, value);
       }
    }
 
diff --git a/proofx/src/TXSlave.cxx b/proofx/src/TXSlave.cxx
index 0f9ed8ce62e..01c3a74a444 100644
--- a/proofx/src/TXSlave.cxx
+++ b/proofx/src/TXSlave.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proofx:$Name:  $:$Id: TXSlave.cxx,v 1.13 2006/11/20 15:56:36 rdm Exp $
+// @(#)root/proofx:$Name:  $:$Id: TXSlave.cxx,v 1.14 2006/11/22 00:25:32 rdm Exp $
 // Author: Gerardo Ganis  12/12/2005
 
 /*************************************************************************
@@ -196,7 +196,7 @@ void TXSlave::Init(const char *host, Int_t stype)
    TString envlist;
    if (!fProof->GetManager() ||
         fProof->GetManager()->GetRemoteProtocol() > 1001) {
-         const TList *envs = TVirtualProof::GetEnvVars();
+         const TList *envs = TProof::GetEnvVars();
          if (envs != 0 ) {
             TIter next(envs);
             for (TObject *o = next(); o != 0; o = next()) {
@@ -209,7 +209,7 @@ void TXSlave::Init(const char *host, Int_t stype)
             }
          }
    } else {
-      if (fProof->GetManager() && TVirtualProof::GetEnvVars())
+      if (fProof->GetManager() && TProof::GetEnvVars())
          Info("Init", "** NOT ** sending user envs - RemoteProtocol : %d",
                       fProof->GetManager()->GetRemoteProtocol());
    }
@@ -248,7 +248,7 @@ void TXSlave::Init(const char *host, Int_t stype)
    fProtocol = fSocket->GetRemoteProtocol();
 
    // Set server type
-   fProof->fServType = TVirtualProofMgr::kXProofd;
+   fProof->fServType = TProofMgr::kXProofd;
 
    // Set remote session ID
    fProof->fSessionID = ((TXSocket *)fSocket)->GetSessionID();
@@ -513,7 +513,7 @@ Bool_t TXSlave::HandleError(const void *)
          // On clients the proof session should be removed from the lists
          // and deleted, since it is not valid anymore
          fProof->GetListOfSlaves()->Remove(this);
-         TVirtualProofMgr *mgr= fProof->GetManager();
+         TProofMgr *mgr= fProof->GetManager();
          if (mgr)
             mgr->ShutdownSession(fProof);
       }
diff --git a/sessionviewer/inc/TProofProgressDialog.h b/sessionviewer/inc/TProofProgressDialog.h
index 460cea349a4..a499d8eb39b 100644
--- a/sessionviewer/inc/TProofProgressDialog.h
+++ b/sessionviewer/inc/TProofProgressDialog.h
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TProofProgressDialog.h,v 1.10 2006/06/02 15:14:35 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TProofProgressDialog.h,v 1.11 2006/11/15 17:45:54 rdm Exp $
 // Author: Fons Rademakers   21/03/03
 
 /*************************************************************************
@@ -35,7 +35,7 @@ class TGCheckButton;
 class TGLabel;
 class TGTextBuffer;
 class TGTextEntry;
-class TVirtualProof;
+class TProof;
 class TProofProgressLog;
 class TNtuple;
 class TGraph;
@@ -67,7 +67,7 @@ private:
    TGLabel            *fInit;
    TGLabel            *fSelector;
    TProofProgressLog  *fLogWindow;       // transient frame for logs
-   TVirtualProof      *fProof;
+   TProof             *fProof;
    TTime               fStartTime;
    TTime               fEndTime;
    Long64_t            fPrevProcessed;
@@ -88,7 +88,7 @@ private:
    static TString      fgTextQueryDefault;
 
 public:
-   TProofProgressDialog(TVirtualProof *proof, const char *selector,
+   TProofProgressDialog(TProof *proof, const char *selector,
                         Int_t files, Long64_t first, Long64_t entries);
    virtual ~TProofProgressDialog();
 
diff --git a/sessionviewer/inc/TSessionViewer.h b/sessionviewer/inc/TSessionViewer.h
index 7670e4e3ce4..de625c8ad85 100644
--- a/sessionviewer/inc/TSessionViewer.h
+++ b/sessionviewer/inc/TSessionViewer.h
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TSessionViewer.h,v 1.1 2006/11/17 15:50:17 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TSessionViewer.h,v 1.2 2006/11/22 14:16:54 rdm Exp $
 // Author: Marek Biskup, Jakub Madejczyk, Bertrand Bellenot 10/08/2005
 
 /*************************************************************************
@@ -84,8 +84,8 @@ class TCanvas;
 class TEnv;
 struct UserGroup_t;
 
-class TVirtualProofMgr;
-class TVirtualProof;
+class TProofMgr;
+class TProof;
 class TSessionViewer;
 class TSessionLogView;
 class TQueryResult;
@@ -164,8 +164,8 @@ public:
    TList             *fQueries;     // list of queries in this session
    TList             *fPackages;    // list of packages
    TQueryDescription *fActQuery;    // current (actual) query
-   TVirtualProof     *fProof;       // pointer on TVirtualProof used by this session
-   TVirtualProofMgr  *fProofMgr;    // Proof sessions manager
+   TProof            *fProof;       // pointer on TProof used by this session
+   TProofMgr         *fProofMgr;    // Proof sessions manager
    Int_t              fNbHistos;    // number of feedback histos
 
    const char        *GetName() const { return fName; }
diff --git a/sessionviewer/src/TProofProgressDialog.cxx b/sessionviewer/src/TProofProgressDialog.cxx
index 34f88a14c66..c3665841677 100644
--- a/sessionviewer/src/TProofProgressDialog.cxx
+++ b/sessionviewer/src/TProofProgressDialog.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TProofProgressDialog.cxx,v 1.26 2006/11/21 11:41:46 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TProofProgressDialog.cxx,v 1.27 2006/11/22 16:52:54 rdm Exp $
 // Author: Fons Rademakers   21/03/03
 
 /*************************************************************************
@@ -49,7 +49,7 @@ TString TProofProgressDialog::fgTextQueryDefault = "last";
 ClassImp(TProofProgressDialog)
 
 //______________________________________________________________________________
-TProofProgressDialog::TProofProgressDialog(TVirtualProof *proof,
+TProofProgressDialog::TProofProgressDialog(TProof *proof,
                                            const char *selector,
                                            Int_t files,
                                            Long64_t first,
diff --git a/sessionviewer/src/TSessionDialogs.cxx b/sessionviewer/src/TSessionDialogs.cxx
index e0f2f9bbbef..8e89ace60f7 100644
--- a/sessionviewer/src/TSessionDialogs.cxx
+++ b/sessionviewer/src/TSessionDialogs.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TSessionDialogs.cxx,v 1.32 2006/11/17 15:42:13 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TSessionDialogs.cxx,v 1.1 2006/11/17 15:50:17 rdm Exp $
 // Author: Marek Biskup, Jakub Madejczyk, Bertrand Bellenot 10/08/2005
 
 /*************************************************************************
@@ -39,7 +39,7 @@
 #include "TKey.h"
 #include "TGTableLayout.h"
 #include "TGFileDialog.h"
-#include "TVirtualProof.h"
+#include "TProof.h"
 #include "TFileInfo.h"
 #include "TGMsgBox.h"
 #include "TRegexp.h"
@@ -1152,17 +1152,17 @@ void TUploadDataSetDlg::UploadDataSet()
    }
    // Format upload flags with user selection
    if (fOverwriteDSet->IsOn())
-      flags |= TVirtualProof::kOverwriteDataSet;
+      flags |= TProof::kOverwriteDataSet;
    else
-      flags |= TVirtualProof::kNoOverwriteDataSet;
+      flags |= TProof::kNoOverwriteDataSet;
    if (fOverwriteFiles->IsOn())
-      flags |= TVirtualProof::kOverwriteAllFiles;
+      flags |= TProof::kOverwriteAllFiles;
    else
-      flags |= TVirtualProof::kOverwriteNoFiles;
+      flags |= TProof::kOverwriteNoFiles;
    if (fAppendFiles->IsOn()) {
-      flags |= TVirtualProof::kAppend;
-      if (flags & TVirtualProof::kNoOverwriteDataSet)
-         flags &= ~TVirtualProof::kNoOverwriteDataSet;
+      flags |= TProof::kAppend;
+      if (flags & TProof::kNoOverwriteDataSet)
+         flags &= ~TProof::kNoOverwriteDataSet;
    }
 
    Int_t ret = 0;
@@ -1182,7 +1182,7 @@ void TUploadDataSetDlg::UploadDataSet()
    if (strlen(destination) < 2) destination = 0;
    ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
                   datasetFiles, destination, flags, skippedFiles);
-   if (ret == TVirtualProof::kDataSetExists) {
+   if (ret == TProof::kDataSetExists) {
       // ask user what to do :
       // cancel/overwrite and change option
       new TGMsgBox(fClient->GetRoot(), this, "Upload DataSet",
@@ -1192,19 +1192,19 @@ void TUploadDataSetDlg::UploadDataSet()
       if (retval == kMBYes) {
          ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
                           datasetFiles, destination,
-                          TVirtualProof::kOverwriteDataSet |
-                          TVirtualProof::kOverwriteNoFiles,
+                          TProof::kOverwriteDataSet |
+                          TProof::kOverwriteNoFiles,
                           skippedFiles);
       }
       if (retval == kMBAppend) {
          ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
                           datasetFiles, destination,
-                          TVirtualProof::kAppend |
-                          TVirtualProof::kOverwriteNoFiles,
+                          TProof::kAppend |
+                          TProof::kOverwriteNoFiles,
                           skippedFiles);
       }
    }
-   if (ret == TVirtualProof::kError) {
+   if (ret == TProof::kError) {
       // Inform user
       new TGMsgBox(fClient->GetRoot(), this, "Upload DataSet",
                    "Failed uploading dataset/files to the cluster",
@@ -1227,9 +1227,9 @@ void TUploadDataSetDlg::UploadDataSet()
          if (retval == kMBYesAll) {
             ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
                            skippedFiles, destination,
-                           TVirtualProof::kAppend |
-                           TVirtualProof::kOverwriteAllFiles);
-            if (ret == TVirtualProof::kError) {
+                           TProof::kAppend |
+                           TProof::kOverwriteAllFiles);
+            if (ret == TProof::kError) {
                // Inform user
                new TGMsgBox(fClient->GetRoot(), this, "Upload DataSet",
                             Form("Failed uploading \"%s\" to the cluster",
@@ -1253,8 +1253,8 @@ void TUploadDataSetDlg::UploadDataSet()
             // Append one file to the dataSet
             ret = fViewer->GetActDesc()->fProof->UploadDataSet(dsetName,
                   obj->GetFirstUrl()->GetUrl(), destination,
-                  TVirtualProof::kAppend | TVirtualProof::kOverwriteAllFiles);
-            if (ret == TVirtualProof::kError) {
+                  TProof::kAppend | TProof::kOverwriteAllFiles);
+            if (ret == TProof::kError) {
                // Inform user
                new TGMsgBox(fClient->GetRoot(), this, "Upload DataSet",
                             Form("Failed uploading \"%s\" to the cluster",
diff --git a/sessionviewer/src/TSessionLogView.cxx b/sessionviewer/src/TSessionLogView.cxx
index 9f97754c382..84f79acdfc5 100644
--- a/sessionviewer/src/TSessionLogView.cxx
+++ b/sessionviewer/src/TSessionLogView.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TSessionLogView.cxx,v 1.4 2006/01/30 17:42:06 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TSessionLogView.cxx,v 1.1 2006/11/17 15:50:17 rdm Exp $
 // Author: Bertrand Bellenot, Gerri Ganis 15/09/2005
 
 /*************************************************************************
@@ -11,7 +11,7 @@
 
 #include "TSessionLogView.h"
 #include "TSessionViewer.h"
-#include "TVirtualProof.h"
+#include "TProof.h"
 #include "KeySymbols.h"
 
 //____________________________________________________________________________
diff --git a/sessionviewer/src/TSessionViewer.cxx b/sessionviewer/src/TSessionViewer.cxx
index e0fcf9c760e..6ab7f3b5702 100644
--- a/sessionviewer/src/TSessionViewer.cxx
+++ b/sessionviewer/src/TSessionViewer.cxx
@@ -1,4 +1,4 @@
-// @(#)root/proof:$Name:  $:$Id: TSessionViewer.cxx,v 1.1 2006/11/17 15:50:17 rdm Exp $
+// @(#)root/proof:$Name:  $:$Id: TSessionViewer.cxx,v 1.2 2006/11/27 14:14:24 rdm Exp $
 // Author: Marek Biskup, Jakub Madejczyk, Bertrand Bellenot 10/08/2005
 
 /*************************************************************************
@@ -42,7 +42,7 @@
 #include "TChain.h"
 #include "TDSet.h"
 #include "TFileInfo.h"
-#include "TVirtualProof.h"
+#include "TProof.h"
 #include "TRandom.h"
 #include "TSessionViewer.h"
 #include "TSessionLogView.h"
@@ -462,8 +462,8 @@ void TSessionServerFrame::OnBtnConnectClicked()
       url += fNumPort->GetIntNumber();
    }
 
-   TVirtualProofDesc *desc;
-   fViewer->GetActDesc()->fProofMgr = TVirtualProofMgr::Create(url);
+   TProofDesc *desc;
+   fViewer->GetActDesc()->fProofMgr = TProofMgr::Create(url);
    if (!fViewer->GetActDesc()->fProofMgr->IsValid()) {
       // hide connection progress bar from status bar
       fViewer->GetStatusBar()->GetBarPart(0)->HideFrame(fViewer->GetConnectProg());
@@ -484,7 +484,7 @@ void TSessionServerFrame::OnBtnConnectClicked()
    if (sessions) {
       TIter nextp(sessions);
       // loop over existing Proof sessions
-      while ((desc = (TVirtualProofDesc *)nextp())) {
+      while ((desc = (TProofDesc *)nextp())) {
          if ((desc->GetName() == fViewer->GetActDesc()->fTag) ||
              (desc->GetTitle() == fViewer->GetActDesc()->fName)) {
             fViewer->GetActDesc()->fProof =
@@ -524,7 +524,7 @@ void TSessionServerFrame::OnBtnConnectClicked()
          fViewer->GetActDesc()->fProof = fViewer->GetActDesc()->fProofMgr->CreateSession(
          fViewer->GetActDesc()->fConfigFile);
          sessions = fViewer->GetActDesc()->fProofMgr->QuerySessions("");
-         desc = (TVirtualProofDesc *)sessions->Last();
+         desc = (TProofDesc *)sessions->Last();
          if (desc) {
             fViewer->GetActDesc()->fProof->SetAlias(fViewer->GetActDesc()->fName);
             fViewer->GetActDesc()->fTag = desc->GetName();
@@ -542,7 +542,7 @@ void TSessionServerFrame::OnBtnConnectClicked()
          fViewer->GetActDesc()->fLogLevel = 0;
       fViewer->GetActDesc()->fAddress    = fViewer->GetActDesc()->fProof->GetMaster();
       fViewer->GetActDesc()->fConnected = kTRUE;
-      fViewer->GetActDesc()->fProof->SetBit(TVirtualProof::kUsingSessionGui);
+      fViewer->GetActDesc()->fProof->SetBit(TProof::kUsingSessionGui);
    }
    fViewer->UpdateListOfSessions();
 
@@ -553,7 +553,7 @@ void TSessionServerFrame::OnBtnConnectClicked()
       fViewer->GetActDesc()->fProof->SetLogLevel(fViewer->GetActDesc()->fLogLevel);
       // set query type (synch / asynch)
       fViewer->GetActDesc()->fProof->SetQueryType(fViewer->GetActDesc()->fSync ?
-                             TVirtualProof::kSync : TVirtualProof::kAsync);
+                             TProof::kSync : TProof::kAsync);
       // set connected flag
       fViewer->GetActDesc()->fConnected = kTRUE;
       // change list tree item picture to connected pixmap
@@ -2429,7 +2429,7 @@ void TSessionQueryFrame::Feedback(TList *objs)
        (fViewer->GetActDesc()->fActQuery->fStatus !=
         TQueryDescription::kSessionQueryRunning) )
       return;
-   TVirtualProof *sender = dynamic_cast<TVirtualProof*>((TQObject*)gTQSender);
+   TProof *sender = dynamic_cast<TProof*>((TQObject*)gTQSender);
    // if Proof sender match actual session one, update feedback histos
    if (sender && (sender == fViewer->GetActDesc()->fProof))
       UpdateHistos(objs);
@@ -2486,7 +2486,7 @@ void TSessionQueryFrame::Progress(Long64_t total, Long64_t processed)
    if (!fViewer->GetActDesc()->fProof)
       return;
    // if Proof sender does't match actual session one, return
-   TVirtualProof *sender = dynamic_cast<TVirtualProof*>((TQObject*)gTQSender);
+   TProof *sender = dynamic_cast<TProof*>((TQObject*)gTQSender);
    if (!sender || (sender != fViewer->GetActDesc()->fProof))
       return;
 
@@ -2917,7 +2917,7 @@ void TSessionQueryFrame::OnBtnSubmit()
    // check for proof validity
    if (fViewer->GetActDesc()->fProof &&
        fViewer->GetActDesc()->fProof->IsValid()) {
-      fViewer->GetActDesc()->fProof->SetBit(TVirtualProof::kUsingSessionGui);
+      fViewer->GetActDesc()->fProof->SetBit(TProof::kUsingSessionGui);
       // set query description status to submitted
       newquery->fStatus = TQueryDescription::kSessionQuerySubmitted;
       // if feedback option selected
@@ -3678,13 +3678,13 @@ void TSessionViewer::UpdateListOfProofs()
    TSessionDescription *newdesc;
    if (proofs) {
       TObject *o = proofs->First();
-      if (o && dynamic_cast<TVirtualProofMgr *>(o)) {
-         TVirtualProofMgr *mgr = dynamic_cast<TVirtualProofMgr *>(o);
+      if (o && dynamic_cast<TProofMgr *>(o)) {
+         TProofMgr *mgr = dynamic_cast<TProofMgr *>(o);
          if (mgr->QuerySessions("L")) {
             TIter nxd(mgr->QuerySessions("L"));
-            TVirtualProofDesc *d = 0;
-            TVirtualProof *p = 0;
-            while ((d = (TVirtualProofDesc *)nxd())) {
+            TProofDesc *d = 0;
+            TProof *p = 0;
+            while ((d = (TProofDesc *)nxd())) {
                TIter nextfs(fSessions);
                // check if session exists in the list
                while ((desc = (TSessionDescription *)nextfs())) {
@@ -3833,9 +3833,9 @@ void TSessionViewer::UpdateListOfProofs()
          return;
       }
       TIter nextp(proofs);
-      TVirtualProof *proof;
+      TProof *proof;
       // loop over existing Proof sessions
-      while ((proof = (TVirtualProof *)nextp())) {
+      while ((proof = (TProof *)nextp())) {
          TIter nexts(fSessions);
          found = kFALSE;
          // check if session is already in the list
@@ -3890,11 +3890,11 @@ void TSessionViewer::UpdateListOfSessions()
    TList *sessions = fActDesc->fProofMgr->QuerySessions("");
    if (sessions) {
       TIter nextp(sessions);
-      TVirtualProofDesc *pdesc;
-      TVirtualProof *proof;
+      TProofDesc *pdesc;
+      TProof *proof;
       TSessionDescription *newdesc;
       // loop over existing Proof sessions
-      while ((pdesc = (TVirtualProofDesc *)nextp())) {
+      while ((pdesc = (TProofDesc *)nextp())) {
          TIter nexts(fSessions);
          TSessionDescription *desc = 0;
          Bool_t found = kFALSE;
@@ -4905,7 +4905,7 @@ void TSessionViewer::ResetSession()
          kMBYes | kMBNo | kMBCancel, &result);
    if (result == kMBYes) {
       // reset the session
-      TVirtualProof::Reset(fActDesc->fAddress.Data(),
+      TProof::Reset(fActDesc->fAddress.Data(),
                            fActDesc->fUserName.Data());
       // reset connected flag
       fActDesc->fAttached = kFALSE;
-- 
GitLab