Loading [MathJax]/extensions/tex2jax.js
Logo ROOT   6.16/01
Reference Guide
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
httpcontrol.C File Reference

Detailed Description

This program demonstrates simple application control via THttpServer Two histogram are filled within endless loop.

Via published commands one can enable/disable histograms filling There are also command to clear histograms content

After macro started, open in browser with url

http://localhost:8080

Histograms will be automatically displayed and monitoring with interval 2000 ms started

#include "TH1.h"
#include "TH2.h"
#include "TRandom3.h"
#include "TSystem.h"
#include "THttpServer.h"
Bool_t bFillHist = kTRUE;
void httpcontrol()
{
// create histograms
TH1D *hpx = new TH1D("hpx","This is the px distribution",100,-4,4);
hpx->SetFillColor(48);
hpx->SetDirectory(0);
TH2D *hpxpy = new TH2D("hpxpy","py vs px",40,-4,4,40,-4,4);
hpxpy->SetDirectory(0);
// start http server
THttpServer* serv = new THttpServer("http:8080");
// One could specify location of newer version of JSROOT
// serv->SetJSROOT("https://root.cern.ch/js/latest/");
// serv->SetJSROOT("http://jsroot.gsi.de/latest/");
// register histograms
serv->Register("/", hpx);
serv->Register("/", hpxpy);
// enable monitoring and
// specify items to draw when page is opened
serv->SetItemField("/","_monitoring","5000");
serv->SetItemField("/","_layout","grid2x2");
serv->SetItemField("/","_drawitem","[hpxpy,hpx,Debug]");
serv->SetItemField("/","_drawopt","col");
// register simple start/stop commands
serv->RegisterCommand("/Start", "bFillHist=kTRUE;", "button;rootsys/icons/ed_execute.png");
serv->RegisterCommand("/Stop", "bFillHist=kFALSE;", "button;rootsys/icons/ed_interrupt.png");
// one could hide commands and let them appear only as buttons
serv->Hide("/Start");
serv->Hide("/Stop");
// register commands, invoking object methods
serv->RegisterCommand("/ResetHPX","/hpx/->Reset()", "button;rootsys/icons/ed_delete.png");
serv->RegisterCommand("/ResetHPXPY","/hpxpy/->Reset()", "button;rootsys/icons/bld_delete.png");
// create debug text element, use MathJax - works only on Firefox
serv->CreateItem("/Debug","debug output");
serv->SetItemField("/Debug", "_kind", "Text");
serv->SetItemField("/Debug", "value","\\(\\displaystyle{x+1\\over y-1}\\)");
serv->SetItemField("/Debug", "mathjax", "true");
// Fill histograms randomly
TRandom3 random;
Float_t px, py;
const Long_t kUPDATE = 1000;
Long_t cnt = 0;
while (kTRUE) {
if (bFillHist) {
random.Rannor(px,py);
hpx->Fill(px);
hpxpy->Fill(px,py);
cnt++;
} else {
gSystem->Sleep(10); // sleep minimal time
}
if ((cnt % kUPDATE==0) || !bFillHist) {
// IMPORTANT: one should regularly call ProcessEvents
// to let http server process requests
serv->SetItemField("/Debug", "value", Form("\\(\\displaystyle{x+1\\over y-1}\\) Loop:%ld", cnt/kUPDATE));
if (gSystem->ProcessEvents()) break;
}
}
}
long Long_t
Definition: RtypesCore.h:50
bool Bool_t
Definition: RtypesCore.h:59
float Float_t
Definition: RtypesCore.h:53
const Bool_t kTRUE
Definition: RtypesCore.h:87
char * Form(const char *fmt,...)
R__EXTERN TSystem * gSystem
Definition: TSystem.h:540
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
Definition: TAttFill.h:37
1-D histogram with a double per channel (see TH1 documentation)}
Definition: TH1.h:614
virtual void SetDirectory(TDirectory *dir)
By default when an histogram is created, it is added to the list of histogram objects in the current ...
Definition: TH1.cxx:8259
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
Definition: TH1.cxx:3251
2-D histogram with a double per channel (see TH1 documentation)}
Definition: TH2.h:291
Int_t Fill(Double_t)
Invalid Fill method.
Definition: TH2.cxx:292
Random number generator class based on M.
Definition: TRandom3.h:27
virtual void Rannor(Float_t &a, Float_t &b)
Return 2 numbers distributed following a gaussian with mean=0 and sigma=1.
Definition: TRandom.cxx:481
virtual void Sleep(UInt_t milliSec)
Sleep milliSec milli seconds.
Definition: TSystem.cxx:446
virtual Bool_t ProcessEvents()
Process pending events (GUI, timers, sockets).
Definition: TSystem.cxx:425
const char * cnt
Definition: TXMLSetup.cxx:74
Author
Sergey Linev

Definition in file httpcontrol.C.