Back Midas Rome Roody Rootana
  Root Display GUI, Page 3 of 7  Not logged in ELOG logo
ID Date Author Topicup Subject
  55   16 Jul 2004 Joe TTriumfFileGUI bug fix
You can now save and restore as many times as you like in a single session.
  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).
  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. 


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