Title: Analysis Tools: Exploiting Component Architecture through AIDA, HepRep, JAS and WIRED
1Analysis ToolsExploiting Component Architecture
through AIDA, HepRep, JAS and WIRED
- Max Turri
- Mark Dönszelmann, Tony Johnson,
- Joseph Perl, Victor Serbo
- SLAC
2Outline
- The Component Architecture
- FreeHEP Java library
- Data Analysis
- AIDA
- JAS3
- Event Display
- HepRep
- WIRED
- References
3The Component Architecture
4The Component Architecture
- A three step procedure
- Identify the irreducible blocks
- Design the interfaces
- well defined behavior
- flexible
- language neutral
- Implement the interfaces
- discover pitfalls in the interfaces
5The Component Architecture
- Advantages
- Software with modular structure
- Easy to update/re-write individual blocks
- Collaboration between tools providers to improve
interfaces - Overall better tools
- Learn only the interfaces
- Experiments or collaborations choose the
interfaces - No ties to a specific implementation
- Users choose the desktop tool
- or parts from different tools
6The Component Architecture
BaBar, GLAST,LCD, Geant4
Data Analysis Visualization
Event Display
HepRep
AIDA
Abstract Interfaces
IceCube, CLEO
WIRED
FRED
7FreeHEP Java Library
- Components and tools in Java for HEP and beyond.
- The library on which our tools are based.
- http//java.freehep.org
8FreeHEP Java Library
- Introduction
- HEP Specific Components
- General Components
- AID
9FreeHEP Java Library - Introduction
- Started as a convergence of
- WIRED
- Java Analysis Studio (JAS)
- A common base library
- minimize unnecessary duplication of work
- maximize code reuse
- Library of HEP-wide Java software
- Some very HEP specific
- Some general purpose components and tools
10FreeHEP Java Library - Introduction
- Open source
- All code and documentation in CVS, web browseable
- All code licensed under LGPL to make it freely
reusable - Minimal interdependence between packages
- Take what you like, leave what you dont.
- Pure Java where possible
- We include some C code for wrappers to make
components available to C - Now have contributions from
- Atlas, Babar, IceCube, US Linear Collider
Detector (LCD) - Others welcome to contribute
11FreeHEP Java Library - HEP Specific Components
- Physics package
- 3-vector, 4-vectors and utilities
- Jet Finding, Event Shape routines
- Diagnostic Event Generator
- HEP IO
- Access to a number of common HEP formats
- StdHEP
- HBook
- Root
- HEP3D
- Extensions to Java3D specific for Geant4
- YaPPI Yet another Particle Property Interface
- XML Particle Property Database
- AIDA - Abstract Interfaces for Data Analysis
- Interfaces and JAIDA - Java reference
implementation - AIDAJNI C wrapper around AIDA
- HepRep - HEP Representables for Event Display
- Interfaces and JHepRep - Java reference
implementation - HepRepJNI C wrapper around HepRep
- Future
- Plot Widget (JAS)
12FreeHEP Java Library - General Components
- Application Framework
- General framework for Java applications using
plugin and service technology. - AID Abstract Interface Definition
- Compiler to make C headers and Java Interfaces
from aid files. - Graphics3D
- Non-Java3D implementation of 3D graphics, for
WIRED. - FreeHEP IO
- Extensions to the JavaIO system to handle
specific encodings, ASCII85, - PSViewer
- PostScript Viewer to embed viewing of EPS in
applications, or for previews.
- Swing Extensions
- FreeHEP Tools
- JNeeds java package dependency
- Ant extensions to the build system
- VectorGraphics
- Low level Input and Output of binary vector
graphics formats (CGM, EMF, PDF, SVG) - Vector output files, extension to Java2D
- XML
- XMLIO classes to store/restore state of an
application - RecordLoop/EventLoop (IceCube)
13FreeHEP Java Library - AID
- Abstract Interfaces Definition
- Hyper-language use to write interfaces
- very much like java with and
- Automatic generation of C header files and java
interfaces - More languages can be added
- Minimize inconsistencies
- HepRep and AIDA are generated with AID
14Data Analysis
15AIDA
- Abstract Interfaces for Data Analysis
- http//aida.freehep.org
16AIDA
- Mission Statement
- Features
- Advantages
- Organization and Developers
- Status
- Interfaces
- Tools and Users
- Future
17AIDA Mission Statement
The goal of the AIDA project is to define
abstract interfaces for common physics analysis
objects, such as histograms, ntuples, fitters.
The adoption of these interfaces makes it easier
for developers and users to select and use
different tools without having to learn new
interfaces or change their code. In addition it
is possible to exchange data (objects) between
AIDA compliant applications through a standard
XML format.
18AIDA - Features
- Interfaces start with I
- Define only pure virtual methods
- AIDA defines behavior, analysis tool provides
implementation - Object factories
- independence of user code from implementation
- easy to switch implementations
- IAnalysisFactory af IAnalysisFactory.create()
19AIDA - Advantages
- Use same code with any AIDA-compliant analysis
tool - Used for experiments code, e.g. reconstruction
or individual users analysis - User needs to learn only one set of interfaces
- Interoperability of analysis tools
- Under way
20AIDA - Organization and Developers
- Born from the desire of tools providers to
converge to a common vision improving each
others work - Open source project
- Currently a CERN-LAL-SLAC effort
- Interfaces are designed by discussion and
(eventual) consensus - Takes some time, but result is well though out
and robust - Past and present contributors
- Guy Barrand, Pavel Binko, Grzegorz Chwajol, Mark
Dönszelmann, Wolfgang Hoschek, Tony Johnson,
Emmanuel Medernach, Dino Ferrero Merlino, Lorenzo
Moneta, Jakub Moscicki, Ioannis Papadopoulos,
Andreas Pfeiffer, Max Sang, Victor Serbo, Max
Turri
21AIDA - Status
- AIDA Version 3.0 (Oct 2002) second end-user
release. - AIDA 3.2 coming out soon
- AIDA 2.2 first end-user release
- Interfaces available in C and Java
- automatically generated with AID
(http//java.freehep.org) - easy to add more languages
22AIDA - Interfaces
- IHistogram
- ICloud
- IProfile
- IDataPointSet
- ITuple
- IEvaluator
- IFilter
- IPlotter
- IFitter
- IFunction
- ITree
23AIDA - Tools and Users
- Four implementations are available within
- Anaphe/Lizard (C)
- http//anaphe.web.cern.ch/anaphe
- Open Scientist (C)
- http//www.lal.in2p3.fr/OpenScientist
- JAIDA/JAS (Java) AIDA-JNI 3.0 (C)
- http//java.freehep.org/lib/freehep/doc/aida
- PAIDA (Python)
- http//paida.sourceforge.net/
- Users
- GEANT4 Some examples
- BaBar online (via JAS)
- GAUDI/ATHENA users
- Linear Collider users
- LCG has considered AIDA in their Architectural
Blueprint - Physicist Interfaces (PI) group is working to
create an AIDA implementation based on ROOT and
SEAL classes
24AIDA - Future
- Achieve component level interoperability
- e.g. use ANAPHE histograms, fit with JAS3 fitter
and plot with OpenScientist - define developer interfaces
- first prototype due in October
- Remote Access to AIDA
- Access to remote AIDA objects (through CORBA,
RMI, SOAP, ) from another AIDA implementation. - Access to AIDA objects through WEB Browser (with
limited functionality) - AIDA 4.0 end of 2003
25JAS
- Java Analysis Studio
- http//jas.freehep.org
26JAS
- Introduction
- JAS3 a new JAS
- JAS3 Architecture
- Tour of major components of JAS3
- AIDA
- Root and PAW file readers
- Tuple Explorer
- Java compiler and loader
- Scripting Languages
- Pnuts
- Record loop
- Spreadsheet
- Status
27JAS - Introduction
- JAS is a
- general purpose
- open-source
- almost fully in java
- data analysis tool with the following
features - Plotting of 1d, 2d and 3d histograms, XY plots,
scatterplots etc. - High quality print output.
- Fitting (binned or unbinned) using an extensible
set of optimizers including Minuit. - Export of plots in a variety of formats including
PS, EPS, PDF, SVG, GIF, PNG. - Easy to learn GUI for performing common analysis
tasks (plotting, ntuple-analysis, fitting etc.).
28JAS - Introduction
- More complex analysis can be performed using a
variety of scripting languages (pnuts, jython,
etc.), or by writing Java analysis modules. - Able to read data in a variety of formats
including aida, hbook, root, SQL databases,
text-files. - AIDA compliant analysis system.
- Built-in editor and compiler.
- Simple spreadsheet capabilities.
- Logbook for recording analysis tasks, and
optionally publishing results to the web. - Highly modular structure
- allows addition, replacement or removal of
modules to customize application for a particular
problem domain.
29JAS3 - a new JAS
- First version of JAS2 released in 2000
- Has worked well, but some limitations
- Too heavily based on event loop
- Not all analysis tasks involve looping over
events - No support for scripting
- Limited fitting capabilities
- Limited N-Tuple analysis capabilities
- Often used for online monitoring, often used
outside HEP - Not really designed for this use
30JAS3 - a new JAS
- Opportunities
- Realized a lot of overlap with WIRED project
- Created FreeHEP Java library to
- Pull out (re-factor) common parts of JAS, WIRED
- Implement new common requirements for JAS and
WIRED - Vector Graphics, Application Framework, Utilities
- Formed collaboration with developers of similar
tools to create AIDA package
31JAS Architecture
- Design based on Application Shell, into which
many (optional) modules can be plugged - The provided services are implemented by one (or
more) plugin modules - Loose coupling between modules allows for modules
to be removed without breaking remainder of
program - Extra modules (experiment specific) can be easily
added - Highly customizable for different application
domains - HEP/Astrophysics/Other
- DST analysis/Online Monitoring/GRID analysis
- Experiment/User specific modules
- Modules can be updated independently of shell
- Possible to release bug fixes fast
32JAS3 Components
- Tour designed to give you an overview of the
capabilities of JAS3, you can try them out for
yourself with the built-in Tutorial and/or
examples
Welcome Page, gives initial info and links to
example scripts and programs
Memory monitor
33JAS Opening
Drag from explorer
Use file menu
34JAS Graphical Interface to AIDA
Histograms, Clouds, Tuples all presented in AIDA
tree
.aida files, .hbook files, .root files all
presented as AIDA objects
Drag items onto page, or use (popup) menus
35JAS Printing
Or copy/paste into Word, PowerPoint etc.
Can send individual plots or full page direct to
printer
Or save as PS, EPS, PDF, SWF, SVG, PNG, GIF
36JAS Java Editor, Compiler and Loader
JAS3 allows any Java program to be loaded. This
example main routine is taken directly from the
AIDA manual
Built-in editor for writing analysis code
Tree shows loaded programs
Built-in Java compiler
37JAS Scripting
Can also write and run scripts
Console allows direct interaction with scripting
language
38JAS Record Sources
Opening record (or event) based files causes the
run control toolbar to appear
Job controls. Also supports random access and
tagged data sets (mainly for event displays)
39JAS Tuple Explorer - Plots
Works with any tuple, read from file or
dynamically created
Histogram
Profile
ScatterPlot
XY Data (More appropriate for smaller data sets)
40JAS Tuple Explorer Define Columns
41JAS Tuple Explorer - Cuts
42JAS Tuple Explorer - Tabulate
43JAS Spreadsheet
- Simple spreadsheet plugin
- for
- Displaying results
- Calculations
- Simple Plots
- Supports reading/writing
- .csv files
- Excel files
- Cut/Paste with Excel etc
- Coming Soon
- Scripting interface
- GUI for building plots
- User defined functions
- Java, scripting
44JAS Miscellaneous Features
Save/Restore configuration
User Preferences
Plugin Manager
45JAS Status
- Currently released JAS3 version 0.7.2
- AIDA functionality is quite solid
- Documentation is still quite limited
- Talks, tutorials, built-in example scripts and
programs accessible from simple built-in
web-browser - If you are used to JAS2 you will find some
functionality not yet ported to JAS3 - Remote (client/server) access to data (this is
being worked on) - 3D Lego/Surface plots
46JAS - Help us make it better
- We have recently purchased and are now heavily
using a commercial issues tracking system. - Used not only for bugs, but also for tracking
tasks, ideas etc. - Please report any problems you find, and make
suggestions for changes or improvements you would
like to see. - http//bugs.freehep.org
47Event Display
- Interface HepRep
- Tool WIRED
48HepRep
- A Generic Interface Definition for HEP Event
Display Representables - http//heprep.freehep.org
49HepRep
- Introduction
- Representable Example
- Current Use
- Future Plan
50HepRep - Introduction
- Interface for Representables
- Essential Spatial Information of a physics object
- track, calorimeter hit, etc
- Physics Attributes
- momentum, energy, etc
- Bridge between server and client event display
- Spatial information is assembled and shipped as
HepReps - complicated details of the objects are lefts on
the server side - rendering decisions are deferred to the client
- Language independent
- AID generated in Java and C
- Protocol independent
- Corba, RMI, XML, JNI
- Compliant Tools
- WIRED (Java)
51HepRep Representable Example
- A fitted track is shipped as
- A set of points with Attributes
- helix parameters
- descriptive information
- track number, particle id, etc
- On the server side it is represented as
- a dotted line,
- or as set of individual step momentum vectors,
- or as a set of helix segments.
52HepRep Current Use
- Different experiments/collaborations
- have specific HepRep implementations
- use different protocols
- Not all of them can use FRED
53HepRep Future Plan
RMI
LCD(java)
Java Shared HepRep Factory
HepRep2
Java
RMI
Corba
IceCube(java)
Java
WIRED 3 (Java)
XML
HepRep2
Corba
XML
BaBar(c)
Java
C Shared HepRep Factory
Corba
HepRep2
Geant4(c)
XML
Corba
FRED(C/Ruby)
HepRep2
GLAST(c)
C
XML
- Through an abstract HepRep factory (from FreeHEP)
- Instantiate a concrete HepRep implementation
- Choose the protocol
- Choose the tool
54WIRED
- WWW Interactive Remote Event Display
- http//wired.freehep.org
55WIRED
- Introduction
- Overview of WIRED 3
- Toggling visibility
- Orientation Actions
- Parallel Projection
- Fish-Eye Projection
- ?-Z Projection
- Mouse Function
- Rotation, Scaling, Translation
- Picking
- Plans for WIRED 4
56WIRED - Introduction
- Features
- Experiment independent Framework for Event
Displays in Java - 3D Wire Frames
- Interactivity (Rotate, Zoom, Translate)
- Picking
- Special projections
- Linear 3D projections
- Non-Linear, Fish-Eye Blow Up projections
- Layering of Graphics Primitives
- Allows hits to be on top of tracks
- HepRep compliant (not for LCD yet)
- Client-Server model
- Publish quality output
- PDF, PS, EMF, SVG
- GIF, JPEG, PNG, PPM
- Based on FreeHEP library
- Experiments and Users
- BaBar, LCD and GLAST
57WIRED Overview of WIRED3 Toggling visibility
58WIRED Overview of WIRED3 Orientation Actions
59WIRED Overview of WIRED3 Parallel Projection
60WIRED Overview of WIRED3 Fish-Eye Projection
- Blows up Center, compresses Outwards
61WIRED Overview of WIRED3 ?-Z Projection
- Cuts detector and folds up two halves
62WIRED Overview of WIRED3 Mouse Function
63WIRED Overview of WIRED3 Rotation, Scaling,
Translation
64WIRED Overview of WIRED3 Picking
65WIRED - Plans for WIRED4
- WIRED4 just as a JAS3 plugin
- better integration with JAS3
- Use HepRep2 as its backbone
- Better memory usage
- Physics information on Picking
- Programmatic access for filtering
- Interactive cuts on attributes
66References
- FreeHEP Java Library - http//java.freehep.org
- AIDA http//aida.freehep.org
- JAS http//jas.freehep.org
- JAIDA http//java.freehep.org/jaida/
- HepRep - http//heprep.freehep.org
- WIRED http//wired.freehep.org