Back Midas Rome Roody Rootana
  Root Display GUI, Page 2 of 7  Not logged in ELOG logo
ID Date Author Topic Subjectup
  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.
  147   23 Feb 2012 Exaos LeeForumHow to access the SVN repo anonymously?
I found that the SVN repo is forbidden for anonymous users now.
  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.
  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.
  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.
  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*
  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.
  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.
  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)
  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
  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.
  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.
  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.
  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.
  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.
  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?
  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

  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. 


.
  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.
  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!
ELOG V3.1.4-2e1708b5