ROOT logo
ROOT » PROOF » PROOFPLAYER » TProofPlayer

class TProofPlayer: public TVirtualProofPlayer


TProofPlayer

 This internal class and its subclasses steer the processing in PROOF.
Instances of the TProofPlayer class are created on the worker nodes
per session and do the processing.
Instances of its subclass - TProofPlayerRemote are created per each
query on the master(s) and on the client. On the master(s),
TProofPlayerRemote coordinate processing, check the dataset, create
the packetizer and take care of merging the results of the workers.
The instance on the client collects information on the input
(dataset and selector), it invokes the Begin() method and finalizes
the query by calling Terminate().


Function Members (Methods)

public:
TProofPlayer(TProof* proof = 0)
virtual~TProofPlayer()
voidTObject::AbstractMethod(const char* method) const
virtual voidAddEventsProcessed(Long64_t ev)
virtual voidAddInput(TObject* inp)
virtual voidAddOutput(TList* out)
virtual Int_tAddOutputObject(TObject* obj)
virtual voidAddQueryResult(TQueryResult* q)
virtual voidTObject::AppendPad(Option_t* option = "")
static Bool_tTQObject::AreAllSignalsBlocked()
Bool_tTQObject::AreSignalsBlocked() const
static Bool_tTQObject::BlockAllSignals(Bool_t b)
Bool_tTQObject::BlockSignals(Bool_t b)
virtual voidTObject::Browse(TBrowser* b)
virtual voidTQObject::ChangedBy(const char* method)SIGNAL
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual voidClearInput()
virtual TObject*TObject::Clone(const char* newname = "") const
voidTQObject::CollectClassSignalLists(TList& list, TClass* cls)
virtual Int_tTObject::Compare(const TObject* obj) const
Bool_tTQObject::Connect(const char* signal, const char* receiver_class, void* receiver, const char* slot)
static Bool_tTQObject::Connect(TQObject* sender, const char* signal, const char* receiver_class, void* receiver, const char* slot)
static Bool_tTQObject::Connect(const char* sender_class, const char* signal, const char* receiver_class, void* receiver, const char* slot)
virtual voidTQObject::Connected(const char*)
virtual voidTObject::Copy(TObject& object) const
static TVirtualProofPlayer*TVirtualProofPlayer::Create(const char* player, TProof* p, TSocket* s = 0)
virtual TDrawFeedback*CreateDrawFeedback(TProof* p)
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual voidDeleteDrawFeedback(TDrawFeedback* f)
virtual voidTQObject::Destroyed()SIGNAL
Bool_tTQObject::Disconnect(const char* signal = 0, void* receiver = 0, const char* slot = 0)
static Bool_tTQObject::Disconnect(TQObject* sender, const char* signal = 0, void* receiver = 0, const char* slot = 0)
static Bool_tTQObject::Disconnect(const char* class_name, const char* signal, void* receiver = 0, const char* slot = 0)
virtual voidTQObject::Disconnected(const char*)
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual Long64_tDrawSelect(TDSet* set, const char* varexp, const char* selection, Option_t* option = "", Long64_t nentries = -1, Long64_t firstentry = 0)
virtual voidTObject::Dump() constMENU
voidTQObject::Emit(const char* signal)
voidTQObject::Emit(const char* signal, Long_t* paramArr)
voidTQObject::Emit(const char* signal, const char* params)
voidTQObject::Emit(const char* signal, Double_t param)
voidTQObject::Emit(const char* signal, Long_t param)
voidTQObject::Emit(const char* signal, Long64_t param)
voidTQObject::Emit(const char* signal, Bool_t param)
voidTQObject::Emit(const char* signal, Char_t param)
voidTQObject::Emit(const char* signal, UChar_t param)
voidTQObject::Emit(const char* signal, Short_t param)
voidTQObject::Emit(const char* signal, UShort_t param)
voidTQObject::Emit(const char* signal, Int_t param)
voidTQObject::Emit(const char* signal, UInt_t param)
voidTQObject::Emit(const char* signal, ULong_t param)
voidTQObject::Emit(const char* signal, ULong64_t param)
voidTQObject::Emit(const char* signal, Float_t param)
voidTQObject::EmitVA(const char* signal, Int_t nargs)
voidTQObject::EmitVA(const char* signal, Int_t nargs, va_list va)
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidFeedback(TList* objs)SIGNAL
voidFeedBackCanvas(const char* name, Bool_t create)
virtual Long64_tFinalize(TQueryResult* qr)
virtual Long64_tFinalize(Bool_t force = kFALSE, Bool_t sync = kFALSE)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Long64_tGetCacheSize()
virtual TQueryResult*GetCurrentQuery() const
virtual Int_tGetDrawArgs(const char* var, const char* sel, Option_t* opt, TString& selector, TString& objname)
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual Long64_tGetEventsProcessed() const
virtual TVirtualProofPlayer::EExitStatusGetExitStatus() const
virtual const char*TObject::GetIconName() const
virtual TList*GetInputList() const
virtual Int_tGetLearnEntries()
TList*TQObject::GetListOfClassSignals() const
TList*TQObject::GetListOfConnections() const
virtual TList*GetListOfResults() const
TList*TQObject::GetListOfSignals() const
virtual const char*TObject::GetName() const
virtual TDSetElement*GetNextPacket(TSlave* slave, TMessage* r)
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual TObject*GetOutput(const char* name) const
virtual TList*GetOutputList() const
virtual TVirtualPacketizer*GetPacketizer() const
virtual TProofProgressStatus*GetProgressStatus() const
virtual TQueryResult*GetQueryResult(const char* ref)
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual voidHandleGetTreeHeader(TMessage* mess)
virtual voidHandleRecvHisto(TMessage* mess)
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual Bool_tTQObject::HasConnection(const char* signal_name) const
virtual ULong_tTObject::Hash() const
virtual voidTQObject::HighPriority(const char* signal_name, const char* slot_name = 0)
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tIsClient() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual Bool_tJoinProcess(TList* workers)
static voidTQObject::LoadRQ_OBJECT()
virtual voidTQObject::LowPriority(const char* signal_name, const char* slot_name = 0)
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual voidTQObject::Message(const char* msg)SIGNAL
virtual Bool_tTObject::Notify()
virtual Int_tTQObject::NumberOfConnections() const
virtual Int_tTQObject::NumberOfSignals() const
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
TObject&TObject::operator=(const TObject& rhs)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
virtual Long64_tProcess(TDSet* set, const char* selector, Option_t* option = "", Long64_t nentries = -1, Long64_t firstentry = 0)
virtual Long64_tProcess(TDSet* set, TSelector* selector, Option_t* option = "", Long64_t nentries = -1, Long64_t firstentry = 0)
virtual voidProgress(TProofProgressInfo* pi)SIGNAL
virtual voidProgress(Long64_t total, Long64_t processed)SIGNAL
virtual voidProgress(TSlave*, TProofProgressInfo* pi)SIGNAL
virtual voidProgress(TSlave*, Long64_t total, Long64_t processed)
virtual voidProgress(Long64_t total, Long64_t processed, Long64_t bytesread, Float_t initTime, Float_t procTime, Float_t evtrti, Float_t mbrti)SIGNAL
virtual voidProgress(TSlave*, Long64_t total, Long64_t processed, Long64_t bytesread, Float_t initTime, Float_t procTime, Float_t evtrti, Float_t mbrti)SIGNAL
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
virtual Int_tReinitSelector(TQueryResult* qr)
virtual voidRemoveQueryResult(const char* ref)
voidTObject::ResetBit(UInt_t f)
virtual voidRestorePreviousQuery()
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual Int_tSavePartialResults(Bool_t queryend = kFALSE, Bool_t force = kFALSE)
virtual voidTObject::SavePrimitive(ostream& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidSetCurrentQuery(TQueryResult* q)
virtual voidSetDispatchTimer(Bool_t on = kTRUE)
virtual voidSetDrawFeedbackOption(TDrawFeedback* f, Option_t* opt)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
virtual voidSetExitStatus(TVirtualProofPlayer::EExitStatus st)
virtual voidSetInitTime()
virtual voidSetMaxDrawQueries(Int_t max)
virtual voidSetMerging(Bool_t = kTRUE)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidSetOutputFilePath(const char* fp)
voidSetProcessing(Bool_t on = kTRUE)
virtual voidSetStopTimer(Bool_t on = kTRUE, Bool_t abort = kFALSE, Int_t timeout = 0)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
virtual voidStopFeedback()
virtual voidStopProcess(Bool_t abort, Int_t timeout = -1)
virtual voidStoreFeedback(TObject* slave, TList* out)
virtual voidStoreOutput(TList* out)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidUpdateAutoBin(const char* name, Double_t& xmin, Double_t& xmax, Double_t& ymin, Double_t& ymax, Double_t& zmin, Double_t& zmax)
virtual voidUpdateProgressInfo()
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
Int_tAssertSelector(const char* selector_file)
static Int_tTQObject::CheckConnectArgs(TQObject* sender, TClass* sender_class, const char* signal, TClass* receiver_class, const char* slot)
Bool_tCheckMemUsage(Long64_t& mfreq, Bool_t& w80r, Bool_t& w80v, TString& wmsg)
static Bool_tTQObject::ConnectToClass(TQObject* sender, const char* signal, TClass* receiver_class, void* receiver, const char* slot)
static Bool_tTQObject::ConnectToClass(const char* sender_class, const char* signal, TClass* receiver_class, void* receiver, const char* slot)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
virtual Int_tDrawCanvas(TObject* obj)
virtual void*GetSender()
virtual const char*TQObject::GetSenderClassName() const
voidTObject::MakeZombie()
voidMapOutputListToDataMembers() const
virtual voidMergeOutput(Bool_t savememvalues = kFALSE)
virtual voidSetupFeedback()

Data Members

public:
enum EStatusBits { kDispatchOneEvent
kIsProcessing
kMaxProcTimeReached
kMaxProcTimeExtended
};
enum TVirtualProofPlayer::EStatusBits { kIsSubmerger
};
enum TVirtualProofPlayer::EExitStatus { kFinished
kStopped
kAborted
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
Bool_tfCreateSelObj! kTRUE when fSelector has been created locally
TTimer*fDispatchTimerDispatch pending events while processing
Int_tfDrawQueriesNumber of Draw queries in the list
TEventIter*fEvIter! iterator on events or objects
TVirtualProofPlayer::EExitStatusfExitStatusexit status
Long_tfFeedbackPeriod! period (ms) for sending intermediate results
TTimer*fFeedbackTimer! timer for sending intermediate results
TList*fInput-> list with input objects
TList*TQObject::fListOfConnections! list of connections to this object
TList*TQObject::fListOfSignals! list of signals from this object
Int_tfMaxDrawQueriesMax number of Draw queries kept
THashList*fOutputlist with output objects
TFile*fOutputFileTFile object attached to fOutputFilePath
TStringfOutputFilePathPath to file with (partial) results of the query
TQueryResult*fPreviousQueryPrevious instance of TQueryResult processed
TStopwatch*fProcTimePacket proc time
TTimer*fProcTimeTimerNotifies reaching of allowed max proc time
Long64_tfProcessedRun! Events processed in this run
TProofProgressStatus*fProgressStatusthe progress status object;
TQueryResult*fQueryInstance of TQueryResult currently processed
TList*fQueryResultsList of TQueryResult
Long64_tfReadBytesRun! Bytes read in this run
Long64_tfReadCallsRun! Read calls in this run
Long_tfSaveMemThresholdThreshold for saving output to file
Bool_tfSavePartialResultsWhether to save the partial results
Bool_tfSaveResultsPerPacketWhether to save partial results after each packet
TStatus*fSelStatus! status of query in progress
TSelector*fSelector! the latest selector
TClass*fSelectorClass! class of the latest selector
Bool_tTQObject::fSignalsBlocked! flag used for suppression of signals
TTimer*fStopTimerTimer associated with a stop request
TMutex*fStopTimerMtxTo protect the stop timer
Long64_tfTotalEventsnumber of events requested
static Bool_tTQObject::fgAllSignalsBlockedflag used for suppression of all signals
static THashList*fgDrawInputParsList of input parameters to be kept on drawing actions
private:
TList*fAutoBinsMap of min/max values by name for slaves

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

TProofPlayer(TProof* proof = 0)
 Default ctor.
~TProofPlayer()
 Destructor.
void SetProcessing(Bool_t on = kTRUE)
 Set processing bit according to 'on'
void StopProcess(Bool_t abort, Int_t timeout = -1)
 Stop the process after this event. If timeout is positive, start
 a timer firing after timeout seconds to hard-stop time-expensive
 events.
void SetDispatchTimer(Bool_t on = kTRUE)
 Enable/disable the timer to dispatch pening events while processing.
void SetStopTimer(Bool_t on = kTRUE, Bool_t abort = kFALSE, Int_t timeout = 0)
 Enable/disable the timer to stop/abort processing.
 The 'timeout' is in seconds.
void AddQueryResult(TQueryResult* q)
 Add query result to the list, making sure that there are no
 duplicates.
void RemoveQueryResult(const char* ref)
 Remove all query result instances referenced 'ref' from
 the list of results.
TQueryResult * GetQueryResult(const char* ref)
 Get query result instances referenced 'ref' from
 the list of results.
void SetCurrentQuery(TQueryResult* q)
 Set current query and save previous value.
void AddInput(TObject* inp)
 Add object to input list.
void ClearInput()
 Clear input list.
TObject * GetOutput(const char* name) const
 Get output object by name.
TList * GetOutputList() const
 Get output list.
Int_t ReinitSelector(TQueryResult* qr)
 Reinitialize fSelector using the selector files in the query result.
 Needed when Finalize is called after a Process execution for the same
 selector name.
Int_t AddOutputObject(TObject* obj)
 Incorporate output object (may not be used in this class).
void AddOutput(TList* out)
 Incorporate output list (may not be used in this class).
void StoreOutput(TList* out)
 Store output list (may not be used in this class).
void StoreFeedback(TObject* slave, TList* out)
 Store feedback list (may not be used in this class).
void Progress(Long64_t total, Long64_t processed)
 Report progress (may not be used in this class).
void Progress(Long64_t total, Long64_t processed, Long64_t bytesread, Float_t initTime, Float_t procTime, Float_t evtrti, Float_t mbrti)
 Report progress (may not be used in this class).
void Progress(TProofProgressInfo* pi)
 Report progress (may not be used in this class).
void Feedback(TList* objs)
 Set feedback list (may not be used in this class).
TDrawFeedback * CreateDrawFeedback(TProof* p)
 Draw feedback creation proxy. When accessed via TProof avoids
 link dependency on libProofPlayer.
void SetDrawFeedbackOption(TDrawFeedback* f, Option_t* opt)
 Set draw feedback option.
void DeleteDrawFeedback(TDrawFeedback* f)
 Delete draw feedback object.
Int_t SavePartialResults(Bool_t queryend = kFALSE, Bool_t force = kFALSE)
 Save the partial results of this query to a dedicated file under the user
 data directory. The file name has the form
         <session_tag>.q<query_seq_num>.root
 The file pat and the file are created if not existing already.
 Only objects in the outputlist not being TProofOutputFile are saved.
 The packets list 'packets' is saved if given.
 Trees not attached to any file are attached to the open file.
 If 'queryend' is kTRUE evrything is written out (TTrees included).
The actual saving action is controlled by 'force' and by fSavePartialResults
 fSaveResultsPerPacket:

    fSavePartialResults = kFALSE/kTRUE  no-saving/saving
    fSaveResultsPerPacket = kFALSE/kTRUE  save-per-query/save-per-packet

 The function CheckMemUsage sets fSavePartialResults = 1 if fSaveMemThreshold > 0 and
 ProcInfo_t::fMemResident >= fSaveMemThreshold: from that point on partial results
 are always saved and expensive calls to TSystem::GetProcInfo saved.
 The switch fSaveResultsPerPacket is instead controlled by the user or admin
 who can also force saving in all cases; parameter PROOF_SavePartialResults or
 RC env ProofPlayer.SavePartialResults .
 However, if 'force' is kTRUE, fSavePartialResults and fSaveResultsPerPacket
 are ignored.
 Return -1 in case of problems, 0 otherwise.
Int_t AssertSelector(const char* selector_file)
 Make sure that a valid selector object
 Return -1 in case of problems, 0 otherwise
void UpdateProgressInfo()
Long64_t Process(TDSet* set, const char* selector, Option_t* option = "", Long64_t nentries = -1, Long64_t firstentry = 0)
 Process specified TDSet on PROOF worker.
 The return value is -1 in case of error and TSelector::GetStatus()
 in case of success.
Long64_t Process(TDSet* set, TSelector* selector, Option_t* option = "", Long64_t nentries = -1, Long64_t firstentry = 0)
 Process specified TDSet on PROOF worker with TSelector object
 The return value is -1 in case of error and TSelector::GetStatus()
 in case of success.
Bool_t JoinProcess(TList* workers)
 Not implemented: meaningful only in the remote player. Returns kFALSE.
Bool_t CheckMemUsage(Long64_t& mfreq, Bool_t& w80r, Bool_t& w80v, TString& wmsg)
 Check the memory usage, if requested.
 Return kTRUE if OK, kFALSE if above 95% of at least one between virtual or
 resident limits are depassed.
Long64_t Finalize(Bool_t force = kFALSE, Bool_t sync = kFALSE)
 Finalize query (may not be used in this class).
Long64_t Finalize(TQueryResult* qr)
 Finalize query (may not be used in this class).
void MergeOutput(Bool_t savememvalues = kFALSE)
 Merge output (may not be used in this class).
void MapOutputListToDataMembers() const
void UpdateAutoBin(const char* name, Double_t& xmin, Double_t& xmax, Double_t& ymin, Double_t& ymax, Double_t& zmin, Double_t& zmax)
 Update automatic binning parameters for given object "name".
TDSetElement * GetNextPacket(TSlave* slave, TMessage* r)
 Get next packet (may not be used in this class).
void SetupFeedback()
 Set up feedback (may not be used in this class).
void StopFeedback()
 Stop feedback (may not be used in this class).
Long64_t DrawSelect(TDSet* set, const char* varexp, const char* selection, Option_t* option = "", Long64_t nentries = -1, Long64_t firstentry = 0)
 Draw (may not be used in this class).
void HandleGetTreeHeader(TMessage* mess)
 Handle tree header request.
void HandleRecvHisto(TMessage* mess)
 Receive histo from slave.
Int_t DrawCanvas(TObject* obj)
 Draw the object if it is a canvas.
 Return 0 in case of success, 1 if it is not a canvas or libProofDraw
 is not available.
Int_t GetDrawArgs(const char* var, const char* sel, Option_t* opt, TString& selector, TString& objname)
 Parse the arguments from var, sel and opt and fill the selector and
 object name accordingly.
 Return 0 in case of success, 1 if libProofDraw is not available.
void FeedBackCanvas(const char* name, Bool_t create)
 Create/destroy a named canvas for feedback
Long64_t GetCacheSize()
 Return the size in bytes of the cache
Int_t GetLearnEntries()
 Return the number of entries in the learning phase
void * GetSender()
{ return this; }
TVirtualPacketizer * GetPacketizer() const
{ return 0; }
TList * GetInputList() const
{ return fInput; }
TList * GetListOfResults() const
{ return fQueryResults; }
TQueryResult * GetCurrentQuery() const
{ return fQuery; }
void SetMaxDrawQueries(Int_t max)
{ fMaxDrawQueries = max; }
void RestorePreviousQuery()
void Progress(Long64_t total, Long64_t processed)
void Progress(TSlave* , Long64_t total, Long64_t processed)
{ Progress(total, processed); }
void Progress(Long64_t total, Long64_t processed, Long64_t bytesread, Float_t initTime, Float_t procTime, Float_t evtrti, Float_t mbrti)
Bool_t IsClient() const
{ return kFALSE; }
void SetExitStatus(TVirtualProofPlayer::EExitStatus st)
{ fExitStatus = st; }
EExitStatus GetExitStatus() const
{ return fExitStatus; }
Long64_t GetEventsProcessed() const
void AddEventsProcessed(Long64_t ev)
void SetInitTime()
{ }
void SetMerging(Bool_t = kTRUE)
{ }
void SetOutputFilePath(const char* fp)
{ fOutputFilePath = fp; }
TProofProgressStatus * GetProgressStatus() const
{ return fProgressStatus; }