43class TProofPerfAnalysis::TWrkInfo :
public TNamed {
45 TWrkInfo(
const char *ord,
const char *
name) :
47 fBytesRead(0), fLatency(0), fProcTime(0), fCpuTime(0), fStart(0), fStop(-1),
48 fRateT(0), fRateRemoteT(0), fMBRateT(0), fMBRateRemoteT(0), fLatencyT(0) { }
70 Double_t AvgRate() {
if (fProcTime > 0)
return (fEventsProcessed/fProcTime);
return -1.; }
71 Double_t AvgIO() {
if (fProcTime > 0)
return (fBytesRead/fProcTime);
return -1.; }
74 Printf(
" +++ TWrkInfo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
76 Printf(
" +++ Activity interval: %f -> %f", fStart, fStop);
77 Printf(
" +++ Amounts processed: %d packets (%d remote), %lld evts, %lld bytes",
78 fPackets, fRemotePackets, fEventsProcessed, fBytesRead);
80 Printf(
" +++ Processing time: %f s (CPU: %f s)", fProcTime, fCpuTime);
81 Printf(
" +++ Averages: %f evts/s, %f MB/s", (
Double_t)fEventsProcessed / fProcTime, (
Double_t)fBytesRead /1024./1024./fProcTime);
83 Printf(
" +++ Total latency: %f", fLatency);
84 Printf(
" +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
89 if (fStop < wi->fStop) {
91 }
else if (fStop == wi->fStop) {
99class TProofPerfAnalysis::TPackInfo :
public TNamed {
101 TPackInfo(
const char *ord,
const char *host) :
TNamed(ord, host), fStart(0), fStop(-1), fSize(0),
fMBRate(0.) { }
103 :
TNamed(ord, host), fStart(start), fStop(stop), fSize(sz),
fMBRate(mbr) { }
109 if (!strcmp(opt,
"S")) {
110 Printf(
" \t%10lld evts, \t%12.2f MB/s, \t%12.3f -> %12.3f s", fSize,
fMBRate, fStart, fStop);
117class TProofPerfAnalysis::TWrkInfoFile :
public TNamed {
119 TWrkInfoFile(
const char *ord,
const char *
name) :
TNamed(ord,
name) { }
123 if (!strcmp(opt,
"R")) {
130 while ((o = nxp())) { o->
Print(
"S"); }
134class TProofPerfAnalysis::TWrkEntry :
public TObject {
146class TProofPerfAnalysis::TFileInfo :
public TNamed {
150 fSizeAvg(0), fSizeMax(-1.), fSizeMin(-1.),
152 fRateP(0), fRatePRemote(0), fMBRateP(0), fMBRatePRemote(0) { }
156 fPackList.SetOwner(
kTRUE); fPackList.Clear();
157 fWrkList.SetOwner(
kTRUE); fWrkList.Clear();
158 fRWrkList.SetOwner(
kTRUE); fRWrkList.Clear();}
185 Printf(
" +++ TFileInfo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
188 Printf(
" +++ Processing interval: %f -> %f", fStart, fStop);
191 if (!strcmp(opt,
"P")) fPackList.
Print();
192 if (!strcmp(opt,
"WP")) fWrkList.
Print(
"R");
194 Printf(
" +++ MB rates: %f MB/s (avg), %f MB/s (min), %f MB/s (max)",
196 Printf(
" +++ Sizes: %lld (avg), %lld (min), %lld (max)",
197 fSizeAvg /
fPackets, fSizeMin, fSizeMax);
199 Printf(
" +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
204 if (fStop < wi->fStop) {
206 }
else if (fStop == wi->fStop) {
218 const char *title,
const char *treename)
219 :
TNamed(perffile, title), fFile(0), fTreeName(treename), fTree(0),
220 fInitTime(-1.), fMergeTime(-1.), fMaxTime(-1.),
221 fEvents(0), fPackets(0),
222 fEvtRateMax(-1.), fMBRateMax(-1.), fLatencyMax(-1.),
223 fEvtRate(0), fEvtRateRun(0), fMBRate(0), fMBRateRun(0),
224 fEvtRateAvgMax(-1.), fMBRateAvgMax(-1.),
225 fEvtRateAvg(-1.), fMBRateAvg(0),
226 fFileResult(
""), fSaveResult(
kFALSE),
230 if (!title)
SetTitle(
"PROOF Performance Analysis");
236 Error(
"TProofPerfAnalysis",
"problems opening file '%s'",
237 perffile ? perffile :
"<undef>");
256 Error(
"TProofPerfAnalysis",
"directory '%s' not found or not loadable",
fDirName.
Data());
290 :
TNamed(
"", title), fFile(0), fTree(0),
291 fInitTime(-1.), fMergeTime(-1.), fMaxTime(-1.),
292 fEvents(0), fPackets(0),
293 fEvtRateMax(-1.), fMBRateMax(-1.), fLatencyMax(-1.),
294 fEvtRate(0), fEvtRateRun(0), fMBRate(0), fMBRateRun(0),
295 fEvtRateAvgMax(-1.), fMBRateAvgMax(-1.),
296 fEvtRateAvg(-1.), fMBRateAvg(0),
306 if (!title)
SetTitle(
"PROOF Performance Analysis");
348 if (t && strlen(t) > 0) {
375 while ((k = (
TKey *) nxk())) {
403 Error(
"FileDist",
"not a valid instance - do nothing");
411 Info(
"FileDist",
"%d workers were active during this query", wrkList->
GetSize());
412 Info(
"FileDist",
"%d servers were active during this query", srvList->
GetSize());
418 while ((sn = (
TNamed *)nxs())) {
420 while ((wn = (
TNamed *) nxw())) {
431 while ((wn = (
TNamed *) nxw())) {
434 while ((nwn = (
TNamed *) nnxw())) {
440 if (!nwn) nwl->
Add(wn);
443 while ((sn = (
TNamed *)nxs())) {
444 if (!strcmp(sn->
GetTitle(), wn->GetName())) {
447 while ((nsn = (
TNamed *) nnxs())) {
453 if (!nsn) nsl->
Add(sn);
457 if (sn) srvList->
Remove(sn);
461 while ((sn = (
TNamed *)nxs())) {
479 Printf(
"\n +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
480 Printf(
" + Only one data server found: full analysis meaningful + ");
481 Printf(
" + only when there are more file servers + ");
482 Printf(
" +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \n");
486 TH1F *hxpak =
new TH1F(
"hxpak",
"MBytes / Worker",
495 while ((wn = (
TNamed *)nxsw())) {
512 TH1F *hfdis =
new TH1F(
"hfdis",
"Packet dist",
517 TH1F *hbdis =
new TH1F(
"hbdis",
"MBytes dist",
523 TH2F *hxpak =
new TH2F(
"hxpak",
"MBytes / {Worker,Server}",
535 while ((wn = (
TNamed *)nxsw())) {
540 while ((sn = (
TNamed *)nxss())) {
551 while ((sn = (
TNamed *)nxss())) {
587 if (!wl || !sl)
return;
595 for (
Long64_t k=0; k<entries; k++) {
628 TString o1(ord1), o2(ord2), p1, p2;
629 Int_t o1d = 0, o2d = 0;
630 if ((o1d = o1.CountChar(
'.')) > (o2d = o2.CountChar(
'.'))) {
632 }
else if (o1d < o2d) {
638 Bool_t b2 = o2.Tokenize(p2, o2d,
" ");
645 b1 = o1.Tokenize(p1, o1d,
" ");
646 b2 = o2.Tokenize(p2, o2d,
" ");
651 }
else if (b2 && !b1) {
664 if (!hf || !hb || !hx)
return;
670 if (!(fout = fopen(fnout.
Data(),
"w"))) {
671 Warning(
"FillFileDist",
"asked to save details in '%s' but file could"
672 " not be open (errno: %d)", fnout.
Data(), (
int)errno);
674 Info(
"FillFileDist",
"saving details to '%s'", fnout.
Data());
682 for (
Long64_t k=0; k<entries; k++) {
698 fprintf(fout,
"%s,%s -> %f,%f (%f)\n",
705 if (fout) fclose(fout);
721 if (!(fout = fopen(fnout.
Data(),
"w"))) {
722 Warning(
"FillFileDistOneSrv",
"asked to save details in '%s' but file could"
723 " not be open (errno: %d)", fnout.
Data(), (
int)errno);
725 Info(
"FillFileDistOneSrv",
"saving details to '%s'", fnout.
Data());
733 for (
Long64_t k=0; k<entries; k++) {
747 fprintf(fout,
"%s,%s -> %f (%f)\n",
752 if (fout) fclose(fout);
763 Error(
"WorkerActivity",
"not a valid instance - do nothing");
770 Error(
"WorkerActivity",
"workers information not available - do nothing");
776 if ((o =
gDirectory->FindObject(
"act10")))
delete o;
779 if (
t1 > t0)
t1 = t0;
780 TH1F *hact10 =
new TH1F(
"act10",
"Worker activity start (seconds)", 50, 0.,
t1);
782 if ((o =
gDirectory->FindObject(
"act11")))
delete o;
783 TH1F *hact11 =
new TH1F(
"act11",
"Worker activity stop (seconds)", 50, t0,
fMaxTime);
785 if ((o =
gDirectory->FindObject(
"act2")))
delete o;
786 TH1F *hact2 =
new TH1F(
"act2",
"End of activity (seconds)", 50, t0,
fMaxTime);
796 while ((wi = (TWrkInfo *)nxw())) {
798 for (j = 1; j < hact10->
GetNbinsX()+1 ; j++) {
802 for (j = 1; j < hact11->
GetNbinsX()+1 ; j++) {
806 hact2->
Fill(wi->fStop);
843 while ((wi = (TWrkInfo *)nxw())) {
846 if (showlast < 0 || k < showlast) wi->
Print();
857 if (!wn || (wn && strlen(wn) <= 0)) {
858 Error(
"PrintWrkInfo",
"worker name or host must be defined!");
870 while ((wi = (TWrkInfo *)nxw())) {
871 TString n(wi->GetName()), t(wi->GetTitle());
873 while (ww.Tokenize(w, from,
"[, ]")) {
894 while ((fi = (TFileInfo *)nxf())) {
897 if (showlast < 0 || k < showlast) fi->Print(opt);
910 if (!fn || (fn && strlen(fn) <= 0)) {
911 Error(
"PrintFileInfo",
"file path must be defined!");
926 while ((fi = (TFileInfo *)nxf())) {
927 TString n(fi->GetName()),
s(fi->GetTitle());
929 while (fw.Tokenize(
f, from,
"[, ]")) {
931 if (
n.Index(re) !=
kNPOS ||
s.Index(re) !=
kNPOS) fi->Print(opt);
965 Int_t nraw = entries * 2, jj = 0, kk = 0;
967 for (
Long64_t k=0; k<entries; k++) {
980 memset(jidx, 0, nbins *
sizeof(
Int_t));
984 for (kk = 0; kk < nbins; kk++) {
986 if (jj == 0 || xtmp > xbins[jj - 1] + .5) {
996 Int_t nbin = nbins - 1;
998 if ((o =
gDirectory->FindObject(
"gEvtRate")))
delete o;
999 fEvtRate =
new TH1F(
"gEvtRate",
"Total event processing rate (evt/s)", nbin, xbins);
1004 if ((o =
gDirectory->FindObject(
"gEvtRateAvg")))
delete o;
1005 fEvtRateRun =
new TH1F(
"gEvtRateAvg",
"Event processing rate running average (evt/s)", nbin, xbins);
1010 if ((o =
gDirectory->FindObject(
"gMBRate")))
delete o;
1011 fMBRate =
new TH1F(
"gMBRate",
"Total processing rate (MB/s)", nbin, xbins);
1016 if ((o =
gDirectory->FindObject(
"gMBRateAvg")))
delete o;
1017 fMBRateRun =
new TH1F(
"gMBRateAvg",
"Processing rate running average (MB/s)", nbin, xbins);
1026 TList *gwl = 0, *gbl = 0;
1030 for (
Long64_t k=0; k<entries; k++) {
1038 wi->fRateT =
new TGraph(100);
1039 wi->fRateRemoteT =
new TGraph(100);
1040 wi->fMBRateT =
new TGraph(100);
1041 wi->fMBRateRemoteT =
new TGraph(100);
1042 wi->fLatencyT =
new TGraph(100);
1047 if (wi->fPackets <= 0) {
1063 wi->fRateT->SetPoint(wi->fPackets,
tt, ert);
1064 if (brt > 0.) wi->fMBRateT->SetPoint(wi->fPackets,
tt, brt);
1065 wi->fLatencyT->SetPoint(wi->fPackets,
tt, pe.
fLatency);
1067 wi->fRateRemoteT->SetPoint(wi->fRemotePackets,
tt, ert);
1068 wi->fMBRateRemoteT->SetPoint(wi->fRemotePackets,
tt, brt);
1069 wi->fRemotePackets++;
1077 for (kk = 1; kk <= nbins; kk++) {
1079 if (mi > stop)
break;
1085 if (start > mi) olap = mx - start;
1105 Printf(
" +++ %s #:%d at:%fs lat:%fs proc:%fs evts:%lld bytes:%lld (rates:%f evt/s, %f MB/s)",
1110 Printf(
" +++ %s #:%d at:%fs lat:%fs proc:%fs rate:-- evt/s (-- bytes/s)",
1127 while ((gbl = (
TList *) nxb())) {
1130 while ((gwl = (
TList *) nxw())) {
1134 while ((we = (TWrkEntry *) nxp())) {
1135 if (we->fProcTime > 0) {
1136 er += we->fEvtRate * we->fProcTime;
1137 br += we->fMBRate * we->fProcTime;
1138 pt += we->fProcTime;
1153 for (kk = 1; kk < nbins; kk++) {
1184 while ((wi = (TWrkInfo *) nxw())) {
1188 wi->fRateT->Set(wi->fPackets);
1189 wi->fRateRemoteT->Set(wi->fRemotePackets);
1190 wi->fLatencyT->Set(wi->fPackets);
1191 wi->fMBRateT->Set(wi->fPackets);
1192 wi->fMBRateRemoteT->Set(wi->fRemotePackets);
1201 while ((wi = (TWrkInfo *) nxsw())) {
1202 if (wi->fStop > 0.) ksw++;
1203 if (ksw == rsw)
break;
1216 while ((wi = (TWrkInfo *)nxwi())) {
1250 if (!strcmp(opt,
"S")) {
1252 Printf(
"%d %f %f %f %f %f %f %f",
1258 Printf(
" +++ Total query time: %f secs (init: %f secs, merge: %f secs)",
1286 for (
Long64_t k=0; k<entries; k++) {
1299 fi->fSizeP =
new TGraph(10);
1300 fi->fRateP =
new TGraph(10);
1301 fi->fRatePRemote =
new TGraph(10);
1302 fi->fMBRateP =
new TGraph(10);
1303 fi->fMBRatePRemote =
new TGraph(10);
1308 if (fi->fPackets <= 0) {
1325 fi->fRateP->SetPoint(fi->fPackets,
tt, ert);
1326 if (brt > 0.) fi->fMBRateP->SetPoint(fi->fPackets,
tt, brt);
1329 fi->fRatePRemote->SetPoint(fi->fRPackets,
tt, ert);
1330 fi->fMBRatePRemote->SetPoint(fi->fRPackets,
tt, brt);
1335 fi->fMBRateAvg += brt;
1336 if (brt > fi->fMBRateMax || fi->fMBRateMax < 0.) fi->fMBRateMax = brt;
1337 if (brt < fi->fMBRateMin || fi->fMBRateMin < 0.) fi->fMBRateMin = brt;
1342 fi->fPackList.Add(
pi);
1343 TWrkInfoFile *wif = 0;
1344 if (!(wif = (TWrkInfoFile *) fi->fWrkList.FindObject(pe.
fSlave))) {
1346 fi->fWrkList.Add(wif);
1348 wif->fPackets.Add(
pi);
1353 Printf(
" +++ %s #:%d at:%fs lat:%fs proc:%fs evts:%lld bytes:%lld (rates:%f evt/s, %f MB/s)",
1358 Printf(
" +++ %s #:%d at:%fs lat:%fs proc:%fs rate:-- evt/s (-- bytes/s)",
1374 while ((fi = (TFileInfo *) nxf())) {
1377 fi->fRateP->Set(fi->fPackets);
1378 fi->fRatePRemote->Set(fi->fRPackets);
1379 fi->fMBRateP->Set(fi->fPackets);
1380 fi->fMBRatePRemote->Set(fi->fRPackets);
1412 if (
f && !
f->IsZombie()) {
1435 Printf(
"Drawn objects saving disabled");
1450 if (!
f ||
f->IsZombie()) {
1453 Error(
"SetSaveResult",
"could not open file '%s' in mode '%s'",
file, mode);
1464 Printf(
"Drawn objects will be saved in file '%s'",
file);
1481 Error(
"EventDist",
"distributions not initialized - do nothing");
1507 TH1F *hrt1 = 0, *hrt2 = 0;
1514 if ((o =
gDirectory->FindObject(
"rt1")))
delete o;
1515 hrt1 =
new TH1F(
"rt1",
"Evt processing rate (evt/s)", 100, 0.,
fMaxTime);
1520 if ((o =
gDirectory->FindObject(
"rt2")))
delete o;
1521 hrt2 =
new TH1F(
"rt2",
"MB processing rate (MB/s)", 100, 0.,
fMaxTime);
1522 hrt2->SetMinimum(0.);
1525 hrt2->GetXaxis()->SetTitle(
"Query Processing Time (s)");
1548 if (!ww.
IsNull() && ww !=
"*" && ww !=
"all") {
1551 while ((ww.
Tokenize(w, from,
","))) {
1558 Int_t ci = 40, cir = 30, ic = 0;
1561 while ((wi = (TWrkInfo *) nxw())) {
1562 if (wl && !wl->
FindObject(wi->GetName()))
continue;
1563 if (wi->fRateT && wi->fRateT->GetN() > 0) {
1564 wi->fRateT->
SetNameTitle(wi->GetName(), wi->GetTitle());
1569 if (wi->fRateRemoteT && wi->fRateRemoteT->GetN() > 0) {
1570 wi->fRateRemoteT->SetNameTitle(wi->GetName(), wi->GetTitle());
1575 if (wi->fMBRateT && wi->fMBRateT->GetN() > 0) {
1576 wi->fMBRateT->SetNameTitle(wi->GetName(), wi->GetTitle());
1581 if (wi->fMBRateRemoteT && wi->fMBRateRemoteT->GetN() > 0) {
1582 wi->fMBRateRemoteT->SetNameTitle(wi->GetName(), wi->GetTitle());
1585 DoDraw(wi->fMBRateRemoteT,
"L",
TString::Format(
"MBRateRemoteT-%s", wi->fMBRateRemoteT->GetName()));
1608 if ((o =
gDirectory->FindObject(
"lt1")))
delete o;
1609 TH1F *hlt1 =
new TH1F(
"lt1",
"Packet retrieval latency", 100, 0.,
fMaxTime);
1625 if (!ww.
IsNull() && ww !=
"*" && ww !=
"all") {
1628 while ((ww.
Tokenize(w, from,
","))) {
1635 Int_t ci = 40, ic = 0;
1638 while ((wi = (TWrkInfo *) nxw())) {
1639 if (wl && !wl->
FindObject(wi->GetName()))
continue;
1640 if (wi->fLatencyT) {
1641 wi->fLatencyT->
SetNameTitle(wi->GetName(), wi->GetTitle());
1642 wi->fLatencyT->SetLineColor(ci);
1663 if (!fn || strlen(fn) <= 0) {
1664 Error(
"FileRatePlot",
"file name is mandatory!");
1670 Error(
"FileRatePlot",
"TFileInfo object for '%s' not found!", fn);
1676 if (out && strlen(out) > 0) {
1677 if (!(fo = fopen(out,
"w"))) {
1678 Warning(
"FileRatePlot",
"problems creating '%s': logging to stdout", out);
1681 Printf(
" Details logged to %s", out);
1686 Int_t nbins = fi->fPackList.GetSize() * 2;
1690 TIter nxp(&(fi->fPackList));
1691 while ((
pi = (TPackInfo *) nxp())) {
1693 xraw[jj++] =
pi->fStart;
1694 xraw[jj++] =
pi->fStop;
1697 memset(jidx, 0, nbins *
sizeof(
Int_t));
1701 for (kk = 0; kk < nbins; kk++) {
1702 xbins[kk] = xraw[jidx[kk]];
1708 Int_t nbin = nbins - 1;
1710 if ((o =
gDirectory->FindObject(
"rt1")))
delete o;
1711 TH1F *hrt1 =
new TH1F(
"rt1",
"Total processing rate (MB/s)", nbins - 1, xbins);
1715 if ((o =
gDirectory->FindObject(
"rt2")))
delete o;
1716 TH1F *hrt2 =
new TH1F(
"rt2",
"Number of processing workers", nbins - 1, xbins);
1721 if ((o =
gDirectory->FindObject(
"rt3")))
delete o;
1722 TH1F *hrt3 =
new TH1F(
"rt3",
"Total processing events", nbins - 1, xbins);
1726 if ((o =
gDirectory->FindObject(
"rt4")))
delete o;
1727 TH1F *hrt4 =
new TH1F(
"rt4",
"Weighted processing rate (MB/s)", nbins - 1, xbins);
1736 for (ii = 1; ii <= nbin; ii++) {
1741 fprintf(fo,
" Bin: %d/%d [%f, %f]\n", ii, nbin, mi, mx);
1745 while ((
pi = (TPackInfo *) nxp())) {
1748 if (
pi->fStart > mi) olap = mx -
pi->fStart;
1750 hrt1->
Fill(xx,
pi->fMBRate);
1752 hrt3->
Fill(xx,
pi->fSize);
1753 hrt4->
Fill(xx,
pi->fMBRate *
pi->fSize);
1754 fprintf(fo,
" %d: %s \t%lld \tevts \t%f \tMB/s\n", kk++,
pi->GetName(),
pi->fSize,
pi->fMBRate);
1758 if (fo != stdout) fclose(fo);
1784 if ((o =
gDirectory->FindObject(
"rt1")))
delete o;
1785 TH1F *hrt1 =
new TH1F(
"rt1",
"Event processing rate per packet (evt/s)", 100, 0.,
fMaxTime);
1790 if ((o =
gDirectory->FindObject(
"rt2")))
delete o;
1791 TH1F *hrt2 =
new TH1F(
"rt2",
"I/O processing rate per packet (MB/s)", 100, 0.,
fMaxTime);
1812 if (!fw.
IsNull() && fw !=
"*" && fw !=
"all") {
1815 while ((fw.
Tokenize(w, from,
","))) {
1822 Int_t ci = 40, cir = 30, ic = 0;
1825 while ((fi = (TFileInfo *) nxf())) {
1826 if (fl && !fl->
FindObject(fi->GetName()))
continue;
1827 if (fi->fRateP && fi->fRateP->GetN() > 0) {
1828 fi->fRateP->SetNameTitle(fi->GetName(), fi->GetTitle());
1833 if (fi->fRatePRemote && fi->fRatePRemote->GetN() > 0) {
1834 fi->fRatePRemote->SetNameTitle(fi->GetName(), fi->GetTitle());
1839 if (fi->fMBRateP && fi->fMBRateP->GetN() > 0) {
1840 fi->fMBRateP->SetNameTitle(fi->GetName(), fi->GetTitle());
1845 if (fi->fMBRatePRemote && fi->fMBRatePRemote->GetN() > 0) {
1846 fi->fMBRatePRemote->SetNameTitle(fi->GetName(), fi->GetTitle());
void Printf(const char *fmt,...)
R__EXTERN TStyle * gStyle
R__EXTERN TSystem * gSystem
virtual void SetTitleOffset(Float_t offset=1)
Set distance between the axis and the axis title.
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual void SetBinLabel(Int_t bin, const char *label)
Set label for bin.
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x.
virtual void ls(Option_t *option="") const
List (ls) all objects in this collection.
virtual void Print(Option_t *option="") const
Default print for collections, calls Print(option, 1).
void SetName(const char *name)
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
TObject * Get(const char *namecycle) override
Return pointer to object identified by namecycle.
Describe directory structure in memory.
virtual TObject * Get(const char *namecycle)
Return pointer to object identified by namecycle.
virtual TList * GetListOfKeys() const
Class describing a generic file including meta information.
void Print(Option_t *options="") const
Print information about this object.
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
void Close(Option_t *option="") override
Close a file.
A Graph is a graphics object made of two arrays X and Y with npoints each.
1-D histogram with a float per channel (see TH1 documentation)}
virtual void SetDirectory(TDirectory *dir)
By default when an histogram is created, it is added to the list of histogram objects in the current ...
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram.
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
virtual Int_t GetNbinsX() const
virtual void SetMaximum(Double_t maximum=-1111)
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
virtual void SetMinimum(Double_t minimum=-1111)
virtual Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
virtual void Draw(Option_t *option="")
Draw this histogram with options.
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
virtual Bool_t Divide(TF1 *f1, Double_t c1=1)
Performs the operation: this = this/(c1*f1) if errors are defined (see TH1::Sumw2),...
virtual void SetStats(Bool_t stats=kTRUE)
Set statistics option on/off.
2-D histogram with a float per channel (see TH1 documentation)}
Int_t Fill(Double_t)
Invalid Fill method.
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
TObject * FindObject(const char *name) const
Find object using its name.
Book space in a file, create I/O buffers, to fill them, (un)compress them.
virtual const char * GetClassName() const
virtual void Add(TObject *obj)
virtual TObject * Remove(TObject *obj)
Remove object from the list.
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
virtual void AddBefore(const TObject *before, TObject *obj)
Insert object before object before in the list.
virtual void Clear(Option_t *option="")
Remove all objects from the list.
The TNamed class is the base class for all named ROOT classes.
virtual Int_t Compare(const TObject *obj) const
Compare two TNamed objects.
virtual void Print(Option_t *option="") const
Print TNamed name and title.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
virtual void Clear(Option_t *option="")
Set name and title to empty strings ("").
virtual void SetName(const char *name)
Set the name of the TNamed.
virtual const char * GetTitle() const
Returns title of object.
virtual const char * GetName() const
Returns name of object.
virtual void SetNameTitle(const char *name, const char *title)
Set all the TNamed parameters (name and title).
Collectable string class.
Mother of all ROOT objects.
virtual Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
R__ALWAYS_INLINE Bool_t IsZombie() const
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
virtual void Print(Option_t *option="") const
This method must be overridden when a class wants to print itself.
@ kInvalidObject
if object ctor succeeded but object should not be used
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
The most important graphics class in the ROOT system.
virtual void Divide(Int_t nx=1, Int_t ny=1, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0)
Automatic pad generation by division.
TVirtualPad * cd(Int_t subpadnumber=0)
Set Current pad.
virtual TVirtualPad * GetPad(Int_t subpadnumber) const
Get a pointer to subpadnumber of this pad.
TVirtualPerfStats::EEventType fType
Long64_t fEventsProcessed
void FileRatePlot(const char *fns=0)
Show MB processing rate plot per file vs time.
void FileProcPlot(const char *fn, const char *out=0)
Show event processing or MB processing rate plot vs time.
void FillFileInfo(Bool_t force=kFALSE)
Fill basic worker info; if 'force' rescan the TTree even already done.
void SetDebug(Int_t d=0)
Static setter for the verbosity level.
TProofPerfAnalysis(const char *perffile, const char *title="", const char *treename="PROOF_PerfStats")
Constructor: open the file and attach to the tree.
void PrintWrkInfo(Int_t showlast=10)
Print information for all or the slowest showlast workers.
void LatencyPlot(const char *wrks=0)
Show event processing or MB processing rate plot vs time Create the histograms.
void WorkerActivity()
Measure the worker activity.
void FileDist(Bool_t writedet=kFALSE)
Analyse the file distribution.
Int_t SetSaveResult(const char *file="results.root", Option_t *mode="RECREATE")
Set save result mode and validate 'file' according to 'mode'.
void GetWrkFileList(TList *wl, TList *sl)
Fill file info.
void EventDist()
Display event and packet distribution.
TString GetCanvasTitle(const char *t)
If defined, add '- <this title>' to the canvas title 't'.
static void SetgDebug(Bool_t on=kTRUE)
Static setter for the verbosity level.
Int_t CompareOrd(const char *ord1, const char *ord2)
Return -1 if ord1 comes before ord2, 0 i they are equal, 1 if ord1 comes after ord2.
void LoadTree(TDirectory *dir)
Load tree fTreeName from directory 'dir'.
void DoDraw(TObject *o, Option_t *opt="", const char *name=0)
Draw object 'o' with options 'opt' Save it with 'name' if in saving mode (see SetSaveResult)
void PrintFileInfo(Int_t showlast=10, const char *opt="", const char *out=0)
Print information for all or the slowest showlast workers.
void FillFileDistOneSrv(TH1F *hx, Bool_t wdet=kFALSE)
Fill file info when there is only one file server.
void FillWrkInfo(Bool_t force=kFALSE)
Fill basic worker info; if 'force' rescan the TTree even already done.
virtual ~TProofPerfAnalysis()
Destructor: detach the tree and close the file.
void Summary(Option_t *opt="", const char *out="")
Print summary of query.
void RatePlot(const char *wrks=0)
Show event processing or MB processing rate plot vs time.
void FillFileDist(TH1F *hf, TH1F *hb, TH2F *hx, Bool_t wdet=kFALSE)
Fill file info.
Regular expression class.
void Add(TObject *obj)
Add object in sorted list.
Int_t Atoi() const
Return integer value of string.
TString & Replace(Ssiz_t pos, Ssiz_t n, const char *s)
const char * Data() const
TString & ReplaceAll(const TString &s1, const TString &s2)
TObjArray * Tokenize(const TString &delim) const
This function is used to isolate sequential tokens in a TString.
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
TString & Remove(Ssiz_t pos)
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
void SetOptStat(Int_t stat=1)
The type of information printed in the histogram statistics box can be selected via the parameter mod...
virtual const char * DirName(const char *pathname)
Return the directory name in pathname.
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root.
virtual Int_t RedirectOutput(const char *name, const char *mode="a", RedirectHandle_t *h=0)
Redirect standard output (stdout, stderr) to the specified file.
A TTree represents a columnar dataset.
virtual Int_t SetBranchAddress(const char *bname, void *add, TBranch **ptr=0)
Change branch address, dealing with clone trees properly.
virtual Long64_t GetEntries() const
virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0)
Read all branches of entry and return total number of bytes read.
This class represents a WWW compatible URL.
const char * GetUrl(Bool_t withDeflt=kFALSE) const
Return full URL.
const char * GetFile() const
const char * GetHost() const
const char * GetHostFQDN() const
Return fully qualified domain name of url host.
virtual void Draw(Option_t *option="")=0
Default Draw method for all objects.
static constexpr double s
static constexpr double pi
void Sort(Index n, const Element *a, Index *index, Bool_t down=kTRUE)