80 #define kPEX_STOPPED 1001 81 #define kPEX_ABORTED 1002 87 class TAutoBinVal :
public TNamed {
89 Double_t fXmin, fXmax, fYmin, fYmax, fZmin, fZmax;
97 fZmin = zmin; fZmax = zmax;
102 xmin = fXmin; xmax = fXmax;
103 ymin = fYmin; ymax = fYmax;
104 zmin = fZmin; zmax = fZmax;
113 class TDispatchTimer :
public TTimer {
127 Bool_t TDispatchTimer::Notify()
129 if (
gDebug > 0) printf(
"TDispatchTimer::Notify: called!\n");
142 class TProctimeTimer :
public TTimer {
156 Bool_t TProctimeTimer::Notify()
158 if (
gDebug > 0) printf(
"TProctimeTimer::Notify: called!\n");
170 class TStopTimer :
public TTimer {
188 :
TTimer(((to <= 0 || to > 864000) ? 10 : to * 1000),
kFALSE)
191 Info (
"TStopTimer",
"enter: %d, timeout: %d", abort, to);
197 Info (
"TStopTimer",
"timeout set to %s ms", fTime.AsString());
206 Bool_t TStopTimer::Notify()
208 if (
gDebug > 0) printf(
"TStopTimer::Notify: called!\n");
228 : fAutoBins(0), fOutput(0), fSelector(0), fCreateSelObj(
kTRUE), fSelectorClass(0),
229 fFeedbackTimer(0), fFeedbackPeriod(2000),
230 fEvIter(0), fSelStatus(0),
231 fTotalEvents(0), fReadBytesRun(0), fReadCallsRun(0), fProcessedRun(0),
232 fQueryResults(0), fQuery(0), fPreviousQuery(0), fDrawQueries(0),
233 fMaxDrawQueries(1), fStopTimer(0), fDispatchTimer(0),
234 fProcTimeTimer(0), fProcTime(0),
236 fSaveMemThreshold(-1), fSavePartialResults(
kFALSE), fSaveResultsPerPacket(
kFALSE)
249 initLimitsFinder =
kTRUE;
291 Info (
"StopProcess",
"abort: %d, timeout: %d", abort, timeout);
296 if (abort ==
kTRUE) {
332 fStopTimer =
new TStopTimer(
this, abort, timeout);
336 Info (
"SetStopTimer",
"%s timer STARTED (timeout: %d)",
337 (abort ?
"ABORT" :
"STOP"), timeout);
340 Info (
"SetStopTimer",
"timer STOPPED");
351 Warning(
"AddQueryResult",
"query undefined - do nothing");
432 if (ref && strlen(ref) > 0) {
506 Info(
"ReinitSelector",
"query undefined - do nothing");
512 if (selec.
Length() <= 0) {
513 Info(
"ReinitSelector",
"selector name undefined - do nothing");
526 if (!stdselec && !compselec) {
533 TMD5 *md5icur = 0, *md5iold = 0, *md5hcur = 0, *md5hold = 0;
547 if (md5hcur && md5hold && md5icur && md5iold)
548 if (*md5hcur == *md5hold && *md5icur == *md5iold)
555 if (selc)
delete [] selc;
586 if (
id !=
kNPOS &&
id < opt.Length() - 1)
587 selec += opt(
id + 1, opt.Length());
590 Info(
"ReinitSelector",
"problems locating or exporting selector files");
638 Info(
"ReinitSelector",
"compiled selector re-init failed:" 639 " automatic reload unsuccessful:" 640 " please load manually the correct library");
656 if (ipathold.
Length() > 0)
787 Info(
"SavePartialResults",
"partial result saving disabled");
793 Error(
"SavePartialResults",
"gProofServ undefined: something really wrong going on!!!");
797 Error(
"SavePartialResults",
"fOutput undefined: something really wrong going on!!!");
802 Info(
"SavePartialResults",
"start saving partial results {%d,%d,%d,%d}",
806 PDB(kOutput, 2)
Info(
"SavePartialResults",
"fEvIter: %p",
fEvIter);
809 PDB(kOutput, 2)
Info(
"SavePartialResults",
"list of packets: %p, sz: %d",
810 packets, (packets ? packets->
GetSize(): -1));
813 const char *oopt =
"UPDATE";
842 if (packetsDir) packetsDir->
cd();
852 while ((o = nxo())) {
856 if (!strncmp(o->
GetName(),
"PROOF_", 6))
continue;
860 if (!strcmp(o->
GetName(),
"MissingFiles"))
continue;
891 if (queryend) torm.
Add(o);
918 if (!strcmp(
TUrl(oname,
kTRUE).GetProtocol(),
"file")) {
931 oname.
Form(
"<datadir>/%s", baseName.
Data());
951 if (queryend && torm.
GetSize() > 0) {
958 Info(
"SavePartialResults",
"partial results saved to file");
969 if (selector_file && strlen(selector_file)) {
987 Error(
"AssertSelector",
"cannot load: %s", selector_file );
992 Info(
"AssertSelector",
"Processing via filename (%s)", selector_file);
994 Error(
"AssertSelector",
"no TSelector object define : cannot continue!");
997 Info(
"AssertSelector",
"Processing via TSelector object");
1028 PDB(kGlobal,1)
Info(
"Process",
"Enter");
1039 Error(
"Process",
"cannot assert the selector object");
1066 while ((e = dset->
Next())) {
1074 Int_t useTreeCache = 1;
1076 if (useTreeCache > -1 && useTreeCache < 2)
1077 gEnv->
SetValue(
"ProofPlayer.UseTreeCache", useTreeCache);
1085 Int_t useParallelUnzip = 0;
1087 if (useParallelUnzip > -1 && useParallelUnzip < 2)
1088 gEnv->
SetValue(
"ProofPlayer.UseParallelUnzip", useParallelUnzip);
1091 Int_t dontCacheFiles = 0;
1093 if (dontCacheFiles == 1)
1106 opt =
gEnv->
GetValue(
"ProofPlayer.SavePartialResults", 0);
1119 Info(
"Process",
"memory threshold for saving objects to file set to %ld kB",
1122 Error(
"Process",
"cannot get SysInfo_t (!)");
1127 PDB(kLoop,1)
Info(
"Process",
"Call Begin(0)");
1132 PDB(kLoop,1)
Info(
"Process",
"Call Begin(0)");
1136 PDB(kLoop,1)
Info(
"Process",
"Call SlaveBegin(0)");
1144 Error(
"Process",
"exception %d caught", excode);
1151 Warning(
"Process",
"problems seetting up file-object swapping");
1160 Info(
"Process",
"Looping over Process()");
1187 TString lastMsg(
"(unfortunately no detailed info is available about current packet)");
1190 if (!
CheckMemUsage(singleshot, warnHWMres, warnHWMvir, wmsg)) {
1200 }
else if (!wmsg.
IsNull()) {
1204 TPair *currentElem = 0;
1223 if (currentElem->Value() != dset->
Current()) {
1224 currentElem->SetValue(dset->
Current());
1231 lastMsg =
"check logs for possible stacktrace - last cycle:";
1235 lastMsg.
Form(
"while processing dset:'%s', file:'%s'" 1236 " - check logs for possible stacktrace - last event:", dset->
GetName(), fn.
Data());
1249 if (maxproctime > 0) {
1256 if (refnum < 0 && maxproctime <= 0) {
1257 wmsg.
Form(
"neither entries nor max proc time specified:" 1258 " risk of infinite loop: processing aborted");
1269 while (refnum < 0 || num--) {
1286 Info(
"Process",
"max proc time reached (%ld msecs): packet processing stopped:\n%s",
1287 maxproctime, lastMsg.
Data());
1305 Info(
"Process",
"Call ProcessCut(%lld)", entry);
1308 Info(
"Process",
"Call ProcessFill(%lld)", entry);
1313 Info(
"Process",
"Call Process(%lld)", entry);
1319 Info(
"Process",
"packet processing aborted following the" 1320 " selector settings:\n%s", lastMsg.
Data());
1329 if (!
CheckMemUsage(memlogfreq, warnHWMres, warnHWMvir, wmsg)) {
1366 Info(
"Process",
"received stop-process signal");
1370 Info(
"Process",
"received abort-process signal");
1373 Error(
"Process",
"exception %d caught", excode);
1382 TPair *currentElem = 0;
1385 delete currentElem->
Key();
1394 if (!wmsg.
IsNull())
Warning(
"Process",
"%s (%s)", wmsg.
Data(), shrc ?
"warn" :
"hwm");
1416 Warning(
"Process",
"problems saving the results to file");
1426 while ((o = nxo())) {
1432 const char *dir = of->
GetDir();
1433 if (!dir || (dir && strlen(dir) <= 0)) {
1435 }
else if (dir && strlen(dir) > 0) {
1437 if (!strcmp(u.
GetHost(),
"localhost") || !strcmp(u.
GetHost(),
"127.0.0.1") ||
1438 !strcmp(u.
GetHost(),
"localhost.localdomain")) {
1451 PDB(kLoop,1)
Info(
"Process",
"Call Terminate()");
1454 PDB(kLoop,1)
Info(
"Process",
"Call SlaveTerminate()");
1457 PDB(kLoop,1)
Info(
"Process",
"Call Terminate()");
1490 Error(
"Process",
"selector object undefiend!");
1497 return Process(dset, (
const char *)0, option, nentries, first);
1517 if (mfreq > 0 && processed%mfreq == 0) {
1523 Info(
"CheckMemUsage|Svc",
"Memory %ld virtual %ld resident event %lld",
1530 wmsg.
Form(
"using more than %d%% of allowed virtual memory (%ld kB)" 1536 wmsg.
Form(
"using more than %d%% of allowed virtual memory (%ld kB)",
1544 wmsg.
Form(
"using more than %d%% of allowed resident memory (%ld kB)" 1551 wmsg.
Form(
"using more than %d%% of allowed both virtual and resident memory ({%ld,%ld} kB)",
1554 wmsg.
Form(
"using more than %d%% of allowed resident memory (%ld kB)",
1624 val =
new TAutoBinVal(name,xmin,xmax,ymin,ymax,zmin,zmax);
1627 val->GetAll(xmin,xmax,ymin,ymax,zmin,zmax);
1702 if (!gDrawCanvasHook) {
1704 TString drawlib =
"libProofDraw";
1714 Warning(
"DrawCanvas",
"can't find DrawCanvas");
1716 Warning(
"DrawCanvas",
"can't load %s", drawlib.
Data());
1718 Warning(
"DrawCanvas",
"can't locate %s", drawlib.
Data());
1720 if (gDrawCanvasHook && obj)
1721 return (*gDrawCanvasHook)(obj);
1734 static Int_t (*gGetDrawArgsHook)(
const char *,
const char *,
Option_t *,
1738 if (!gGetDrawArgsHook) {
1740 TString drawlib =
"libProofDraw";
1748 gGetDrawArgsHook = (
Int_t (*)(
const char *,
const char *, Option_t *,
1749 TString &, TString &))(
f);
1751 Warning(
"GetDrawArgs",
"can't find GetDrawArgs");
1753 Warning(
"GetDrawArgs",
"can't load %s", drawlib.
Data());
1755 Warning(
"GetDrawArgs",
"can't locate %s", drawlib.
Data());
1757 if (gGetDrawArgsHook)
1758 return (*gGetDrawArgsHook)(var, sel, opt, selector, objname);
1768 static void (*gFeedBackCanvasHook)(
const char *,
Bool_t) = 0;
1771 if (!gFeedBackCanvasHook) {
1773 TString drawlib =
"libProofDraw";
1781 gFeedBackCanvasHook = (
void (*)(
const char *,
Bool_t))(
f);
1783 Warning(
"FeedBackCanvas",
"can't find FeedBackCanvas");
1785 Warning(
"FeedBackCanvas",
"can't load %s", drawlib.
Data());
1787 Warning(
"FeedBackCanvas",
"can't locate %s", drawlib.
Data());
1789 if (gFeedBackCanvasHook) (*gFeedBackCanvasHook)(
name, create);
1818 if (!fMergeSTW) fMergeSTW =
new TStopwatch();
1820 Info(
"SetMerging",
"ON: mergers: %d", fProof->fMergersCount);
1821 if (fNumMergers <= 0 && fProof->fMergersCount > 0)
1822 fNumMergers = fProof->fMergersCount;
1823 }
else if (fMergeSTW) {
1825 Float_t rt = fMergeSTW->RealTime();
1827 Info(
"SetMerging",
"OFF: rt: %f, mergers: %d", rt, fNumMergers);
1857 Error(
"Process",
"selector object undefiend!");
1918 const char *defpackdata)
1921 PDB(kGlobal,1)
Info(
"Process",
"Enter");
1926 Int_t honebyone = 1;
1928 honebyone =
gEnv->
GetValue(
"ProofPlayer.MergeTH1OneByOne", 1);
1929 fMergeTH1OneByOne = (honebyone == 1) ?
kTRUE :
kFALSE;
1934 TList *listOfMissingFiles = 0;
1943 packetizer = defpackunit;
1945 Info(
"InitPacketizer",
"using alternate packetizer: %s", packetizer.
Data());
1950 Error(
"InitPacketizer",
"class '%s' not found", packetizer.
Data());
1956 callEnv.
InitWithPrototype(cl, cl->GetName(),
"TList*,Long64_t,TList*,TProofProgressStatus*");
1958 Error(
"InitPacketizer",
1959 "cannot find correct constructor for '%s'", cl->GetName());
1974 Error(
"InitPacketizer",
"received stop/abort request");
1980 packetizer =
"TPacketizerMulti";
1985 Error(
"InitPacketizer",
"class '%s' not found", packetizer.
Data());
1993 Error(
"InitPacketizer",
"cannot find correct constructor for '%s'", cl->
GetName());
2019 listOfMissingFiles =
new TList;
2028 Error(
"InitPacketizer",
"received stop/abort request");
2037 Error(
"InitPacketizer",
"No files from the data set were found - Aborting");
2039 if (listOfMissingFiles) {
2049 packetizer = defpackdata;
2051 Info(
"InitPacketizer",
"using alternate packetizer: %s", packetizer.
Data());
2056 Error(
"InitPacketizer",
"class '%s' not found", packetizer.
Data());
2062 callEnv.
InitWithPrototype(cl, cl->GetName(),
"TDSet*,TList*,Long64_t,Long64_t,TList*,TProofProgressStatus*");
2064 Error(
"InitPacketizer",
"cannot find correct constructor for '%s'", cl->GetName());
2085 Error(
"InitPacketizer",
"cannot construct '%s'", cl->
GetName());
2090 if (!fPacketizer->IsValid()) {
2091 Error(
"InitPacketizer",
2092 "instantiated packetizer object '%s' is invalid", cl->
GetName());
2113 if (!listOfMissingFiles)
2114 listOfMissingFiles =
new TList;
2124 if (listOfMissingFiles && listOfMissingFiles->
GetSize() > 0) {
2125 TIter missingFiles(listOfMissingFiles);
2131 msg =
Form(
"File not found: %s - skipping!",
2134 msg =
Form(
"File not found: %s - skipping!", fi->
GetName());
2141 listOfMissingFiles->
SetName(
"MissingFiles");
2151 msg =
Form(
" About %.2f %c of the requested files (%d out of %d) were missing or unusable; details in" 2152 " the 'missingFiles' list", xb * 100.,
'%', nbad, nbad + ngood);
2155 " +++ About %.2f %c of the requested files (%d out of %d) are missing or unusable; details in" 2156 " the 'MissingFiles' list\n" 2157 " +++", xb * 100.,
'%', nbad, nbad + ngood);
2179 PDB(kGlobal,1)
Info(
"Process",
"Enter");
2185 Error(
"Process",
"No progress status");
2198 if (fProof->IsMaster()){
2208 fSelectorFileName = selector_file;
2211 if(!SendSelector(selector_file))
return -1;
2222 TList *inputtmp = 0;
2224 if (fProof->IsMaster()) {
2226 PDB(kPacketizer,1)
Info(
"Process",
"Create Proxy TDSet");
2232 if (InitPacketizer(dset, nentries, first,
"TPacketizerUnit",
"TPacketizer") != 0) {
2233 Error(
"Process",
"cannot init the packetizer");
2248 if (clf.IsDigit()) { memlogfreq = clf.
Atoi(); mrc = 0; }
2250 if ((mrc =
TProof::GetParameter(fProof->GetInputList(),
"PROOF_MemLogFreq", mlf)) == 0) memlogfreq = mlf;
2251 if (memlogfreq == 0) {
2252 memlogfreq = fPacketizer->GetTotalEntries()/(fProof->GetParallel()*100);
2253 if (memlogfreq <= 0) memlogfreq = 1;
2255 if (mrc == 0) fProof->SetParameter(
"PROOF_MemLogFreq", memlogfreq);
2261 Warning(
"Process",
"could not forward input data: %s", emsg.
Data());
2266 Warning(
"Process",
"could not attach to histogram 'PROOF_ProcPcktHist'");
2269 Info(
"Process",
"attached to histogram 'PROOF_ProcPcktHist' to record" 2270 " packets being processed");
2296 fOutputLists->Delete();
2297 delete fOutputLists;
2304 Info(
"Process",
"starting new query");
2327 while ((o = nxi())) {
2331 inputtmp =
new TList;
2345 PDB(kLoop,1)
Info(
"Process",
"Call Begin(0)");
2353 fProof->SendInputDataFile();
2365 if (fProof->fProtocol < 13)
2373 TEntryList *enl = (!fProof->IsMaster()) ? dynamic_cast<TEntryList *>(set->GetEntryList())
2375 TEventList *evl = (!fProof->IsMaster() && !enl) ? dynamic_cast<TEventList *>(set->GetEntryList())
2377 if (fProof->fProtocol > 14) {
2378 if (fProcessMessage)
delete fProcessMessage;
2380 mesg <<
set << fn <<
fInput << opt << num << fst << evl << sync << enl;
2381 (*fProcessMessage) <<
set << fn <<
fInput << opt << num << fst << evl << sync << enl;
2383 mesg <<
set << fn <<
fInput << opt << num << fst << evl << sync;
2386 Warning(
"Process",
"entry lists not supported by the server");
2390 fProof->ResetMergePrg();
2392 Int_t nb = fProof->Broadcast(mesg);
2393 PDB(kGlobal,1)
Info(
"Process",
"Broadcast called: %d workers notified", nb);
2394 if (fProof->IsLite()) fProof->fNotIdle += nb;
2397 if (fProof->fProtocol < 13)
2402 fProof->fRedirLog =
kTRUE;
2406 Info(
"Process|Svc",
"Start merging Memory information");
2413 PDB(kGlobal,1)
Info(
"Process",
"Asynchronous processing:" 2414 " activating CollectInputFrom");
2420 return fProof->fSeqNum;
2423 PDB(kGlobal,1)
Info(
"Process",
"Calling Collect");
2439 fPacketizer->GetInitTime(),
2448 PDB(kGlobal,1)
Info(
"Process",
"Synchronous processing: calling Collect");
2450 if (!(fProof->IsSync())) {
2452 Info(
"Process",
"switching to the asynchronous mode ...");
2453 return fProof->fSeqNum;
2459 fProof->fRedirLog =
kFALSE;
2475 fPacketizer->GetInitTime(),
2476 fPacketizer->GetProcTime());
2490 TIter nxi(inputtmp);
2512 Error(
"Process",
"selector object undefined");
2536 if (!fProcessMessage || !fProof || !fPacketizer) {
2537 Error(
"Process",
"Should not happen: fProcessMessage=%p fProof=%p fPacketizer=%p",
2538 fProcessMessage, fProof, fPacketizer);
2542 if (!workers || !fProof->IsMaster()) {
2543 Error(
"Process",
"Invalid call");
2548 Info(
"Process",
"Preparing %d new worker(s) to process", workers->
GetEntries());
2553 Info(
"Process",
"Sending selector file %s", fSelectorFileName.Data());
2554 if(!SendSelector(fSelectorFileName.Data())) {
2555 Error(
"Process",
"Problems in sending selector file %s", fSelectorFileName.Data());
2560 if (fProof->IsLite()) fProof->fNotIdle += workers->
GetSize();
2563 Info(
"Process",
"Adding new workers to the packetizer");
2564 if (fPacketizer->AddWorkers(workers) == -1) {
2565 Error(
"Process",
"Cannot add new workers to the packetizer!");
2570 Info(
"Process",
"Broadcasting process message to new workers");
2571 fProof->Broadcast(*fProcessMessage, workers);
2593 while ((o = nxo())) {
2594 if ((pf = dynamic_cast<TProofOutputFile*>(o))) {
2604 Error(
"MergeOutputFiles",
"file merger is null in TProofOutputFile! Protocol error?");
2622 if (outfile.Contains(
"<datadir>/")) {
2637 if (outfile.BeginsWith(
"client:")) outfile.Replace(0, 7,
"");
2640 outfile.Form(
"%s%s", ddir.
Data(), bn.
Data());
2647 if (outfile.BeginsWith(
"master:")) outfile.Replace(0, 7,
"");
2654 if (uof.GetPort() > 0 && usrv.
GetPort() > 0 &&
2668 outfilerem.
Insert(0, srv);
2676 Error(
"MergeOutputFiles",
"cannot open the output file");
2681 if (!filemerger->
Merge()) {
2682 Error(
"MergeOutputFiles",
"cannot merge the output files");
2688 TIter next(fileList);
2692 if (!strcmp(u.GetProtocol(),
"file")) {
2700 filemerger->
Reset();
2710 pf->
Merge(&dumlist);
2715 Error(
"MergeOutputFiles",
"file collection is null in TProofOutputFile! Protocol error?");
2736 if (!rmList) rmList =
new TList;
2745 if (rmList && rmList->
GetSize() > 0) {
2748 while((o = nxo())) {
2755 PDB(kOutput,1)
Info(
"MergeOutputFiles",
"done!");
2772 PDB(kOutput,1)
Warning(
"SetSelectorDataMembersFromOutputList",
2773 "failed to find map object in output list!");
2788 if (fOutputLists == 0) {
2795 PDB(kGlobal,1)
Info(
"Finalize",
"Calling Merge Output to finalize the output list");
2801 if (fProof->IsMaster()) {
2814 PDB(kOutput,1)
Info(
"Finalize",
"Calling Merge Output");
2825 TList *parms = fPacketizer->GetConfigParams(
kTRUE);
2835 if (fPacketizer->GetFailedPackets()) {
2838 if (!listOfMissingFiles) {
2839 listOfMissingFiles =
new TList;
2840 listOfMissingFiles->
SetName(
"MissingFiles");
2842 TIter nxe(fPacketizer->GetFailedPackets());
2866 Info(
"Finalize",
"problems reinitializing selector \"%s\"",
2873 if (
TList *failedPackets = fPacketizer->GetFailedPackets()) {
2874 fPacketizer->SetFailedPackets(0);
2875 failedPackets->SetName(
"FailedPackets");
2880 status->
Add(
"Some packets were not processed! Check the the" 2881 " 'FailedPackets' list in the output list");
2890 while(
TObject* obj = next()) {
2891 if (fProof->IsParallel() ||
DrawCanvas(obj) == 1)
2897 Warning(
"Finalize",
"undefined output list in the selector! Protocol error?");
2907 SetSelectorDataMembersFromOutputList();
2909 PDB(kLoop,1)
Info(
"Finalize",
"Call Terminate()");
2913 fProof->fQuerySTW.Reset();
2931 Warning(
"Finalize",
"current TQueryResult object is undefined!");
2961 PDB(kGlobal,1)
Info(
"Process",
"exit");
2966 fProof->FinalizationDone();
2976 PDB(kGlobal,1)
Info(
"Finalize(TQueryResult *)",
"Enter");
2979 Info(
"Finalize(TQueryResult *)",
2980 "method to be executed only on the clients");
2985 Info(
"Finalize(TQueryResult *)",
"query undefined");
2990 Info(
"Finalize(TQueryResult *)",
"query already finalized");
3002 fOutputLists->Delete();
3003 delete fOutputLists;
3014 Info(
"Finalize(TQueryResult *)",
"outputlist is empty");
3018 if (fProof->fProtocol < 11)
3026 if (fProof->fProtocol < 11) {
3032 SetSelectorDataMembersFromOutputList();
3048 if (!selector_file) {
3049 Info(
"SendSelector",
"Invalid input: selector (file) name undefined");
3055 Info(
"SendSelector",
"selector name '%s' does not contain a '.':" 3056 " nothing to send, it will be loaded from a library", selector_file);
3061 TString selec = selector_file;
3093 Info(
"SendSelector",
3094 "header file not found: tried: %s %s", h.
Data(), header.
Data());
3101 Info(
"SendSelector",
"problems sending implementation file %s", selec.
Data());
3105 Info(
"SendSelector",
"problems sending header file %s", header.
Data());
3117 PDB(kOutput,1)
Info(
"MergeOutput",
"Enter");
3122 TIter next(fOutputLists);
3125 while ( (list = (
TList *) next()) ) {
3128 obj = list->
First();
3133 if ( list->
IsEmpty() )
continue;
3143 while ( (obj = list->
First()) ) {
3153 PDB(kOutput,1)
Info(
"MergeOutput",
"fOutputLists empty");
3156 if (!
IsClient() || fProof->IsLite()) {
3170 while ((obj = nxo())) {
3174 PDB(kOutput,2)
Info(
"MergeOutput",
"found TProofOutputFile '%s'", obj->
GetName());
3176 PDB(kOutput,2)
Info(
"MergeOutput",
"outputfilename: '%s'", dir.Data());
3178 if (dir.Last(
'/') !=
kNPOS) dir.Remove(dir.Last(
'/')+1);
3179 PDB(kOutput,2)
Info(
"MergeOutput",
"dir: '%s'", dir.Data());
3188 PDB(kOutput,2)
Info(
"MergeOutput",
"rawdir: '%s'", dir.Data());
3207 if (dir.EndsWith(
".merger")) dir.Remove(dir.Last(
'.'));
3210 }
else if (fProof->IsLite()) {
3223 PDB(kOutput,2)
Info(
"MergeOutput",
"output object '%s' is not a TProofOutputFile", obj->
GetName());
3229 TIter nxrm(&rmlist);
3230 while ((obj = nxrm()))
3237 if (saveMemValues) {
3256 fProof->Progress(total, processed);
3260 m << total << processed;
3274 Info(
"Progress",
"%lld %lld %lld %f %f %f %f", total, processed, bytesread,
3275 initTime, procTime, evtrti, mbrti);
3278 fProof->Progress(total, processed, bytesread, initTime, procTime, evtrti, mbrti);
3282 m << total << processed << bytesread << initTime << procTime << evtrti << mbrti;
3310 Warning(
"Progress",
"TProofProgressInfo object undefined!");
3320 fProof->Feedback(objs);
3328 if (fPacketizer != 0)
3329 fPacketizer->StopProcess(abort,
kFALSE);
3348 Info(
"AddOutputObject",
"Enter: %p (%s)", obj, obj ? obj->
ClassName() :
"undef");
3352 PDB(kOutput,1)
Info(
"AddOutputObject",
"Invalid input (obj == 0x0)");
3365 if (elists && !strcmp(elists->
GetName(),
"PROOF_EventListsList")) {
3372 TIter nxevl(elists);
3374 while ((evl = dynamic_cast<TEventList *> (nxevl()))) {
3378 TIter nxelem(fDSet->GetListOfElements());
3380 while ((elem = dynamic_cast<TDSetElement *> (nxelem()))) {
3381 if (!strcmp(elem->GetFileName(), evl->
GetName()))
3385 Error(
"AddOutputObject",
"Found an event list for %s, but no object with" 3386 " the same name in the TDSet", evl->
GetName());
3389 Long64_t offset = elem->GetTDSetOffset();
3394 if (arr && offset > 0)
3395 for (
Int_t i = 0; i < num; i++)
3403 SetLastMergingMsg(evlist);
3404 Incorporate(evlist,
fOutput, merged);
3405 NotifyMemory(evlist);
3419 fMergeFiles =
kTRUE;
3420 if (!
IsClient() || fProof->IsLite()) {
3461 if (!of.
EndsWith(
".merger")) of +=
".merger";
3478 SetLastMergingMsg(obj);
3479 Incorporate(obj,
fOutput, merged);
3483 return (merged ? 1 : 0);
3491 if (on && fProof && fProof->fLogFileW) {
3495 if (fErrorHandler) {
3510 PDB(kOutput,1)
Info(
"AddOutput",
"Enter");
3514 PDB(kOutput,1)
Info(
"AddOutput",
"Invalid input (out == 0x0)");
3532 TIter nxevl(elists);
3534 while ((evl = dynamic_cast<TEventList *> (nxevl()))) {
3538 TIter nxelem(fDSet->GetListOfElements());
3540 while ((elem = dynamic_cast<TDSetElement *> (nxelem()))) {
3541 if (!strcmp(elem->GetFileName(), evl->
GetName()))
3545 Error(
"AddOutput",
"Found an event list for %s, but no object with" 3546 " the same name in the TDSet", evl->
GetName());
3549 Long64_t offset = elem->GetTDSetOffset();
3554 if (arr && offset > 0)
3555 for (
Int_t i = 0; i < num; i++)
3568 SetLastMergingMsg(evlist);
3569 Incorporate(evlist,
fOutput, merged);
3570 NotifyMemory(evlist);
3576 while ((obj = nxo())) {
3577 SetLastMergingMsg(obj);
3578 Incorporate(obj,
fOutput, merged);
3596 if (fProof && (!
IsClient() || fProof->IsLite())){
3601 RedirectOutput(fProof->IsLite());
3602 Info(
"NotifyMemory|Svc",
"Memory %ld virtual %ld resident after merging object %s",
3635 Info(
"Incorporate",
"enter: obj: %p (%s), list: %p",
3636 newobj, newobj ? newobj->
ClassName() :
"undef", outlist);
3639 if (!newobj || !outlist) {
3640 Error(
"Incorporate",
"Invalid inputs: obj: %p, list: %p", newobj, outlist);
3648 if (!HandleHistogram(newobj, merged)) {
3650 PDB(kOutput,1)
Info(
"Incorporate",
"histogram object '%s' merged", newobj->
GetName());
3652 PDB(kOutput,1)
Info(
"Incorporate",
"histogram object '%s' added to the" 3653 " appropriate list for delayed merging", newobj->
GetName());
3664 outlist->
Add(newobj);
3685 outlist->
Add(newobj);
3698 TH1 *
h =
dynamic_cast<TH1 *
>(obj);
3713 PDB(kOutput,2)
Info(
"HandleHistogram",
"h:%s ent:%d, buffer size: %d",
3718 if (!fOutputLists) {
3719 PDB(kOutput,2)
Info(
"HandleHistogram",
"create fOutputLists");
3720 fOutputLists =
new TList;
3723 list = (
TList *) fOutputLists->FindObject(h->
GetName());
3736 fOutputLists->Add(list);
3744 while ((href = (
TH1 *) nxh())) {
3748 list->AddBefore(href, h);
3759 while ((href = (
TH1 *) nxh())) {
3763 list->AddBefore(href, h);
3792 fOutputLists->Add(list);
3815 if (!h0 || !h1)
return rc;
3817 TAxis *a0 = 0, *a1 = 0;
3822 if (a0->
GetNbins() == a1->GetNbins())
3831 if (a0->
GetNbins() == a1->GetNbins())
3841 if (a0->
GetNbins() == a1->GetNbins())
3855 PDB(kOutput,1)
Info(
"StoreOutput",
"Enter");
3858 PDB(kOutput,1)
Info(
"StoreOutput",
"Leave (empty)");
3865 if (fOutputLists == 0) {
3866 PDB(kOutput,2)
Info(
"StoreOutput",
"Create fOutputLists");
3867 fOutputLists =
new TList;
3878 while ( (aList = dynamic_cast<TEventList*> (it())) ) {
3880 TIter nxe(fDSet->GetListOfElements());
3882 while ( (elem = dynamic_cast<TDSetElement*> (nxe())) ) {
3883 if (strcmp(elem->GetFileName(), aList->
GetName()) == 0)
3887 Error(
"StoreOutput",
"found the EventList for %s, but no object with that name " 3888 "in the TDSet", aList->
GetName());
3891 Long64_t offset = elem->GetTDSetOffset();
3897 for (
int i = 0; i < num; i++)
3900 mainList->
Add(aList);
3906 while( (obj = next()) ) {
3907 PDB(kOutput,2)
Info(
"StoreOutput",
"find list for '%s'", obj->
GetName() );
3911 PDB(kOutput,2)
Info(
"StoreOutput",
"list for '%s' not found (creating)", obj->
GetName());
3915 fOutputLists->Add( list );
3921 PDB(kOutput,1)
Info(
"StoreOutput",
"leave");
3930 Info(
"MergeFeedback",
"Enter");
3932 if ( fFeedbackLists == 0 ) {
3934 Info(
"MergeFeedback",
"Leave (no output)");
3941 TIter next(fFeedbackLists);
3944 while ( (map = (
TMap*) next()) ) {
3954 #ifndef R__TH1MERGEFIXED 3958 while (
TObject *key = keys() ) {
3960 TH1 *
h =
dynamic_cast<TH1 *
>(o);
3961 #ifndef R__TH1MERGEFIXED 3966 if (h && !strncmp(o->
GetName(),
"PROOF_",6)) {
3976 while ((href = (
TH1 *)nxh())) {
3984 list->AddBefore(href, h);
3994 #ifdef R__TH1MERGEFIXED 3997 TObject *obj = (oref) ? oref : list->First();
4003 if ( list->IsEmpty() ) {
4017 while ( (obj = list->First()) ) {
4027 Info(
"MergeFeedback",
"Leave (%d object(s))", fb->
GetSize());
4038 Info(
"StoreFeedback",
"Enter");
4042 Info(
"StoreFeedback",
"Leave (empty)");
4053 if (fFeedbackLists == 0) {
4054 PDB(kFeedback,2)
Info(
"StoreFeedback",
"Create fFeedbackLists");
4055 fFeedbackLists =
new TList;
4062 const char *ord = ((
TSlave*) slave)->GetOrdinal();
4065 while( (obj = next()) ) {
4067 Info(
"StoreFeedback",
"%s: Find '%s'", ord, obj->
GetName() );
4071 Info(
"StoreFeedback",
"%s: map for '%s' not found (creating)", ord, obj->
GetName());
4075 fFeedbackLists->Add(map);
4078 Info(
"StoreFeedback",
"%s: removing previous value", ord);
4079 if (map->GetValue(slave))
4080 delete map->GetValue(slave);
4083 map->Add(slave, obj);
4085 Info(
"StoreFeedback",
"%s: %s, size: %d", ord, obj->
GetName(), map->GetSize());
4090 Info(
"StoreFeedback",
"Leave");
4102 PDB(kFeedback,1)
Info(
"SetupFeedback",
"\"FeedbackList\" %sfound",
4103 fFeedback == 0 ?
"NOT ":
"");
4105 if (fFeedback == 0 || fFeedback->GetSize() == 0)
return;
4123 PDB(kFeedback,1)
Info(
"StopFeedback",
"Stop Timer");
4133 PDB(kFeedback,2)
Info(
"HandleTimer",
"Entry");
4142 TIter next(fFeedback);
4149 if (fFeedbackLists &&
4151 fFeedbackLists->Remove(m);
4164 if (fFeedbackLists == 0) {
4169 fb = MergeFeedback();
4171 PDB(kFeedback,2)
Info(
"HandleTimer",
"Sending %d objects", fb->
GetSize());
4197 if (fProcPackets->GetBinContent(bin) > 0)
4212 Info(
"GetNextPacket",
"%s (%s): '%s' '%s' '%s' %lld %lld",
4215 if (fProcPackets) fProcPackets->Fill(slave->
GetOrdinal(), 1);
4234 const char *selection,
Option_t *option,
4253 if (
GetDrawArgs(varexp, selection, option, selector, objname) != 0) {
4254 Error(
"DrawSelect",
"parsing arguments");
4259 TNamed *selectionobj =
new TNamed(
"selection", selection);
4265 while ((o = nxi())) {
4277 if (objname ==
"") objname =
"htemp";
4279 fProof->AddFeedback(objname);
4281 fProof->RemoveFeedback(objname);
4291 delete selectionobj;
4295 TIter nxsi(savedInput);
4296 while ((o = nxsi()))
4310 fPacketizer->SetInitTime();
4326 Info(
"SetupFeedback",
"\"FeedbackList\" found: %d objects", fb->
GetSize());
4329 Info(
"SetupFeedback",
"\"FeedbackList\" NOT found");
4332 if (fb == 0 || fb->
GetSize() == 0)
return;
4353 PDB(kFeedback,1)
Info(
"StopFeedback",
"Stop Timer");
4363 PDB(kFeedback,2)
Info(
"HandleTimer",
"Entry");
4386 if (fFeedback == 0)
return kFALSE;
4396 TIter next(fFeedback);
4400 if (o != 0) fb->
Add(o);
4404 PDB(kFeedback,2)
Info(
"HandleTimer",
"Sending %d objects", fb->
GetSize());
4434 PDB(kGlobal, 1)
Info(
"HandleGetTreeHeader",
"empty TDSet");
4441 t->SetMaxVirtualSize(0);
4443 entries = t->GetEntries();
4446 while ((e = dset->Next()) != 0) {
4457 t->SetMaxEntryLoop(entries);
4462 answ <<
TString(
"Success") << t;
4464 answ <<
TString(
"Failed") << t;
4466 fSocket->Send(answ);
4487 PDB(kGlobal,1)
Info(
"Process",
"Enter");
4490 if (!proof)
return -1;
4497 if (!SendSelector(selector_file)) {
4498 Error(
"Process",
"sending selector %s", selector_file);
4508 if (!dset->ElementsValid()) {
4510 if (!dset->ElementsValid()) {
4511 Error(
"Process",
"could not validate TDSet");
4526 while (
TSlave *sl = dynamic_cast<TSlave*>(nextslave())) {
4527 TList *submasters = 0;
4530 submasters =
new TList;
4531 submasters->
SetName(sl->GetMsd());
4532 keyholder.
Add(submasters);
4535 valueholder.
Add(setelements);
4536 msds.
Add(
new TPair(submasters, setelements));
4538 submasters =
dynamic_cast<TList*
>(msd->
Key());
4540 if (submasters) submasters->
Add(sl);
4545 TIter nextelement(dset->GetListOfElements());
4546 while (
TDSetElement *elem = dynamic_cast<TDSetElement*>(nextelement())) {
4548 if (elem->GetNum()<1)
continue;
4555 if (cur+elem->GetNum()-1<
first) {
4557 cur+=elem->GetNum();
4563 elem->SetNum(elem->GetNum()-(
first-cur));
4564 elem->SetFirst(elem->GetFirst()+
first-cur);
4569 cur+=elem->GetNum();
4578 Error(
"Process",
"data requires mass storage domain '%s'" 4579 " which is not accessible in this proof session",
4584 if (elements) elements->
Add(elem);
4590 while (
TPair *msd = dynamic_cast<TPair*>(nextmsd())) {
4591 TList *submasters =
dynamic_cast<TList*
>(msd->Key());
4592 TList *setelements =
dynamic_cast<TList*
>(msd->Value());
4595 Int_t nmasters = submasters ? submasters->
GetSize() : -1;
4596 Int_t nelements = setelements ? setelements->
GetSize() : -1;
4597 for (
Int_t i=0; i<nmasters; i++) {
4600 TDSet set(dset->GetType(), dset->GetObjName(),
4601 dset->GetDirectory());
4602 for (
Int_t j = (i*nelements)/nmasters;
4603 j < ((i+1)*nelements)/nmasters;
4613 Warning(
"Process",
"not a TDSetElement object");
4617 if (
set.GetListOfElements()->GetSize()>0) {
4625 PDB(kGlobal,1)
Info(
"Process",
4626 "Sending TDSet with %d elements to submaster %s",
4627 set.GetListOfElements()->GetSize(),
4630 usedmasters.
Add(sl);
4633 fSlaves.AddLast(sl);
4634 fSlaveProgress.Set(fSlaveProgress.GetSize()+1);
4635 fSlaveProgress[fSlaveProgress.GetSize()-1] = 0;
4636 fSlaveTotals.Set(fSlaveTotals.GetSize()+1);
4637 fSlaveTotals[fSlaveTotals.GetSize()-1] = nent;
4638 fSlaveBytesRead.Set(fSlaveBytesRead.GetSize()+1);
4639 fSlaveBytesRead[fSlaveBytesRead.GetSize()-1] = 0;
4640 fSlaveInitTime.Set(fSlaveInitTime.GetSize()+1);
4641 fSlaveInitTime[fSlaveInitTime.GetSize()-1] = -1.;
4642 fSlaveProcTime.Set(fSlaveProcTime.GetSize()+1);
4643 fSlaveProcTime[fSlaveProcTime.GetSize()-1] = -1.;
4644 fSlaveEvtRti.Set(fSlaveEvtRti.GetSize()+1);
4645 fSlaveEvtRti[fSlaveEvtRti.GetSize()-1] = -1.;
4646 fSlaveMBRti.Set(fSlaveMBRti.GetSize()+1);
4647 fSlaveMBRti[fSlaveMBRti.GetSize()-1] = -1.;
4648 fSlaveActW.Set(fSlaveActW.GetSize()+1);
4649 fSlaveActW[fSlaveActW.GetSize()-1] = 0;
4650 fSlaveTotS.Set(fSlaveTotS.GetSize()+1);
4651 fSlaveTotS[fSlaveTotS.GetSize()-1] = 0;
4652 fSlaveEffS.Set(fSlaveEffS.GetSize()+1);
4653 fSlaveEffS[fSlaveEffS.GetSize()-1] = 0.;
4655 Warning(
"Process",
"not a TSlave object");
4662 PDB(kGlobal,1)
Info(
"Process",
"Calling Collect");
4670 PDB(kGlobal,1)
Info(
"Process",
"Calling Merge Output");
4683 Int_t idx = fSlaves.IndexOf(sl);
4684 fSlaveProgress[idx] = processed;
4685 if (fSlaveTotals[idx] != total)
4686 Warning(
"Progress",
"total events has changed for slave %s", sl->
GetName());
4687 fSlaveTotals[idx] =
total;
4691 for (i = 0; i < fSlaveTotals.GetSize(); i++) tot += fSlaveTotals[i];
4693 for (i = 0; i < fSlaveProgress.GetSize(); i++) proc += fSlaveProgress[i];
4707 Info(
"Progress",
"%s: %lld %lld %f %f %f %f", sl->
GetName(),
4708 processed, bytesread, initTime, procTime, evtrti, mbrti);
4710 Int_t idx = fSlaves.IndexOf(sl);
4711 if (fSlaveTotals[idx] != total)
4712 Warning(
"Progress",
"total events has changed for slave %s", sl->
GetName());
4713 fSlaveTotals[idx] =
total;
4714 fSlaveProgress[idx] = processed;
4715 fSlaveBytesRead[idx] = bytesread;
4716 fSlaveInitTime[idx] = (initTime > -1.) ? initTime : fSlaveInitTime[idx];
4717 fSlaveProcTime[idx] = (procTime > -1.) ? procTime : fSlaveProcTime[idx];
4718 fSlaveEvtRti[idx] = (evtrti > -1.) ? evtrti : fSlaveEvtRti[idx];
4719 fSlaveMBRti[idx] = (mbrti > -1.) ? mbrti : fSlaveMBRti[idx];
4731 for (i = 0; i < fSlaveTotals.GetSize(); i++) {
4732 tot += fSlaveTotals[i];
4733 if (i < fSlaveProgress.GetSize())
4734 proc += fSlaveProgress[i];
4735 if (i < fSlaveBytesRead.GetSize())
4736 bytes += fSlaveBytesRead[i];
4737 if (i < fSlaveInitTime.GetSize())
4738 if (fSlaveInitTime[i] > -1. && (init < 0. || fSlaveInitTime[i] < init))
4739 init = fSlaveInitTime[i];
4740 if (i < fSlaveProcTime.GetSize())
4741 if (fSlaveProcTime[i] > -1. && (ptime < 0. || fSlaveProcTime[i] > ptime))
4742 ptime = fSlaveProcTime[i];
4743 if (i < fSlaveEvtRti.GetSize())
4744 if (fSlaveEvtRti[i] > -1.) {
4745 erti += fSlaveEvtRti[i];
4748 if (i < fSlaveMBRti.GetSize())
4749 if (fSlaveMBRti[i] > -1.) {
4750 srti += fSlaveMBRti[i];
4754 srti = (nsrti > 0) ? srti / nerti : 0.;
4756 Progress(tot, proc, bytes, init, ptime, erti, srti);
4766 Info(
"Progress",
"%s: %lld %lld %lld %f %f %f %f %d %f", wrk->
GetOrdinal(),
4771 Int_t idx = fSlaves.IndexOf(wrk);
4772 if (fSlaveTotals[idx] != pi->
fTotal)
4773 Warning(
"Progress",
"total events has changed for worker %s", wrk->
GetName());
4774 fSlaveTotals[idx] = pi->
fTotal;
4789 for (i = 0; i < fSlaveTotals.GetSize(); i++) {
4790 pisum.
fTotal += fSlaveTotals[i];
4791 if (i < fSlaveProgress.GetSize())
4793 if (i < fSlaveBytesRead.GetSize())
4795 if (i < fSlaveInitTime.GetSize())
4796 if (fSlaveInitTime[i] > -1. && (pisum.
fInitTime < 0. || fSlaveInitTime[i] < pisum.
fInitTime))
4798 if (i < fSlaveProcTime.GetSize())
4799 if (fSlaveProcTime[i] > -1. && (pisum.
fProcTime < 0. || fSlaveProcTime[i] > pisum.
fProcTime))
4801 if (i < fSlaveEvtRti.GetSize())
4802 if (fSlaveEvtRti[i] > -1.) {
4806 if (i < fSlaveMBRti.GetSize())
4807 if (fSlaveMBRti[i] > -1.) {
4811 if (i < fSlaveActW.GetSize())
4813 if (i < fSlaveTotS.GetSize())
4816 if (i < fSlaveEffS.GetSize())
4843 for (i = 0; i < fSlaveTotals.GetSize(); i++) {
4844 tot += fSlaveTotals[i];
4845 if (i < fSlaveProgress.GetSize())
4846 proc += fSlaveProgress[i];
4847 if (i < fSlaveBytesRead.GetSize())
4848 bytes += fSlaveBytesRead[i];
4849 if (i < fSlaveInitTime.GetSize())
4850 if (fSlaveInitTime[i] > -1. && (init < 0. || fSlaveInitTime[i] < init))
4851 init = fSlaveInitTime[i];
4852 if (i < fSlaveProcTime.GetSize())
4853 if (fSlaveProcTime[i] > -1. && (ptime < 0. || fSlaveProcTime[i] > ptime))
4854 ptime = fSlaveProcTime[i];
4855 if (i < fSlaveEvtRti.GetSize())
4856 if (fSlaveEvtRti[i] > -1.) {
4857 erti += fSlaveEvtRti[i];
4860 if (i < fSlaveMBRti.GetSize())
4861 if (fSlaveMBRti[i] > -1.) {
4862 srti += fSlaveMBRti[i];
4866 erti = (nerti > 0) ? erti / nerti : 0.;
4867 srti = (nsrti > 0) ? srti / nerti : 0.;
4878 m << tot << proc << bytes << init << ptime << erti << srti;
4884 if (fReturnFeedback)
4900 fReturnFeedback =
kTRUE;
4903 fReturnFeedback =
kFALSE;
virtual void SetMerging(Bool_t=kTRUE)
virtual Bool_t cd(const char *path=0)
Change current directory to "this" directory.
TClass * GetClass() const
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root.
virtual const char * GetName() const
Returns name of object.
Long64_t Process(const char *selector, Long64_t nentries=-1, Option_t *option="")
Process the specified TSelector file 'nentries' times.
virtual Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
static FILE * SetErrorHandlerFile(FILE *ferr)
Set the file stream where to log (default stderr).
virtual TDirectory * mkdir(const char *name, const char *title="")
Create a sub-directory "a" or a hierarchy of sub-directories "a/b/c/...".
ErrorHandlerFunc_t SetErrorHandler(ErrorHandlerFunc_t newhandler)
Set an errorhandler function. Returns the old handler.
void SetMerging(Bool_t on=kTRUE)
Switch on/off merge timer.
TProofProgressStatus * fProgressStatus
TFileInfo * GetFileInfo(const char *type="TTree")
Return the content of this element in the form of a TFileInfo.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
void ValidateDSet(TDSet *dset)
Validate a TDSet.
Double_t RealTime()
Stop the stopwatch (if it is running) and return the realtime (in seconds) passed between the start a...
Internal class steering processing in PROOF.
void SetWorkerOrdinal(const char *ordinal)
EExitStatus fExitStatus
status of query in progress
void SetNumMergers(Int_t nmergers)
virtual TDSetElement * Next(Long64_t totalEntries=-1)
Returns next TDSetElement.
Int_t AssertSelector(const char *selector_file)
Make sure that a valid selector object Return -1 in case of problems, 0 otherwise.
const char * GetCacheDir() const
R__EXTERN Int_t gErrorIgnoreLevel
void StoreOutput(TList *out)
Store output list (may not be used in this class).
virtual const char * WorkingDirectory()
Return working directory.
void Print(Option_t *opt="") const
Print query content. Use opt = "F" for a full listing.
UInt_t GetTypeOpt() const
Int_t GetLearnEntries()
Return the number of entries in the learning phase.
static TMD5 * FileChecksum(const char *file)
Returns checksum of specified file.
virtual Bool_t SendProcessingProgress(Double_t, Double_t, Bool_t=kFALSE)
void SetMemValues(Long_t vmem=-1, Long_t rmem=-1, Bool_t master=kFALSE)
Set max memory values.
Long_t fFeedbackPeriod
timer for sending intermediate results
Collectable string class.
virtual void SetDirectory(TDirectory *dir)
By default when an histogram is created, it is added to the list of histogram objects in the current ...
void SetDir(const char *dir, Bool_t raw=kFALSE)
TProofLockPath * GetCacheLock()
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)]...
const char * GetTopSessionTag() const
Long64_t GetMsgSizeHWM() const
virtual Int_t Send(const TMessage &mess)
Send a TMessage object.
This class represents a WWW compatible URL.
virtual Bool_t ProcessCut(Long64_t)
TString & ReplaceAll(const TString &s1, const TString &s2)
void SetWriteV3(Bool_t on=kTRUE)
Set/Reset the 'OldStreamer' bit in this instance and its elements.
static void FilterLocalroot(TString &path, const char *url="root://dum/")
If 'path' is local and 'dsrv' is Xrootd, apply 'path.Localroot' settings, if any. ...
TUrl * GetCurrentUrl() const
Return the current url.
TQueryResult * GetQueryResult(const char *ref)
Get query result instances referenced 'ref' from the list of results.
virtual Bool_t JoinProcess(TList *workers)
Not implemented: meaningful only in the remote player. Returns kFALSE.
TObject * GetParameter(const char *par) const
Get specified parameter.
Bool_t CheckMemUsage(Long64_t &mfreq, Bool_t &w80r, Bool_t &w80v, TString &wmsg)
Check the memory usage, if requested.
Bool_t TestBit(UInt_t f) const
const char * GetProtocol() const
This class implements a data set to be used for PROOF processing.
virtual Long64_t Finalize(Bool_t force=kFALSE, Bool_t sync=kFALSE)
Finalize query (may not be used in this class).
Bool_t fSaveResultsPerPacket
TProofPlayer(TProof *proof=0)
Default ctor.
virtual void SetName(const char *name)
Set the name of the TNamed.
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
void StopProcess(Bool_t abort, Int_t timeout=-1)
Stop process after this event.
TQueryResult * fPreviousQuery
Bool_t IsRegister() const
TSocket * GetSocket() const
void Add(const char *mesg)
Add an error message.
Double_t GetProcTime() const
TDatime GetStartTime() const
virtual Bool_t Merge(Bool_t=kTRUE)
Merge the files.
void AddOutput(TList *out)
Incorporate output list (may not be used in this class).
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format...
void SetupFeedback()
Setup reporting of feedback objects.
virtual Int_t GetEntries() const
virtual TObject * Last() const
Return the last object in the list. Returns 0 when list is empty.
static Long_t GetVirtMemMax()
VirtMemMax getter.
virtual int MakeDirectory(const char *name)
Make a directory.
virtual void AddFirst(TObject *obj)
Add object at the beginning of the list.
Long64_t GetEventsProcessed() const
virtual void MergeOutput(Bool_t savememvalues=kFALSE)
Merge objects in output the lists.
void SetLastUpdate(Double_t updtTime=0)
Update time stamp either with the passed value (if > 0) or with the current time. ...
virtual TObject * Get(const char *namecycle)
Return pointer to object identified by namecycle.
virtual Bool_t ChangeDirectory(const char *path)
Change directory.
void RemoveQueryResult(const char *ref)
Remove all query result instances referenced 'ref' from the list of results.
virtual Int_t GetNbinsZ() const
Bool_t HandleTimer(TTimer *timer)
Send progress and feedback to client.
Int_t AdoptFile(TFile *f)
Adopt a file already open.
TDSetElement * GetNextPacket(TSlave *slave, TMessage *r)
Get next packet for specified slave.
Long64_t GetFirst() const
virtual int Load(const char *module, const char *entry="", Bool_t system=kFALSE)
Load a shared library.
const char * GetOrdinal() const
Implement Tree drawing using PROOF.
virtual Int_t GetNextPacket(Long64_t &first, Long64_t &num)=0
void SetReadCalls(Long64_t readCalls)
virtual const char * DirName(const char *pathname)
Return the directory name in pathname.
void ResetFileCollection()
virtual char * Which(const char *search, const char *file, EAccessMode mode=kFileExists)
Find location of file in a search path.