22 #include "TStopwatch.h" 41 #include <QMdiSubWindow> 69 if (!fname || (strlen(fname) == 0))
return kFALSE;
78 doOutput(
"Start hotstart script execution");
111 if (!nextcmd)
return kFALSE;
114 gROOT->ProcessLineSync(nextcmd, &error);
117 doOutput(TString::Format(
"Error = %d. CMD: %s", error, nextcmd).Data());
147 Int_t loopnumbers = 0;
148 Double_t spenttime = 0;
153 Bool_t first = kTRUE;
157 if (first) first = kFALSE;
161 spenttime += watch.RealTime();
177 }
while (loopnumbers < 1000000);
182 Wait(timeout <= 0 ? 0 : timeout*0.001);
195 doOutput(
"// Disconnect old analysis first");
204 doOutput(
"// Start analysis client");
314 const char *ClientDir,
315 const char *ClientExec,
316 const char *ClientNode,
320 const char *UserArgs)
327 const char *separ = strrchr(ClientNode,
':');
333 node.Append(ClientNode, separ - ClientNode);
346 Int_t ControllerMode,
347 const char *password)
403 if (dynamic_cast<TGo4HttpProxy *>(
Server()))
416 if (dynamic_cast<TGo4HttpProxy *>(
Server()))
452 QWidget *gui = gui_ ? gui_->parentWidget() :
nullptr;
458 gui->showMinimized();
466 QWidget *gui = gui_ ? gui_->parentWidget() :
nullptr;
472 gui->showMinimized();
506 Bool_t enableprocess,
516 const char *sourcename,
527 const char *sourcename,
543 const char *sourcename,
558 const char *sourcename,
573 const char *sourcename,
588 const char *sourcename,
614 const char *sourcename,
639 const char *sourcename,
653 const char *sourcename,
664 const char *storename,
673 step->
SetFileStore(storename, overwrite, bufsize, splitlevel, compression, autosaveperiod);
677 const char *storename,
687 const char *storename)
695 const char *storename,
706 fMainWin->restoreState(QByteArray::fromHex(val));
712 fMainWin->restoreGeometry(QByteArray::fromHex(val));
726 panel->showMinimized();
728 panel->showMaximized();
731 panel->parentWidget()->move(QPoint(x, y));
732 panel->parentWidget()->resize(QSize(width, height));
749 if (!panel)
return TString();
750 return TString(panel->objectName().toLatin1().constData());
761 if (!handle || !newname || (strlen(newname) == 0))
return kFALSE;
764 Message(TString::Format(
"Viewpanel with name %s already exists",newname).Data());
789 if (panel) panel->
Divide(numX, numY);
796 TPad *pad = panel->
GetSubPad(
nullptr, number,
false);
808 if (!panel)
return nullptr;
810 TPad *pad = panel->
GetSubPad(
nullptr, padnumber,
false);
835 return panel !=
nullptr;
852 if (!servername || (*servername == 0))
return nullptr;
856 if (!proxy->
Connect(servername)) {
861 const char *slotname = servername;
862 if (strncmp(slotname,
"http://",7) == 0) slotname+=7;
else 863 if (strncmp(slotname,
"https://",8) == 0) slotname+=8;
864 TString sname(slotname);
865 Int_t len = sname.Index(
"/");
866 if ((len>1) && (len<sname.Length())) sname.Resize(len);
894 std::ofstream fs(filename);
895 if (!fs.is_open())
return;
897 fs <<
"// Automatically generated startup script" << std::endl;
898 fs <<
"// Do not change it!" << std::endl << std::endl;
900 fs <<
"go4->SetMainWindowState(4, \"" << main->saveState().toHex().data() <<
"\");" << std::endl;
902 fs <<
"go4->SetMainWindowGeometry(4, \"" << main->saveGeometry().toHex().data() <<
"\");" << std::endl;
908 for (Int_t n = 0; n <= prlist.GetLast(); n++) {
910 fs <<
"go4->OpenFile(\"" << pr->
GetFileName() <<
"\");" << std::endl;
915 for (Int_t n = 0; n <= prlist.GetLast(); n++) {
917 fs <<
"go4->ConnectHServer(\"" 922 << pr->
GetFilter() <<
"\");" << std::endl;
927 for (Int_t n = 0; n <= prlist.GetLast(); n++) {
929 fs <<
"go4->ConnectDabc(\"" << pr->
GetServerName() <<
"\");" << std::endl;
935 if (!isanalysis && serv && (serv != anal)) isanalysis =
true;
965 fs <<
");" << std::endl;
967 fs <<
"go4->WaitAnalysis(300);" << std::endl << std::endl;
969 if (!confgui)
return;
970 fs <<
"// configuration of analysis" << std::endl;
973 int interval, compression;
974 bool asenabled, asoverwrite;
976 confgui->
GetAutoSaveConfig(fname, interval, compression, asenabled, asoverwrite);
977 fs <<
"go4->AnalysisAutoSave(\"" << fname.toLatin1().constData() <<
"\", " 979 << compression <<
", " 980 << (asenabled ?
"kTRUE" :
"kFALSE") <<
", " 981 << (asoverwrite ?
"kTRUE" :
"kFALSE") <<
");" << std::endl;
984 fs <<
"go4->AnalysisConfigName(\"" << fname.toLatin1().constData() <<
"\");" << std::endl << std::endl;
986 for (
int nstep = 0; nstep < confgui->
GetNumSteps(); nstep++) {
988 fs <<
"// step " << stepconf->
GetStepName().toLatin1().constData() << std::endl;
990 bool process, source, store;
992 fs <<
"go4->ConfigStep(\"" << stepconf->
GetStepName().toLatin1().constData() <<
"\", " 993 << (process ?
"kTRUE" :
"kFALSE") <<
", " 994 << (source ?
"kTRUE" :
"kFALSE") <<
", " 995 << (store ?
"kTRUE" :
"kFALSE") <<
");" << std::endl;
998 int timeout = 0, start = 0, stop = 0, interval = 0, nport = 0, nretry = 0;
999 int nsrc = stepconf->
GetSourceSetup(srcname, timeout, start, stop, interval, nport, nretry);
1002 srcargs.Form(
"(\"%s\", \"%s\", %d", stepconf->
GetStepName().toLatin1().constData(), srcname.toLatin1().constData(), timeout);
1006 fs <<
"go4->StepFileSource" << srcargs;
1011 fs <<
"go4->StepMbsFileSource" << srcargs <<
", \"" 1012 << TagFile.toLatin1().constData() <<
"\"";
1016 fs <<
"go4->StepMbsStreamSource" << srcargs;
1019 fs <<
"go4->StepMbsTransportSource" << srcargs;
1022 fs <<
"go4->StepMbsEventServerSource" << srcargs;
1025 fs <<
"go4->StepMbsRevServSource" << srcargs;
1028 fs <<
"go4->StepRandomSource" << srcargs;
1034 fs <<
"go4->StepUserSource" << srcargs <<
", " << port <<
", \"" 1035 << expr.toLatin1().constData() <<
"\"";
1039 fs <<
"go4->StepHDF5Source" << srcargs;
1044 fs <<
");" << std::endl;
1046 if ((start != 0) || (stop != 0) || (interval > 1)) {
1047 srcargs.Form(
"(\"%s\", %d, %d ,%d)",stepconf->
GetStepName().toLatin1().constData(), start, stop, interval);
1048 fs <<
"go4->StepMbsSelection" << srcargs <<
";" << std::endl;
1052 srcargs.Form(
"(\"%s\", %d)",stepconf->
GetStepName().toLatin1().constData(), nport);
1053 fs <<
"go4->StepMbsPort" << srcargs <<
";" << std::endl;
1057 srcargs.Form(
"(\"%s\", %d)",stepconf->
GetStepName().toLatin1().constData(), nretry);
1058 fs <<
"go4->StepMbsRetryCnt" << srcargs <<
";" << std::endl;
1066 int bufsize, splitlevel, compression, autosave;
1067 stepconf->
GetFileStore(overwrite, bufsize, splitlevel, compression, autosave);
1068 fs <<
"go4->StepFileStore(\"" << stepconf->
GetStepName().toLatin1().constData() <<
"\", \"" 1069 << storename.toLatin1().constData() <<
"\", " 1070 << (overwrite ?
"kTRUE" :
"kFALSE") <<
", " 1072 << splitlevel <<
", " 1073 << compression <<
", " 1074 << autosave <<
");" << std::endl;
1079 int bufsize, splitlevel;
1081 fs <<
"go4->StepBackStore(\"" << stepconf->
GetStepName().toLatin1().constData() <<
"\", \"" 1082 << storename.toLatin1().constData() <<
"\", " 1084 << splitlevel <<
");" << std::endl;
1089 fs <<
"go4->StepUserStore(\"" << stepconf->
GetStepName().toLatin1().constData() <<
"\", \"" 1090 << storename.toLatin1().constData() <<
"\");" << std::endl;
1097 fs <<
"go4->StepHDF5Store(\"" << stepconf->
GetStepName().toLatin1().constData() <<
"\", \"" 1098 << storename.toLatin1().constData() <<
"\", " 1099 << flags <<
");" << std::endl;
1109 fs <<
"go4->SubmitAnalysisConfig(20);" << std::endl << std::endl;
1112 QWidget *mdi = confgui ? confgui->parentWidget() :
nullptr;
1114 if (mdi->isHidden()) mode = -1;
else 1115 if (mdi->isMinimized()) mode = 0;
1117 fs <<
"go4->SetAnalysisConfigMode(" << mode <<
");" << std::endl;
1120 mdi = termgui ? termgui->parentWidget() :
nullptr;
1122 if (mdi->isHidden()) mode = -1;
else 1123 if (mdi->isMinimized()) mode = 0;
1125 fs <<
"go4->SetAnalysisTerminalMode(" << mode <<
");" << std::endl << std::endl;
1129 fs <<
"go4->ConnectAnalysis(\"" 1134 fs <<
"0);" << std::endl;
1137 fs <<
"go4->WaitAnalysis(10);" << std::endl << std::endl;
1139 fs <<
"go4->DisconnectAnalysis();" << std::endl;
1145 for (Int_t n = 0; n <= prlist.GetLast(); n++) {
1147 if (pr == serv)
continue;
1148 fs <<
"go4->ConnectHttp(\"" << pr->
GetServerName() <<
"\");" << std::endl;
1153 fs <<
"go4->StartAnalysis();" << std::endl;
1155 fs <<
"// in some analysis one requires to wait several seconds before new histograms appears" << std::endl;
1156 fs <<
"// go4->Wait(1);" << std::endl;
1157 fs <<
"go4->RefreshNamesList();" << std::endl;
1161 fs <<
"go4->RefreshNamesList();" << std::endl;
1167 for (
int i = 0; i < windows.count(); ++i) {
1169 if (!panel)
continue;
1171 TString picname = TString::Format(
"pic%d", ++npanel);
1178 pic.SavePrimitive(fs,
"");
1180 QWidget *mdi = panel->parentWidget();
1182 QPoint pos = mdi->pos();
1183 mdi->mapToParent(pos);
1184 QSize size = mdi->size();
1186 const char *mode =
"Go4_normal";
1187 if (mdi->isHidden()) mode =
"Go4_hidden";
else 1188 if (mdi->isMinimized()) mode =
"Go4_minimized";
else 1189 if (mdi->isMaximized()) mode =
"Go4_maximized";
1191 fs <<
"go4->StartViewPanel(" 1194 << size.width() <<
", " 1195 << size.height() <<
", " 1196 << mode <<
", " << picname <<
");" << std::endl;
1198 fs <<
"delete " << picname <<
";" << std::endl;
1204 Bool_t goinside = kTRUE;
1206 while (iter.next(goinside)) {
1207 TGo4Slot *subslot = iter.getslot();
1212 Int_t ncheck = 0, ncount = 0;
1214 while (subiter.
next()) {
1221 goinside = (ncount == 0) || (ncheck != ncount);
1228 fs <<
"go4->MonitorItem(\"" << sbuf <<
"\", kFALSE);" << std::endl;
1235 fs <<
"go4->StartMonitoring(" << mperiod/1000 <<
");" << std::endl;
const char * GetUserPass() const
void setClientControllerMode(int)
Int_t fiWaitForGUIReaction
virtual void ShootRepaintTimer()
void Wait(double tm_sec) override
void ConfigStep(const char *stepname, Bool_t enableprocess, Bool_t enablesource, Bool_t enablestore) override
void StepMbsFileSource(const char *stepname, const char *sourcename, int timeout, const char *TagFile, int start=0, int stop=0, int interval=0) override
void SetMainWindowGeometry(int qtversion, const char *val) override
Bool_t ContinueExecution()
void HotStart(const char *fname)
void StepRandomSource(const char *stepname, const char *sourcename, int timeout) override
void setClientExeMode(int mode)
void DisconnectAnalysis() override
Int_t getCounts(Double_t time)
void StatusMessage(const QString &mess)
Bool_t LoadHotStart(const char *filename)
void MakeHttpList(TObjArray *arr)
virtual void SetMbsStreamSource()
virtual void SetUserSource(int port, QString expr)
void setClientArgs(const QString &)
virtual void GetAnalysisConfigFile(QString &filename)
virtual void MakePictureForPad(TGo4Picture *pic, TPad *pad, bool useitemname)
Bool_t IsHotStart() const
virtual void SetActivePad(TPad *pad)
Int_t MonitoringPeriod() const
void setClientDir(const QString &)
void ConnectServer(bool interactive=true, const char *password="")
Int_t GetPortNumber() const
Bool_t IsItemMonitored(TGo4Slot *slot) const
Int_t ItemKind(const char *name)
void StartFitPanel() override
virtual void SetBackStore(QString name, int bufsize, int splitlevel)
virtual void GetHDF5Store(int &flags)
virtual void SetMbsRetryCnt(int retry)
virtual void SetHDF5Store(QString name, int flags)
virtual void SetAutoSaveConfig(QString filename, int interval, int compression, bool enbaled, bool overwrite)
static TGo4MdiArea * Instance()
TGo4ConfigStep * GetStepConfig(int n)
void doOutput(const char *str)
void Initialize(TGo4ObjectManager *om, TGo4BrowserProxy *br)
list of shared libraries when application is started
void ConnectAnalysis(const char *ServerNode, Int_t ServerPort, Int_t ControllerMode, const char *password=nullptr) override
void LaunchClient(bool interactive=true)
void ProcessEvents(Int_t timeout=-1) override
void MakeHServerList(TObjArray *arr)
TGo4MainWindow * fMainWin
TGo4AnalysisProxy * FindAnalysis(const char *itemname=nullptr)
void SetMainWindowState(int qtversion, const char *val) override
virtual void SetMbsRevServSource(int port)
void StepBackStore(const char *stepname, const char *storename, int bufsize, int splitlevel) override
QString getClientExec(int mode=-1)
bool SubmitAnalysisSettings()
virtual Bool_t RefreshNamesList()
void setClientName(const QString &)
virtual const char * GetDrawItemName(int itemcnt=0)
virtual void RedrawPanel(TPad *pad, bool force)
const char * GetFileName() const
void StepMbsRetryCnt(const char *stepname, int cnt) override
virtual void GetFileStore(bool &overwrite, int &bufsize, int &splitlevel, int &compression, int &autosaveinterval)
void setClientTermMode(int)
TString GetViewPanelName(ViewPanelHandle panel) override
virtual void Divide(int numX, int numY)
void SubmitAnalysisConfig(int tmout=20) override
TGo4Slot * getslot() const
int main(int argc, char **argv)
Bool_t Connect(const char *nodename)
const char * GetServerName() const override
int getClientControllerMode()
void setClientShellMode(int)
static TGo4Script * ScriptInstance()
TGo4FitPanel * StartFitPanel()
virtual const char * GetServerName() const
virtual void UpdatePanelCaption()
void StepHDF5Store(const char *stepname, const char *storename, int flags) override
void SetAnalysisTerminalMode(int mode) override
TGo4BrowserProxy * Browser()
const char * NextHotStartCmd()
void StepFileStore(const char *stepname, const char *storename, bool overwrite, int bufsize, int splitlevel, int compression, int autosaveperiod=10000) override
virtual void GetMbsFileSource(QString &TagFile)
virtual TPad * GetSubPad(TPad *toppad, int num, bool onlytoplevel)
TGo4Script(TGo4MainWindow *mainwin)
void WaitAnalysis(Int_t delay_sec) override
virtual void SetApplyToAllFlag(bool on)
virtual void SetHDF5Source(QString name)
void StepMbsTransportSource(const char *stepname, const char *sourcename, int timeout, int start=0, int stop=0, int interval=0) override
TPad * SelectPad(ViewPanelHandle panel, Int_t number=0) override
Bool_t SetViewPanelName(ViewPanelHandle panel, const char *newname) override
virtual int GetStoreSetup(QString &name)
void setClientIsServer(int kind)
TGo4BrowserProxy * Browser() const
Bool_t DrawItem(const char *itemname, ViewPanelHandle panel=nullptr, const char *drawopt=nullptr) override
virtual void GetStepControl(bool &process, bool &source, bool &store)
virtual void GetAutoSaveConfig(QString &filename, int &interval, int &compression, bool &enbaled, bool &overwrite)
void HotStart(const char *filename) override
virtual void SetMbsFileSource(const QString &TagFile)
static const char * DefaultPicTitle()
virtual void SetRandomSource()
static Int_t DelayMillisec()
void AnalysisAutoSave(const char *filename, Int_t interval, Int_t compression, Bool_t enabled, Bool_t overwrite) override
void SetAnalysisConfigMode(int mode) override
void SetAccount(const char *username, const char *passwd)
void MakeFilesList(TObjArray *arr)
TGo4ServerProxy * Server()
void MakeDabcList(TObjArray *arr)
virtual void SetFileSource()
virtual QString GetStepName()
Bool_t IsAnalysisReady() const
void StepMbsRevServSource(const char *stepname, const char *sourcename, int timeout, int port=0, int start=0, int stop=0, int interval=0) override
ViewPanelHandle GetActiveViewPanel() override
virtual void SetFileStore(QString name, bool overwrite, int bufsize, int splitlevel, int compression, int autosave=0)
Bool_t IsAnalysisSettingsReady() const
TGo4ViewPanel * GetActivePanel()
virtual void SetStepControl(bool process, bool source, bool store)
const char * GetFilter() const
void SetSuperimpose(ViewPanelHandle panel, Bool_t on=kTRUE) override
virtual void SetSourceWidgets(const QString &name, int timeout)
virtual void GetBackStore(int &bufsize, int &splitlevel)
void StepFileSource(const char *stepname, const char *sourcename, int timeout) override
void LaunchAnalysis() override
void RedrawPanel(ViewPanelHandle handle) override
static void ProduceScript(const char *filename, TGo4MainWindow *main)
virtual TGo4Picture * GetPadOptions(TPad *pad)
virtual void SetMbsTransportSource()
virtual void SetMbsSourceWidgets(int start, int stop, int interval, int port=0)
TGo4ViewPanel * FindViewPanel(const char *name)
void StepUserStore(const char *stepname, const char *storename) override
const char * GetBaseName() const
const char * GetDrawnItemName(ViewPanelHandle panel, int cnt=0) override
virtual void GetUserSource(int &port, QString &expr)
void StartAnalysis() override
void StepUserSource(const char *stepname, const char *sourcename, int timeout, int port, const char *expr) override
void ShutdownAnalysis() override
void AnalysisConfigName(const char *filename) override
const char * LastTypedPassword() const
Bool_t IsAnalysisServer() const override
void setClientExec(const QString &)
void StepMbsSelection(const char *stepname, int start, int stop, int interval) override
static void ProduceLoadLibs(std::ostream &fs)
Bool_t StartScriptExecution(const char *fname)
const char * GetServerName() const override
TGo4Slot * BrowserTopSlot()
virtual void SetPadSuperImpose(TPad *pad, bool on)
void AddServerProxy(TGo4ServerProxy *serv, const char *slotname, const char *info)
void SetApplyToAll(ViewPanelHandle panel, Bool_t on=kTRUE) override
void StepMbsEventServerSource(const char *stepname, const char *sourcename, int timeout, int start=0, int stop=0, int interval=0) override
TGo4Picture * GetPadOptions(ViewPanelHandle panel, Int_t padnumber=0) override
TGo4ConfigStep * FindStepConfig(QString name)
bool getClientDefaultPass()
void setClientNode(const QString &)
void ShutdownAnalysis(bool interactive=true)
void StepHDF5Source(const char *stepname, const char *sourcename, int timeout) override
void StepMbsPort(const char *stepname, int port) override
virtual int GetSourceSetup(QString &name, int &timeout, int &start, int &stop, int &interval, int &port, int &nretry)
virtual Bool_t IsAnalysisRunning() const
void StopAnalysis() override
TGo4ViewPanel * DisplayBrowserItem(const char *itemname, TGo4ViewPanel *panel, TPad *pad, bool activate, int updatelevel, const char *drawopt)
Bool_t IsAnalysisRunning() const override
static TGo4AbstractInterface * Instance()
TGo4AnalysisConfiguration * FindAnalysisConfiguration()
virtual void SetPanelName(const char *newname)
Int_t IsAnalysisLaunched() const
TGo4ConfigStep * GetStepGUI(const char *stepname)
virtual void SetAnalysisConfigFile(QString filename)
TGo4ViewPanel * MakeNewPanel(int div=0)
Bool_t CanConfigureAnalysis()
void Message(const char *msg) override
void DisconnectAnalysis(bool interactive=true)
TGo4AnalysisWindow * FindAnalysisWindow()
virtual TPad * GetActivePad()
ViewPanelHandle StartViewPanel() override
void StepMbsStreamSource(const char *stepname, const char *sourcename, int timeout, int start=0, int stop=0, int interval=0) override
virtual void SetUserStore(QString name)
virtual void ProcessPictureRedraw(const char *picitemname, TPad *pad, TGo4Picture *pic)
ViewPanelHandle FindViewPanel(const char *name) override
virtual void SetMbsEventServerSource()
virtual TCanvas * GetCanvas()
TGo4ServerProxy * FindServer(const char *itemname=nullptr, Bool_t asanalysis=kTRUE)
void setClientDefaultPass(bool)
virtual void SetMbsPort(int port)
TGo4ServerProxy * ConnectHttp(const char *servername, const char *account=nullptr, const char *pass=nullptr) override
Bool_t BrowserItemName(TGo4Slot *itemslot, TString &res)
void RefreshNamesList(int tmout=10) override
virtual void SetFreezedTitle(const QString &title)
virtual Bool_t NamesListReceived() const
Bool_t IsWaitSomething() const
Bool_t next(Bool_t goesinto=kTRUE)
void DivideViewPanel(ViewPanelHandle panel, Int_t numX, Int_t numY) override