1-2 marzo 2001 lezioni su software e calcolo moderno 1 introduzione agli analysis tools di aida...
TRANSCRIPT
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno
1
Introduzione agli Analysis Tools di AIDA
Bernardino Ferrero Merlino, CERN IT/API
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 2
Sommario
Software su larga scala Abstract Interfaces in Data Analysis
Motivazioni e vantaggi
AIDA in dettaglio Applicazioni
Esempi Analisi in Geant4 Lizard
Conclusioni
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 3
Software 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...
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 4
Vita del software per gli esperimenti a LHC
Gli esperimenti di LHC inizieranno ~ 2006
Almeno 10 anni di run (e possibili estensioni…)
L’analisi durerà (supponiamo) altri 5 anni
Se fissiamo arbitrariamente l’inizio sviluppo nel 1996 -> Il software avra’ una vita di ~ 25 anni!
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 5
25 anni
WWW
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 6
Cambiamento 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
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 7
Funzione vs. evoluzione
Quello che il programma puo’ fare
Quello che il programma potrà fare
Con quale grado di qualità
“No, no… Not this one. Too many bells and whistles”
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 8
Un software completo e flessibile: utopia?
Centrale telefonica Ericsson AXE OO ante litteram (Jacobson) architettura ben definita
modulare interfacce separate dall’implementazione accoppiamento ‘debole’ fra componenti
197?->2001 (e oltre!)
Lezione... maggiore flessibilità -> aumento software
lifetime l’architettura definisce il grado di flessibilità
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 9
Software 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…
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 10
Cos’e 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
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 11
Un esempio
Classe astratta
class 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 …
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 12
Vantaggi degli ADT
Flessibilità ADT puo’ essere implementato riutilizzando un software
preesistente opportunamente adattato
Minimo accoppiamento fra componenti L’uso 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 l’uso di memoria
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 13
Semplificazione modello fisico
Classe astratta
IHistogram1D *myHist=…;myHist->fill(…);
Classe reale
FancyHistogram1D *myHist=…;myHist->fill(…);
1 include file
N include files
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 14
AIDA: motivazioni
Esistono numerosi Data Analysis Tools & Libraries
Linguaggio/approccio/architettura diversi-> Incompatibilità Gli Abstract Data Types (Interfaces) potrebbero aiutare? Obiettivo finale: componenti ‘plug-n-play’ per l’analisi
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 l’interoperabilità
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 15
Architettura
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 16
Architettura di AIDA/1
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 17
Architettura di AIDA/2
Uso di componenti componente -> “parte indipendente di un
sistema” insieme di classi correlate funzionalita’ omogenea unita’ di “deployment”, di solito shared libraries
Componenti non accoppiati direttamente comunicazione tramite Controller
e Analyzer
che sono componenti anch’essi!
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 18
Componenti 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
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 19
Interfacce 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 l’uso di “Factory”
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 20
Factory
Problema non si puo’ creare un ADT qualcun’altro deve creare un
vero oggetto che implementi l’interfaccia
IHistogram1D *myHist = myFactory.create1D(“Bla”,10,0.,12.);myHist->fill(…);
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
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 21
Interfacce istogrammi AIDA
Class IHistogram { virtual int entries() = 0;…}
class IHistogram1D: public IHistogram { virtual void fill(double x,double w)= 0; virtual IAxis* xAxis() = 0; …}
class IAxis { virtual int bins() = 0; …}
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 22
Una implementazione: AIDA_HTL
Interfaccia AIDA implementata col package HTL
class AIDAHist1D : public IHistogram1D, public Histo1D { public: void fill( double x, double weight ) …}
/// Fill histogram: just delegate to HTL fillvoid AIDAHist1D::fill( double x, double weight ){ Histo1D::fill( x, weight );}
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 23
Utilizzatori
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
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 24
Vantaggi per gli utenti?
Esistono vantaggi anche per l’utente 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”
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 25
Sommario 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 sull’analisi dati flessibilità indipendenza dalle implementazioni stabilità per gli utenti
Sono già utilizzate in ambienti eterogenei
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 26
Esempi di utilizzo di AIDA
Lizard
Analisi in Geant4
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 27
AIDA/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
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 28
Dal 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/integrazionePianificare per le estensioni future
Primo prototipo: Gennaio 2000 (CHEP)
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 29
Lizard
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)
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 30
Architettura di Lizard/I
Déjà vu...
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 31
Architettura di Lizard/II
Anaphe è un layered system ogni livello dipende
solo dai sotto-livelli riduzione delle
dipendenze es. Protocollo di rete
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 32
Architettura/III: scripting
L’uso tipico del linguaggio di scripting è differente dalla programmazione (ricostruzione, analisi, ...) history “tornare dov’ero 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 $@% …) usato da CMS (CARF) e Atlas (Athena)
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 33
Scripting in Lizard
User
PythonController Shadow classes
C++ interfaces
C++ implementations
Automatically generated by SWIG
AIDA Interfaces
Anaphe implementations
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 34
Data 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
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 35
Data 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
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 36
Componenti 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
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 37
Componenti in Lizard (II)
Plotter - visualizzazione 2-D di VectorOfPoints basato sulle librerie Qt Postscript
Fitter - usa VectorOfPoints NAG C o Minuit
Controller - interfaccia verso l’utente definisce (gran parte) dei comandi puo’ essere esteso dal linguaggio di script o da
componenti GUI
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 38
Una sessione Lizard...
#Find the ntuple from databasent1=ntm.findNtuple("Charm1")
# Create an histogramh=hm.create1D("pt1",40,10,50)
# Project pT of the first # particle on the histogramnt1.cproject1D(h,"sqrt(PX1*PX1+PY1*PY1)",”pz1 >0")
# Fit projection with a exponential and plot itfit(h,”E")
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 39
Integrazione di Lizard
L’esperimento CMS ha unframework di ricostruzionee analisi (CARF).
L’integrazione Lizard/CARF ègià stata dimostrata creare istogrammi in CARF
e visualizzarli con Lizard
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 40
Futuro di Lizard
Integrare ulteriori interfacce AIDASoluzione “free” per la persistencyNtuple tipo CWNPython 2.0Grafica piu’ completa
color plot, scatter plot, lego formule matematiche (MathML)
...
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 41
Analisi 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
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 42
Gamma 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 analysis;the 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
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 43
Classi di Analisi in Geant4
Classi astratte: G4VAnalysisManager G4VAnalysisSystem
Un AnalysisManager gestisceun insieme di AnalysisSystem
Classi reali G4LizardSystem, sistema di
analisi Lizard GammaRayTelAnalysisManager
manager per GammaTelescope
L’ AnalysisManager restituisce una “histo factory”
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 44
Come 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 un’istanza del nostro AnalysisManager
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 45
Analisi in un programma Geant4/I
Analysis Manager GammaRayTelAnalysisManager::GammaRayTelAnalysisManager(…) {
analysisSystem = new G4LizardSystem; histoFactory = analysisSystem-
>GetHistogramFactory(); fVectorFactory = createIVectorFactory();
pl = createIPlotter(); }
void GammaRayTelAnalysisManager::BeginOfRun() { energy = histoFactory->create1D ("Energy deposition in the last X plane (keV)", 100, 50, 200);…}
void GammaRayTelAnalysisManager::EndOfRun(G4int n) { ve = fVectorFactory->from1D(energy); pl->plot(ve); pl->psPrint();…
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 46
Analisi in un programma Geant4/II
void GammaRayTelAnalysisManager::InsertEnergy(double en)// This function fill the 1d histogram of the energy released in the last Si plane{ energy->fill(en);}
void GammaRayTelEventAction::EndOfEventAction(const G4Event* evt) { // Here we fill the histograms of the Analysis manager analysisManager->InsertEnergy(…); }
} Main program int main(int argc, char** argv){
… // Creation of the analysis manager GammaRayTelAnalysisManager* analysisMgr = new GammaRayTelAnalysisManager(detector);…}
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 47
Risultati
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 48
Java?
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 49
Sommario 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
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 50
Conclusioni
L’uso di interfacce astratte migliora flessibilita’ indipendenza interoperabilita’
L’ implementazione dei sistemi di analisi non viene condizionata
Prossimo workshop AIDA Boston, 1-2 May 2001
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 51
Bibliografia
Gamma,Helm,Johnson, Vlissides “Design Patterns”Addison Wesley
A. Cockburn “Surviving Object Oriented Projects”Addison Wesley
C. Szyperski “Component Software”Addison Wesley
Jacobson,Booch,Rumbaugh “The Unified Software Development Process” - Addison Wesley
Buschmann etc. “A system of Patterns” Wiley
R. Brooks, “The mythical man month”
1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 52
Pagine web
Pagina AIDA al Cern
http://wwwinfo.cern.ch/asd/lhc++/AIDA/index.html
Pagina AIDA a SLAC
http://aida.freehep.org/
Lizard
http://wwwinfo.cern.ch/asd/lhc++/Lizard/index.html