Title: Introduzione agli Analysis Tools di AIDA
1- Introduzione agli Analysis Tools di AIDA
- Bernardino Ferrero Merlino, CERN IT/API
2Sommario
- Software su larga scala
- Abstract Interfaces in Data Analysis
- Motivazioni e vantaggi
- AIDA in dettaglio
- Applicazioni
- Esempi
- Analisi in Geant4
- Lizard
- Conclusioni
3Software su larga scala
- Taglia
- molte classi/linee di codice
- Organizzazione
- progettato/costruito da molte persone
- Tempi
- di sviluppo
- di utilizzazione (lifetime)
- Variabilità nel tempo
- prevista o subita...
4Vita del software per gli esperimenti a LHC
- Gli esperimenti di LHC inizieranno 2006
- Almeno 10 anni di run (e possibili estensioni)
- Lanalisi durerà (supponiamo) altri 5 anni
- Se fissiamo arbitrariamente linizio sviluppo nel
1996 -gt Il software avra una vita di 25 anni!
525 anni
WWW
6Cambiamento del software
- 10 anni implicano in ogni categoria (HW,SW,OS)
- 12 cicli evolutivi di mercato
- 1 cambiamento rivoluzionario
- e la tendenza va verso una maggiore variabilità
- non dimentichiamo I cambiamenti di requirement!
- Conseguenze
- il SW scritto oggi (probabilmente) verrà
riscritto/adattato domani - dobbiamo anticipare il cambiamento
- uso di tecniche particolari
7Funzione vs. evoluzione
Flessibilità
Funzionalità
Quello che il programma potrà fare
Quello che il programma puo fare
Affidabilità
No, no Not this one. Too many bells and
whistles
Con quale grado di qualità
8Un software completo e flessibile utopia?
- Centrale telefonica Ericsson AXE
- OO ante litteram (Jacobson)
- architettura ben definita
- modulare
- interfacce separate dallimplementazione
- accoppiamento debole fra componenti
- 197?-gt2001 (e oltre!)
- Lezione...
- maggiore flessibilità -gt aumento software
lifetime - larchitettura definisce il grado di flessibilità
9Software su larga scala
- I sistemi software su larga scala richiedono
- struttura ben definita ed omogenea (Architettura)
- ripartizione in entita gestibili
(componenti/moduli/sotto-sistemi) - comunicazione fra le parti definita in modo
univoco (interfacce/protocolli/contratti) - -( condizione necessaria ma non sufficiente
10Cose un ADT (Interface)
- Abstract Data Type classe che definisce solo
metodi che devono essere implementati dalle
sotto-classi (protocollo/contratto) - Nessun vincolo di implementazione
- Realizzato diversamente
- C pure virtual function
- Java Interfaces
- Plug-in
11Un esempio
- Classe astrattaclass IHistogram1D public
virtual void fill( double x, double weight) 0
virtual int binEntries( int index ) const 0
/// More C methods - Classe reale (implementazione)class Histogram1D
public IHistogram1D public virtual void
fill( double x, double weight 1. ) virtual
int binEntries( int index ) const /// More
C methods
12Vantaggi degli ADT
- Flessibilità
- ADT puo essere implementato riutilizzando un
software preesistente opportunamente adattato - Minimo accoppiamento fra componenti
- Luso di ADT permette ad ogni componente di
evolvere separatamente (stile plug-in) - Gli ADT semplificano il modello fisico del
software riducendo la catena di dipendenze - tempo di compilazione ridotto
- possibilità di ottimizzare luso di memoria
13Semplificazione modello fisico
- Classe astrattaIHistogram1D myHistmyHist-gtf
ill() - Classe realeFancyHistogram1D myHistmyHist-gt
fill()
1 include file
N include files
14AIDA motivazioni
- Esistono numerosi Data Analysis Tools Libraries
- Linguaggio/approccio/architettura diversi-gt
Incompatibilità - Gli Abstract Data Types (Interfaces) potrebbero
aiutare? - Obiettivo finale componenti plug-n-play per
lanalisi - Presentazione al workshop HepVis99
- identificate architettura e componenti
- creazione del gruppo di lavoro (AIDA)
- non solo Cern/IT (HippoDraw, Iguana, JAS,
OpenScientist) - Obiettivo concreto migliorare linteroperabilità
15Architettura
16Architettura di AIDA/1
17Architettura di AIDA/2
- Uso di componenti
- componente -gt parte indipendente di un sistema
- insieme di classi correlate
- funzionalita omogenea
- unita di deployment, di solito shared
libraries - Componenti non accoppiati direttamente
- comunicazione tramite Controllere Analyzer
- che sono componenti anchessi!
18Componenti AIDA
- Controller
- interattività utente (scripting language/GUI)
- Analyzer
- interattività utente linguaggio nativo
- e.s. eseguire parte della ricostruzione in C
- condivide dati (histo,vector,ntuple) col
Controller - Componenti base
- histograms
- ntuple
- fitter
- plotter
- functions
19Interfacce C AIDA
- Ogni componente è self-contained, es.
Istogrammi - entità statistica (density distribution)
- non un entità grafica
- Solo funzioni pure virtual
- definiscono la forma delle sotto-classi, non la
funzionalità - equivalenti alle Java Interfaces
- Usano solo tipi base o altre interfacce
- Non essendo delle vere classi richiedono luso di
Factory
20Factory
- Problema
- non si puo creare un ADT
- qualcunaltro deve creare un vero oggetto che
implementi linterfacciaIHistogram1D myHist
myFactory.create1D(Bla,10,0.,12.)myHist-gtfill(
) - Ogni classe astratta è associata ad una Factory
che produce il vero oggetto - E un Design Pattern
- ovvero una soluzione ricorrente (algoritmo) ad
un problema generale
21Interfacce istogrammi AIDA
- Class IHistogram virtual int entries()
0class IHistogram1D public IHistogram
virtual void fill(double x,double w) 0
virtual IAxis xAxis() 0 class IAxis
virtual int bins() 0
22Una implementazione AIDA_HTL
- Interfaccia AIDA implementata col package
HTLclass AIDAHist1D public IHistogram1D,
public Histo1D public void fill( double
x, double weight ) /// Fill histogram
just delegate to HTL fillvoid AIDAHist1Dfill(
double x, double weight ) Histo1Dfill( x,
weight )
23Utilizzatori
- Le interfacce AIDA per istogrammi sono utilizzate
da - GAUDI (LHCB) e ATHENA (Atlas) framework
- Modulo di analisi in Geant 4
- JAS (Java Analysis Studio)
- Lizard
- Open Scientist
- IGUANA (CMS visualization)
- Altre interfacce in via di standardizzazione
- ntuple,fitter,plotter,controller (parzialmente)
- esistono in versione draft
- workshop Orsay 5-7 Febbraio 2000
24Vantaggi per gli utenti?
- Esistono vantaggi anche per lutente finale?
- Stabilità
- se GAUDI/Athena cambiassero implementazione da
HTL ad un altro package, il codice utente non
cambierebbe - Uniformità
- I metodi hanno lo stesso nome e
accettano/ritornano gli stessi tipi - anche se si cambia linguaggio public interface
IHistogram1D extends IHistogram public void
fill(double x, double weight) public int
binEntries(int index) / More JAVA methods
.../ - Fatelo da voi
- dati in formato arbitrario possono essere esposti
canonicamente
25Sommario 1
- La vita del SW per LHC e molto lunga
- Tutto cambierà, meglio essere preparati!
- Parole chiave
- architettura
- interfacce per componenti
- accoppiamento debole
- Le interfacce AIDA si concentrano sullanalisi
dati - flessibilità
- indipendenza dalle implementazioni
- stabilità per gli utenti
- Sono già utilizzate in ambienti eterogenei
26Esempi di utilizzo di AIDA
27AIDA/Anaphe/Lizard
- Lizard (noun)
- 1. Relatively
long-bodied reptile with usually two pairs of
legs and a tapering tail - 2. A man who idles
about in the lounges of hotels and bars in search
of women who would support him - LIZARD è un tool di analisi interattiva (PAW
like) - realizzato da Cern IT/API
- Basato su AIDA
- ANAPHE (LHC) è un insieme di implementazioni
- es. Libreria istogrammi HTL
- adapters AIDA_HTL
28Dal documento di presentazione di Lizard (fine
1999)...
- Obiettivo OO replacement for PAW
- analisi di ntuple-like data
- visualizzazione di istogrammi, scatter-plot,
vettori - fitting di istogrammi (ed altro)
- Massimizzare flessibilità/interoperabilità
- Prevedere personalizzazioni/integrazione
- Pianificare per le estensioni future
- Primo prototipo Gennaio 2000 (CHEP)
29Lizard
- Un tool di analisi interattiva AIDA compatibile
- Python scripting
- Visualizzazione con Qt
- Istogrammi HTL (via AIDA)
- Persistenza con Objectivity
- Fitting con NAG Libraries (o Minuit)
- Componenti disponibili come shared libraries
- indipendenti dal linguaggio di scripting
- si possono usare anche in programmi C (Geant4)
30Architettura di Lizard/I
Déjà vu...
31Architettura di Lizard/II
- Anaphe è un layered system
- ogni livello dipendesolo dai sotto-livelli
- riduzione delle dipendenze
- es. Protocollo di rete
32Architettura/III scripting
- Luso tipico del linguaggio di scripting è
differente dalla programmazione (ricostruzione,
analisi, ...) - history tornare dovero prima
- ripetizione - con parametri modificabili
- Il linguaggio di scripting e un interfaccia
verso il componente Controller - SWIG (Simplified Wrapper Interface Generator)
permette di non legarsi ad un particolare
linguaggio - Python, Perl, (Java)
- Python per cominciare...
- OO relativamente semplice (niente _at_ )
- usato da CMS (CARF) e Atlas (Athena)
33Scripting in Lizard
Automatically generated by SWIG
AIDA Interfaces
User
Controller Shadow classes
C interfaces
Python
C implementations
Anaphe implementations
34Data Types in Lizard (I)
- VectorOfPoints - collezione di punti
- valore misurato in uno spazio n-dim (con
errori) - (x,eX-,eX(,y,eY-,eY,...), value, eVal-, eVal)
- Operazioni di shifting/scaling
- Usato dai componenti Fitter e Plotter
- Puo essere creato a partire da Histogram
- XML-like file I/O
- associati ad un Manager
35Data Types in Lizard (II)
- Histogram - entità puramente statistica
- associato ad un Manager
- con Annotation per conservare dati non
statistici - label degli assi, ID, titolo etc.
- NTuple - Basate su Objectivity/DB (per ora)
- associate ad un Manager
- funzionalità simili alle PAW RWN
- cut in C compilati e caricati dinamicamente
36Componenti in Lizard
- Analyzer - accesso a dati/codice specifico per
ogni esperimento - compilazione e caricamento dinamico del codice
- makefile modificabile per tener conto del SW di
esperimento - interfaccia semplice
- condivide istogrammi/vettori/ntuple col tool
interattivo - Utilizzabile anche per fitting complessi
- es. Con funzioni fornite da librerie esterne
37Componenti in Lizard (II)
- Plotter - visualizzazione 2-D di VectorOfPoints
- basato sulle librerie Qt
- Postscript
- Fitter - usa VectorOfPoints
- NAG C o Minuit
- Controller - interfaccia verso lutente
- definisce (gran parte) dei comandi
- puo essere esteso dal linguaggio di script o da
componenti GUI
38Una sessione Lizard...
- Find the ntuple from databasent1ntm.findNtuple(
"Charm1") - Create an histogramhhm.create1D("pt1",40,10,50
) - Project pT of the first particle on the
histogramnt1.cproject1D(h,"sqrt(PX1PX1PY1PY1)"
,pz1 gt0") - Fit projection with a exponential and plot
itfit(h,E")
39Integrazione di Lizard
- Lesperimento CMS ha unframework di
ricostruzionee analisi (CARF). - Lintegrazione Lizard/CARF ègià stata dimostrata
- creare istogrammi in CARFe visualizzarli con
Lizard
40Futuro di Lizard
- Integrare ulteriori interfacce AIDA
- Soluzione free per la persistency
- Ntuple tipo CWN
- Python 2.0
- Grafica piu completa
- color plot, scatter plot, lego
- formule matematiche (MathML)
- ...
41Analisi in Geant4
- Obiettivo
- produrre e visualizzare istogrammi in un
programma di simulazione basato su Geant4 - senza introdurre dipendenze dai package di
istogrammi e plotting - Soluzione
- utilizzare le interfacce AIDA
- Verifica
- implementare con almeno due sistemi
42Gamma Ray Telescope
- Uno degli esempi avanzati di Geant4
GammaRayTel is an example of application of
Geant4 in a space envinronment. It simulates a
typical telescope for gamma ray analysisthe
detector setup is composed by a tracker made with
silicon planes,subdivided in ladders and strips,
a CsI calorimeter and an anticoincidence system. - Analisi con sistemi diversi
- Workshop Geant4, Parigi Ott. 2000
- JAS
- Lizard
- OpenScientist
43Classi di Analisi in Geant4
- Classi astratte
- G4VAnalysisManager
- G4VAnalysisSystem
- Un AnalysisManager gestisceun insieme di
AnalysisSystem - Classi reali
- G4LizardSystem, sistema di analisi Lizard
- GammaRayTelAnalysisManagermanager per
GammaTelescope - L AnalysisManager restituisce una histo factory
44Come fare...
- Se si vuole riutilizzare un AnalysisSystem
preesistente - si crea una sottoclasse di G4VAnalysisManager
- il costruttore inizializza l AnalysisSystem di
back-end - il metodo BeginOfRun costruisce gli istogrammi
- il metodo EndOfRun visualizza/salva gli
istogrammi - il metodo EndOfEvent puo visualizzare gli
istogrammi se si desidera una visualizzazione
dinamica - Nella classe che implementa G4UserEventAction
- il metodo EndOfEventAction esegue il filling
degli istogrammi - Nel main si crea unistanza del nostro
AnalysisManager
45Analisi in un programma Geant4/I
- Analysis Manager
- GammaRayTelAnalysisManagerGammaRayTelAnalysisMan
ager() analysisSystem new G4LizardSystem
histoFactory analysisSystem-gtGetHistogramFacto
ry() fVectorFactory createIVectorFactory()
pl createIPlotter() void
GammaRayTelAnalysisManagerBeginOfRun()
energy histoFactory-gtcreate1D ("Energy
deposition in the last X plane (keV)", 100, 50,
200)void GammaRayTelAnalysisManagerEndOfR
un(G4int n) ve fVectorFactory-gtfrom1D(energy
) pl-gtplot(ve)
pl-gtpsPrint()
46Analisi in un programma Geant4/II
- void GammaRayTelAnalysisManagerInsertEnergy(doub
le en)// This function fill the 1d histogram of
the energy released in the last Si plane
energy-gtfill(en)void GammaRayTelEventActionE
ndOfEventAction(const G4Event evt) // Here
we fill the histograms of the Analysis manager
analysisManager-gtInsertEnergy() - Main program
- int main(int argc, char argv) // Creation of
the analysis manager GammaRayTelAnalysisManager
analysisMgr new GammaRayTelAnalysisManager(detec
tor)
47Risultati
48Java?
49Sommario 2
- Le interfacce AIDA possono essere utilizzate per
- produrre un sistema di analisi molto flessibile
- implementare algoritmi di analisi indipendenti
dal sistema (istogrammi,plotter) utilizzato - Lizard e un sistema che si integra facilmente
con I framework di esperimento - Grazie ad AIDA, gli esempi di Geant4 possono
produrre/visualizzare istogrammi utilizzando
JAS,Lizard,OpenScientist
50Conclusioni
- Luso di interfacce astratte migliora
- flessibilita
- indipendenza
- interoperabilita
- L implementazione dei sistemi di analisi non
viene condizionata - Prossimo workshop AIDA
- Boston, 1-2 May 2001
51Bibliografia
- Gamma,Helm,Johnson, Vlissides Design
PatternsAddison Wesley - A. Cockburn Surviving Object Oriented
ProjectsAddison Wesley - C. Szyperski Component SoftwareAddison Wesley
- Jacobson,Booch,Rumbaugh The Unified Software
Development Process - Addison Wesley - Buschmann etc. A system of Patterns Wiley
- R. Brooks, The mythical man month
52Pagine web
- Pagina AIDA al Cernhttp//wwwinfo.cern.ch/asd/lh
c/AIDA/index.html - Pagina AIDA a SLAChttp//aida.freehep.org/
- Lizardhttp//wwwinfo.cern.ch/asd/lhc/Lizard/in
dex.html