Logo ROOT   6.16/01
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
15A 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
36TQueryResult::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
47 SetTitle(TString::Format("session-localhost-%ld-%d",
48 (Long_t)TTimeStamp().GetSec(), gSystem->GetPid()));
49
50 // Start time
51 fStart.Set();
53
54 // Save input list
55 fInputList = 0;
56 if (inlist) {
57 fInputList = (TList *) (inlist->Clone());
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;
139 qr->fArchived = fArchived;
140 qr->fPrepTime = fPrepTime;
141 qr->fInitTime = fInitTime;
142 qr->fProcTime = fProcTime;
144 qr->fRecvTime = fRecvTime;
145 qr->fTermTime = fTermTime;
146 qr->fNumWrks = fNumWrks;
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
174void 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) {
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
284void 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
302void TQueryResult::SetArchived(const char *archfile)
303{
304 if (IsDone()) {
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 }
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
515TObject *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}
#define SafeDelete(p)
Definition: RConfig.hxx:529
#define b(i)
Definition: RSha256.hxx:100
static Int_t init()
const Ssiz_t kNPOS
Definition: RtypesCore.h:111
int Int_t
Definition: RtypesCore.h:41
const Bool_t kFALSE
Definition: RtypesCore.h:88
long Long_t
Definition: RtypesCore.h:50
bool Bool_t
Definition: RtypesCore.h:59
double Double_t
Definition: RtypesCore.h:55
long long Long64_t
Definition: RtypesCore.h:69
float Float_t
Definition: RtypesCore.h:53
const Bool_t kTRUE
Definition: RtypesCore.h:87
const char Option_t
Definition: RtypesCore.h:62
#define ClassImp(name)
Definition: Rtypes.h:363
R__EXTERN Int_t gDebug
Definition: Rtypes.h:90
#define Printf
Definition: TGeoToOCC.h:18
Bool_t operator==(const TQueryResult &qr1, const TQueryResult &qr2)
Compare two query result instances for equality.
@ kReadPermission
Definition: TSystem.h:48
R__EXTERN TSystem * gSystem
Definition: TSystem.h:540
T1 fFirst
Definition: X11Events.mm:86
Using a TBrowser one can browse all ROOT objects.
Definition: TBrowser.h:37
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
virtual TObject * Clone(const char *newname="") const
Make a clone of an collection using the Streamer facility.
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
Definition: TCollection.h:182
void Set()
Set Date/Time to current time as reported by the system.
Definition: TDatime.cxx:288
UInt_t Convert(Bool_t toGMT=kFALSE) const
Convert fDatime from TDatime format to the standard time_t format.
Definition: TDatime.cxx:181
const char * AsString() const
Return the date & time as a string (ctime() format).
Definition: TDatime.cxx:101
A doubly linked list.
Definition: TList.h:44
virtual void Add(TObject *obj)
Definition: TList.h:87
virtual TObject * Remove(TObject *obj)
Remove object from the list.
Definition: TList.cxx:818
virtual TObject * FindObject(const char *name) const
Delete a TObjLink object.
Definition: TList.cxx:574
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
Definition: TList.cxx:467
Class supporting a collection of lines with C++ code.
Definition: TMacro.h:31
virtual TObjString * AddLine(const char *text)
Add line with text in the list of lines of this macro.
Definition: TMacro.cxx:139
virtual Int_t ReadFile(const char *filename)
Read lines in filename in this macro.
Definition: TMacro.cxx:336
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
Definition: TNamed.cxx:164
virtual void SetName(const char *name)
Set the name of the TNamed.
Definition: TNamed.cxx:140
virtual const char * GetTitle() const
Returns title of object.
Definition: TNamed.h:48
virtual const char * GetName() const
Returns name of object.
Definition: TNamed.h:47
Mother of all ROOT objects.
Definition: TObject.h:37
virtual const char * GetName() const
Returns name of object.
Definition: TObject.cxx:357
virtual const char * ClassName() const
Returns name of class to which the object belongs.
Definition: TObject.cxx:128
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
Definition: TObject.cxx:866
virtual const char * GetTitle() const
Returns title of object.
Definition: TObject.cxx:401
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
Definition: TObject.cxx:854
A container class for query results.
Definition: TQueryResult.h:36
virtual void SetOutputList(TList *out, Bool_t adopt=kTRUE)
Set / change the output list.
TString fOptions
processing options + aclic mode (< opt >#< aclic_mode >)
Definition: TQueryResult.h:58
void AddLogLine(const char *logline)
Fill log file.
TDatime fStart
time when processing started
Definition: TQueryResult.h:55
Long64_t fFirst
first entry processed
Definition: TQueryResult.h:61
Int_t GetSeqNum() const
Definition: TQueryResult.h:115
TDatime fEnd
time when processing ended
Definition: TQueryResult.h:56
TMacro * fSelecHdr
selector header file
Definition: TQueryResult.h:64
void SetArchived(const char *archfile)
Set (or update) query in archived state.
virtual void RecordEnd(EQueryStatus status, TList *outlist=0)
End of query settings.
Bool_t Matches(const char *ref)
Return TRUE if reference ref matches.
TMacro * GetSelecImp() const
Definition: TQueryResult.h:128
TQueryResult * CloneInfo()
Return an instance of TQueryResult containing only the local info fields, i.e.
Bool_t fArchived
whether the query has been archived
Definition: TQueryResult.h:70
void SaveSelector(const char *selec)
Save the selector header and implementation into the dedicated TMacro instances.
TList * fInputList
input list; contains also data sets, entry list, ...
Definition: TQueryResult.h:59
void Print(Option_t *opt="") const
Print query content. Use opt = "F" for a full listing.
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.
Float_t fProcTime
Processing time (seconds) (millisec precision)
Definition: TQueryResult.h:74
Bool_t fDraw
true if draw action query
Definition: TQueryResult.h:53
Int_t fNumMergers
Number of submergers.
Definition: TQueryResult.h:79
virtual Bool_t IsDone() const
Definition: TQueryResult.h:143
virtual void SetInputList(TList *in, Bool_t adopt=kTRUE)
Set / change the input list.
TObject * GetInputObject(const char *classname) const
Return first instance of class 'classname' in the input list.
virtual ~TQueryResult()
Destructor.
TString fParList
colon-separated list of PAR loaded at fStart
Definition: TQueryResult.h:67
TMacro * GetSelecHdr() const
Definition: TQueryResult.h:127
Bool_t fFinalized
whether Terminate has been run
Definition: TQueryResult.h:69
Float_t fRecvTime
Transfer-to-client time (seconds) (millisec precision)
Definition: TQueryResult.h:76
TList * fOutputList
output list
Definition: TQueryResult.h:68
Float_t fTermTime
Terminate time (seconds) (millisec precision)
Definition: TQueryResult.h:77
Float_t fPrepTime
Prepare time (seconds) (millisec precision)
Definition: TQueryResult.h:72
void AddInput(TObject *obj)
Add obj to the input list.
EQueryStatus fStatus
query status
Definition: TQueryResult.h:54
Float_t fUsedCPU
real CPU time used (seconds)
Definition: TQueryResult.h:57
Int_t fSeqNum
query unique sequential number
Definition: TQueryResult.h:52
TMacro * fSelecImp
selector implementation file
Definition: TQueryResult.h:65
Long64_t fBytes
number of bytes processed
Definition: TQueryResult.h:62
TString fResultFile
URL of the file where results have been archived.
Definition: TQueryResult.h:71
TMacro * fLogFile
file with log messages from the query
Definition: TQueryResult.h:63
Long64_t fEntries
number of entries processed
Definition: TQueryResult.h:60
void Browse(TBrowser *b=0)
To support browsing of the results.
Float_t fMergeTime
Merging time (seconds) (millisec precision)
Definition: TQueryResult.h:75
Int_t fNumWrks
Number of workers at start.
Definition: TQueryResult.h:78
TString fLibList
blank-separated list of libs loaded at fStart
Definition: TQueryResult.h:66
Float_t fInitTime
Initialization time (seconds) (millisec precision)
Definition: TQueryResult.h:73
static const char * GetMacroPath()
Get macro search path. Static utility function.
Definition: TROOT.cxx:2764
Regular expression class.
Definition: TRegexp.h:31
static Bool_t IsStandardDraw(const char *selec)
Find out if this is a standard selection used for Draw actions (either TSelectorDraw,...
Definition: TSelector.cxx:237
Basic string class.
Definition: TString.h:131
Ssiz_t Length() const
Definition: TString.h:405
TString & Insert(Ssiz_t pos, const char *s)
Definition: TString.h:644
Int_t Atoi() const
Return integer value of string.
Definition: TString.cxx:1896
const char * Data() const
Definition: TString.h:364
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
Definition: TString.h:610
TString & Remove(Ssiz_t pos)
Definition: TString.h:668
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:2286
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Definition: TString.cxx:2264
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
Definition: TString.h:634
virtual int GetPid()
Get process id.
Definition: TSystem.cxx:716
virtual TString SplitAclicMode(const char *filename, TString &mode, TString &args, TString &io) const
This method split a filename of the form:
Definition: TSystem.cxx:4160
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:1286
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root.
Definition: TSystem.cxx:941
virtual char * Which(const char *search, const char *file, EAccessMode mode=kFileExists)
Find location of file in a search path.
Definition: TSystem.cxx:1536
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:2146
The TTimeStamp encapsulates seconds and ns since EPOCH.
Definition: TTimeStamp.h:71
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Definition: TMath.h:723
Definition: first.py:1