Back Midas Rome Roody Rootana
  Root Display GUI, all entries  Not logged in ELOG logo
ID Date Author Topic Subject
  155   26 Mar 2021 Alexey KalininBug Reportroody failed to start
Also, 
Mine TDirectory fOnlineHistDir (rootana online ) has more then 1000 histograms 
with difficult hierarchy. Starting roody -P (TNEtDirectory support) takes 30-60 
seconds, when jsroot THttpServer ready to go in a moment.
> roody failed to start with -P flag
> running rootana analyzer with -P argument
> commenting RecursiveRemove in TNetDirectory(.cxx .h) (rootana)  helps.
> Any other suggestions?
> Alexey.
  154   19 Mar 2021 Alexey KalininBug Reportroody failed to start
roody failed to start with -P flag
running rootana analyzer with -P argument
commenting RecursiveRemove in TNetDirectory(.cxx .h) (rootana)  helps.
Any other suggestions?
Alexey.
  153   03 Jun 2014 Dan MelconianBug ReportZeroing spectra using XML data source?
When we connect using TNet, we can zero spectra on the fly (which is
super-useful).  Using Xml (which is infinitely faster to load), it says
"ResetAll:  http://trinatdaq:9091: not implemented".  I guess the Xml way is
reading a text file rather than accessing the root file, so it isn't exactly
trivial to implement this, eh?  However, if someone brilliant knows how to do
this, that would really be great as it is really a nice feature when debugging
things.
  152   25 May 2012 Konstantin OlchanskiBug FixFixed the "Zones" menu
The "Zones" manu has not been working right - if you have a canvas open with one 
histogram plotted and you select Zones "2x2", nothing happens. The expected 
action is to have the canvas divide itself into 4 pads (2x2) and the one 
histogram to show up in the first pad. That's how it works now.

svn rev 240.
K.O.
  151   24 May 2012 Konstantin OlchanskiInforemoved ROOTSYS check
I removed the checks for ROOTSYS being the same at run time and compilation time. 
These checks never worked right and are unnecessary since we always install roody 
separately for each experiment and ROOTSYS settings are always consistent.
K.O.
  150   24 May 2012 Konstantin OlchanskiForumtest
test of Roody forum email notification. K.O.
  149   24 May 2012 Konstantin OlchanskiForumHow to access the SVN repo anonymously?
> I found that the SVN repo is forbidden for anonymous users now.

It is possible that you are referencing the SVN repo using the "svn:" access method. This access method was recently 
disabled.

Please switch to the "https:" method (username/password svn/svn) using this command:

cd .../roody
svn switch --relocate svn://ladd00.triumf.ca/roody https://ladd00.triumf.ca/svn/roody

K.O.
  148   13 May 2012 Konstantin OlchanskiForumHow to access the SVN repo anonymously?
> I found that the SVN repo is forbidden for anonymous users now.

Please use username "svn", password "svn", per instructions here:
http://www.triumf.info/wiki/DAQwiki/index.php/DaqSvn

K.O.
  147   23 Feb 2012 Exaos LeeForumHow to access the SVN repo anonymously?
I found that the SVN repo is forbidden for anonymous users now.
  146   25 May 2011 Jackie GlisterForumRefresh problem when drawing groups
I'm having a Roody refresh problem: when I draw groups in online mode the entire
canvas is refreshed with the most recently selected single histogram, instead of
the group.  I used svn to install the most recent version (svn checkout
svn://ladd00.triumf.ca/roody/trunk roody).  Any help would be greatly appreciated!
  145   19 Oct 2010 Konstantin OlchanskiBug Fixroody update, fix open of
> And you thought that roody was dead? Well, here is an update - implement "reopen" for ROOT files, add 
> "reopen" button to main menu, fix duplicated histogram names after "reopen" (at the cost of losing display 
> of histogram titles in the tree view).
> K.O.

Forgot to mention the main reason of this update: when looking at ROOT files, ROODY could not open any subdirectories because of some name 
changes inside ROOT. Now fixed.

ROODY svn rev 236
svn checkout https://ladd00.triumf.ca/svn/roody/trunk roody
K.O.
  144   19 Oct 2010 Konstantin OlchanskiInforoody good on macos 10.6.4
For the record, ROODY svn rev 236 builds and runs on MacOS 10.6.4 with ROOT 5.26.00c. K.O.
  143   19 Oct 2010 Konstantin OlchanskiBug Fixroody update
And you thought that roody was dead? Well, here is an update - implement "reopen" for ROOT files, add 
"reopen" button to main menu, fix duplicated histogram names after "reopen" (at the cost of losing display 
of histogram titles in the tree view).
K.O.
  142   22 Nov 2009 Exaos LeeSuggestionNew main.cxx for roody
The original "main.cxx" always produced "segmentation fault" on my system. So I 
rewrite a new one as the attached "main_el.cxx". It works stable on my systems. I 
use "getopt.h" to parse the command line options. Also, the options are altered 
as the following:
-------------------
--mhost, -M <mhost>   connect to MIDAS server <mhost>
--rhost, -R <rhost>   connect to ROOT server <rhost>
--port, -p <port>     connect to port <port>
--config, -c <xml>    Using config file <xml> in XML format
-------------------
The main_el.cxx doesn't pass options to TApplication except root file names. 
Please see the source in detail. I hope it may help.
Attachment 1: main_el.cxx
//
// main.cxx
//
// $Id$
//

#include <cstdlib>
#include <iostream>
#include <string>
#include <getopt.h>
using std::cout;
using std::endl;
using std::cerr;

#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <signal.h>

#ifdef OS_UNIX
#include <unistd.h>
#endif

#ifdef OS_WINNT
#include <process.h>
#endif 

#include "Roody.h"
#include "TApplication.h"
#include "rootsys.h"

//******** Command line options *************
static char* pname = NULL;
static const char* optStr = "M:R:p:c:h?";
static const struct option opts[] = {
  {"mhost", required_argument, NULL, 'M'},
  {"rhost", required_argument, NULL, 'R'},
  {"port",  required_argument, NULL, 'p'},
  {"config",required_argument, NULL, 'c'},
};

void usage()
{
  cout << "Usage:\n  " << pname 
       << " [options] [file1.root] [file2.root] .. [filen.hbook]" << endl
       << endl
       << "Options:" << endl
       << "  --mhost" << endl
       << "  -M <mhost>    -- Connect to MIDAS server <mhost>" << endl
       << "  --rhost" << endl
       << "  -R <rhost>    -- Connect to ROOT server <rhost>" << endl
       << "  --port" << endl
       << "  -p <port>     -- Connect to port <port>" << endl
       << "  --config" << endl
       << "  -c <xmlfile>  -- Using config file in XML format" << endl << endl
       << "  [files.root]  -- Load .root files" << endl
       << "  [files.hbook] -- Load .hbook files" << endl << endl;
}

//******** Main procedure *******************
int main(int argc, char *argv[])
{
  setbuf(stdout, 0);
  setbuf(stderr, 0);
  pname = argv[0];

#ifndef OS_WINNT
  signal(SIGBUS,  SIG_DFL);
  signal(SIGSEGV, SIG_DFL);
  signal(SIGPIPE, SIG_IGN);

  char const *env = getenv("ROOTSYS");  // enforce compiled-in ROOTSYS settings
  if (!env || strcmp(env,rootsys))  {
      struct stat st;
      int status = stat(rootsys,&st);
      if (status != 0)	{
	cerr << "main.cxx: Cannot use compiled-in ROOTSYS=\'"
	     << rootsys << "\': stat() error "
	     << errno << " (" << strerror(errno) << ")\n";
      } else if (st.st_mode&S_IFDIR == 0) {
	cerr << "main.cxx: Cannot use compiled-in ROOTSYS=\'"
	     << rootsys << "\', st_mode is 0"
	     << st.st_mode << ", probably not a directory\n";
      } else {
	cerr << "main.cxx: Re-executing \'" << argv[0]
	     << "\' with compiled-in ROOTSYS=\'" << rootsys << "\'\n";
	setenv( "ROOTSYS", rootsys, 1);
	execvp( argv[0], argv ); // does not return
	cerr << "execv(" << argv[0] << ") error " << errno
	     << " (" << strerror(errno) << ")\n";
	exit(1);
      }

      printf("main.cxx: Continuing with ROOTSYS=\'%s\' from local environment\n", env);
  }
#endif

  char** filenames = NULL;
  char*  hostname  = NULL;
  char*  nhostname = NULL;
  char*  xmlname   = NULL;
  int port = 0;
  int fileCount = 0;
  int longIdx = 0;

  int opt;
  std::string temp;
  do {
    opt = getopt_long(argc, argv, optStr, opts, &longIdx);
    switch(opt) {
    case 'M': hostname = optarg; break;
    case 'R': nhostname = optarg; break;
    case 'p': port = atoi(optarg); break;
    case 'c':
      temp = optarg;
      if(temp.find(".xml") == temp.npos) temp += ".xml";
      strcpy(xmlname, temp.c_str());
      break;
    case 'h':
    case '?':
    case 0:  usage();  return 0;
    break;
    default: break;
    }
  } while( opt != -1 );
  fileCount = argc - optind;
  if(fileCount > 0)
    filenames = argv + optind;

  TApplication* app = new TApplication( "App", 0, NULL );
  Roody* roody = new Roody();

  if (xmlname)
    roody->RestoreFile(xmlname);
  else
    roody->RestoreFile(NULL);

  if (hostname)
    roody->ConnectServer(hostname);

  if (nhostname)
    roody->ConnectNetDirectory(nhostname);

  for (int i=0; i<fileCount; i++)
    roody->OpenFile(filenames[i]);

  app->Run(kTRUE);
  return 0;
}

// end of file
  141   23 Jul 2009 Exaos LeeBug Fix[PATCH] ROODY kills analyzer too!!

Randolf Pohl wrote:
Hi,

I have fixed the bug:

diff roody_233/include/DataSourceTNetFolder.h roody_233_fixed/include/DataSourceTNetFolder.h
100c100
< uint32_t p = 0;
---
> uintptr_t p = 0;

(Both Exaos and I were/are using roody on 64 bit machines.)

Best regards,

Randolf


Oh, GOD! From Wednesday, I have took almost one day to find the BUG and fix it. Then I found your post here. Tongue
  140   17 May 2009 Randolf PohlBug Fix[PATCH] ROODY kills analyzer too!!
Hi,

I have fixed the bug:

diff roody_233/include/DataSourceTNetFolder.h roody_233_fixed/include/DataSourceTNetFolder.h
100c100
< uint32_t p = 0;
---
> uintptr_t p = 0;

(Both Exaos and I were/are using roody on 64 bit machines.)

Best regards,

Randolf
  139   07 Mar 2008 Stefan RittBug ReportRevision 221 works! But not remotely.

Randolf Pohl wrote:
Just an idea: Are all necessary ports open on the receiving machine? Maybe the analyzer is just collateral damage, in reality roody commits suicide because the firewall is nasty to him?


The connection between ROODY and the analyzer works only on a single port, but if anybody wants to connect via the underlying MIDAS layer there is a two-way communication: 1) "odbedit -h <host>" connects to host <host> on port 1175 and 2) mserver on <host> connects back to odbedit on an arbitrary port. For 2), one has to excempt the client program (in this case odbedit) from the firewall for all ports on the remote client and the server program port 1175 on the <host> machine. But I'm not sure if this is your problem right now.
  138   07 Mar 2008 Randolf PohlBug ReportRevision 221 works! But not remotely.
Hi,


Exaos Lee wrote:
I recompiled the roody of revision 221 and found this revision works. But when I run roody remotely, it still keeps killing the analyzer 100%. Frown


We used 220 (not 221) successfully, but only locally.
Now that you say it I think I recall I could not get roody to run remotely. Don't remember the exact reasons, though.
What I did then was to "ssh -X" from the remote machine into the backend and start roody there (Actually a button with a beautiful picture enabled the users to do so).

Just an idea: Are all necessary ports open on the receiving machine? Maybe the analyzer is just collateral damage, in reality roody commits suicide because the firewall is nasty to him?

I don't have my machines set up at the moment. One of the machines stayed in a box at PSI. So I can't really help you, I am sorry. I think it's time for the specialists now. Anybody there???!?! Smile

Good luck,

Randolf
  137   04 Mar 2008 Exaos LeeBug ReportRevision 221 works! But not remotely.
I recompiled the roody of revision 221 and found this revision works. But when I run roody remotely, it still keeps killing the analyzer 100%. Frown

Hope somebody can fix it.
  135   03 Mar 2008 Randolf PohlBug ReportROODY kills analyzer too!!
Hi,

I had the very same problem last summer during our beam time. Don't know the revision, but it was the tarball I downloaded around mid-July.
Symptom: The MIDAS (online) analyzer crashed as soon as roody was started. Started, i.e. before any user interaction became even possible. And the crash happened always. 100.0%.

My workaround was: Use roody rev. 220.
No crashes, beam time saved.

I attach 2 outputs I saved at that time.

Oh, yes: I still have the sources and such. Last modified date is July 9 and earlier (see attachment 3). I can send them around if you want to find the revision and bracket the offending commits. (I wish you were using "git". Ever read about git-bisect?)

Cheers,

Randolf

PS: Konstantin, I had promised you to try and pin down the problem after the run. Obviously I forgot, sorry. Please tell me if I can be of any help now.
Attachment 1: crash-analyzer.txt
Lamb_be>./bin/analyzer -e lamb07
Connect to experiment lamb07...OK
Loading previous online histos from /data/lamb/2007/data/last.root
Root server listening on port 9090...
Running analyzer online. Stop with "!"

 *** Break *** segmentation violation
Using host libthread_db library "/lib64/libthread_db.so.1".
Attaching to program: /proc/2785/exe, process 2785
[Thread debugging using libthread_db enabled]
[New Thread 46971434529216 (LWP 2785)]
[New Thread 1090525504 (LWP 2789)]
[New Thread 1082132800 (LWP 2786)]
0x00002ab8635f5302 in __select_nocancel () from /lib64/libc.so.6
Thread 3 (Thread 1082132800 (LWP 2786)):
#0  0x00002ab85ecde0ab in __accept_nocancel () from /lib64/libpthread.so.0
#1  0x00002ab85f82d510 in TUnixSystem::AcceptConnection ()
   from /usr/local/root/lib/root/libCore.so.5.14
#2  0x00002ab85f822592 in TServerSocket::Accept ()
   from /usr/local/root/lib/root/libCore.so.5.14
#3  0x000000000041a9ff in root_socket_server (arg=<value optimized out>)
    at src/mana.c:5454
#4  0x00002ab862df728a in TThread::Function ()
   from /usr/local/root/lib/root/libThread.so.5.14
#5  0x00002ab85ecd709e in start_thread () from /lib64/libpthread.so.0
#6  0x00002ab8635fb4cd in clone () from /lib64/libc.so.6
#7  0x0000000000000000 in ?? ()

Thread 2 (Thread 1090525504 (LWP 2789)):
#0  0x00002ab8635cce1f in waitpid () from /lib64/libc.so.6
#1  0x00002ab863575491 in do_system () from /lib64/libc.so.6
#2  0x00002ab863575817 in system () from /lib64/libc.so.6
#3  0x00002ab85f831851 in TUnixSystem::StackTrace ()
   from /usr/local/root/lib/root/libCore.so.5.14
#4  0x00002ab85f830a4a in TUnixSystem::DispatchSignals ()
   from /usr/local/root/lib/root/libCore.so.5.14
#5  <signal handler called>
#6  0x000000000041b339 in root_server_thread (arg=<value optimized out>)
    at src/mana.c:5333
#7  0x00002ab862df728a in TThread::Function ()
   from /usr/local/root/lib/root/libThread.so.5.14
#8  0x00002ab85ecd709e in start_thread () from /lib64/libpthread.so.0
#9  0x00002ab8635fb4cd in clone () from /lib64/libc.so.6
#10 0x0000000000000000 in ?? ()

Thread 1 (Thread 46971434529216 (LWP 2785)):
#0  0x00002ab8635f5302 in __select_nocancel () from /lib64/libc.so.6
#1  0x00000000004449e7 in ss_suspend (millisec=1000, msg=0)
    at src/system.c:3285
#2  0x000000000043acf3 in cm_yield (millisec=1000) at src/midas.c:3607
#3  0x000000000041afea in loop_online () at src/mana.c:3785
#4  0x000000000041dfba in main (argc=<value optimized out>, 
    argv=<value optimized out>) at src/mana.c:5756
#0  0x00002ab8635f5302 in __select_nocancel () from /lib64/libc.so.6
[midas.c:1592:] cm_disconnect_experiment not called at end of program
Lamb_be>
Attachment 2: crash-roody.txt
Lamb_be>roody -h localhost
main.cxx: Re-executing 'roody' with compiled-in ROOTSYS='/usr/local/root'
SetOptStat("nemri") got 1001111
Unable to open file "default.xml": No such file or directory
ReadRemoteObject trig_start from folder histos
Folder histos pointer 0
ReadRemoteObject trig_pattern from folder histos
ReadRemoteObject trig_tdc from folder histos
SysError in <TUnixSystem::UnixSend>: send (Broken pipe)
ReadRemoteObject trig_adc from folder histos
ReadRemoteObject trig_detector from folder histos
ReadRemoteObject trig_fadc from folder histos
ReadRemoteObject trig_cool from folder histos
ReadRemoteObject trig_display from folder histos
ReadRemoteObject lambdameter from folder histos
Attachment 3: roody-tarball-dir.txt
Lamb_be>l include/
total 68
-rw-r--r-- 1 root root  815 Sep 27  2006 CanvasLimits.h
-rw-r--r-- 1 root root 1453 Sep 27  2006 DataSourceBase.h
-rw-r--r-- 1 root root  833 Jul  9  2007 DataSourceNetDirectory.h
-rw-r--r-- 1 root root  683 Oct  7  2006 DataSourceTDirectory.h
-rw-r--r-- 1 root root 6016 Jul  8  2007 DataSourceTNetFolder.h
-rw-r--r-- 1 root root 1091 Jul  9  2007 MTGListTree.h
-rw-r--r-- 1 root root 7068 Jul  9  2007 Roody.h
-rw-r--r-- 1 root root 1112 Sep 27  2006 RoodyXML.h
-rw-r--r-- 1 root root 1883 Dec  5  2006 TAxisLimitsDialog.h
-rw-r--r-- 1 root root 1664 Sep 27  2006 TGTextDialog.h
-rw-r--r-- 1 root root 2519 Sep 27  2006 TPeakFindPanel.h
-rw-r--r-- 1 root root 4599 Sep 27  2006 mxml.h
-rw-r--r-- 1 root root   41 Jul 30  2007 rootsys.h
-rw-r--r-- 1 root root  558 Sep 27  2006 strlcpy.h
Lamb_be>l src/*.c*
-rw-r--r-- 1 root root    18 Aug 21  2006 src/.cvsignore
-rw-r--r-- 1 root root  4064 Jul  9  2007 src/DataSourceTDirectory.cxx
-rw-r--r-- 1 root root  5222 Jul  9  2007 src/MTGListTree.cxx
-rw-r--r-- 1 root root 75044 Jul  9  2007 src/Roody.cxx
-rw-r--r-- 1 root root  3587 Sep 27  2006 src/RoodyXML.cxx
-rw-r--r-- 1 root root  6798 Dec  5  2006 src/TAxisLimitsDialog.cxx
-rw-r--r-- 1 root root  4949 Sep 27  2006 src/TGTextDialog.cxx
-rw-r--r-- 1 root root 22120 Jul 25  2007 src/TPeakFindPanel.cxx
-rw-r--r-- 1 root root 22097 Sep 27  2006 src/TPeakFindPanel.cxx~
-rw-r--r-- 1 root root  3552 Jul  9  2007 src/main.cxx
-rw-r--r-- 1 root root 62288 Sep 27  2006 src/mxml.c
-rw-r--r-- 1 root root  2120 Sep 27  2006 src/strlcpy.c

  134   02 Mar 2008 Exaos LeeBug ReportROODY kills analyzer too!!
I compiled roody svn231 with ROOT 5.18.00 and gcc 4.1 on Debain Linux 4.0 (AMD64).
I tested the roody with the "examples/experiment" in MIDAS svn4124 and
encountered the following error:
Error in <TFile::TFile>: file /last.root does not exist

 *** Break *** segmentation violation

 Program received signal SIGSEGV, Segmentation fault.
 [Switching to Thread 1090525536 (LWP 17985)]
 0x00000000004114e6 in root_server_thread (arg=<value optimized out>) at src/mana.c:5333
 Current language:  auto; currently c++
 (gdb) next
 [midas.c:2416:bm_validate_client_index,ERROR] Invalid client index 1 in buffer 'SYSMSG'. Client name '', pid 0 should be 17973
 0x00002b800b8a5460 in sighandler () from /opt/ROOT/Versions/Current/lib/libCore.so.5.18
 (gdb) next
 Single stepping until exit from function _Z10sighandleri, 
 which has no line number information.
 Cannot remove breakpoints because program is no longer writable.
 It might be running in another process.
 Further execution is probably impossible.
 0x00002b800b8a546e in sighandler () from /opt/ROOT/Versions/Current/lib/libCore.so.5.18
 ptrace: &#23052;&#8451;&#28225;&#38317;&#65348;&#37340;&#26473;&#28058;&#9660;.
 (gdb) next
 Single stepping until exit from function _Z10sighandleri, 
 which has no line number information.
 Cannot remove breakpoints because program is no longer writable.
 It might be running in another process.
 Further execution is probably impossible.
 0x00002b800b8a546e in sighandler () from /opt/ROOT/Versions/Current/lib/libCore.so.5.18
 ptrace: &#23052;&#8451;&#28225;&#38317;&#65348;&#37340;&#26473;&#28058;&#9660;.
 (gdb) next
 Single stepping until exit from function _Z10sighandleri, 
 which has no line number information.
 Cannot remove breakpoints because program is no longer writable.
 It might be running in another process.
 Further execution is probably impossible.
 0x00002b800b8a546e in sighandler () from /opt/ROOT/Versions/Current/lib/libCore.so.5.18

The system information is as the following:
$ uname -a
Linux daq-heg 2.6.18-5-amd64 #1 SMP Sat Dec 22 20:43:59 UTC 2007 x86_64 GNU/Linux

$ gcc -v
Using built-in specs.
Target: x86_64-linux-gnu
Configured with: ../src/configure -v 
--enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr 
--enable-shared --with-system-zlib --libexecdir=/usr/lib 
--without-included-gettext --enable-threads=posix --enable-nls 
--program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu 
--enable-libstdcxx-debug --enable-mpfr --enable-checking=release 
x86_64-linux-gnu
Thread model: posix
gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)

$ root-config --config
linuxx8664gcc --prefix=/opt/ROOT/Versions/5.18.00-gcc 
--datadir=/opt/ROOT/Versions/5.18.00-gcc/share 
--docdir=/opt/ROOT/Versions/5.18.00-gcc/doc 
--incdir=/opt/ROOT/Versions/5.18.00-gcc/include 
--libdir=/opt/ROOT/Versions/5.18.00-gcc/lib 
--etcdir=/opt/ROOT/Versions/5.18.00-gcc/etc 
--elispdir=/opt/ROOT/Versions/5.18.00-gcc/share/emacs/site-lisp --enable-cern 
--with-cern-libdir=/usr/lib --enable-fftw3 --enable-gdml --enable-mathcore 
--enable-mathmore --enable-opengl --enable-python --enable-qt --enable-roofit 
--enable-ruby --enable-shared --enable-soversion --enable-ssl --enable-xml 
--enable-xft --enable-xrootd --enable-g4root 
--with-g4-incdir=/opt/GEANT4/Versions/9.0.p01/include 
--with-g4-libdir=/opt/GEANT4/Versions/9.0.p01/lib/Linux-g++

Any idea to fix this problem?
  133   18 Feb 2008 Jimmy NgaiBug ReportRoody kills MIDAS Analyzer
Hi All,

I'm running Roody with MIDAS 2.0.0 and ROOT 5.14e on Scientific Linux 4.4. 
When Roody is monitoring the online histograms on Localhost, there are two 
possibilities that Roody will kill the MIDAS Analyzer: 
1) quiting Roody
2) unzoom a histogram when auto-refresh is on

Any ideas?

Best Regards,
Jimmy
  132   19 Nov 2007 John M O'DonnellBug Fixuint32_t or UInt_t
I'm using Redhat workstation with:
  gcc version 3.3.3 20040412 (Red Hat Linux 3.3.3-7)
  ROOT version 5.16/00

it is unlikely that UInt_t will ever be too small.  If it is too small, then ROOT will
break!  It is clearly intended to be 32 bits long.  From Rtypes.h:

#ifdef R__INT16
typedef long           Int_t;       //Signed integer 4 bytes
typedef unsigned long  UInt_t;      //Unsigned integer 4 bytes
#else
typedef int            Int_t;       //Signed integer 4 bytes (int)
typedef unsigned int   UInt_t;      //Unsigned integer 4 bytes (unsigned int)
#endif

Of course, stdint.h is defined in a standard.  However ROOT doesn't really try to follow
the standard (CINT compiles a language similar to C++, but not exactly C++), and indeed
the file stdint.h is not explicitly included in any of $ROOTSYS/include/*.h.

John.

> > I just downloaded and compiled the latest tarball.
> > 
> > line 98 of DataSourceTNetFolder.h complained about unit32_t.  While I could have
> > added an include to make this work, I instead changed it to use the ROOT type
> > UInt_t.
> 
> Uint_t is technically incorrect. The data returned from the socket connection is a
> 32-bit pointer to an object in the remote process (how do they come up with
> communication protocols like this?!?). The type "Uint_t" is not defined to be of any
> particular size and is not necessarily big enough to hold a 32-bit unsigned integer.
> 
> According to the "C99" standard, the correct C data type for 32-bit unsigned
> integers is uint32_t, defined in "#include <stdint.h>", e.g. see
> http://www.oreillynet.com/pub/a/network/2003/10/07/michael_barr.html
> 
> I have now added the missing "#include <stdint.h>" statement to
> DataSourceTNetFolder.h, commited as revision 230.
> 
> I am puzzled why the code compiled without this include statement, possibly on my
> SL4.3 machine with ROOT v5.16.00, some ROOT or system header file included it for
> me. I am curious what system you use where this code failed to compile?
> 
> K.O.
  131   16 Nov 2007 Konstantin OlchanskiBug Fixuint32_t or UInt_t
> I just downloaded and compiled the latest tarball.
> 
> line 98 of DataSourceTNetFolder.h complained about unit32_t.  While I could have
> added an include to make this work, I instead changed it to use the ROOT type
> UInt_t.

Uint_t is technically incorrect. The data returned from the socket connection is a
32-bit pointer to an object in the remote process (how do they come up with
communication protocols like this?!?). The type "Uint_t" is not defined to be of any
particular size and is not necessarily big enough to hold a 32-bit unsigned integer.

According to the "C99" standard, the correct C data type for 32-bit unsigned
integers is uint32_t, defined in "#include <stdint.h>", e.g. see
http://www.oreillynet.com/pub/a/network/2003/10/07/michael_barr.html

I have now added the missing "#include <stdint.h>" statement to
DataSourceTNetFolder.h, commited as revision 230.

I am puzzled why the code compiled without this include statement, possibly on my
SL4.3 machine with ROOT v5.16.00, some ROOT or system header file included it for
me. I am curious what system you use where this code failed to compile?

K.O.
  130   16 Nov 2007 John M O'DonnellBug Fixuint32_t or UInt_t
I just downloaded and compiled the latest tarball.

line 98 of DataSourceTNetFolder.h complained about unit32_t.  While I could have
added an include to make this work, I instead changed it to use the ROOT type
UInt_t.

Perhaps this change should be included in the distribution
Attachment 1: DataSourceTNetFolder.h
//
// DataSourceTNetFolder.h
//
// $Id$
//

#include "DataSourceBase.h"

#include "TSocket.h"
#include "TFolder.h"

class DataSourceTNetFolder: public DataSourceBase
{
 private:
  TSocket *fSocket;

 public:
  DataSourceTNetFolder(TSocket* socket) // ctor
    {
      fName = socket->GetName();
      fName += ":";
      char buf[256];
      sprintf(buf, "%d", socket->GetPort());
      fName += buf;
      fSocket = socket;
    }

  ~DataSourceTNetFolder() // dtor
    {
      fSocket = NULL;
    }

  void Close()
    {
      fSocket->Close();
    }

  void Reopen()
    {
      std::string host = fSocket->GetName();
      int         port = fSocket->GetPort();
      fSocket->Close();
      delete fSocket;
      fSocket = new TSocket(host.c_str(), port);
    }

  static TObjArray* ListRemoteObjects(TSocket* sock, const char* foldername)
    {
      size_t p = 0;
      
      {
	std::string str = "GetPointer ";
	str += foldername;
	if (!sock->Send(str.c_str()))
	  return NULL;
	
	TMessage *m = NULL;
	if (!sock->Recv(m))
	  return NULL;
	
	if (!m)
	  return NULL;
	
	*m >> p;
	delete m;
	m = NULL;
      }

      if (!sock->Send("GetListOfFolders"))
	return NULL;

      TMessage m(kMESS_ANY);
      m.Reset();
      m << p;

      if (!sock->Send(m))
	return NULL;

      TMessage *mr = 0;
      if (!sock->Recv(mr))
	return NULL;

      TObjArray *list = NULL;

      if (mr)
	{
	  list = (TObjArray *) mr->ReadObjectAny(mr->GetClass());
	}
      
      delete mr;
      return list;
    }

  static TObject* ReadRemoteObject(TSocket* sock, const char* foldername, const char* objname)
    {
      printf("ReadRemoteObject %s from folder %s\n", objname, foldername);

      UInt_t p = 0;
      
      {
	std::string str = "GetPointer ";
	str += foldername;
	if (!sock->Send(str.c_str()))
	  return NULL;
	
	TMessage *m = NULL;
	if (!sock->Recv(m))
	  return NULL;
	
	if (!m)
	  return NULL;
	
	*m >> p;
	delete m;
	m = NULL;
      }

      printf("Folder %s pointer %d\n", foldername, (int)p);

      {
	std::string str = "FindObject ";
	str += objname;
	if (!sock->Send(str.c_str()))
	  return NULL;

	TMessage m(kMESS_ANY);
	m.Reset();
	m << p;
	if (!sock->Send(m))
	  return NULL;

	TMessage *mr = 0;

	if (!sock->Recv(mr))
	  return NULL;

	TObject *obj = NULL;

	if (mr)
	  {
	    bool adddir = TH1::AddDirectoryStatus();
	    TH1::AddDirectory(false);

	    obj = (TObject*)mr->ReadObjectAny(0);

	    TH1::AddDirectory(adddir);
	  }
	
	delete mr;
	return obj;
      }
    }

  static void ExecuteRemoteCommand(TSocket* socket, const char *line)
    {
      if (!socket->IsValid())
	return;
      
      // The line is executed by the CINT of the server
      socket->Send("Execute");
      socket->Send(line);
    }

  void EnumerateTFolder(ObjectList* list, TFolder* f, ObjectPath path)
  {
    TIterator   *iterator = f->GetListOfFolders()->MakeIterator();
    while (1)
      {
	TNamed *obj = (TNamed*)iterator->Next();
	if (obj == NULL)
	  break;

	const char* classname = obj->ClassName();
	const char* name      = obj->GetName();

	if (strcmp(classname,"TFolder") == 0)
	  {
	    TFolder* f = (TFolder*)obj;
	    ObjectPath p = path;
	    p.push_back(name);
	    EnumerateTFolder(list, f, p);
	  }
	//else if (strcmp(classname,"TDirectory") == 0)
	//  {
	//    TDirectory* d = (TDirectory*)obj;
	//    ObjectPath p = path;
	//    p.push_back(name);
	//    EnumerateTDirectory(list, d, p);
	//  }
	else
	  {
	    ObjectPath p = path;
	    std::string s;
	    s += name;
	    //s += "(";
	    //s += classname;
	    //s += ")";
	    p.push_back(s);
	    list->push_back(p);
	  }
      }
  }

  TFolder* ReadFolder(const char* foldername, ObjectPath path, const char* name)
    {
      TObject* obj = ReadRemoteObject(fSocket, foldername, name);
      if (!obj)
	return NULL;

      if (obj->InheritsFrom(TFolder::Class()))
	return (TFolder*)obj;

      ObjectPath p = path;
      p.push_back(name);

      return NULL;
    }

  void Enumerate(ObjectList* list, const char* foldername, ObjectPath path)
  {
    TCollection *contents = ListRemoteObjects(fSocket, foldername);
    if (!contents)
      return;
    TIterator   *iterator = contents->MakeIterator();
    while (1)
      {
	TNamed *obj = (TNamed*)iterator->Next();
	if (obj == NULL)
	  break;

	const char* classname = obj->ClassName();
	const char* name      = obj->GetName();

	if (strcmp(classname,"TObjString") == 0)
	  {
	    TObject* xobj = ReadRemoteObject(fSocket, foldername, name);
	    if (!xobj)
	      continue;
	    
	    if (xobj->InheritsFrom(TFolder::Class()))
	      {
		TFolder *fff = (TFolder*)xobj;
		ObjectPath p = path;
		p.push_back(name);
		EnumerateTFolder(list, fff, p);
		continue;
	      }
	  }

	ObjectPath p = path;
	std::string s;
	s += name;
	//s += "(";
	//s += classname;
	//s += ")";
	p.push_back(s);
	list->push_back(p);
      }
  }

  ObjectList GetList()
  {
    ObjectList list;
    ObjectPath path;
    path.push_back(fName);
    char *topfolder = "histos";
    path.push_back(topfolder);
    Enumerate(&list, topfolder, path);
    return list;
  }

  TObject* GetObject(const ObjectPath& path)
    {
      //gDirectory->pwd();
      //gDirectory->ls();
      
      const char *name = path.back().c_str();
      printf("Get object %s from %s\n", name, fName.c_str());

      const char *foldername = path[path.size()-2].c_str();

      TObject* obj = ReadRemoteObject(fSocket, foldername, name);

      return obj;
    }

  void ResetAll()
  {
    printf("ResetAll %s\n", fName.c_str());

    ExecuteRemoteCommand(fSocket, "gAnalyzer->ResetAllHistos()");
  }

  void ResetObject(const ObjectPath& path)
  {
    printf("ResetObject %s\n", path.toString().c_str());

    std::string name = path.back();

    std::string s;
... 17 more lines ...
  129   04 Dec 2006 Konstantin OlchanskiBug FixAdd menu for SetOptStat
I commited the implementation for a new menu item: "OptStat". It allows setting
gStyle->SetOptStat in a user-friendly manner. K.O.
  128   26 Sep 2006 Konstantin OlchanskiInfoNew version coming up...
> > FYI, I am presently working in an updated version of roody.
> 
> The new version of Roody has been commited.
> 
> It has been tested only on Linux (SL4.3) and while we are shaking out the new bugs,
> all are welcome to try it and report any problems. It should not eat your data.
> 
> If the new version does not work for you at all, the old version was preserved as
> an SVN branch, accessible using this SVN command:
> svn checkout svn://ladd00.triumf.ca/roody/branches/roody-v1 roody-v1

(the email notification for this message did not work at first, trying again)

K.O.
  125   26 Sep 2006 Konstantin OlchanskiInfoNew version coming up...
> FYI, I am presently working in an updated version of roody.

The new version of Roody has been commited.

It has been tested only on Linux (SL4.3) and while we are shaking out the new bugs,
all are welcome to try it and report any problems. It should not eat your data.

If the new version does not work for you at all, the old version was preserved as
an SVN branch, accessible using this SVN command:
svn checkout svn://ladd00.triumf.ca/roody/branches/roody-v1 roody-v1

K.O.
  124   04 Sep 2006 Konstantin OlchanskiInfoadded "make docs"
I commited the missing images, fixed the doxygen config file and added the "make docs" target. Now 
"make docs" will generate the documentation and place it into the directory "html". K.O.
  123   04 Sep 2006 Konstantin OlchanskiInforoody CVS converted to SVN
The ROODY source code repository has been converted from CVS to SVN.

The new command to "get" the sources is:
svn checkout svn://ladd00.triumf.ca/roody/trunk roody

At this time, I do not know how to "convert" a local CVS checkout tree into an SVN checout tree other than 
by brute force (new svn checout, copy modified files from the cvs checout, erase the old cvs checkout 
tree).

For the latest ROODY insructions, please visit http://daq-plone.triumf.ca/SR/ROODY/

K.O.
  122   27 Aug 2006 Konstantin OlchanskiInfoNew version coming up...
FYI, I am presently working in an updated version of roody.

The user interface, GUI and user-visible functionality I am leaving alone. The under-the-hood handling of 
histogram data I am reworking using our latest understanding of the workings of ROOT (object ownership, 
etc) and C++ (hey, with STL std::map, C++ is as easy as perl!).

The updated version may also fix some of the existing problems- crashes caused by confused object 
ownership rules, long startup times (current code has to look at every existing histogram before starting- 
slow if many histograms in an online folder) and inability to display TGraph objects (that is what started 
me working on the code).

While at it, we will move the Roody code repository from CVS to SVN.

K.O.
  121   21 Aug 2006 Konstantin OlchanskiBug FixBetter zoom & rebin controls, show TDirectory contents
I commited a series of changed to Roody:
- cleanup unused files
- show contents of TDirectory objects (this used to work before, why was it
removed? It was a 1 line fix!)
- rework and simplify controls for zooming and rebinning of TCanvas contents
K.O.
  120   22 Jun 2006 Joe ChumaBug Fixroody refresh button fix (again)
The refresh button was in the wrong state the first time the user set the refresh rate for online histograms.
  119   07 Jun 2006 Joe ChumaBug Fixroody online fixes
Roody has been modified so the resetting of individual histograms should now work. This involved a check for "//" at beginning of path to histogram and remove if it is there.

Also, the properties of the refresh button have been changed. It is enabled when there is a socket connection, and if the refresh rate = 0, button says "refresh now", but if the refresh rate > 0, button toggles refresh on/off (with appropriate labeling).
  118   06 Jun 2006 Konstantin OlchanskiBug Fixminor fixes
> Minor fixes that escaped quality assurance by previous commiters:
> 2) have "make clean" remove obsolete stuff from src (src/roody, src/rootsys.h,
etc)
> 3) fix completely nonfunctional enforcement of setting ROOTSYS to the
compiled-in value: execv() should have been execvp() (my bug), actually do call
setenv("ROOTSYS","blah...") (OS_UNIX was not defined in the Makefile, bug by
previous committer).


(previous message was completely garbled by the Elog "ELCode" whatever it is)


Restored fixes (2) and (3) that were removed by a careless previous committer.

(Note this assumes windows has "setenv()", which I believe it does have, please
test compilation on Windows ASAP and let me know).

K.O.
  117   06 Jun 2006 Konstantin OlchanskiBug Fixminor fixes

Konstantin Olchanski wrote:
Minor fixes that escaped quality assurance by previous commiters:
2) have "make clean" remove obsolete stuff from src (src/roody, src/rootsys.h, etc)
3) fix completely nonfunctional enforcement of setting ROOTSYS to the compiled-in value: execv() should have been execvp() (my bug), actually do call setenv("ROOTSYS","blah...") (OS_UNIX was not defined in the Makefile, bug by previous committer).


Restored fixes (2) and (3) that were removed by a careless previous committer.

(Note this assumes windows has "setenv()", which I believe it does have, please test compilation on Windows ASAP and let me know).

K.O.
  116   06 Jun 2006 Konstantin OlchanskiInfoRoody still using CVS
To prevent confusion- according to Joe Chuma and Konstantin Olchanski, we are
still using CVS for Roody development. K.O.
  115   05 Jun 2006 Joe ChumaBug Fixreset histograms
Roody should now be able to reset online histograms. Use the "reset all" menu item to reset all online histograms, or use the right click context menu on individual histograms to reset just one histogram (or a set of histograms chosen by holding down the ctrl key while selecting). The latest ROME analyzer is required for these features to be used.
  114   19 Apr 2006 Joe ChumaBug Fixpause/restart button fixed
The pause/restart button was not working properly, as a result of some confusion about the return value from the TString Compare method. It should now be fixed.
  113   18 Apr 2006 Joe ChumaBug FixPause/Restart Refresh button added
A Pause/restart refresh button has been added to the Roody frame so users may quickly pause and restart online histogram refreshing.
  112   16 Mar 2006 Matthias SchneebeliBug ReportCompiling under windows
Hi,

when I try to compile roody under windows I get following errors.



c:\roody>nmake -f Makefile.win

Microsoft (R) Program Maintenance Utility, Version 7.00.9466
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

cl /D "OS_WINNT" /GX /GR /Ic:\roody\include /Ic:\roody\..\mxml /IC:\ROOT\include /I. /c /Foobj/Roody.obj src/Roody.cxx
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

Roody.cxx
c:\roody\include\Roody.h(388) : error C2039: 'size_t' : is not a member of 'std'
c:\roody\include\Roody.h(391) : error C2039: 'size_t' : is not a member of 'std'
c:\roody\include\Roody.h(396) : error C2039: 'clear' : is not a member of 'basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
src/Roody.cxx(754) : error C2061: syntax error : identifier 'xml'
src/Roody.cxx(755) : error C2228: left of '.rdstate' must have class/struct/union type
src/Roody.cxx(762) : error C2296: '<<' : illegal, left operand has type 'class std::basic_ofstream<char,struct std::char_traits<char> > &(__cdecl *)(void)'
src/Roody.cxx(762) : error C2297: '<<' : illegal, right operand has type 'char [9]'
src/Roody.cxx(768) : error C2296: '<<' : illegal, left operand has type 'class std::basic_ofstream<char,struct std::char_traits<char> > &(__cdecl *)(void)'
src/Roody.cxx(768) : error C2297: '<<' : illegal, right operand has type 'char [12]'
src/Roody.cxx(769) : error C2296: '<<' : illegal, left operand has type 'class std::basic_ofstream<char,struct std::char_traits<char> > &(__cdecl *)(void)'
src/Roody.cxx(769) : error C2297: '<<' : illegal, right operand has type 'char [11]'
src/Roody.cxx(770) : error C2296: '<<' : illegal, left operand has type 'class std::basic_ofstream<char,struct std::char_traits<char> > &(__cdecl *)(void)'
src/Roody.cxx(770) : error C2297: '<<' : illegal, right operand has type 'char [11]'
src/Roody.cxx(771) : error C2296: '<<' : illegal, left operand has type 'class std::basic_ofstream<char,struct std::char_traits<char> > &(__cdecl *)(void)'
  111   21 Dec 2005 Pierre-André AmaudruzBug Fixmxml
Roody is taking now the ../mxml directory. (Makefile, Makefile.win)
roody image is moved into bin (Makefile).
the local cvs mxml is empty now.
The template export bug fixed (removed export declaration).
  110   19 Dec 2005 Stefan RittBug Fixminor fixes

Konstantin Olchanski wrote:
4) fix an mxml bug imported from MIDAs land (xml output into a string buffer was corrupted).


That bug has already been fixed long time ago. The problem is that the mxml.c file now lives twice in repositories, once in standalone mxml package and once in roody, and they will always diverge if one does not properly apply changes from one repository to the other. Since we use mxml in midas, rome and elog, we use a separate repository "mxml", which you can access through subversion at

http://savannah.psi.ch/websvn/listing.php?repname=mxml&path=%2Ftrunk%2F

I would recommend to do the same for roody. The disadvantage will be that one has to check out two packages to build roody, the advantage will be that there will be only one mxml, and if one fixes/extends this one, it will be to the benefit of all projects. The current one has for example the new mxml_parse_entity function, so that one can make includes in XML files. And I plan to have a fast transparent binary XML cache for large XML files in the near future.

- Stefan
  109   19 Dec 2005 Stefan RittBug Fixminor fixes

Konstantin Olchanski wrote:
Minor fixes that escaped quality assurance by previous commiters


ROODY is again broken under Windows, can someone look into this:

c:\roody\include\Roody.h(364) : error C2143: syntax error : missing ';' before '
'template<''
c:\roody\include\Roody.h(364) : error C2501: 'export' : missing storage-class or
type specifiers
c:\roody\include\Roody.h(397) : error C2143: syntax error : missing ';' before '
'template<''
c:\roody\include\Roody.h(397) : error C2501: 'export' : missing storage-class or
type specifiers
c:\roody\include\Roody.h(397) : error C2086: 'int export' : redefinition
c:\roody\include\Roody.h(364) : see declaration of 'export'
NMAKE : fatal error U1077: 'cl' : return code '0x2'
Stop.

Regards,

Stefan
  108   19 Dec 2005 Konstantin OlchanskiBug Reportreconnect after midas analyzer is restarted?
When I restart the MIDAS analyzer, it looks like ROODY detects that the connection is broken, but does not reestablish it. Can somebody look into this? K.O.
  107   19 Dec 2005 Konstantin OlchanskiBug Fixminor fixes
Minor fixes that escaped quality assurance by previous commiters:
1) remove include/rootsys.h from cvs - it is a generated file
2) have "make clean" remove obsolete stuff from src (src/roody, src/rootsys.h, etc)
3) fix completely nonfunctional enforcement of setting ROOTSYS to the compiled-in value: execv() should have been execvp() (my bug), actually do call setenv("ROOTSYS","blah...") (OS_UNIX was not defined in the Makefile, bug by previous committer).
4) fix an mxml bug imported from MIDAs land (xml output into a string buffer was corrupted).
K.O.
  106   19 Dec 2005 Konstantin OlchanskiReleaseroody directory reorganization and Makefile changes
> 2) the files have been shuffled around

Joe, is there any particular reason why the roody executable is not placed into a
"bin" directory? Just curious. (As one could argue both way: .../bin/roody is more
consistant with MIDAS; .../bin/roody creates a junk directory with only one file
in it).

K.O.
  105   13 Dec 2005 Joe ChumaBug Fixroody graphics pad problems fixed
Problems with deciding which graphics pad to choose for drawing have been fixed.
 Now the group pads (created by choosing draw group from the group context menu)
and the zoom pad (created by choosing zoom option from the pad context menu) are
treated distinctly from the canvases titled "canvasN" for N=0,1,2,...  Also, a
user supplied zone setting will be displayed in the zones menu, and can be
chosen again later.  Problems with the cvs file locks have been repaired (by
P.Amaudruz).
  104   07 Dec 2005 Stefan RittInforoody directory reorganization and Makefile changes
> 1) roody has been converted from libxml2 to mxml
> 2) the files have been shuffled around so the *.cxx, *.cpp files
>    are in the roody/src/ directory, the *.h files are in the
>    roody/include/ directory, the Makefile is in the top roody/
>    directory which is where the roody executable goes while
>    roody.so now goes into the roody/lib/ directory. The mxml
>    files are in roody/mxml.  The *.o files now go into the
>    roody/obj/ directory (which is created by the Makefile if
>    it doesn't exist).
> 3) the Makefile has been redone and simplified, and the windows
>    stuff removed, since the windows version has its own makefile.
> 4) clicking on the Help About menu item now displays a message box
>    with the current version.  For now, the code must be edited
>    manually for each code revision, but it would be nice to automate
>    this. 

Compilation under Windows now works fine, many thanks.

I had however a problem under windows. Your scheme with the rootsys.h file does
not work under windows, since the ROOTSYS variable usually points to something
like c:\root. If I follow your scheme, I get following in rootsys.h

const char* rootsys = "c:\root";

where the "\r" is interpreted as a carriage return. I did not find a clever way to
convert this to 

const char* rootsys = "c:\\root";

in the Makefile, so for windows I just make it empty, like

const char* rootsys = "";

I changed your src/main.cxx to check for an empty rootsys, and if yes just take
the environment variable. I committed that change, I hope it's ok.

There is one small warning left whern running under windows;

C:\roody>bin\roody
Error in <TWinNTSystem::BaseName>: name = 0

Do I have to worry about that?

- Stefan
  103   29 Nov 2005 Joe ChumaReleaseroody directory reorganization and Makefile changes
1) roody has been converted from libxml2 to mxml
2) the files have been shuffled around so the *.cxx, *.cpp files
   are in the roody/src/ directory, the *.h files are in the
   roody/include/ directory, the Makefile is in the top roody/
   directory which is where the roody executable goes while
   roody.so now goes into the roody/lib/ directory. The mxml
   files are in roody/mxml.  The *.o files now go into the
   roody/obj/ directory (which is created by the Makefile if
   it doesn't exist).
3) the Makefile has been redone and simplified, and the windows
   stuff removed, since the windows version has its own makefile.
4) clicking on the Help About menu item now displays a message box
   with the current version.  For now, the code must be edited
   manually for each code revision, but it would be nice to automate
   this. 
  102   21 Nov 2005 Joe ChumaBug FixRoody xml fix
The xml code in Roody has been localized into RoodyXML to allow for future conversion to ROME xml (and a few bugs fixed in the xml code).
  101   27 Oct 2005 Stefan RittBug ReportVarious item when installing ROODY
Hi,

I tried to compile ROODY, and got following problems/issues:

- I see ROODY requires root V3.10.02, ROME requires root >=4, so I will never be able to compile the two packages together with one root installation. Is that true? Since we are already at root 5.04, it might be time to migrate ROODY to newer versions of ROOT...

- The Makefile.win is under roody/, Makefile is under roody/src, not very consistent, there is no "INSTALL" or "COPYING" file which is kind of GNU standard

- I tried to compile ROODY under windows, after having installed root 3.10, but it misses the libxml/ subtree

- For the non-expert users it would be good to supply a windows executable of roody, this way the don't have to bother with compiling

Best regards,

Stefan
  100   05 Jul 2005 Qing GuInfoAffect of different root versions on Roody
After changing ROOT version from root_v4.04.00 to root_v4.04.02, the histograms
don't stay highlighted after clicking, but the top "Roody" bar disappears sometimes.
  99   27 Jun 2005 Joe ChumaBug FixRoody fixes
Error messages from Roody will now appear as TGMsgBox forms which require the
user to click the "Dismiss" button to acknowledge the error message.  If the
user chooses the x-axis scales for an online histogram using the mouse to select
a range on the axis, that range will be used for re-displaying the histogram
when it is refreshed. However, if the user chooses "XaxisLimits" from the
context menu, that x-axis scaling will be used for all pads on that canvas, and
a range as described above will be overridden by this scaling.
  98   01 Jun 2005 Joe ChumaBug Fixmultiple bug fixes
Fixed refreshing of overlayed online histograms.
Fixed refresh now.
main.cxx:  class Roody now created on the stack instead of the heap.
TNetFolder.cpp:  fixed memory leak relating to TMessage pointer
                 returned by TSocket::Recv( TMessage * )
                 ?? is this related to the memory leak in the analyzer ??
  97   04 May 2005 Joe ChumaBug Fixroody bug fixes
1) Memory leak fixed:
 when the plotting destination set to replace, cloned objects with the canvas
 about to be closed are now being deleted first.
2) Group restore fixed:
 when restoring a saved session, and objects from file subdirectories were
 added to a group, they were not being included in that group.  Now the
 data file is searched recursively for subdirectories.
3) Group draw fixed:
 TH2 and TH3 objects in a group were not being drawn.
  96   19 Apr 2005 Konstantin OlchanskiInfocommited: macosx Makefile bits
The Makefile bits for building roody on MacOSX have been commited, tested on
MacOSX 10.3.9 with an unknown version of ROOT. Caveats: there is no support for
linking the roody shared library (volunteers are welcome!); there are warnings
about a double-include of libz when linking "roody" (ignore them). K.O.
  95   12 Apr 2005 Joe ChumaBug Fixmemory leak fix
A memory leak was fixed in Roody.cxx, which occurred when updating a histogram
from a NetFolder object.
  94   12 Apr 2005 Joe ChumaBug Fixmodified reset option implementation
The reset option has been modified to use the new "Command" option in mana.c
instead of the "Reset" option in mana.c, which has been removed.
  93   31 Mar 2005 Stefan RittBug Fixreset online histograms
> Roody can now reset online histograms via context menu or main menu.  This
> requires a small change in mana.c  Also, fixed a problem with segmentation
> faults when trying to connect to an invalid server port.

I saw that you implemented a "Reset" function in root_server_thread. This is not
necessary. You have the more general "Command" function which was meant for that.
You specify the object name, type, method to execute and optional arguments. Right
now, only the "Reset" command is implemented, but that's what you need. Can you
check if roody works with that? If so, can you remove the "Reset" function again ? 

Thanks,

  Stefan
  92   18 Mar 2005 Joe ChumaBug Fixcontext menu changes
The group context menu options are changed to "Draw group", "Reset group" and
"Delete group", where "Reset group" means reset any online members of the group
and will only appear if there are online members in that group.  Multiple
selections (left click while holding down the control key) now have a context
menu (right click to open) but the context menu for multiple selections will
only display "New canvas", "Add to group" and, if there are online members,
"Reset", since the options "Current pad", "Overlay on pad" and "Next pad" are
not relevant to multiple selections.  Online folders now have a context menu
with "New canvas", "Add to group" and "Reset" options.
  91   11 Mar 2005 Joe ChumaBug Fixreset online histograms
Roody can now reset online histograms via context menu or main menu.  This
requires a small change in mana.c  Also, fixed a problem with segmentation
faults when trying to connect to an invalid server port.
  90   10 Mar 2005 Joe ChumaBug Fixonline re-connection problem fixed
Fixed segmentation fault problems that occurred when connected online, then
having the connection broken, then re-establishing the connection, and then
clicking on an online item in the main window.  The problem is in TGListTree in
the ROOT code, and is fixed here by including 2 routines into MTGListTree.
  89   07 Feb 2005 Joe ChumaBug Fixonline timer fixed
The online timer has been modified for testing whether the online connection is
still valid. If the connection is broken, the timer tests the connection every
second until it has reconnected.  When the connection is finally remade, any
online histograms will again be refreshed as before.  This is now being done
with just the original timer, as 2 timers seem to conflict with each other.
  88   01 Feb 2005 Joe ChumaBug Fixfixed 2 problems introduced with yesterdays changes
Two bugs were introduced yesterday...
 -- program crashes when trying to connect online via  roody -h nodename
    (uninitialized pointer)
 -- program crashes when restoring an xml file which tries to use the
    external dtd file (unchecked error condition)
Both problems are now fixed.
  87   31 Jan 2005 Joe ChumaBug Fixchanges to online connection and xml
A timer has been added to check if the online socket remains valid.  If, say,
the analyzer has been stopped while running Roody, this will be detected and the
connection closed, then, every second, that connection will be attempted until
successful.  Also, the external dtd file, roody.dtd, has been eliminated in
favour of internal dtd verification. Please note that Roody is being linked with
Root version 4.00.08, as version 4.02.00 introduces problems, such as context
menu errors.
  86   28 Jan 2005 Joe ChumaBug Fixfixing y-axis scales
The y-axis scales can now be fixed just like the x-axis scales.  Choose
YaxisLimits from the context menu when right-clicking on a histogram frame and a
small dialog box will open in which you can enter the min and max values.  If
the frame is part of a multipad canvas, all pads on that canvas will be redrawn
with the new scales.  Choose YaxisLimits again and click on the Unzoom button to
unzoom all pads on that canvas.
  85   26 Jan 2005 Joe ChumaBug Fixzooming in on a multiframe canvas
A "ZoomOption" has been added to the context menu produced by right clicking 
anywhere on a histogram frame.  This opens up a new canvas, titled "Zoom
Canvas", containing a copy of the histogram in the original frame.
  84   24 Jan 2005 Joe ChumaBug Fixmulti-thousand histogram display problems in Roody - 2
A minor update to the previous bug fix...
Modified Roody.cxx to display the histogram name range instead of the counter
range on the subfolders when reading > 1000 histograms from a file.
  83   21 Jan 2005 Joe ChumaBug Fixmulti-thousand histogram display problems in Roody
When opening a .root file, if there are more than 1000 histograms in the file,
the display is divided up into folders, where each folder holds 250 histograms
(except for the final folder, which may be smaller).  This was done because of a
problem with TGListTree which only shows up with a large numbers of objects.
  82   17 Jan 2005 Konstantin OlchanskiInfoCVS instructions
Updated CVS instructions for ROODY:

1) cvs anonymous read-only access:
     export CVS_RSH=ssh
     cvs -d anoncvs@dasdevpc.triumf.ca:/usr/local/cvsroot checkout roody
    (username: anoncvs, password: anoncvs)
2) read-write cvs access (requires user account on dasdevpc.triumf.ca)
     export CVS_RSH=ssh
     cvs -d USERNAME@dasdevpc.triumf.ca:/usr/local/cvsroot checkout roody
3) build instructions:
     cvs ... checkout roody
     cd roody/src
     make
     ./roody {file.root,file.hbook,-Hhostname:port}

K.O.
  81   13 Jan 2005 John M O'DonnellBug Fixdisplaying cuts implementation
I have just sent a MIDAS patch to Stefan so that:

(1) cuts should be booked using TCutG *cut_book( const char *name).
    Usage is similar to h1_book etc.

(2) cuts are saved in last.root.

(3) cuts are restored from last.root.

I also fixed a bug in receiving cuts from ROODY.  The search for
cuts should be made only in gManaHistosFolder, not from gROOT.
Should this also be the case for GetPointer etc.?

I believe this implements a first pass at handling TCutG for MIDAS and ROODY.
To create a cut from scratch, one declares it in the analyzer init functions
using cut_book, and saves the pointer for use in the event-by-event code.
Then in ROODY, create a polygon, name it and send it to the analyzer (right click
on the polygon).

I believe the patchs which I have made should also be applied to ROME.

John.
  80   10 Jan 2005 Stefan RittBug Fixdisplaying cuts implementation
> A patch for mana.c so that MIDAS analyzers receive polygons has been sent to Stefan.

Patch has been submitted to CVS so mana.c is up-to-date.

- Stefan
  79   07 Jan 2005 John M O'DonnellBug Fixdisplaying cuts implementation
> Attached is a cvs patch to allow roody to display graphical cuts (TCutG).
> 
> Does somebody have the permissions to commit this patch to the cvs repository?
> 
> It also includes some hooks where code for updating a cut will be implmented.
> Updating cuts will be done with another patch, to both roody and midas.  This same
> mechanism can be used for creating new cuts and sending them to the analyzer.
> 
> The final part of this project will be a change to midas to allow cuts to be booked
> into (sub)folders.  I have some code which I am using for testing purposes, but I
> don't like where it stores the cuts for persistence between different invocations of
> the analyzer.  I'm thinking that cuts should be stored in last.root, and retrieved
> from there.
> 
> John.

cvs commit made today to support display of polygons, and sending polygons an analyzer.
A patch for mana.c so that MIDAS analyzers receive polygons has been sent to Stefan.

John.
  78   20 Dec 2004 John M O'DonnellBug Fixdisplaying cuts implementation
Attached is a cvs patch to allow roody to display graphical cuts (TCutG).

Does somebody have the permissions to commit this patch to the cvs repository?

It also includes some hooks where code for updating a cut will be implmented.
Updating cuts will be done with another patch, to both roody and midas.  This same
mechanism can be used for creating new cuts and sending them to the analyzer.

The final part of this project will be a change to midas to allow cuts to be booked
into (sub)folders.  I have some code which I am using for testing purposes, but I
don't like where it stores the cuts for persistence between different invocations of
the analyzer.  I'm thinking that cuts should be stored in last.root, and retrieved
from there.

John.
Attachment 1: cut_display.patch
? MTGListTreeDict.cxx
? MTGListTreeDict.h
? RoodyDict.cxx
? RoodyDict.h
? TGTextDialogDict.cxx
? TGTextDialogDict.h
? TNetFolderDict.cxx
? TNetFolderDict.h
? TPeakFindPanelDict.cxx
? TPeakFindPanelDict.h
? TXaxisLimitsDialogDict.cxx
? TXaxisLimitsDialogDict.h
? roody
Index: Roody.cxx
===================================================================
RCS file: /usr/local/cvsroot/roody/src/Roody.cxx,v
retrieving revision 1.42
diff -r1.42 Roody.cxx
284a285
>   AddSetCut();
673a675,689
> void Roody::AddSetCut()
> {
>   TClassMenuItem *menuItem = new TClassMenuItem( TClassMenuItem::kPopupUserFunction,
> 		                                 Roody::Class(),
> 						 "Send to Analyzer", "SetCut", this,
> 						 "TObject*", 0);
>   TCutG::Class()->GetMenuList()->AddFirst(menuItem);
> }
> 
> void Roody::SetCut(TObject *o)
> {
>   TCutG *cut = static_cast<TCutG*>(o);
> cout << "SetCut callback for " << cut->GetName() << " not yet implemented" << endl;
> }
> 
989a1006,1010
>   else if( obj->InheritsFrom(TCutG::Class()) )
>   {
>     TCutG *c = static_cast<TCutG*>(obj);
>     c->Draw();
>   }
2354a2376,2382
>     else if( type && type->Contains("TCutG") && !found )
>     {
>       fFileOnlineContents->AddItem( item, itemDescription.c_str(),
> 		                    (void*)new TObjString(name.c_str()),
> 				    gClient->GetPicture("cut_t.xpm"),
> 				    gClient->GetPicture("cut_t.xpm") );
>     }
2410a2439,2443
>   else if (object->InheritsFrom(TCutG::Class()) )
>   {
>     TCutG *cut = static_cast<TCutG*>(object);
>     DrawObject( dest, cut);
>   }
Index: Roody.h
===================================================================
RCS file: /usr/local/cvsroot/roody/src/Roody.h,v
retrieving revision 1.36
diff -r1.36 Roody.h
259a260
> #include "TCutG.h"
305a307
>   void SetCut(TObject *cut);
464a467
>   void AddSetCut();
Index: TNetFolder.cpp
===================================================================
RCS file: /usr/local/cvsroot/roody/src/TNetFolder.cpp,v
retrieving revision 1.1
diff -r1.1 TNetFolder.cpp
49,51c49,54
<   TObjArray *list = (TObjArray*) m->ReadObject(m->GetClass());
<   delete m;
<   return list;
---
>   if (m) {
>     TObjArray *list = (TObjArray*) m->ReadObject(m->GetClass());
>     delete m;
>     return list;
>   }
>   return 0;
  77   01 Dec 2004 Konstantin OlchanskiSuggestionHistogram zeroing, and extended histogram display manipulation
> >    We would also like the histogram view to be unaffected by refreshing. 
> > Currently the y axis is autoscaled after a refresh.
> 
> I thought this was fixed a long time ago...

Never mind that.

Vertical scale of online histograms *has* to change after a refresh- the number of
counts in an online histogram increases as it accumulates more data and the histogram
would grow up out of the visual range unless it is rescaled.

Now, we can be smart about this: for a zoomed histogram, we can freeze the "y" scaling
or we can maintain the zoom ratio while rescaling.

K.O.
  76   01 Dec 2004 Konstantin OlchanskiSuggestionHistogram zeroing, and extended histogram display manipulation
>   We need a simple way of zeroing online spectra, using the roody viewer to
> select which spectra are to be zeroed.

Problem confirmed: there is a button for "clear all", but no buttons for "clear
selected histograms" and "clear just this one histogram". It was suggested that the
right-click context menu for each histogram should have a "clear" action. Maybe same
for a "group".

>    We would also like the histogram view to be unaffected by refreshing. 
> Currently the y axis is autoscaled after a refresh.

I thought this was fixed a long time ago...

>   We would also like a quicker way of manipulating the histogram display, than
> by the awkward, particularly for canvases containing multiple histograms, axis
> manipulation currently available.

I am thinking along the lines of locking the "zooming" of all histograms: on a 2x2
panel of histograms, rezooming any one of them would rezoom the others the same way.

> This could be a toolbar similar to the view
> editor that already exists - are the contents of this customisable, or would a
> separate toolbar be needed?, and would ideally contain the following ...
>    4 buttons, which could each be labelled with a single arrow, for shifting the
> histogram left/right/up/down (e.g. by half the corresponding axis's range).  4
> buttons, which could each be labelled with double arrows, for scaling the x/y
> axes (scaling by factors of 2 and 0.5, about the axis's initial position).  3
> buttons for toggling linear/log scale on each axis (these are in the current
> view editor).  3 more buttons, for resetting the view to default, for retaining
> the current view and for reverting to a previously retained view.

This does not sound like something I can do in 5 minutes, maybe Joe Chuma would take
this on?

>   We would also like to be able to attach markers to a histogram (requiring
> another button to remove markers).  markers would be placed using mouse clicks
> on the histogram, *and* by a text entry box for typing channel numbers.  Markers
> would be labelled with x,y.  There would then be a button to expand an axis
> between the last 2 placed markers.  The markers would also be used for analysis
> such as integral and peakfind/fitting.

Maybe I am missing something, but is this not "standard root" functionality, using
the pad editor and adding "TLabels"?

>   The view manipulation toolbar would be one per canvas, so there would also
> need to be a toggle button to apply the view manipulation commands to all the
> histograms on that canvas, or to just the currently selected histogram[s] (a way
> to select several, rather than just one, histograms would be useful)

I like this: a control for selecting if the action is applied to just one histogram
or to all histograms in a group.

>    This would be very much quicker and easier to use than selecting items from
> long menus, which themselves need to be called by selecting specific, often very
> small, regions of a canvas.

I see: ROOT is geared very much for manipulating ONE graphical object at a time. We
want to manipulate MANY identical objects at the same time and the existing tools
are inadequate, for example because each object is physically very small and it is
hard to point-and-click it.

K.O.
  75   30 Nov 2004 chris pearsonSuggestionHistogram zeroing, and extended histogram display manipulation
  We need a simple way of zeroing online spectra, using the roody viewer to
select which spectra are to be zeroed.

   We would also like the histogram view to be unaffected by refreshing. 
Currently the y axis is autoscaled after a refresh.

  We would also like a quicker way of manipulating the histogram display, than
by the awkward, particularly for canvases containing multiple histograms, axis
manipulation currently available.  This could be a toolbar similar to the view
editor that already exists - are the contents of this customisable, or would a
separate toolbar be needed?, and would ideally contain the following ...
   4 buttons, which could each be labelled with a single arrow, for shifting the
histogram left/right/up/down (e.g. by half the corresponding axis's range).  4
buttons, which could each be labelled with double arrows, for scaling the x/y
axes (scaling by factors of 2 and 0.5, about the axis's initial position).  3
buttons for toggling linear/log scale on each axis (these are in the current
view editor).  3 more buttons, for resetting the view to default, for retaining
the current view and for reverting to a previously retained view.
  We would also like to be able to attach markers to a histogram (requiring
another button to remove markers).  markers would be placed using mouse clicks
on the histogram, *and* by a text entry box for typing channel numbers.  Markers
would be labelled with x,y.  There would then be a button to expand an axis
between the last 2 placed markers.  The markers would also be used for analysis
such as integral and peakfind/fitting.
  The view manipulation toolbar would be one per canvas, so there would also
need to be a toggle button to apply the view manipulation commands to all the
histograms on that canvas, or to just the currently selected histogram[s] (a way
to select several, rather than just one, histograms would be useful)

   This would be very much quicker and easier to use than selecting items from
long menus, which themselves need to be called by selecting specific, often very
small, regions of a canvas.

Chris
  74   04 Nov 2004 Joe ChumaBug Fixcvs commit
To set the x-axis limits, right click anywhere on a histogram frame and choose
"XaxisLimits" from the popup context menu.  This brings up a dialog box where
you can enter the xmin and xmax values. Click "OK" and all pads within the
currently selected canvas will be redrawn with that x-axis scale.  To reset all
histograms so the x-axes are unzoomed, click "Unzoom".

Every overlayed histogram on a currently drawn histogram, will be drawn in a
different color (up to the max number of colors).

When choosing a new pad division for a canvas (from the "Zones" menu), all
currently drawn histograms on that canvas will be redrawn in the new zones. If
there are fewer pads in the new configuration, the extra histograms are not
drawn.  Overlays (with their color) and x-axis scaling are preserved in the new
configuration.
  73   28 Oct 2004 Joe ChumaBug Fixcvs commit
When the number of zones (sub-pads) is changed, any histograms on the active
canvas will be redrawn on the new canvas.  Also, more general code clean-up.
  72   26 Oct 2004 Matthias SchneebeliSuggestionComments on Roody
I have committed point 1 and 2.

For point 3 you need to save all displayed histos in a stack. So that you can plot 
them into the rezoned canvas. I don't know if you want to do that.

I would prefer if you would do point 4.

Matthias
  71   22 Oct 2004 Joe ChumaSuggestionComments on Roody
> I have some comments on roody :
> 
> [snip]
> If you agree upon these requests, let me know if you like me to implement some 
> of these features.

These all seem like good suggestions and it is fine with me if you want
to work on the code.
  70   21 Oct 2004 Joe ChumaBug Fixcvs commit
Command line argument change:
   the space between -h and hostname is optional
   the space between -r and filename is optional

The save file is now an xml file validated with roody.dtd

When saving or restoring, if you enter a filename without an extension,
.xml will be appended.  The previous save file format is no longer
supported.

New files:  RoodyXML.h, RoodyXML.cxx, roody.dtd

Fixed up group problems when an online file is located in a folder.

Makefile modified to support libxml2.
  69   19 Oct 2004 Matthias SchneebeliSuggestionComments on Roody
I have some comments on roody :

1)
The peakfinder is only available when you right click on the histogram line.
This is a very limited area. I would rather make the peakfinder available 
whenever you right click anywhere in the histogram area.

2)
On a canvas with zones:
When you start the peakfinder from a histogram, which is not active, roody 
searches for peaks on the active histo. Therefore, I would make the histogram 
active, whenever you click on the histo, no matter which button you click. Or 
the peakfinder should make the histo active first.

3)
When you change the zones you loose all your histos. I would prefer to have the 
histos, which are already displayed also on the rezoned canvas. 

4)
When I resize the x-axis of a histogram by hand and then plot a new histogram 
in the same pad, I loose the scale I have choosen. There should be a switch, 
with which you can keep the settings of a histogram for further histos.

If you agree upon these requests, let me know if you like me to implement some 
of these features.
  68   08 Oct 2004 Joe ChumaInfoRoody cvs commit
Command line argument change:
 -h (or -H) followed by nothing shows program usage
 -hhostname or -hhostname:port connect to analyzer on given host (and port)
 -rsavefile restores savefile

Offline items added to a group are new removed from the group if the
file is closed.

Offline item titles are now displayed after the name if different than
the item name.

"Run# number" added to the item title if the filename contains a runnumber.
  67   05 Oct 2004 John M O'DonnellSuggestiondisplaying and selecting cuts
I have talked with Pierre-Andre and Stefan over the last few days about the need
to be able to display graphical cuts (TCutG) in Roody, and also to be able to
change them and send them back to the analyzer.

I expect to have some sample code for putting cuts into a folder sometime soon.
  66   30 Sep 2004 Joe ChumaInfomore right click features
Right click on Offline folder opens the file dialog.

Right click on Online folder opens the hostname dialog.

If only one group exists, you will not be asked to choose the group when adding items to a group.
  64   30 Sep 2004 Konstantin OlchanskiBug Reportanoncvs account not working anymore
> Access to Roody from anonymous is restored:
> cvs -e ssh -d anoncvs@midas.triumf.ca:/usr/local/cvsroot checkout roody
> pwd: anoncvs

What was the fix? I do not think it was ever broken, except for the name change from "miroodas" to "roody", which I could not document until Pierre restored this Elog forum 
a few hours ago. K.O.
  63   30 Sep 2004 Pierre-André AmaudruzBug Reportanoncvs account not working anymore
Access to Roody from anonymous is restored:

cvs -e ssh -d anoncvs@midas.triumf.ca:/usr/local/cvsroot checkout roody
pwd: anoncvs
  62   30 Sep 2004 Matthias SchneebeliBug Reportanoncvs account not working anymore
anoncvs account is not working anymore.

Please fix that.

Thanks 

Matthias
  61   20 Sep 2004 Joe multiple selection update
One can now select multiple histograms by holding down the CTRL key while
left clicking the mouse.  After selecting the histograms, keep holding down
the CTRL key and right click the mouse to bring up the context menu to add
these histograms to a previously created group.  Usefulness is somewhat
limited so far, but more functionality will be added later.
  60   14 Sep 2004 Konstantin CVS and Build instructions
Updated build instructions for end-users.

To checkout the miroodas sources use:

setenv CVS_RSH ssh
cvs -d anoncvs@dasdevpc:/usr/local/cvsroot checkout miroodas
(password: anoncvs)
cd miroodas/src
setenv ROOTSYS whatever
make
./TTriumfGui file.root or file.hbook

K.O.
  59   27 Jul 2004 Konstantin Readd the peak finder context menu item
The peak finder context menu item was present only for TH1D histograms and
absent in all other histograms. I fixed this by explicitely adding this item
to the class menu of all TH1X classes. K.O.
  58   20 Jul 2004 Joe Small fixes to TTriumfFileGUI
Added right click on online hostname to choose "Disconnect online".

Moved groups to top of the list displayed in the gui.

If the user entered save file name does not contain ".save" it will
be appended to the filename.
  57   20 Jul 2004 Pierre Re-framing effort on Miroodas continues...
Requirement List:
================
- To be done                   SW : Selection window
= Done                         GW : Graphic window
> Problem

1) Online capability
====================
- Socket connection to the Midas analyzer for histogram display.
- The Tree is not yet to be considered as yet not implemented in Root (Circular
buffer, NetTDirectory).
= done - Option of specifying the host name AND port number has to be present to
allow multiple parallel Miroodas session connected to different analyzer.
= done - Multiple Miroodas connecting to a given Midas experiment is already
available through the Midas analyzer local Root server.
= Retain the host:serverport for reconnection due to lost of possible communication
with the analyzer.
- Add RBclick for online disconnect.

2) Histogram update
===================
- While in online mode, simple mean of switching on/off the histogram update
with options such as: Single shot update, pause/resume update, change update
frequency need to be implemented.
- The update frequency is global to the application and therefore appears in a
pull-down menu in the SW.
- While the "Refresh", "Off", "On" are in the menu bar, should also be present in the
RBClick menu in either the SW or GW.

3) Open Offline Files
=====================
Possibility of concurrently open multiple files of the .root AND .hbook
file type. So far only the histogram part of the content of the files are
retrieved for display.
= The histogram list appears in a unique window and can be mixed with the
Online histogram (SW).
= The mode of histogram reference display may be using a tree listing.
= In that case the description string should merge information such as the
file name or run number in order to distinguish from the similar open files
containing equivalent histogram name.
> the Tree structure branch provide the open file name.

4) Multiple Selection buttons
=============================
> From the SW possibility of multiple selection using the standard Ctl/Alt
key should be available. Currently ROOT may not provide such option (contact
with René Brun for confirmation of this lack of flexibility).
Appears not possible, KO will look into ROOT code for implementation.

5) Grouping Histogram
=====================
Grouping is a feature allowing the display in a single operation of a
predefined set of histograms. Inital thoughts on that subject tend to suggest
that a group must be reference to the histogram name or histogram title only.
In the ONLINE mode this reference is correct as the histogram are re-used over
the multiple runs (the saving of the histograms themselves is done through
the analyzer, Miroodas doesn't have knowledge of the run state at this point
of development). For OFFLINE use, the group should also be only referenced to
the histogram name or title as the same group name could be used for
retrieving the same set of histograms from different files (different run).
The implementation of the manipulation of the group list (creation/add/remove)
is not yet defined.
= Jun 2004: main development topic (GROUPING).
= RULE: All histos of a given group cone from the same source.

6) Selection display option
===========================
= Once the selection from the SW is performed, option for the destination
selection display should permit "new canvas", "Overlay", "Replace" actions.
- Option to maintain Xscaling on different histo display.
- In the "Overlay" case option for color cycling should be available.

7) Save/Restore Configuration
=============================
= Possible save-set of the current SW is required for later quick restore
of the application state.
- The saved configuration could also include the graphical canvas characteristics.

8) Save/Restore selected histogram
==================================
- Possibility of saving a group to a file (.root) should be available.
- Possible automatic "group save" request during application termination may
be foreseen.

9) Zooming option
=================
= Zooming should survive the Online update (keep the associated zooming
parameter at the histogram level).
- hold refresh while selecting zoom option (prevent redisplay).

10) Offline file update
======================
- Possible update of the opened file can be investigated. This would allow
external application to update .root file opened by Miroodas.

11) PeakFinder() option
=======================
= done - Greg King PeakFinder() method should be part of the Miroodas.
= invoked by RBClick on the GW.

12) Pre-programmed fit
======================
- Possible extension of the list of pre-program fit function. This could be
part of the configuration file.

13) TreeViewer invocation
=========================
While Histogram is so far the only object handled by the online Miroodas
application, the offline file may contain Tree objects.
= Option for launching TTreeViewer() is beneficial.

14) Application argument option
===============================
- The Miroodas application should be able to take multiple combination of
command line arguments such as:
= initial .root, .hbook file 
= Argument option -Rfile.save for configuration (include groups).
= host name and port number for ONLINE access (-Hhost:port).
- log file description for debugging purpose.
---------------------------------------------------------------------
Current state of options:
> TTriumfFileGUI -h
USAGE:
TTriumfFileGUI [-h] [-Hhost[:port]] [file.root ...] [file.hbook ...]
Options :
   -h            - display usage
   -Hhost[:port] - connect to midas analyzer on given host and port
   file.root     - load .root files
   file.hbook    - load .hbook files
   -Rsavefile    - restore savefile
---------------------------------------------------------------------

15) Zone option
===============
= Predefine set of Zone should be available.

16) Block incrementation
=========================
In the case of a multiple CONSECUTIVE histogram selection, the Right Button
Click (RBClick) should provide option for displaying the "next block" of
histograms. The "next block" refers to the immediate following consecutive "not
yet selected" set of histograms. This option should follow the previous display
setting (ie: override canvas/new canvas, etc ). This permits a quick scan of
histogram before the block is referenced as a group by assigning a name to the
histogram set (RBClick option). 
> Depend on the mouse selection option... (see pt4).

17) Group naming in graphical canvas
====================================
- When in GW for group or block, RBClick should provide respectively the
renaming/naming of the group/block.

18) Persistence of the Xscale
=============================
- In the GW the RBClick should provide the option to freeze the last Xscale or
Yscale setting for later application to newer GW display.

19) Xscale applied to whole canvas
==================================
- In the case of a multiple histogram display (group or block), RBClick should
allow an option to apply automatically the last Xscale (or Yscale) setting to
the whole GW set of histograms.

20) Histogram Clear
===================
As for the 2) the clear action should be available at all the different CS
levels in either the SW or GW.

21) Histogram info box
======================
= Add run number extracted from the opened file name in the GW below the histogram name.
- Add possible run number extracted from online in the GW below the histogram name.
 
22) Temporary folder
====================
- Implement Temporary Tree for snapshot of any GW histogram content. 


.
  56   19 Jul 2004 Joe minor bug fixes in TTriumfFileGUI and TGTextDialog
Fixed: do not make a group named "-1" when TGTextDialog returns "-1" when
canceled; rationalize the host name and port number code; do not use hot
keys "O" and "C" in TGTextDialog as I could not enter an "O" or a "C" into
the text area (probably some conflict with X-Win32, but just as well to get
rid of it).
  55   16 Jul 2004 Joe TTriumfFileGUI bug fix
You can now save and restore as many times as you like in a single session.
  54   15 Jul 2004 Joe TTriumfFileGUI changes (last one today)
The run number is extracted from the file name of .root data files and
appended to the title for histogram plots.  If the file name contains any
numeric digits, it will be interpreted as the run number.  There should be
no adverse ramifications if the file name contains no digits.
  53   15 Jul 2004 Joe TTriumfFileGUI draw group fix
The problem with refreshing online histograms when drawn using the Draw
Group option has been fixed.
  52   15 Jul 2004 Joe Save/Restore now implemented (but without xml, for now)
Save and Restore are now implemented in TTriumfFileGUI (but without xml, for
now).  The save file format is simple keyword lookup, e.g.,

# this is a comment         --> comments begin with #
FILE filename               --> opens data file (.root or .hbook)
HOST hostname               --> opens online socket
GROUP groupname             --> makes group
HISTOGRAM source histname   --> puts histogram (from source) into this group
...
GROUP groupname             --> makes another group
HISTOGRAM source histname   --> puts histogram into this group
...

The case of the keywords are not important, but the order is important, in
that the source for any histograms to be inserted into a group must be
listed above the group.

The Draw Group option has been repaired, so a new canvas is always opened
and the window title contains the group name.  I still have to check that
the online histograms in this canvas are refreshed properly.

Modified the Open file menu so there is only one menu item (instead of .root
and .hbook) but the open file dialog allows you to choose the file type.
  51   05 Jul 2004 Konstantin HBOOK support
I commited changes to TTriumfFileGUI.{h,cxx} to add support for looking at
HBOOK files. K.O.
  50   25 Jun 2004 Joe changes to TTriumfFileGUI
Added:  current online host name is now displayed in dialog box
Fixed:  online histograms can now be added and displayed in groups
  49   16 Jun 2004 Joe context menu additions for TTriumfFileGUI
Added:
  right click on filename (under Offline) brings up "Close file" option;
  automatic creation of TEMP folder (under Offline);
  right click on Groups folder brings up "Make new group" option
    which brings up a text dialog requesting a group name, which must
    be a new name;
  right click on a group name brings up "Delete group" and "Draw" options,
    "Delete group" does just that, while "Draw" automatically creates a
    new canvas divided into #pads = #histograms in the group and draws 
    the histograms one per pad;
  right click on a histogram brings up the context menu with added option
    "Add to group", which in turn brings up the list of existing groups
  47   07 May 2004 Konstantin context menu progress with TTriumfFileGUI
> > > There are still problems to overcome:
> > > - still no way found to get a context menu for the folder icons (Files,
> > Online, Groups);

I do not understand the difficulty- context menus for all menu items work the same way,
so once we know how to implement contect menus for histograms, other context menus are
done the same way. As an example, I added context menus to all non-histogram list tree
items.

> In the mean time, I copied&kludged code from TGFrame.cxx to make the popup menu pop
> at the pointer position.

RTFM of http://root.cern.ch/root/htmldoc/TGListTree.html#TGListTree:description shows
how to correctly position the popup menu without kludging the event handler. Commited.

> The other problem is multiple selection of histograms.

Short answer: Multiple selection of list tree items cannot be done. The code in
TGListTree::HandleButton(Event_t *event) explicitely enforces single-selection by
always unconditionally unselecting all items. I will have to bring this up with the
ROOT team.

K.O.
  46   07 May 2004 Konstantin context menu progress with TTriumfFileGUI
> > There are still problems to overcome:
> > - the PeakFind panel needs to communicate back to the gui that it has been
> deleted (to overcome a segmentation violation error when the pointer is deleted
> a second time);

Fixed. The peak finder is created once, never destroyed. Window is opened and
closed as needed.

> > - multiple PeakFind menu items appear when the canvas is split into multiple
> pads (even though it is not added if already in the menu???);

Fixed. "PeakFind" menu item is added once in the viewer constructor.

> > - still no way found to get a context menu for the folder icons (Files,
> Online, Groups);

I am looking into it.

In the mean time, I copied&kludged code from TGFrame.cxx to make the popup menu pop
at the pointer position.

Also if histogram is plotted from context menu, the "plot in" menu setting is left
unchanged.

The other problem is multiple selection of histograms. Looking into it.

K.O.
  45   07 May 2004 Konstantin context menu progress with TTriumfFileGUI
> > There are still problems to overcome:
> > - the PeakFind panel needs to communicate back to the gui that it has been
> deleted (to overcome a segmentation violation error when the pointer is deleted
> a second time);

This is because you delete it twice- (1) after the users hits the "close" button,
(2) when the destructor is called from TTriumfFileGUI::PeakFind().

I think we should create the peak finder panel once and then hide and show it as
need. I will commit a fix shortly.

> > - multiple PeakFind menu items appear when the canvas is split into multiple
> pads (even though it is not added if already in the menu???);

This is because Joe's check for duplicate menu items is broken (uses the wrong
object name). I simplified this by adding the menu item to the "TH1" class context
menu exactly once in the TTriumfFileGUI constructor. Will commit shortly.
 
K.O.
  44   07 May 2004 Konstantin context menu progress with TTriumfFileGUI
> There are still problems to overcome:
> - the PeakFind panel needs to communicate back to the gui that it has been
deleted (to overcome a segmentation violation error when the pointer is deleted
a second time);

problem confirmed.

> - multiple PeakFind menu items appear when the canvas is split into multiple
pads (even though it is not added if already in the menu???);

problem confirmed.

> - still no way found to get a context menu for the folder icons (Files,
Online, Groups);

right.

> - need to figure out a way to let the user choose the active pad, so he/she
can pick any drawn histogram for peak finding (currently it only works with the
latest drawn histogram).

the current pad (gPad) is selected by clicking on it with the middle mouse
button. This has always worked and it still works (for me).

> - Clear All online histograms has been added to the main menu (it used to be
a button).

right.

K.O.
  43   08 Apr 2004 Joe context menu progress with TTriumfFileGUI
PeakFind has been added to the context menu when right clicking on a drawn
histogram.  There are still problems to overcome:  the PeakFind panel needs
to communicate back to the gui that it has been deleted (to overcome a
segmentation violation error when the pointer is deleted a second time);
multiple PeakFind menu items appear when the canvas is split into multiple
pads (even though it is not added if already in the menu???); still no way
found to get a context menu for the folder icons (Files, Online, Groups);
need to figure out a way to let the user choose the active pad, so he/she
can pick any drawn histogram for peak finding (currently it only works with
the latest drawn histogram).  Also, Clear All online histograms has been
added to the main menu (it used to be a button).
  42   31 Mar 2004 Joe latest version of the root viewer gui
The bottom canvas window has been removed.  The superfluous buttons have
been removed.  No response, yet, to my question in the ROOT forums regarding
inserting PeakFind in the pre-defined context menu when right-clicking on a
histogram.
  40   12 Mar 2004 Joe online groups added to MIDASviewer
Online histograms can now be collected in named groups.  Each group is
displayed in its own TCanvas window, instead of tabs within one window, but
hopefully that will come.  Right now, I see no way to implement TGTab's
within a TCanvas window, but the 8pi viewer does it, so it must be possible.
 A check is done so each group can contain only one instance of a histogram.
  39   10 Mar 2004 Joe Peak finding added to MIDASviewer
The peak find panel has been added to MIDASviewer.  Click on the speed
button to open the panel.  Click the Find button to find peaks, and do a fit
if the attempt to fit check box is checked.  Fitting seems slow, but that is
all internal to ROOT.
  38   05 Mar 2004 Joe MIDASviewer update
Committed MainFrame.cxx/.h with a fix for the problem of segmentation faults
while updating online histograms.  The problem was the pointers to the
histograms needed to be changed in the TGLVContainers when the histograms
were deleted and recreated due to being updated.  The main difficulty was
getting a handle on which TGLVEntry matched which histogram, when the
histogram pointers were obtained from the TPad and not the TGLVContainer. 
Anyway, you can now view online histograms without the program crashing.
  37   03 Mar 2004 Joe new tabbed gui
The new tabbed qui has been committed to CVS.  There are still problems, and
bugs, and not all the buttons have been activated.  Work continues.
  36   19 Jan 2004 Joe context menu for online histograms
implemented context menu when right clicking on an online histogram in the
upper TreeView, also eliminated duplicate entries for online histograms in
the lower ListView.
  35   16 Jan 2004 Joe x-axis zoom with online histograms
If you zoom in on the x-axis for an online histogram, the zoom now remains
in effect when the histogram is refreshed.  Also, the check mark in the
refresh drop-down menu now stays with the proper value.  Y-axis zooming is
also implemented, but commented out for now, since not sure if this is a
good idea for 1D histograms.
  34   15 Jan 2004 Joe context menu added, etc.
Added context menu -- single right click on a data item in the upper
TreeView window and a context menu opens on the right, choose where to plot
the item.  This becomes the default plotting location if you later double
click on an item.

Items chosen to plot from upper TreeView window will only appear once in the
lower ListView window (checks name, title, source, and type).

Also, more code clean-up (the "this" pointer was being deleted on exit even
though "this" was created on the stack and not on the heap???).
  33   12 Jan 2004 Joe drop down menu changes
Modified TTriumfFileGui.h and .cxx to fix up drop down menus, putting in
check marks to denote which option is currently in effect.  Also, a few more
cosmetic changes.
  32   09 Jan 2004 Joe draw in first pad
Modified TTriumfFileGUI to draw in the first pad when the canvas
is divided into zones.  Also, a few cosmetic changes.
  31   01 Jan 2004 Konstantin Implement "Draw in next pad" and ilk
I commited fixes for a few annoying problems:
1) get rid of useless "delete/create TCanvas"
2) make the "zones" actually work
3) implement "draw in new canvas", "draw in current pad", "draw in next pad"
and "overplot in current pad"
4) consolidate all drawing into a single "DrawObject()" function.
K.O.
  30   20 Dec 2003 Konstantin Fix Chuma's CVS access
Somehow neither Joe nor myself were in the "cvs" group and could not commit
to the miroodas CVS. Fixed by editing root@dasdevpc:/etc/group + NIS reload.
K.O.
  29   20 Dec 2003 Konstantin silence message "No Loaded Online Histograms"
I commited a change to TTriumfFileGUI.cxx to silence the message "No Loaded
Online Histograms". K.O.
  28   20 Dec 2003 Konstantin Simplify Makefile
I commited a simplification of the Makefile:
- "make" now builds the GUI executable
- removed useless cruft for building the GUI on Solaris, RedHat 4.x, etc
K.O.
  27   20 Dec 2003 Konstantin remove Greg King from email list
I removed Greg King from the MIROODAS email notification. K.O.
  26   20 Dec 2003 Joe cleanup by Joe
Joe Chuma commited some code cleanup and sundry unknown changes. K.O.
  25   14 Aug 2003 Greg Miroodas
MAIN GUI
========
Invocation:
TTriumfFileGUI -h 
 ->Displays Usage message
TTriumfFileGUI host
 ->Opens GUI and connects to host on default port 9090
TTriumfFileGUI host:port
 ->Opens GUI and connects to host on port (to be implemented)
TTriumfFileGUI file.root
 ->Opens GUI and opens file.root for browsing
TTriumfFileGUI file.hbook
 ->Opens GUI and opens file.hbook for browsing (to be implemented)
TTriumfFileGUI
 ->Opens GUI

File Menu
 -> Open .root
	Opens file selection dialog to find and open a ROOT file
 -> Open .hbook
	Opens file selection dialog to find and open an HBOOK file
 -> Online
	Opens hostname entry dialog ... Will try and access that host on
        port 9090 (currently using 9090 as default port)
 	If hostname:port, will try and access hostname on proper port 
        (Not Yet Implemented)
 -> Save
	Not Yet Implemented -> Idea:
		Will bring up a save dialog which will allow user to save 
		all opened histograms
 -> Exit
	Closes the program

Refresh Menu
 ->Not Yet Implemented -> Idea: (Radio Buttons)
     ->Stop Refresh
	 Stops the refreshing of online histograms by stopping the TTimer
     ->Refresh 1 sec  \
     ->Refresh 3 sec   |
     ->Refresh 5 sec   |-- Change TTimer time length (and start it)
     ->Refresh 10 sec /

Zones Menu 
  ->Not Yet Implemented -> Idea: (Radio Button)
     ->1x1
     ->1x2
     ->2x1
     ->2x2
     ->3x3
     -> ...
	Each of these will changes force all the new TCanvas() created to be 
	divided into zones
	If double clicked (TGListTree or TGListView) will create new canvas,
        unless option is changed in AddHist to Menu.
        If from context menu -> can overlay in current pad
                             -> can plot in current pad (removes old hist)
                             -> can create new canvas
                             -> can plot in next pad (if last pad ... plot 
                                in first pad)

AddHist to Menu:
  ->Not Yet Implemented -> Idea: (Radio Button)
      -> 4 Options:
	-> plot in new canvas
        -> plot in current pad
        -> plot in next pad
        -> overlay in current pad
      -> Depending on which one is checked the double click functionality 
         will change

Open Files Panel (TGListTree)
  ->Shows open files (offline and online) as well as TH*, TProfile*, TTree ...
  ->Need to add ContextMenus
	ContextMenu (depends on UserData)
	 ->Close Files (remove file from list)
	 ->Plot Options (for histograms) ->see AddHist to menu options
  ->Need to have: when item selected in TGListTree, items in TGListView
    are deselected

Open Histograms Panel (TGListView)
  ->Shows open histograms (i.e. goes over gROOT->GetListOfCanvases())
  ->Need to add ContextMenus
      ->Histogram stuff ->see AddHist to menu options
  ->Need to have: when item selected in TGListView, itesms in TGListTree
    are deselected

Buttons
  ->Not yet Implemented
  ->Refresh (goes over all open histograms)
  ->Banish 
     ->if histogram selected ... removes from associated Pad and 
       deletes from list (in TGListView)
     ->if file is selected in TGListTree ... removes file (may need to close 
       TTreeViewer ... but histograms are made persistent so no need to 
       close)
     ->Save same functionality as the File->Save
  ->Clear (clears currently selected histogram)
  24   14 Aug 2003 Greg  
MAIN GUI
========
Invocation:
TTriumfFileGUI -h 
 ->Displays Usage message
TTriumfFileGUI host
 ->Opens GUI and connects to host on default port 9090
TTriumfFileGUI host:port
 ->Opens GUI and connects to host on port (to be implemented)
TTriumfFileGUI file.root
 ->Opens GUI and opens file.root for browsing
TTriumfFileGUI file.hbook
 ->Opens GUI and opens file.hbook for browsing (to be implemented)
TTriumfFileGUI
 ->Opens GUI

File Menu
 -> Open .root
	Opens file selection dialog to find and open a ROOT file
 -> Open .hbook
	Opens file selection dialog to find and open an HBOOK file
 -> Online
	Opens hostname entry dialog ... Will try and access that host on
        port 9090 (currently using 9090 as default port)
 	If hostname:port, will try and access hostname on proper port 
        (Not Yet Implemented)
 -> Save
	Not Yet Implemented -> Idea:
		Will bring up a save dialog which will allow user to save 
		all opened histograms
 -> Exit
	Closes the program

Refresh Menu
 ->Not Yet Implemented -> Idea: (Radio Buttons)
     ->Stop Refresh
	 Stops the refreshing of online histograms by stopping the TTimer
     ->Refresh 1 sec  \
     ->Refresh 3 sec   |
     ->Refresh 5 sec   |-- Change TTimer time length (and start it)
     ->Refresh 10 sec /

Zones Menu 
  ->Not Yet Implemented -> Idea: (Radio Button)
     ->1x1
     ->1x2
     ->2x1
     ->2x2
     ->3x3
     -> ...
	Each of these will changes force all the new TCanvas() created to be 
	divided into zones
	If double clicked (TGListTree or TGListView) will create new canvas,
        unless option is changed in AddHist to Menu.
        If from context menu -> can overlay in current pad
                             -> can plot in current pad (removes old hist)
                             -> can create new canvas
                             -> can plot in next pad (if last pad ... plot 
                                in first pad)

AddHist to Menu:
  ->Not Yet Implemented -> Idea: (Radio Button)
      -> 4 Options:
	-> plot in new canvas
        -> plot in current pad
        -> plot in next pad
        -> overlay in current pad
      -> Depending on which one is checked the double click functionality 
         will change

Open Files Panel (TGListTree)
  ->Shows open files (offline and online) as well as TH*, TProfile*, TTree ...
  ->Need to add ContextMenus
	ContextMenu (depends on UserData)
	 ->Close Files (remove file from list)
	 ->Plot Options (for histograms) ->see AddHist to menu options
  ->Need to have: when item selected in TGListTree, items in TGListView
    are deselected

Open Histograms Panel (TGListView)
  ->Shows open histograms (i.e. goes over gROOT->GetListOfCanvases())
  ->Need to add ContextMenus
      ->Histogram stuff ->see AddHist to menu options
  ->Need to have: when item selected in TGListView, itesms in TGListTree
    are deselected

Buttons
  ->Not yet Implemented
  ->Refresh (goes over all open histograms)
  ->Banish 
     ->if histogram selected ... removes from associated Pad and 
       deletes from list (in TGListView)
     ->if file is selected in TGListTree ... removes file (may need to close 
       TTreeViewer ... but histograms are made persistent so no need to 
       close)
     ->Save same functionality as the File->Save
  23   30 Jul 2003 Greg List of Development Components for MIROODAS
> 2. Improved Fit Panel
> 3. Improved Draw Options Panel
> 5. TCanvas updates
> 6. TTreeViewer updates
> 7. Improve Attributes Panel

What are these "improvements" and "updates"? We cannot plan without good data.

K.O.
  22   30 Jul 2003 Greg List of Development Components for MIROODAS
Here is the list of components that must/should be developed for MIROODAS:

1. Peak Finding Panel (1D w/ TSpectrum, 2D w/ TSpectrum2 ... note 2D is not
functional yet)
    *THIS is a new feature*
2. Fit Panel
    *This will be a remake of the old feature ... with some improvements*
3. Draw Options Panel
    *This will be a remake of the old feature ... with some improvements*
4. Stat Option Panel 
    *THIS is a new feature*
5. TCanvas
    including: custum context menus which will associate with the new features
6. TTreeViewer
    including: necessary bug fixes and developments as discussd in the meeting
7. Attributes Panel
    *Remake all Attributes Panels and combine into one panel*
  21   29 Jul 2003 Konstantin Wednesday 10am meeting
We will have the 10am meeting this Wednesday in the ISAC2 2nd floor kitchen.
Agenda:
 - progress reports
 - status of midas online connection (K.O.)
 - priority of improvements to the histogram viewer (TCanvas) and tree view
(TTreeViewer). (G.K.)
K.O.
  20   29 Jul 2003 Konstantin test midas experiment
I revived the test midas experiment on midtis06. We can start using it to
develop the online connection to the root gui. Here are the instructions
on running things:
 - login to midtis06
 - set ROOTSYS to /send/home/olchansk/daq/root
 - cd /send/home/olchansk/daq/root
 - ./start_daq (four xterm windows should open:
   1) mhttpd (on port 8080). Point a web browser to http://midtis06:8080
   2) odbedit
   3) a front end
   4) an analyzer)
 - run ~olchansk/daq/midas/linux/bin/rmidas
   enter "midtis06" in the "hostname" box.
   five histogram names should appear in the list on the left: CADC00
through 03 and ADCSUM. Click on the names to see the histograms.
 - start a run (from a web browser, or enter "start" in odbedit)
 - the frontend window should count 100 events/sec.
 - click on the rmidas "update" button, the counts should increment.
This is all done by vanilla ROOT and MIDAS.

The ROOT code to access the MIDAS histograms is in
~olchansk/daq/midas/src/rmidas.c, functions:
 - ConnectServer()
 - GetHistoList()
 - GetHisto()
 - ClearHisto()

K.O.
  19   22 Jul 2003 Greg CVS
miroodas code has been imported into the CVS and can be checkout

cvs -d /dasdevpc/cvsroot co miroodas

or

cvs -d gking@dasdevpc:/usr/local/cvsroot co miroodas
--using gking as an example user

Please see miroodas/doc/README.txt for more information on compiling

cheers,
Greg
  18   21 Jul 2003 Konstantin meeting this Tuesday!
We will have our regular meeting this Tuesday at 10am in the ISAC2 2nd 
floor kitchen. 
 
Agenda: 
 -review of assigned homework (I did most of mine!). 
 -layout of our cvs repository 
 
K.O. 
 
  17   21 Jul 2003 Konstantin miroodas forum
The URL for the MIROODAS forum is: http://daq.triumf.ca:8085/MIROODAS 
K.O. 
 
  16   21 Jul 2003 Konstantin Account for Joe Chuma
I created an account for Joe Chuma on the DAQ cluster. The home directory 
is /send/home/chuma. Joe, please contact me to learn your password. K.O. 
 
  15   21 Jul 2003 Konstantin Account for Joe Chuma
I created an account for Joe Chuma on the DAQ cluster. The home directory 
is /send/home/chuma. Joe, please contact me to learn your password. K.O. 
 
  14   21 Jul 2003 Konstantin CVS repository
I created a CVS repository for the ROOT GUI project: 
/dasdevpc/cvsroot/miroodas (dasdevpc:/usr/local/cvsroot/miroodas) 
 
K.O. 
  13   21 Jul 2003 Konstantin  
I created a CVS repository for the ROOT GUI project: 
/dasdevpc/cvsroot/rootgui (dasdevpc:/usr/local/cvsroot/rootgui) 
 
(should I rename it to cvsroot/miroodas?). 
 
K.O. 
 
ELOG V3.1.4-2e1708b5