ROOT  6.06/09
Reference Guide
TProofPlayerLite.cxx
Go to the documentation of this file.
1 // @(#)root/proofplayer:$Id$
2 // Author: G. Ganis Mar 2008
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2001, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 //////////////////////////////////////////////////////////////////////////
13 // //
14 // TProofPlayerLite //
15 // //
16 // This version of TProofPlayerRemote merges the functionality needed //
17 // by clients and masters. It is used in optmized local sessions. //
18 // //
19 //////////////////////////////////////////////////////////////////////////
20 
21 #include "TProofPlayerLite.h"
22 
23 #include "MessageTypes.h"
24 #include "TDSet.h"
25 #include "TDSetProxy.h"
26 #include "TEntryList.h"
27 #include "TEventList.h"
28 #include "THashList.h"
29 #include "TMap.h"
30 #include "TMessage.h"
31 #include "TObjString.h"
32 #include "TPerfStats.h"
33 #include "TProofLite.h"
34 #include "TProofDebug.h"
35 #include "TProofServ.h"
36 #include "TROOT.h"
37 #include "TSelector.h"
38 #include "TVirtualPacketizer.h"
39 
40 ////////////////////////////////////////////////////////////////////////////////
41 /// Create the selector object and save the relevant files and binary information
42 /// in the cache so that the worker can pick it up.
43 /// Returns 0 and fill fSelector in case of success. Returns -1 and sets
44 /// fSelector to 0 in case of failure.
45 
47 {
48  fSelectorClass = 0;
50  if (!selfile || strlen(selfile) <= 0) {
51  Error("MakeSelector", "input file path or name undefined");
52  return -1;
53  }
54 
55  // If we are just given a name, init the selector and return
56  if (!strchr(gSystem->BaseName(selfile), '.')) {
57  if (gDebug > 1)
58  Info("MakeSelector", "selector name '%s' does not contain a '.':"
59  " no file to check, it will be loaded from a library", selfile);
60  if (!(fSelector = TSelector::GetSelector(selfile))) {
61  Error("MakeSelector", "could not create a %s selector", selfile);
62  return -1;
63  }
64  // Done
65  return 0;
66  }
67 
68  if (((TProofLite*)fProof)->CopyMacroToCache(selfile, 1, &fSelector, TProof::kCp | TProof::kCpBin) < 0)
69  return -1;
70 
71  // Done
72  return 0;
73 }
74 
75 ////////////////////////////////////////////////////////////////////////////////
76 /// Process specified TDSet on PROOF.
77 /// This method is called on client and on the PROOF master.
78 /// The return value is -1 in case of an error and TSelector::GetStatus() in
79 /// in case of success.
80 
82  Option_t *option, Long64_t nentries,
83  Long64_t first)
84 {
85  if (!selector) {
86  Error("Process", "selector object undefined");
87  return -1;
88  }
89 
90  // Define fSelector in Client
91  if (selector != fSelector) {
93  fSelector = selector;
94  }
95 
97  Long64_t rc = Process(dset, selector->ClassName(), option, nentries, first);
99 
100  // Done
101  return rc;
102 }
103 
104 ////////////////////////////////////////////////////////////////////////////////
105 /// Process specified TDSet on PROOF.
106 /// This method is called on client and on the PROOF master.
107 /// The return value is -1 in case of error and TSelector::GetStatus() in
108 /// in case of success.
109 
110 Long64_t TProofPlayerLite::Process(TDSet *dset, const char *selector_file,
111  Option_t *option, Long64_t nentries,
112  Long64_t first)
113 {
114  PDB(kGlobal,1) Info("Process","Enter");
115  fDSet = dset;
117 
118  if (!fProgressStatus) {
119  Error("Process", "No progress status");
120  return -1;
121  }
123 
124  // delete fOutput;
125  if (!fOutput)
126  fOutput = new THashList;
127  else
128  fOutput->Clear();
129 
132 
133  TStopwatch elapsed;
134 
135  TMessage mesg(kPROOF_PROCESS);
136  TString fn(gSystem->BaseName(selector_file));
137 
138  // Parse option
139  Bool_t sync = (fProof->GetQueryMode(option) == TProof::kSync);
140 
141  // Make sure that the temporary output list is empty
142  if (fOutputLists) {
143  fOutputLists->Delete();
144  delete fOutputLists;
145  fOutputLists = 0;
146  }
147 
148  if (!sync) {
150  Printf(" ");
151  Info("Process","starting new query");
152  }
153 
154  if (fCreateSelObj) {
155  if (MakeSelector(selector_file) != 0) {
156  if (!sync)
158  return -1;
159  }
160  }
161 
162  fSelectorClass = fSelector->IsA();
163  // Add fSelector to inputlist if processing with object
164  TList *inputtmp = 0; // List of temporary input objects
165  if (!fCreateSelObj) {
166  // In any input list was set into the selector move it to the PROOF
167  // input list, because we do not want to stream the selector one
168  if (fSelector->GetInputList() && fSelector->GetInputList()->GetSize() > 0) {
169  TIter nxi(fSelector->GetInputList());
170  TObject *o = 0;
171  while ((o = nxi())) {
172  if (!fInput->FindObject(o)) {
173  fInput->Add(o);
174  if (!inputtmp) {
175  inputtmp = new TList;
176  inputtmp->SetOwner(kFALSE);
177  }
178  inputtmp->Add(o);
179  }
180  }
181  }
182  fInput->Add(fSelector);
183  }
184  // Set the input list for initialization
186  fSelector->SetOption(option);
188 
189  PDB(kLoop,1) Info("Process","Call Begin(0)");
190  fSelector->Begin(0);
191 
192  // Send large input data objects, if any
194 
195  // Attach to the transient histogram with the assigned packets, if required
196  if (fInput->FindObject("PROOF_StatsHist") != 0) {
197  if (!(fProcPackets = (TH1 *) fOutput->FindObject("PROOF_ProcPcktHist"))) {
198  Warning("Process", "could not attach to histogram 'PROOF_ProcPcktHist'");
199  } else {
200  PDB(kLoop,1)
201  Info("Process", "attached to histogram 'PROOF_ProcPcktHist' to record"
202  " packets being processed");
203  }
204  }
205 
206  PDB(kPacketizer,1) Info("Process","Create Proxy TDSet");
207  TDSet *set = new TDSetProxy(dset->GetType(), dset->GetObjName(),
208  dset->GetDirectory());
209  if (dset->TestBit(TDSet::kEmpty))
210  set->SetBit(TDSet::kEmpty);
211  fProof->SetParameter("PROOF_MaxSlavesPerNode", (Long_t) 0);
212  if (InitPacketizer(dset, nentries, first, "TPacketizerUnit", "TPacketizer") != 0) {
213  Error("Process", "cannot init the packetizer");
215  return -1;
216  }
217  // reset start, this is now managed by the packetizer
218  first = 0;
219 
220  // Negative memlogfreq disable checks.
221  // If 0 is passed we try to have 100 messages about memory
222  // Otherwise we use the frequency passed.
223  Int_t mrc = -1;
224  Long64_t memlogfreq = -1, mlf;
225  if ((mrc = TProof::GetParameter(fProof->GetInputList(), "PROOF_MemLogFreq", mlf)) == 0) memlogfreq = mlf;
226  if (mrc != 0 && gSystem->Getenv("PROOF_MEMLOGFREQ")) {
227  TString clf(gSystem->Getenv("PROOF_MEMLOGFREQ"));
228  if (clf.IsDigit()) { memlogfreq = clf.Atoi(); mrc = 0; }
229  }
230  if (memlogfreq == 0) {
231  memlogfreq = fPacketizer->GetTotalEntries()/(fProof->GetParallel()*100);
232  if (memlogfreq <= 0) memlogfreq = 1;
233  }
234  if (mrc == 0) fProof->SetParameter("PROOF_MemLogFreq", memlogfreq);
235 
236  // Add the unique query tag as TNamed object to the input list
237  // so that it is available in TSelectors for monitoring
238  fProof->SetParameter("PROOF_QueryTag", fProof->GetName());
239  // ... and the sequential number
240  fProof->SetParameter("PROOF_QuerySeqNum", fProof->fSeqNum);
241 
242  if (!sync)
244 
245  TCleanup clean(this);
246  SetupFeedback();
247 
248  TString opt = option;
249 
250  // Workers will get the entry ranges from the packetizer
251  Long64_t num = (fProof->IsParallel()) ? -1 : nentries;
252  Long64_t fst = (fProof->IsParallel()) ? -1 : first;
253 
254  // Entry- or Event- list ?
255  TEntryList *enl = (!fProof->IsMaster()) ? dynamic_cast<TEntryList *>(set->GetEntryList())
256  : (TEntryList *)0;
257  TEventList *evl = (!fProof->IsMaster() && !enl) ? dynamic_cast<TEventList *>(set->GetEntryList())
258  : (TEventList *)0;
259  // Reset the merging progress information
261 
262  // Broadcast main message
263  PDB(kGlobal,1) Info("Process","Calling Broadcast");
264  if (fProcessMessage) delete fProcessMessage;
266  mesg << set << fn << fInput << opt << num << fst << evl << sync << enl;
267  (*fProcessMessage) << set << fn << fInput << opt << num << fst << evl << sync << enl;
268  Int_t nb = fProof->Broadcast(mesg);
269  PDB(kGlobal,1) Info("Process", "Broadcast called: %d workers notified", nb);
270  fProof->fNotIdle += nb;
271 
272  // Redirect logs from master to special log frame
274 
275  if (!sync) {
276 
277  // Asynchronous query: just make sure that asynchronous input
278  // is enabled and return the prompt
279  PDB(kGlobal,1) Info("Process","Asynchronous processing:"
280  " activating CollectInputFrom");
281  fProof->Activate();
282 
283  // Return the query sequential number
284  return fProof->fSeqNum;
285 
286  } else {
287 
288  // Wait for processing
289  PDB(kGlobal,1) Info("Process","Synchronous processing: calling Collect");
290  fProof->Collect();
291 
292  // Restore prompt logging (Collect leaves things as they were
293  // at the time it was called)
295 
296  if (!TSelector::IsStandardDraw(fn))
297  HandleTimer(0); // force an update of final result
298  if (fPacketizer) {
300  // The progress timer will now stop itself at the next call
302  // Store process info
303  elapsed.Stop();
304  if (fQuery)
307  elapsed.RealTime());
308  }
309  StopFeedback();
310 
311  Long64_t rc = -1;
313  rc = Finalize(kFALSE, sync);
314 
315  // Remove temporary input objects, if any
316  if (inputtmp) {
317  TIter nxi(inputtmp);
318  TObject *o = 0;
319  while ((o = nxi())) fInput->Remove(o);
320  SafeDelete(inputtmp);
321  }
322 
323  // Done
324  return rc;
325  }
326 }
327 
328 ////////////////////////////////////////////////////////////////////////////////
329 /// Finalize a query.
330 /// Returns -1 in case error, 0 otherwise.
331 
333 {
334  if (fOutputLists == 0) {
335  if (force && fQuery)
336  return fProof->Finalize(Form("%s:%s", fQuery->GetTitle(),
337  fQuery->GetName()), force);
338  }
339 
340  Long64_t rv = 0;
341 
343 
344  if (!fQuery) {
345  Info("Finalize", "query is undefined!");
346  return -1;
347  }
348 
349  // Some objects (e.g. histos in autobin) may not have been merged yet
350  // do it now
351  MergeOutput();
352 
353  if (fExitStatus != kAborted) {
354 
355  if (!sync) {
356  // Reinit selector (with multi-sessioning we must do this until
357  // TSelector::GetSelector() is optimized to i) avoid reloading of an
358  // unchanged selector and ii) invalidate existing instances of
359  // reloaded selector)
360  if (ReinitSelector(fQuery) == -1) {
361  Info("Finalize", "problems reinitializing selector \"%s\"",
362  fQuery->GetSelecImp()->GetName());
363  return -1;
364  }
365  }
366 
367  // Some input parameters may be needed in Terminate
369 
371  if (output) {
372  TIter next(fOutput);
373  while(TObject* obj = next()) {
374  if (fProof->IsParallel() || DrawCanvas(obj) == 1)
375  // Either parallel or not a canvas or not able to display it:
376  // just add to the list
377  output->Add(obj);
378  }
379  } else {
380  Warning("Finalize", "undefined output list in the selector! Protocol error?");
381  }
382 
384 
385  PDB(kLoop,1) Info("Finalize","Call Terminate()");
386  fOutput->Clear("nodelete");
387  // This is the end of merging
389  // We measure the merge time
391  // Call Terminate now
392  fSelector->Terminate();
393 
394  rv = fSelector->GetStatus();
395 
396  // copy the output list back and clean the selector's list
397  TIter it(output);
398  while(TObject* o = it()) {
399  fOutput->Add(o);
400  }
401 
402  // Save the output list in the current query, if any
403  if (fQuery) {
405  // Set in finalized state (cannot be done twice)
406  fQuery->SetFinalized();
407  } else {
408  Warning("Finalize","current TQueryResult object is undefined!");
409  }
410 
411  if (!fCreateSelObj) {
414  if (output) output->Remove(fSelector);
415  fSelector = 0;
416  }
417 
418  // We have transferred copy of the output objects in TQueryResult,
419  // so now we can cleanup the selector, making sure that we do not
420  // touch the output objects
421  if (output) output->SetOwner(kFALSE);
423 
424  // Delete fOutput (not needed anymore, cannot be finalized twice),
425  // making sure that the objects saved in TQueryResult are not deleted
428  } else {
429 
430  // Cleanup
431  fOutput->SetOwner();
433  if (!fCreateSelObj) fSelector = 0;
434  }
435 
436  PDB(kGlobal,1) Info("Finalize","exit");
437  return rv;
438 }
439 
440 ////////////////////////////////////////////////////////////////////////////////
441 /// Send feedback objects to client.
442 
444 {
445  PDB(kFeedback,2)
446  Info("HandleTimer","Entry: %p", fFeedbackTimer);
447 
448  if (fFeedbackTimer == 0) return kFALSE; // timer already switched off
449 
450 
451  // process local feedback objects
452 
453  TList *fb = new TList;
454  fb->SetOwner();
455 
457  while( TObjString *name = (TObjString*) next() ) {
458  TObject *o = fOutput->FindObject(name->GetName());
459  if (o != 0) fb->Add(o->Clone());
460  }
461 
462  if (fb->GetSize() > 0)
463  StoreFeedback(this, fb); // adopts fb
464  else
465  delete fb;
466 
467  if (fFeedbackLists == 0) {
468  fFeedbackTimer->Start(fFeedbackPeriod, kTRUE); // maybe next time
469  return kFALSE;
470  }
471 
472  fb = MergeFeedback();
473 
474  Feedback(fb);
475  fb->SetOwner();
476  delete fb;
477 
479 
480  return kFALSE; // ignored?
481 }
482 
483 ////////////////////////////////////////////////////////////////////////////////
484 /// Setup reporting of feedback objects.
485 
487 {
488  fFeedback = (TList*) fInput->FindObject("FeedbackList");
489 
490  if (fFeedback) {
491  PDB(kFeedback,1)
492  Info("SetupFeedback","\"FeedbackList\" found: %d objects", fFeedback->GetSize());
493  } else {
494  PDB(kFeedback,1)
495  Info("SetupFeedback","\"FeedbackList\" NOT found");
496  }
497 
498  if (fFeedback == 0 || fFeedback->GetSize() == 0) return;
499 
500  // OK, feedback was requested, setup the timer
502  fFeedbackPeriod = 2000;
503  TProof::GetParameter(fInput, "PROOF_FeedbackPeriod", fFeedbackPeriod);
504  fFeedbackTimer = new TTimer;
505  fFeedbackTimer->SetObject(this);
507 }
508 
509 ////////////////////////////////////////////////////////////////////////////////
510 /// Store feedback results from the specified slave.
511 
513 {
514  PDB(kFeedback,1)
515  Info("StoreFeedback","Enter (%p,%p,%d)", fFeedbackLists, out, (out ? out->GetSize() : -1));
516 
517  if ( out == 0 ) {
518  PDB(kFeedback,1)
519  Info("StoreFeedback","Leave (empty)");
520  return;
521  }
522 
523  if (fFeedbackLists == 0) {
524  PDB(kFeedback,2) Info("StoreFeedback","Create fFeedbackLists");
525  fFeedbackLists = new TList;
527  }
528 
529  TIter next(out);
530  out->SetOwner(kFALSE); // take ownership of the contents
531 
532  TObject *obj;
533  while( (obj = next()) ) {
534  PDB(kFeedback,2)
535  Info("StoreFeedback","Find '%s'", obj->GetName() );
536 
537  TMap *map = (TMap*) fFeedbackLists->FindObject(obj->GetName());
538  if ( map == 0 ) {
539  PDB(kFeedback,2)
540  Info("StoreFeedback", "map for '%s' not found (creating)", obj->GetName());
541  // map must not be owner (ownership is with regards to the keys (only))
542  map = new TMap;
543  map->SetName(obj->GetName());
544  fFeedbackLists->Add(map);
545  } else {
546  PDB(kFeedback,2)
547  Info("StoreFeedback","removing previous value");
548  if (map->GetValue(slave))
549  delete map->GetValue(slave);
550  map->Remove(slave);
551  }
552  map->Add(slave, obj);
553  }
554 
555  delete out;
556  PDB(kFeedback,1)
557  Info("StoreFeedback","Leave");
558 }
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root.
Definition: TSystem.cxx:928
virtual const char * GetTitle() const
Returns title of object.
Definition: TNamed.h:52
void SetMerging(Bool_t on=kTRUE)
Switch on/off merge timer.
TProofProgressStatus * fProgressStatus
Definition: TProofPlayer.h:94
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
Definition: TList.cxx:404
Double_t RealTime()
Stop the stopwatch (if it is running) and return the realtime (in seconds) passed between the start a...
Definition: TStopwatch.cxx:108
EExitStatus fExitStatus
status of query in progress
Definition: TProofPlayer.h:92
long long Long64_t
Definition: RtypesCore.h:69
void Activate(TList *slaves=0)
Activate slave server list.
Definition: TProof.cxx:2384
ClassImp(TSeqCollection) Int_t TSeqCollection TIter next(this)
Return index of object in collection.
Long_t fFeedbackPeriod
timer for sending intermediate results
Definition: TProofPlayer.h:89
virtual TList * GetOutputList() const
Definition: TSelector.h:76
Collectable string class.
Definition: TObjString.h:32
const char Option_t
Definition: RtypesCore.h:62
void SetupFeedback()
Setup reporting of feedback objects.
const char * GetObjName() const
Definition: TDSet.h:229
TObject * FindObject(const char *name) const
Find object using its name.
Definition: THashList.cxx:212
Definition: TDSet.h:153
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
void SetParameter(const char *par, const char *value)
Set input list parameter.
Definition: TProof.cxx:10389
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
Definition: TObject.cxx:892
virtual void MergeOutput(Bool_t savememvalues=kFALSE)
Merge objects in output the lists.
TString fLogFileName
Definition: TProof.h:539
Basic string class.
Definition: TString.h:137
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
const Bool_t kFALSE
Definition: Rtypes.h:92
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
Definition: TList.cxx:496
Int_t Broadcast(const TMessage &mess, TList *slaves)
Broadcast a message to all slaves in the specified list.
Definition: TProof.cxx:2470
Long64_t Process(TDSet *set, const char *selector, Option_t *option="", Long64_t nentries=-1, Long64_t firstentry=0)
Process specified TDSet on PROOF.
Long64_t Finalize(Bool_t force=kFALSE, Bool_t sync=kFALSE)
Finalize a query.
TMacro * GetSelecImp() const
Definition: TQueryResult.h:136
TQueryResult * fQuery
Definition: TProofPlayer.h:101
virtual void SetInputList(TList *input)
Definition: TSelector.h:73
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Definition: TObject.cxx:732
TList * fInput
Definition: TProofPlayer.h:83
TMessage * fProcessMessage
Histogram with packets being processed (owned by TPerfStats)
Definition: TProofPlayer.h:309
virtual void StopProcess(Bool_t abort, Bool_t stoptimer=kFALSE)
Stop process.
const char * GetDirectory() const
Definition: TDSet.h:230
#define SafeDelete(p)
Definition: RConfig.h:436
virtual TObject * Clone(const char *newname="") const
Make a clone of an object using the Streamer facility.
Definition: TObject.cxx:203
void Stop()
Stop the stopwatch.
Definition: TStopwatch.cxx:75
#define PDB(mask, level)
Definition: TProofDebug.h:58
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
Definition: THashList.h:36
EQueryMode GetQueryMode(Option_t *mode=0) const
Find out the query mode based on the current setting and 'mode'.
Definition: TProof.cxx:6106
Long64_t GetBytesRead() const
void StopFeedback()
Stop reporting of feedback objects.
virtual void Start(Long_t milliSec=-1, Bool_t singleShot=kFALSE)
Starts the timer with a milliSec timeout.
Definition: TTimer.cxx:209
virtual const char * Getenv(const char *env)
Get environment variable.
Definition: TSystem.cxx:1627
Int_t Collect(const TSlave *sl, Long_t timeout=-1, Int_t endtype=-1, Bool_t deactonfail=kFALSE)
Collect responses from slave sl.
Definition: TProof.cxx:2664
void ResetMergePrg()
Reset the merge progress notificator.
Definition: TProof.cxx:2460
TList * MergeFeedback()
Merge feedback lists.
Int_t Atoi() const
Return integer value of string.
Definition: TString.cxx:1964
Bool_t IsParallel() const
Definition: TProof.h:972
virtual void Begin(TTree *)
Definition: TSelector.h:62
TClass * fSelectorClass
kTRUE when fSelector has been created locally
Definition: TProofPlayer.h:87
Int_t fNotIdle
Definition: TProof.h:533
Int_t MakeSelector(const char *selfile)
Create the selector object and save the relevant files and binary information in the cache so that th...
virtual void SetOutputList(TList *out, Bool_t adopt=kTRUE)
Set / change the output list.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Definition: TObject.cxx:918
THashList * fOutput
Definition: TProofPlayer.h:84
char * out
Definition: TBase64.cxx:29
static void Start(TList *input, TList *output)
Initialize PROOF statistics run.
Definition: TPerfStats.cxx:746
virtual void SetProcessInfo(Long64_t ent, Float_t cpu=0., Long64_t siz=-1, Float_t inittime=0., Float_t proctime=0.)
Set processing info.
TTimer * fFeedbackTimer
class of the latest selector
Definition: TProofPlayer.h:88
TObject * GetParameter(const char *par) const
Get specified parameter.
Definition: TProof.cxx:10485
void Feedback(TList *objs)
Feedback signal.
A doubly linked list.
Definition: TList.h:47
TObject * GetEntryList() const
Definition: TDSet.h:251
Bool_t fRedirLog
Definition: TProof.h:538
virtual TList * GetInputList() const
Definition: TSelector.h:75
static void Setup(TList *input)
Setup the PROOF input list with requested statistics and tracing options.
Definition: TPerfStats.cxx:729
Bool_t HandleTimer(TTimer *timer)
Send feedback objects to client.
void Clear(Option_t *option="")
Remove all objects from the list.
Definition: THashList.cxx:167
R__EXTERN TSystem * gSystem
Definition: TSystem.h:549
static Bool_t IsStandardDraw(const char *selec)
Find out if this is a standard selection used for Draw actions (either TSelectorDraw, TProofDraw or deriving from them).
Definition: TSelector.cxx:235
virtual const char * ClassName() const
Returns name of class to which the object belongs.
Definition: TObject.cxx:187
virtual TObject * Remove(TObject *obj)
Remove object from the list.
Definition: TList.cxx:674
Long64_t GetTotalEntries() const
Int_t fSeqNum
Definition: TProof.h:554
TObject * Remove(TObject *obj)
Remove object from the list.
Definition: THashList.cxx:284
Bool_t TestBit(UInt_t f) const
Definition: TObject.h:173
char * Form(const char *fmt,...)
A TEventList object is a list of selected events (entries) in a TTree.
Definition: TEventList.h:33
Handles synchronous and a-synchronous timer events.
Definition: TTimer.h:57
virtual const char * GetName() const
Returns name of object.
Definition: TNamed.h:51
virtual void SetFinalized()
Definition: TQueryResult.h:99
TStopwatch fQuerySTW
Definition: TProof.h:624
Int_t ReinitSelector(TQueryResult *qr)
Reinitialize fSelector using the selector files in the query result.
void SetName(const char *name)
Definition: TCollection.h:116
virtual void Terminate()
Definition: TSelector.h:78
void StoreFeedback(TObject *slave, TList *out)
Store feedback results from the specified slave.
#define Printf
Definition: TGeoToOCC.h:18
static TSelector * GetSelector(const char *filename)
The code in filename is loaded (interpreted or compiled, see below), filename must contain a valid cl...
Definition: TSelector.cxx:140
virtual Int_t RedirectOutput(const char *name, const char *mode="a", RedirectHandle_t *h=0)
Redirect standard output (stdout, stderr) to the specified file.
Definition: TSystem.cxx:1677
long Long_t
Definition: RtypesCore.h:50
TList * GetInputList()
Get input list.
Definition: TProof.cxx:10320
R__EXTERN TProof * gProof
Definition: TProof.h:1110
virtual Int_t GetSize() const
Definition: TCollection.h:95
TSelector * fSelector
Definition: TProofPlayer.h:85
virtual const char * GetName() const
Returns name of object.
Definition: TObject.cxx:415
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
Definition: TMap.h:44
virtual void SendInputDataFile()
Send the input data objects to the master; the objects are taken from the dedicated list and / or the...
Definition: TProof.cxx:10179
EExitStatus GetExitStatus() const
Definition: TProofPlayer.h:222
int nentries
Definition: THbookFile.cxx:89
The TH1 histogram class.
Definition: TH1.h:80
Bool_t IsMaster() const
Definition: TProof.h:969
Int_t InitPacketizer(TDSet *dset, Long64_t nentries, Long64_t first, const char *defpackunit, const char *defpackdata)
Init the packetizer Return 0 on success (fPacketizer is correctly initialized), -1 on failure...
virtual void Clear(Option_t *option="")
Remove all objects from the list.
Definition: TList.cxx:348
void SetSelectorDataMembersFromOutputList()
Set the selector's data members: find the mapping of data members to otuput list entries in the outpu...
Long64_t Finalize(Int_t query=-1, Bool_t force=kFALSE)
Finalize the qry-th query in fQueries.
Definition: TProof.cxx:5870
virtual void SetOption(const char *option)
Definition: TSelector.h:71
#define name(a, b)
Definition: linkTestLib0.cpp:5
virtual Int_t DrawCanvas(TObject *obj)
Draw the object if it is a canvas.
Mother of all ROOT objects.
Definition: TObject.h:58
virtual void Add(TObject *obj)
Definition: TList.h:81
void SetObject(TObject *object)
Set the object to be notified at time out.
Definition: TTimer.cxx:182
R__EXTERN Int_t gDebug
Definition: Rtypes.h:128
TVirtualPacketizer * fPacketizer
Definition: TProofPlayer.h:303
const char * GetType() const
Definition: TDSet.h:228
void Reset()
Definition: TStopwatch.h:54
static void Stop()
Terminate the PROOF statistics run.
Definition: TPerfStats.cxx:766
Bool_t fCreateSelObj
the latest selector
Definition: TProofPlayer.h:86
Float_t GetInitTime() const
static void output(int code)
Definition: gifencode.c:226
A TSelector object is used by the TTree::Draw, TTree::Scan, TTree::Process to navigate in a TTree and...
Definition: TSelector.h:39
const Bool_t kTRUE
Definition: Rtypes.h:91
TObject * obj
A List of entry numbers in a TTree or TChain.
Definition: TEntryList.h:27
Int_t GetParallel() const
Returns number of slaves active in parallel mode.
Definition: TProof.cxx:2299
virtual Long64_t GetStatus() const
Definition: TSelector.h:66
Stopwatch class.
Definition: TStopwatch.h:30
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
Definition: TObject.cxx:904