Logo ROOT   6.10/09
Reference Guide
TQueryResult.cxx
Go to the documentation of this file.
1 // @(#)root/tree:$Id$
2 // Author: G Ganis Sep 2005
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2005, 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 /** \class TQueryResult
13 \ingroup tree
14 
15 A container class for query results.
16 */
17 
18 #include <string.h>
19 
20 #include "TBrowser.h"
21 #include "TError.h"
22 #include "TEventList.h"
23 #include "TQueryResult.h"
24 #include "TRegexp.h"
25 #include "TROOT.h"
26 #include "TMath.h"
27 #include "TSelector.h"
28 #include "TSystem.h"
29 #include "TTimeStamp.h"
30 
32 
33 ////////////////////////////////////////////////////////////////////////////////
34 /// Main constructor.
35 
36 TQueryResult::TQueryResult(Int_t seqnum, const char *opt, TList *inlist,
37  Long64_t entries, Long64_t first, const char *selec)
38  : fSeqNum(seqnum), fStatus(kSubmitted), fUsedCPU(0.), fOptions(opt),
39  fEntries(entries), fFirst(first),
40  fBytes(0), fParList("-"), fOutputList(0),
41  fFinalized(kFALSE), fArchived(kFALSE), fResultFile("-"),
42  fPrepTime(0.), fInitTime(0.), fProcTime(0.), fMergeTime(0.),
43  fRecvTime(-1), fTermTime(-1), fNumWrks(-1), fNumMergers(-1)
44 {
45  // Name and unique title
46  SetName(TString::Format("q%d", fSeqNum));
47  SetTitle(TString::Format("session-localhost-%ld-%d",
48  (Long_t)TTimeStamp().GetSec(), gSystem->GetPid()));
49 
50  // Start time
51  fStart.Set();
52  fEnd.Set(fStart.Convert()-1);
53 
54  // Save input list
55  fInputList = 0;
56  if (inlist) {
57  fInputList = (TList *) (inlist->Clone());
58  fInputList->SetOwner();
59  }
60 
61  // Log file
62  fLogFile = new TMacro("LogFile");
63 
64  // Selector files
65  fDraw = selec ? TSelector::IsStandardDraw(selec) : kFALSE;
66  if (fDraw) {
67  // The input list should contain info about the variables and
68  // selection cuts: save them into the macro title
69  TString varsel;
70  if (fInputList) {
71  TIter nxo(fInputList);
72  TObject *o = 0;
73  while ((o = nxo())) {
74  if (!strcmp(o->GetName(),"varexp")) {
75  varsel = o->GetTitle();
76  Int_t iht = varsel.Index(">>htemp");
77  if (iht > -1)
78  varsel.Remove(iht);
79  varsel.Form("\"%s\";", varsel.Data());
80  }
81  if (!strcmp(o->GetName(),"selection"))
82  varsel += TString::Format("\"%s\"", o->GetTitle());
83  }
84  if (gDebug > 0)
85  Info("TQueryResult","selec: %s, varsel: %s", selec, varsel.Data());
86  // Log notification also in the instance
87  fLogFile->AddLine(TString::Format("TQueryResult: selec: %s, varsel: %s",
88  selec, varsel.Data()));
89  }
90  // Standard draw action: save only the name
91  fSelecImp = new TMacro(selec, varsel);
92  fSelecHdr = 0;
93  } else {
94  // Save selector file
95  fSelecHdr = new TMacro;
96  fSelecImp = new TMacro;
97  SaveSelector(selec);
98  }
99 
100  // List of libraries loaded at creation
101  const char *pl = gSystem->GetLibraries();
102  fLibList = (pl && (strlen(pl) > 0)) ? pl : "-";
103 }
104 
105 ////////////////////////////////////////////////////////////////////////////////
106 /// Destructor.
107 
109 {
115 }
116 
117 ////////////////////////////////////////////////////////////////////////////////
118 /// Return an instance of TQueryResult containing only the local
119 /// info fields, i.e. no outputlist, liblist, dset, selectors, etc..
120 /// Used for fast retrieve of information about existing queries
121 /// and their status.
122 
124 {
125  // Create instance
127  fFirst, 0);
128 
129  // Correct fields
130  qr->fStatus = fStatus;
131  qr->fStart.Set(fStart.Convert());
132  qr->fEnd.Set(fEnd.Convert());
133  qr->fUsedCPU = fUsedCPU;
134  qr->fEntries = fEntries;
135  qr->fFirst = fFirst;
136  qr->fBytes = fBytes;
137  qr->fParList = fParList;
138  qr->fResultFile = fResultFile;
139  qr->fArchived = fArchived;
140  qr->fPrepTime = fPrepTime;
141  qr->fInitTime = fInitTime;
142  qr->fProcTime = fProcTime;
143  qr->fMergeTime = fMergeTime;
144  qr->fRecvTime = fRecvTime;
145  qr->fTermTime = fTermTime;
146  qr->fNumWrks = fNumWrks;
147  qr->fNumMergers = fNumMergers;
148 
149  qr->fSelecHdr = 0;
150  if (GetSelecHdr()) {
151  qr->fSelecHdr = new TMacro();
154  }
155  qr->fSelecImp = 0;
156  if (GetSelecImp()) {
157  qr->fSelecImp = new TMacro();
160  }
161 
162  // Name and title
163  qr->SetName(GetName());
164  qr->SetTitle(GetTitle());
165 
166  return qr;
167 }
168 
169 ////////////////////////////////////////////////////////////////////////////////
170 /// Save the selector header and implementation into the dedicated
171 /// TMacro instances. The header is searched for in the same directory
172 /// of the implementation file.
173 
174 void TQueryResult::SaveSelector(const char *selector)
175 {
176  if (!selector)
177  return;
178 
179  // Separate out aclic chars
180  TString selec = selector;
181  TString aclicMode;
182  TString arguments;
183  TString io;
184  selec = gSystem->SplitAclicMode(selec, aclicMode, arguments, io);
185 
186  // Store aclic options, if any
187  if (aclicMode.Length() > 0)
188  fOptions += TString::Format("#%s", aclicMode.Data());
189 
190  // If the selector is in a precompiled shared lib (e.g. in a PAR)
191  // we just save the name
192  TString selname = gSystem->BaseName(selec);
193  fSelecImp->SetName(selname);
194  Int_t idx = selname.Index(".");
195  if (idx < 0) {
196  // Notify
197  if (gDebug > 0)
198  Info("SaveSelector", "precompiled selector: just save the name");
199  fSelecImp->SetTitle(selname);
200  } else {
201  // We locate the file and save it in compressed form
202  if (idx > -1)
203  selname.Remove(idx);
204  fSelecImp->SetTitle(selname);
205 
206  // Locate the implementation file
207  char *selc = gSystem->Which(TROOT::GetMacroPath(), selec, kReadPermission);
208  if (!selc) {
209  if (gDebug > 0)
210  Warning("SaveSelector",
211  "could not locate selector implementation file (%s)", selec.Data());
212  return;
213  }
214 
215  // Fill the TMacro instance
216  fSelecImp->ReadFile(selc);
218 
219  // Locate the included header file
220  char *p = (char *) strrchr(selc,'.');
221  if (p) {
222  strlcpy(p+1,"h",strlen(p));
223  } else {
224  if (gDebug > 0)
225  Warning("SaveSelector",
226  "bad formatted name (%s): could not build header file name", selc);
227  }
228  if (!(gSystem->AccessPathName(selc, kReadPermission))) {
229  fSelecHdr->ReadFile(selc);
231  fSelecHdr->SetTitle(selname);
232  } else {
233  if (gDebug > 0)
234  Warning("SaveSelector",
235  "could not locate selector header file (%s)", selc);
236  }
237 
238  delete[] selc;
239  }
240 }
241 
242 ////////////////////////////////////////////////////////////////////////////////
243 /// End of query settings.
244 
246 {
247  // End time
248  fEnd.Set();
249 
250  // Status
251  fStatus = (status < kAborted || status > kCompleted) ? kAborted : status;
252 
253  // Clone the results
254  if (outlist && fOutputList != outlist) {
255  if (fOutputList) {
256  fOutputList->Delete();
258  }
259  if ((fOutputList = (TList *) (outlist->Clone()))) {
261  Info("RecordEnd", "output list cloned successfully!");
262  } else {
263  Warning("RecordEnd", "unable to clone output list!!!");
264  }
265  }
266 }
267 
268 ////////////////////////////////////////////////////////////////////////////////
269 /// Set processing info.
270 
272  Float_t init, Float_t proc)
273 {
274  fEntries = (ent > 0) ? ent : fEntries;
275  fUsedCPU = (cpu > 0.) ? cpu : fUsedCPU;
276  fBytes = (bytes > 0.) ? bytes : fBytes;
277  fInitTime = (init > 0.) ? init : fInitTime;
278  fProcTime = (proc > 0.) ? proc : fProcTime;
279 }
280 
281 ////////////////////////////////////////////////////////////////////////////////
282 /// Fill log file.
283 
284 void TQueryResult::AddLogLine(const char *logline)
285 {
286  if (logline)
287  fLogFile->AddLine(logline);
288 }
289 
290 ////////////////////////////////////////////////////////////////////////////////
291 /// Add obj to the input list
292 
294 {
295  if (fInputList && obj)
296  fInputList->Add(obj);
297 }
298 
299 ////////////////////////////////////////////////////////////////////////////////
300 /// Set (or update) query in archived state.
301 
302 void TQueryResult::SetArchived(const char *archfile)
303 {
304  if (IsDone()) {
305  fArchived = kTRUE;
306  if (archfile && (strlen(archfile) > 0))
307  fResultFile = archfile;
308  }
309 }
310 
311 ////////////////////////////////////////////////////////////////////////////////
312 /// Print query content. Use opt = "F" for a full listing.
313 
315 {
316  // Attention: the list must match EQueryStatus
317  const char *qst[] = {
318  "aborted ", "submitted", "running ", "stopped ", "completed"
319  };
320 
321  // Status label
322  Int_t st = (fStatus > 0 && fStatus <= kCompleted) ? fStatus : 0;
323 
324  // Range label
325  Long64_t last = (fEntries > -1) ? fFirst+fEntries-1 : -1;
326 
327  // Option
328  Bool_t full = ((strchr(opt,'F') || strchr(opt,'f'))) ? kTRUE : kFALSE;
329 
330  // Query number to be printed
331  Int_t qry = fSeqNum;
332  TString qn = opt;
333  TRegexp re("N.*N");
334  Int_t i1 = qn.Index(re);
335  if (i1 != kNPOS) {
336  qn.Remove(0, i1+1);
337  qn.Remove(qn.Index("N"));
338  qry = qn.Atoi();
339  }
340 
341  // Print separator if full dump
342  if (full) Printf("+++");
343 
344  TString range;
345  if (!full && (last > -1))
346  range.Form("evts:%lld-%lld", fFirst, last);
347 
348  // Print header
349  if (!fDraw) {
350  const char *fin = fFinalized ? "finalized" : qst[st];
351  const char *arc = fArchived ? "(A)" : "";
352  Printf("+++ #:%d ref:\"%s:%s\" sel:%s %9s%s %s",
353  qry, GetTitle(), GetName(), fSelecImp->GetTitle(), fin, arc,
354  range.Data());
355  } else {
356  Printf("+++ #:%d ref:\"%s:%s\" varsel:%s %s",
357  qry, GetTitle(), GetName(), fSelecImp->GetTitle(),
358  range.Data());
359  }
360 
361  // We are done, if not full dump
362  if (!full) return;
363 
364  // Time information
365  Float_t elapsed = (fProcTime > 0.) ? fProcTime
366  : (Float_t)(fEnd.Convert() - fStart.Convert());
367  Printf("+++ started: %s", fStart.AsString());
368  if (fPrepTime > 0.)
369  Printf("+++ prepare: %.3f sec", fPrepTime);
370  Printf("+++ init: %.3f sec", fInitTime);
371  Printf("+++ process: %.3f sec (CPU time: %.1f sec)", elapsed, fUsedCPU);
372  if (fNumMergers > 0) {
373  Printf("+++ merge: %.3f sec (%d mergers)", fMergeTime, fNumMergers);
374  } else {
375  Printf("+++ merge: %.3f sec ", fMergeTime);
376  }
377  if (fRecvTime > 0.)
378  Printf("+++ transfer: %.3f sec", fRecvTime);
379  if (fTermTime > 0.)
380  Printf("+++ terminate: %.3f sec", fTermTime);
381 
382  // Number of events processed, rate, size
383  Double_t rate = 0.0;
384  if (fEntries > -1 && elapsed > 0)
385  rate = fEntries / (Double_t)elapsed ;
386  Float_t size = ((Float_t)fBytes) / TMath::Power(2.,20.);
387  Printf("+++ processed: %lld events (size: %.3f MBs)", fEntries, size);
388  Printf("+++ rate: %.1f evts/sec", rate);
389 
390  Printf("+++ # workers: %d ", fNumWrks);
391 
392  // Package information
393  if (fParList.Length() > 1)
394  Printf("+++ packages: %s", fParList.Data());
395 
396  // Result information
397  TString res = fResultFile;
398  if (!fArchived) {
399  Int_t dq = res.Index("queries");
400  if (dq > -1) {
401  res.Remove(0,res.Index("queries"));
402  res.Insert(0,"<PROOF_SandBox>/");
403  }
404  if (res.BeginsWith("-")) {
405  res = (fStatus == kAborted) ? "not available" : "sent to client";
406  }
407  }
408  if (res.Length() > 1)
409  Printf("+++ results: %s", res.Data());
410 
411  if (fOutputList && fOutputList->GetSize() > 0)
412  Printf("+++ outlist: %d objects", fOutputList->GetSize());
413 }
414 
415 ////////////////////////////////////////////////////////////////////////////////
416 /// To support browsing of the results.
417 
419 {
420  if (fOutputList)
421  b->Add(fOutputList, fOutputList->Class(), "OutputList");
422 }
423 
424 ////////////////////////////////////////////////////////////////////////////////
425 /// Set / change the input list.
426 /// The flag 'adopt' determines whether the list is adopted (default)
427 /// or cloned. If adopted, object ownership is transferred to this object.
428 /// The internal fInputList will always be owner of its objects.
429 
431 {
432  if (!in || in != fInputList)
434 
435  if (in && in != fInputList) {
436  if (!adopt) {
437  fInputList = (TList *) (in->Clone());
438  } else {
439  fInputList = new TList;
440  TIter nxi(in);
441  TObject *o = 0;
442  while ((o = nxi()))
443  fInputList->Add(o);
444  in->SetOwner(kFALSE);
445  }
446  fInputList->SetOwner();
447  }
448 }
449 
450 ////////////////////////////////////////////////////////////////////////////////
451 /// Set / change the output list.
452 /// The flag 'adopt' determines whether the list is adopted (default)
453 /// or cloned. If adopted, object ownership is transferred to this object.
454 /// The internal fOutputList will always be owner of its objects.
455 
457 {
458  if (!out) {
460  return;
461  }
462 
463  if (out && out != fOutputList) {
464  TObject *o = 0;
465  if (fOutputList) {
466  TIter nxoo(fOutputList);
467  while ((o = nxoo())) {
468  if (out->FindObject(o)) fOutputList->Remove(o);
469  }
471  }
472  if (!adopt) {
473  fOutputList = (TList *) (out->Clone());
474  } else {
475  fOutputList = new TList;
476  TIter nxo(out);
477  o = 0;
478  while ((o = nxo()))
479  fOutputList->Add(o);
480  out->SetOwner(kFALSE);
481  }
483  }
484 }
485 
486 ////////////////////////////////////////////////////////////////////////////////
487 /// Compare two query result instances for equality.
488 /// Session name and query number are compared.
489 
491 {
492  if (!strcmp(qr1.GetTitle(), qr2.GetTitle()))
493  if (qr1.GetSeqNum() == qr2.GetSeqNum())
494  return kTRUE;
495  return kFALSE;
496 }
497 
498 ////////////////////////////////////////////////////////////////////////////////
499 /// Return TRUE if reference ref matches.
500 
502 {
503  TString lref; lref.Form("%s:%s", GetTitle(), GetName());
504 
505  if (lref == ref)
506  return kTRUE;
507 
508  return kFALSE;
509 }
510 
511 ////////////////////////////////////////////////////////////////////////////////
512 /// Return first instance of class 'classname' in the input list.
513 /// Usefull to access TDSet, TEventList, ...
514 
515 TObject *TQueryResult::GetInputObject(const char *classname) const
516 {
517  TObject *o = 0;
518  if (classname && fInputList) {
519  TIter nxi(fInputList);
520  while ((o = nxi()))
521  if (!strncmp(o->ClassName(), classname, strlen(classname)))
522  return o;
523  }
524 
525  // Not found
526  return o;
527 }
void Add(TObject *obj, const char *name=0, Int_t check=-1)
Add object with name to browser.
Definition: TBrowser.cxx:261
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root.
Definition: TSystem.cxx:931
virtual const char * GetName() const
Returns name of object.
Definition: TNamed.h:47
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
Definition: TSystem.cxx:1272
void Browse(TBrowser *b=0)
To support browsing of the results.
virtual int GetPid()
Get process id.
Definition: TSystem.cxx:714
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
Definition: TList.cxx:409
Float_t fRecvTime
Transfer-to-client time (seconds) (millisec precision)
Definition: TQueryResult.h:76
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
Definition: TObject.cxx:847
void SaveSelector(const char *selec)
Save the selector header and implementation into the dedicated TMacro instances.
long long Long64_t
Definition: RtypesCore.h:69
void Set()
Set Date/Time to current time as reported by the system.
Definition: TDatime.cxx:288
void Print(Option_t *opt="") const
Print query content. Use opt = "F" for a full listing.
float Float_t
Definition: RtypesCore.h:53
Float_t fUsedCPU
real CPU time used (seconds)
Definition: TQueryResult.h:57
const char Option_t
Definition: RtypesCore.h:62
virtual TString SplitAclicMode(const char *filename, TString &mode, TString &args, TString &io) const
This method split a filename of the form: ~~~ {.cpp} [path/]macro.C[+|++[k|f|g|O|c|s|d|v|-]][(args)]...
Definition: TSystem.cxx:4071
EQueryStatus fStatus
query status
Definition: TQueryResult.h:54
const Ssiz_t kNPOS
Definition: RtypesCore.h:115
virtual void SetName(const char *name)
Set the name of the TNamed.
Definition: TNamed.cxx:131
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
TObject * GetInputObject(const char *classname) const
Return first instance of class &#39;classname&#39; in the input list.
Regular expression class.
Definition: TRegexp.h:31
void AddLogLine(const char *logline)
Fill log file.
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
Definition: TString.h:587
Class supporting a collection of lines with C++ code.
Definition: TMacro.h:31
Basic string class.
Definition: TString.h:129
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
TQueryResult * CloneInfo()
Return an instance of TQueryResult containing only the local info fields, i.e.
virtual char * Which(const char *search, const char *file, EAccessMode mode=kFileExists)
Find location of file in a search path.
Definition: TSystem.cxx:1518
Float_t fTermTime
Terminate time (seconds) (millisec precision)
Definition: TQueryResult.h:77
Int_t GetSeqNum() const
Definition: TQueryResult.h:115
virtual Bool_t IsDone() const
Definition: TQueryResult.h:143
TDatime fEnd
time when processing ended
Definition: TQueryResult.h:56
virtual TObject * Clone(const char *newname="") const
Make a clone of an collection using the Streamer facility.
TString & Insert(Ssiz_t pos, const char *s)
Definition: TString.h:597
Int_t fNumMergers
Number of submergers.
Definition: TQueryResult.h:79
TMacro * fSelecHdr
selector header file
Definition: TQueryResult.h:64
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Definition: TMath.h:628
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
Definition: TList.cxx:501
Bool_t fFinalized
whether Terminate has been run
Definition: TQueryResult.h:69
static const char * GetMacroPath()
Get macro search path. Static utility function.
Definition: TROOT.cxx:2585
TMacro * fLogFile
file with log messages from the query
Definition: TQueryResult.h:63
#define SafeDelete(p)
Definition: RConfig.h:499
virtual const char * ClassName() const
Returns name of class to which the object belongs.
Definition: TObject.cxx:135
TString fResultFile
URL of the file where results have been archived.
Definition: TQueryResult.h:71
TDatime fStart
time when processing started
Definition: TQueryResult.h:55
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString...
Definition: TString.cxx:2345
TMacro * GetSelecHdr() const
Definition: TQueryResult.h:127
Long64_t fFirst
first entry processed
Definition: TQueryResult.h:61
void Info(const char *location, const char *msgfmt,...)
TMacro * fSelecImp
selector implementation file
Definition: TQueryResult.h:65
virtual void SetOutputList(TList *out, Bool_t adopt=kTRUE)
Set / change the output list.
A container class for query results.
Definition: TQueryResult.h:36
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.
TList * fOutputList
output list
Definition: TQueryResult.h:68
void AddInput(TObject *obj)
Add obj to the input list.
A doubly linked list.
Definition: TList.h:43
Using a TBrowser one can browse all ROOT objects.
Definition: TBrowser.h:37
Bool_t fArchived
whether the query has been archived
Definition: TQueryResult.h:70
R__EXTERN TSystem * gSystem
Definition: TSystem.h:539
virtual const char * GetLibraries(const char *regexp="", const char *option="", Bool_t isRegexp=kTRUE)
Return a space separated list of loaded shared libraries.
Definition: TSystem.cxx:2079
TList * fInputList
input list; contains also data sets, entry list, ...
Definition: TQueryResult.h:59
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:237
virtual TObject * Remove(TObject *obj)
Remove object from the list.
Definition: TList.cxx:679
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
Definition: TString.h:563
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Definition: TString.cxx:2332
Ssiz_t Length() const
Definition: TString.h:388
virtual void RecordEnd(EQueryStatus status, TList *outlist=0)
End of query settings.
Int_t fNumWrks
Number of workers at start.
Definition: TQueryResult.h:78
virtual Int_t ReadFile(const char *filename)
Read lines in filename in this macro.
Definition: TMacro.cxx:336
Int_t fSeqNum
query unique sequential number
Definition: TQueryResult.h:52
#define Printf
Definition: TGeoToOCC.h:18
Bool_t Matches(const char *ref)
Return TRUE if reference ref matches.
const Bool_t kFALSE
Definition: RtypesCore.h:92
Float_t fPrepTime
Prepare time (seconds) (millisec precision)
Definition: TQueryResult.h:72
TString & Remove(Ssiz_t pos)
Definition: TString.h:621
long Long_t
Definition: RtypesCore.h:50
TMacro * GetSelecImp() const
Definition: TQueryResult.h:128
#define ClassImp(name)
Definition: Rtypes.h:336
static Int_t init()
double Double_t
Definition: RtypesCore.h:55
Float_t fProcTime
Processing time (seconds) (millisec precision)
Definition: TQueryResult.h:74
The TTimeStamp encapsulates seconds and ns since EPOCH.
Definition: TTimeStamp.h:71
virtual void SetInputList(TList *in, Bool_t adopt=kTRUE)
Set / change the input list.
const char * AsString() const
Return the date & time as a string (ctime() format).
Definition: TDatime.cxx:101
virtual ~TQueryResult()
Destructor.
UInt_t Convert(Bool_t toGMT=kFALSE) const
Convert fDatime from TDatime format to the standard time_t format.
Definition: TDatime.cxx:181
void SetArchived(const char *archfile)
Set (or update) query in archived state.
Mother of all ROOT objects.
Definition: TObject.h:37
virtual const char * GetTitle() const
Returns title of object.
Definition: TObject.cxx:408
Float_t fMergeTime
Merging time (seconds) (millisec precision)
Definition: TQueryResult.h:75
virtual void Add(TObject *obj)
Definition: TList.h:77
Long64_t fEntries
number of entries processed
Definition: TQueryResult.h:60
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
Definition: TRolke.cxx:630
R__EXTERN Int_t gDebug
Definition: Rtypes.h:83
Int_t Atoi() const
Return integer value of string.
Definition: TString.cxx:1975
Long64_t fBytes
number of bytes processed
Definition: TQueryResult.h:62
Definition: first.py:1
virtual const char * GetName() const
Returns name of object.
Definition: TObject.cxx:364
virtual Int_t GetSize() const
Definition: TCollection.h:89
Bool_t operator==(const TQueryResult &qr1, const TQueryResult &qr2)
Compare two query result instances for equality.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
Definition: TNamed.cxx:155
const Bool_t kTRUE
Definition: RtypesCore.h:91
gr SetName("gr")
TString fParList
colon-separated list of PAR loaded at fStart
Definition: TQueryResult.h:67
virtual TObjString * AddLine(const char *text)
Add line with text in the list of lines of this macro.
Definition: TMacro.cxx:139
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
Definition: TObject.cxx:859
Bool_t fDraw
true if draw action query
Definition: TQueryResult.h:53
virtual const char * GetTitle() const
Returns title of object.
Definition: TNamed.h:48
TString fOptions
processing options + aclic mode (< opt >#< aclic_mode >)
Definition: TQueryResult.h:58
Float_t fInitTime
Initialization time (seconds) (millisec precision)
Definition: TQueryResult.h:73
T1 fFirst
Definition: X11Events.mm:86
const char * Data() const
Definition: TString.h:347