advanced analysis environments what is the role of java in physics analysis? will programming...
TRANSCRIPT
Advanced Analysis Environments
What is the role of Java in physics analysis? Will programming languages at all be relevant? Can commercial products help meet our needs in this
area? What is the role of modularity and abstract
interfaces? Do we want an all encompassing framework or a
collection of configurable tools?
What is the role of Java in physics analysis?
Java is a great language for analysis (among many other things)– Clean, modern, OO language, relatively simple– Platform independent– Mainstream language
Enormous set of standard and third party libraries– Distributed computing, networking, CORBA, RMI– Graphics, 2D and 3D, GUI’s– Collections, Hash tables, Maps, Vectors, Binary Trees, Sorting– IO, Compression, Encryption
Large research teams working on development and performance
Java for Data Analysis
Maximizes programmer/physicist efficiency– Memory allocation taken care of for you
No dangling pointers No core dumps No memory leaks (unless you try hard)
– No need to reinvent the wheel– Very fast compile/(dynamic) load/debug cycle
Spend time designing analysis program + solving physics problems, not working around language problems
Java for Data Analysis Previous generation of
experiments used Fortran + Data Management System (== Jazelle, Zebra, BOS)
Solves Three Problems– Ability to Represent
Complex Data Structures
– Persistence (i.e. read in and write out complex structures)
– Run time access to named data in structures (for analysis)
Now time has marched on and modern experiments use C++ Represent Complex Data Persistence Run time access to data– Still need to build (or buy and
deploy) data management system (e.g. Root, Objectivity)
Java Represent Complex Data Persistence (serialization) Run time access to data
(reflection)– support built-in to language
Isn’t Java too damn slow? No!
– Huge advances have been made in last 4 years Dynamic code optimization
– Optimizes code while it is running Java now gives average of 60% of C++ performance
– Java performance continues to improve– Static optimization (C++) is mature – no improvement expected
Examples of Java in Data Analysis
WIRED – Experiment independent event display JAS – Java Analysis Studio Linear Collider Detector
– Entire reconstruction/analysis framework is in Java– Modular components are also reusable and are being
moved to FreeHEP library
FreeHEP library– CLHep for Java (see talk ISAT201 tomorrow)
Code from WIRED, JAS, Atlas, Babar, LCD
– In future JAS+WIRED will both become plugins for “HEP Studio”, part of FreeHEP Java library
JAS + WIRED + LCD
Example Analysis
Java and the GRID Java has built-in support for
distributed computing and Networking– Rather than move all the data
to the user, transparently move code to data
Download JAVA analysis “agents” into remote server
– flexible built-in padded cell protects server from analysis modules
– Give user impression code is running locally
Will programming languages at all be relevant?
Not once we can say “Computer – please analyze the LEP data and compute the mass of the Higgs”
Until then - Yes– GUI tools are important too but
The complexity of physics analysis algorithms are best expressed in terms of programs
Graphical representation of analysis is simply inadequate and inefficient
Can commercial products help meet our needs in this area?
Yes – we will not use a single tool, we will use many tools which can inter-operate– Some commercial– Some HENP specific
Home grown tools will always have a place– Our statistical usage of data and volume of data still
tends to make mainstream commercial tools difficult to use
What is the role of modularity and abstract interfaces? Fundamental to good OO design
Separate interface keyword in Java language highlights importance of abstract interfaces
– Separation of interface and implementation– Allows isolation of components within tools– Allows interoperability between tools– Allows user extensibility– Allows substitution or co-existence of
components/tools– Prevents us getting stuck in a rut
PAW/CERNLIB
JAS Modules
JASHist(Plot Bean)
FittingFramework
Functions Fitters
AnalysisFramework
GUIFramework
Plugin
HistogramAccumulation
3-4 VectorUtilities
DataInterface
Histo/PlotAdaptor
NetworkAdaptor
ParticleProperties
JetFinder
PAW SQL stdHEP
AIDA – Abstract Interface for Data Analysis– LHC++/Lizard, JAS, Open Scientist, COLT
Interoperability/data exchange Familiarity to users
– Geant4 – AIDA test bed
JavaProgram
AIDA
Java AIDA Implementation
C++Program
AIDA
C++ AIDA Implementation
Java AIDA Implementation
C++Program
AIDA
AIDA
C++ -> Java
Do we want an all encompassing framework or a collection of configurable tools?
Why not both?– JAS/FreeHEP provides set of highly modular tools– A framework which brings them all together
Framework is extensible and customizable
Users can pick and choose
Links
JAS – http://jas.freehep.org WIRED – http://wired.cern.ch FreeHEP Java Library – http://java.freehep.org