Java Analysis Studio
CHEP 2000
February 2000
Tony Johnson
(tony_johnson@slac.stanford.edu)

Contents
(Lightning Fast) Overview of JAS
Open Source/CVS/jmk
What's new in Version 2.0
Modular Plot Component
XML support
Servlet Support
3-D support
JEdit editor
Embedded HTML
Examples of Use
Babar Online Monitoring
US Linear Collider Detector (LCD)
Java Performance
Documentation
Acknowledgments
Conclusions

JAS Components

Lightning Fast JAS Overview
Modular Java Toolkit for Analysis of HEP data
Data Format Independent
Experiment Independent
Supports arbitrarily complex analysis modules written in Java
Rich Graphical User Interface (GUI) with:
Data Explorer
Flexible Histogram + Scatterplot display
Histogram manipulation+fitting
Built-in Editor/Compiler (for writing analysis modules)
Extensible via plugins
User extensible via Object Orientated API's
Written entirely in Java so will run on any platform with a Java VM (JDK 1.1 or better)
Support: Windows 95/98/NT/2000 + Linux + Solaris
Works on: DEC + SGI + Mac

JAS GUI

JAS GUI – Histogram Viewer

JAS GUI – Editor/Compiler

JAS GUI – Plugin

JAS – Remote Data Access
Rather than transporting peta-bytes of data to the physicist
Transport the physics analysis code to the data
Transparently - so that it feels just like local data access
Using Java-Agent Technology
Just ship histogram contents back to the physicists desktop
For more background on JAS see CHEP 98 paper

JAS Jumps on OpenSource Bandwagon
All source code now stored in CVS
Use any CVS client for anonymous (read-only) access
We recommend jCVS (pure Java CVS client)
Source code all web browsable
Implemented using jCVS servlet
Write access can be given to interested developers
Intend to put entire code under LGPL
Platform independent build system
Uses jmk - pure java make-like tool
To build entire system on any platform with CVS and Java
cvs co jas
cd jas
java -jar jmk.jar

Modular Plot Component
Can be used in other applications
Uses Model-View-Controller design

Plot Component Features
1+2-D histograms and scatter plots
Scatter Plot display optimized for 1000’s of points
Overlaying of several histograms or scatter plots
Interactive function fitting for 1-D plots
Direct User Interaction by clicking and dragging
Numeric or time axes, plus axes with named bins
Many display styles that can be set interactively or programmatically
Dynamic creation and display of slices and projections of 2-D data.
Very efficient redrawing to support rapidly changing data (handles over 100 updates/second).
Printing using both Java 1 and Java 2 printing models. High quality print output is available when using Java 2.
Saving plots as GIF images or as XML. Support for encapsulated postscript and PDF is in progress.
Custom overlays which allow data to be displayed using user defined plot routines for specialized plots.

XML Support
XML specifies a generic syntax for a markup language but no tags
Users specify tags to use for a specific problem domain
HTML roughly an XML instance for web pages
Tag set formally specified by a DTD.
Have defined tag set for markup of plots
Tried to make it generic so it could be used by other programs
JASHist bean directly supports reading/writing XML
XML file can store
Display style + snapshot of current data
Display style + reference to (live) data
XML is ASCII file (like HTML) so can be hand edited
Use as a replacement for TopDraw!
Example XML File:

3D Support (Future)
Andrey Kubarovsky and Joy Kyriakopulos at Fermilab
Using Java 3D API (standard Java extension)
Build lego plot, surface plot, 3D scatter plot
Built as standalone package
Designed to be compatible with the JASHist bean
Will fit into same model-view-controlled model

3D Support

Servlet Support
JASHist can be used to create plots from a Servlet
Example of using JASHist bean in another application.
Servlet vaguely similar to Java Applet
Both could be used to but a "live" plot on a web page
Sevlet runs on web server and sends GIF to browser
No need for java support in browser
No worries about browser version/functionality
No slow download of Java code
JASHist just requires data source to provide simple interface
Easy to interface to many different data sources
Many examples on our web site
Being used to display PingER from SLAC network group

Embedded HTML
Using Swing JEditorPane JAS now supports HTML display
Supports most features of HTML 3.2
Nested tables and frames a bit dodgy
"Live" objects can be embedded within HTML page
Built in objects such as plots
Used defined objects (sliders etc)
Multiple Objects on page can interact with each other
Useful for:
Tutorial information
Online monitoring
Presentations (perhaps?)

Babar Online Monitoring

JEdit Editor Bean
Earlier versions of JAS used custom source code editor
Now replaced with JEdit Syntax Highlighter/Editor Bean
Part of pure Java JEdit editor
Syntax Highlighting (Java + HTML + XML etc)
Improved source code editing
Auto indent
Parenthesis matching
Customizable Syntax highlighting
Intending to incorporate more JEdit features in future
Searching/Replacing/Macros/etc
Eventually to support JEdit plugin architecture
Code completion
Interactive Fullscreen Debugging

Usage
Babar using for Online Monitoring
Using Online Monitoring API
HTML Pages with embedded plots
Custom Overlays
US Linear Collider Studies
Have an entire recon+analysis package written in Java
Using JAS as analysis interface
Making use of remote data access using repository at University of Pennsylvania
Other smaller scale users
All giving very valuable feedback
Helping to produce more reliable solution

Documentation
LCD Tutorial exists
Nice step by step tutorial for beginners
Examples are all based on LCD but can be used by anyone
Starts from very beginning
Slowly adding information to Users Guide
Still nowhere near complete
How To being created to cover specific topics
Servlets How To
HTML How To
XML How To
Online API How To
Working on Fitting How To
JavaDoc generated API documentation available
Documentation remains weak link
We are aware of this and are working on producing more documentation
Also need more design specs/internals documentation to make open source model more effective

Acknowledgements
Many People have contributed code
Peter Armstrong, Kevin Garwood, Jonas Gifford, Azhar Zuberi.
Gary Bower, Kevin Rennert, Alex Samuel, Bob Wilson
And support/ideas
Mike Ronan …

Conclusions
Version 2.0 Alpha 2 is available from our website
2.0 Alpha 3 coming very soon
In use by Babar, needs Productization
We remain committed to supporting JAS
Plan to continue to improve it
Very adaptable to user input