JAIDA, AIDA-JNI, JAS3

coordinatedcapableΛογισμικό & κατασκευή λογ/κού

4 Νοε 2013 (πριν από 3 χρόνια και 11 μήνες)

152 εμφανίσεις

JAIDA, AIDA
-
JNI, JAS3

Status and Plans

Mark D
ö
nszelmann, Tony Johnson, Joseph Perl,

Victor Serbo, Max Turri

AIDA Workshop

CERN July 2003

July 2003

JAIDA, AIDA
-
JNI, JAS3

Contents


JAIDA


Java Implementation of AIDA


Part of FreeHEP Java library


AIDA
-
JNI


C++ interface to JAIDA


JAS3


Experiment, Data Format independent graphical
data analysis tool based on JAIDA

July 2003

JAIDA, AIDA
-
JNI, JAS3

JAIDA


JAIDA = Java implementation of AIDA


Complete implementation of AIDA interfaces


With a few exceptions


limited support for plot styles currently


Some missing features in ITree, cp, mv


Uses Java “service provider mechanism” for dynamic loading of
services at Runtime


Can be used to add support for new fitters, stores etc.


Have defined “developer level” interfaces for IOptimizer, IStore etc


Uses Java Expression Library (JEL) for runtime compilation of
expressions (for tuple evaluators and functions)

July 2003

JAIDA, AIDA
-
JNI, JAS3

JAIDA


Features continued…


Fitting


support for multiple fitting engines (optimizers)


UNCMIN (pure Java)


Minuit (needs minuitAdapter native library)


Support for multiple fitting methods


LeastSquares
,
Chi2
,
CleverChi2
,
BinnedMaximumLikelihood

and
UnbinnedMaximumLikelihood



Stores


Read/Write support for AIDA XML format (with built
-
in gzip)


Read support for HBOOK/PAW files (needs hbookAdapter native library)


Read support for Root files (write support hopefully coming soon)


Future plans to add:


SQL interface, JDO interface, text file support …


Plotting


Two implementations of IAnalysisFactory


BatchAnalysisFactory


dummy plotter, ignore calls to IPlotter


AnalysisFactory


Full plotter functionality


limited user input, for full GUI use JAS3


Multi
-
Threaded


plots update in real
-
time as they are filled


No need to call interact() or refresh()


Support for embedding plotter


In other Java GUI’s


In Java servlets for web based applications.


Graphics export in many formats including:


PDF, EPS, SVG, SWF, PNG, GIF, JPG


July 2003

JAIDA, AIDA
-
JNI, JAS3

Using JAIDA with Java

July 2003

JAIDA, AIDA
-
JNI, JAS3

Using JAIDA with Python

July 2003

JAIDA, AIDA
-
JNI, JAS3

Using JAIDA with C++

July 2003

JAIDA, AIDA
-
JNI, JAS3

AIDA
-
JNI


C++ interface uses AIDA
-
JNI

C++ program

AIDA

AIDA
-

JNI

AIDA

JAIDA


AIDA
-
JNI partially generated by AID, partly by hand


Does not currently support full AIDA functionality


AID improvements (v 0.9.5) coming soon


JNI Adapters generated to interface with JACE generated code


JACE (JNI made easy) version 1.1 code generates connector to allow
access from C++ to Java


AID generates code to implement the AID interfaces using the JACE
generated code

July 2003

JAIDA, AIDA
-
JNI, JAS3

Future Plans for JAIDA


Complete implementation of missing features


Continue to track improvements to AIDA standard


Add support for function arithmetic


Web Interface (see later talk)


Support for “Remote AIDA” (see later talk)


Support for more storage formats


Need good binary IO format .. either AIDA standard or roll our own

July 2003

JAIDA, AIDA
-
JNI, JAS3

JAS3 Overview


A completely new version of JAS


Design based on
Application Shell
, into which many (optional)
modules can be plugged


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


Includes support for programming in many languages


Scripting
: Python, Pnuts, Dynamic Java, ….


Command prompt


Java (compiled)


Analysis (histograms, tuples, fitting) based on
AIDA standard


Not technically backwards compatible with JAS2


But migration is straightforward.

July 2003

JAIDA, AIDA
-
JNI, JAS3

JAS3 and AIDA


JAS3 supports all AIDA functionality, including


Histograms (includes arithmetic, projections,
etc
.)


Clouds (unbinned histograms, scatterplots)


Plotter


Tuples


Fitting


AIDA interfaces allow for multiple fitters


Uncmin
--

pure java minimizer


Minuit
--

Fortran called by Java Native Interface (JNI)


IO


AIDA XML, PAW, Root


JAS3 supports user interaction with AIDA in three ways


Scripting (Pnuts, Python etc)


Compiled (Java) code


GUI


Plotting, Fitting, Cuts etc.

July 2003

JAIDA, AIDA
-
JNI, JAS3

JAS3 Scripting


JAS3 has multi
-
language OO scripting support


Command line, Console, Editor


Major components (e.g. AIDA) have scripting interfaces


Currently have plugins to support


Pnuts



syntax almost identical to Java, fast, well documented
and feature complete


Python

(using Jython)


More scripting languages can be added


not restricted to Java implementations (e.g. could use C
-
Python, JPE)


July 2003

JAIDA, AIDA
-
JNI, JAS3

JAS3 Lightning Tour


Tour designed to
give you an
overview of the
capabilities of JAS3,
you can try them
out for yourself this
afternoon.

Welcome Page, gives initial
info and links to example
scripts and programs

Memory
monitor

July 2003

JAIDA, AIDA
-
JNI, JAS3

Opening Files

Use file
menu

Drag from
explorer

July 2003

JAIDA, AIDA
-
JNI, JAS3

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

July 2003

JAIDA, AIDA
-
JNI, JAS3

Printing

Can send
individual
plots or full
page
direct to
printer

Or save as PS,
EPS, PDF, SWF,
SVG, PNG, GIF…

Or
copy/paste
into Word,
PowerPoint
etc
.

July 2003

JAIDA, AIDA
-
JNI, JAS3

Java Editor, Compiler and Loader

Built
-
in Java
compiler

Tree
shows
loaded
programs

Built
-
in
editor for
writing
analysis
code

Unlike JAS2 which only supported “event
analyzers” JAS3 allows any Java program
to be loaded. This example “main routine” is
taken directly from the AIDA manual

July 2003

JAIDA, AIDA
-
JNI, JAS3

Scripting

Can also
write and run
scripts

Console allows
direct interaction
with scripting
language

July 2003

JAIDA, AIDA
-
JNI, JAS3

Pnuts Language


Currently favour Pnuts scripting language


Complete and well documented


http://javacenter.sun.co.jp/pnuts/doc/guide.html


Fast (although not as fast as compiled Java)


Syntax very similar to Java


Can easily call compiled Java classes from scripts


best of both
worlds

July 2003

JAIDA, AIDA
-
JNI, JAS3

Record Sources

Opening record
(or event)
based files
causes the run
control toolbar
to appear

Works similarly to JAS2
Job control, but now also
supports random access
and “tagged” data sets
(mainly for event
displays)

July 2003

JAIDA, AIDA
-
JNI, JAS3

Histogram

Profile

ScatterPlot

XY Data

(More appropriate for

smaller data sets)

Tuple Explorer
-

Plots

Works with any tuple,
read from file or
dynamically created

July 2003

JAIDA, AIDA
-
JNI, JAS3

Tuple Explorer


Define Columns

July 2003

JAIDA, AIDA
-
JNI, JAS3

Tuple Explorer
-

Cuts

July 2003

JAIDA, AIDA
-
JNI, JAS3

Tuple Explorer
-

Tabulate

July 2003

JAIDA, AIDA
-
JNI, JAS3

To be used with record loop

Tuple Explorer


Record Source

July 2003

JAIDA, AIDA
-
JNI, JAS3

JAS3 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


July 2003

JAIDA, AIDA
-
JNI, JAS3

Miscellaneous Features

Save/Restore
configuration

User
Preferences

Plugin
Manager

July 2003

JAIDA, AIDA
-
JNI, JAS3

Status


Currently released JAS3 version 0.7.1


AIDA functionality is quite solid


Compiler, Loader, Record Loop all quite recently added,


Certainly still some rough edges


Documentation limited but available


Built
-
in example scripts and programs


Tutorial on web


If you are used to JAS2 you will find some functionality
not yet ported to JAS3


Remote (client/server) access to data.


3D Lego/Surface plots

July 2003

JAIDA, AIDA
-
JNI, JAS3

JAS 2


GRID interface (Tech
-
X)

July 2003

JAIDA, AIDA
-
JNI, JAS3

JAS and the GRID


We plan to add client
-
server/distributed capabilities to
JAS3 similar (but better) than those in JAS2


Will be based on (remote) AIDA


Want to use Grid standards where they exist


Work with others (PPDG
-
CS11,???) to define standards where they
do not exist


Want to be compatible with C++ servers


But don’t want to loose flexibility of dynamically loading analysis code
into server


Tech
-
X have phase II SBIR approved and will work closely with us

July 2003

JAIDA, AIDA
-
JNI, JAS3

JAS3 Links, More Info


JAS


Java Analysis Studio
-

http://jas.freehep.org


JAS3


http://jas.freehep.org/jas3


JAIDA


http://java.freehep.org/jaida/


AIDA


http://aida.freehep.org


FreeHEP
-

http://www.freehep.org



FreeHEP Java Libraries
-

http://java.freehep.org


WIRED


http://wired.freehep.org