La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 1 Introduzione agli Analysis Tools di AIDA Bernardino Ferrero Merlino, CERN IT/API.

Presentazioni simili


Presentazione sul tema: "1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 1 Introduzione agli Analysis Tools di AIDA Bernardino Ferrero Merlino, CERN IT/API."— Transcript della presentazione:

1 1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 1 Introduzione agli Analysis Tools di AIDA Bernardino Ferrero Merlino, CERN IT/API

2 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 2 Sommario zSoftware su larga scala zAbstract Interfaces in Data Analysis yMotivazioni e vantaggi zAIDA in dettaglio zApplicazioni zEsempi yAnalisi in Geant4 yLizard zConclusioni

3 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 3 Software su larga scala zTaglia ymolte classi/linee di codice zOrganizzazione yprogettato/costruito da molte persone zTempi ydi sviluppo ydi utilizzazione (lifetime) zVariabilità nel tempo yprevista o subita...

4 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 4 Vita del software per gli esperimenti a LHC zGli esperimenti di LHC inizieranno ~ 2006 zAlmeno 10 anni di run (e possibili estensioni…) zLanalisi durerà (supponiamo) altri 5 anni zSe fissiamo arbitrariamente linizio sviluppo nel > Il software avra una vita di ~ 25 anni!

5 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 5 25 anni WWW

6 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 6 Cambiamento del software z10 anni implicano in ogni categoria (HW,SW,OS) y~12 cicli evolutivi di mercato y1 cambiamento rivoluzionario y… e la tendenza va verso una maggiore variabilità ynon dimentichiamo I cambiamenti di requirement! zConseguenze yil SW scritto oggi (probabilmente) verrà riscritto/adattato domani zdobbiamo anticipare il cambiamento yuso di tecniche particolari

7 1-2 Marzo 2001Lezioni 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

8 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 8 Un software completo e flessibile: utopia? zCentrale telefonica Ericsson AXE yOO ante litteram (Jacobson) yarchitettura ben definita u modulare u interfacce separate dallimplementazione u accoppiamento debole fra componenti y197?->2001 (e oltre!) zLezione... ymaggiore flessibilità -> aumento software lifetime ylarchitettura definisce il grado di flessibilità

9 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 9 Software su larga scala zI sistemi software su larga scala richiedono: ystruttura ben definita ed omogenea (Architettura) yripartizione in entita gestibili (componenti/moduli/sotto-sistemi) ycomunicazione fra le parti definita in modo univoco (interfacce/protocolli/contratti) y:-( condizione necessaria ma non sufficiente…

10 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 10 Cose un ADT (Interface) zAbstract Data Type: classe che definisce solo metodi che devono essere implementati dalle sotto-classi (protocollo/contratto) zNessun vincolo di implementazione zRealizzato diversamente yC++ pure virtual function yJava Interfaces zPlug-in

11 1-2 Marzo 2001Lezioni 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 …

12 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 12 Vantaggi degli ADT zFlessibilità yADT puo essere implementato riutilizzando un software preesistente opportunamente adattato zMinimo accoppiamento fra componenti yLuso di ADT permette ad ogni componente di evolvere separatamente (stile plug-in) zGli ADT semplificano il modello fisico del software riducendo la catena di dipendenze ytempo di compilazione ridotto ypossibilità di ottimizzare luso di memoria

13 1-2 Marzo 2001Lezioni 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

14 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 14 AIDA: motivazioni zEsistono numerosi Data Analysis Tools & Libraries zLinguaggio/approccio/architettura diversi-> Incompatibilità yGli Abstract Data Types (Interfaces) potrebbero aiutare? yObiettivo finale: componenti plug-n-play per lanalisi zPresentazione al workshop HepVis99 yidentificate architettura e componenti ycreazione del gruppo di lavoro (AIDA) ynon solo Cern/IT (HippoDraw, Iguana, JAS, OpenScientist) yObiettivo concreto: migliorare linteroperabilità

15 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 15 Architettura

16 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 16 Architettura di AIDA/1

17 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 17 Architettura di AIDA/2 zUso di componenti ycomponente -> parte indipendente di un sistema u insieme di classi correlate u funzionalita omogenea u unita di deployment, di solito shared libraries zComponenti non accoppiati direttamente ycomunicazione tramite Controller e Analyzer yche sono componenti anchessi!

18 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 18 Componenti AIDA zController yinterattività utente (scripting language/GUI) zAnalyzer yinterattività utente linguaggio nativo u e.s. eseguire parte della ricostruzione in C++ u condivide dati (histo,vector,ntuple) col Controller zComponenti base yhistograms yntuple yfitter yplotter yfunctions

19 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 19 Interfacce C++ AIDA zOgni componente è self-contained, es. Istogrammi: yentità statistica (density distribution) ynon un entità grafica zSolo funzioni pure virtual ydefiniscono la forma delle sotto-classi, non la funzionalità yequivalenti alle Java Interfaces zUsano solo tipi base o altre interfacce zNon essendo delle vere classi richiedono luso diFactory

20 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 20 Factory zProblema ynon si puo creare un ADT qualcunaltro deve creare un vero oggetto che implementi linterfaccia IHistogram1D *myHist = myFactory.create1D(Bla,10,0.,12.); myHist->fill(…); zOgni classe astratta è associata ad una Factory che produce il vero oggetto zE un Design Pattern yovvero una soluzione ricorrente (algoritmo) ad un problema generale

21 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 21 Interfacce istogrammi AIDA zClass 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; … }

22 1-2 Marzo 2001Lezioni 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 fill void AIDAHist1D::fill( double x, double weight ) { Histo1D::fill( x, weight ); }

23 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 23 Utilizzatori zLe interfacce AIDA per istogrammi sono utilizzate da: yGAUDI (LHCB) e ATHENA (Atlas) framework yModulo di analisi in Geant 4 yJAS (Java Analysis Studio) yLizard yOpen Scientist yIGUANA (CMS visualization) zAltre interfacce in via di standardizzazione yntuple,fitter,plotter,controller (parzialmente) yesistono in versione draft yworkshop Orsay 5-7 Febbraio 2000

24 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 24 Vantaggi per gli utenti? zEsistono vantaggi anche per lutente finale? yStabilità u se GAUDI/Athena cambiassero implementazione da HTL ad un altro package, il codice utente non cambierebbe yUniformità u 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...*/ } yFatelo da voi… u dati in formato arbitrario possono essere esposti canonicamente

25 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 25 Sommario 1 zLa vita del SW per LHC e molto lunga zTutto cambierà, meglio essere preparati! zParole chiave yarchitettura yinterfacce per componenti yaccoppiamento debole zLe interfacce AIDA si concentrano sullanalisi dati yflessibilità yindipendenza dalle implementazioni ystabilità per gli utenti zSono già utilizzate in ambienti eterogenei

26 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 26 Esempi di utilizzo di AIDA zLizard zAnalisi in Geant4

27 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 27 AIDA/Anaphe/Lizard zLizard (noun): z 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 zLIZARD è un tool di analisi interattiva (PAW like) yrealizzato da Cern IT/API yBasato su AIDA zANAPHE (LHC++) è un insieme di implementazioni yes. Libreria istogrammi HTL yadapters AIDA_HTL

28 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 28 Dal documento di presentazione di Lizard (fine 1999)... zObiettivo: OO replacement for PAW yanalisi di ntuple-like data yvisualizzazione di istogrammi, scatter-plot, vettori yfitting di istogrammi (ed altro) zMassimizzare flessibilità/interoperabilità zPrevedere personalizzazioni/integrazione zPianificare per le estensioni future zPrimo prototipo: Gennaio 2000 (CHEP)

29 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 29 Lizard zUn tool di analisi interattiva AIDA compatibile yPython scripting yVisualizzazione con Qt yIstogrammi HTL (via AIDA) yPersistenza con Objectivity yFitting con NAG Libraries (o Minuit) zComponenti disponibili come shared libraries yindipendenti dal linguaggio di scripting ysi possono usare anche in programmi C++ (Geant4)

30 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 30 Architettura di Lizard/I Déjà vu...

31 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 31 Architettura di Lizard/II zAnaphe è un layered system yogni livello dipende solo dai sotto-livelli yriduzione delle dipendenze yes. Protocollo di rete

32 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 32 Architettura/III: scripting zLuso tipico del linguaggio di scripting è differente dalla programmazione (ricostruzione, analisi,...) yhistory tornare dovero prima yripetizione - con parametri modificabili zIl linguaggio di scripting e un interfaccia verso il componente Controller ySWIG (Simplified Wrapper Interface Generator) permette di non legarsi ad un particolare linguaggio u Python, Perl, (Java) … zPython per cominciare... yOO & relativamente semplice (niente …) yusato da CMS (CARF) e Atlas (Athena)

33 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 33 Scripting in Lizard User Python Controller Shadow classes C++ interfaces C++ implementations Automatically generated by SWIG AIDA Interfaces Anaphe implementations

34 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 34 Data Types in Lizard (I) zVectorOfPoints - collezione di punti yvalore misurato in uno spazio n-dim (con errori) u (x,eX-,eX+(,y,eY-,eY+,...), value, eVal-, eVal+) yOperazioni di shifting/scaling yUsato dai componenti Fitter e Plotter yPuo essere creato a partire da Histogram yXML-like file I/O yassociati ad un Manager

35 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 35 Data Types in Lizard (II) zHistogram - entità puramente statistica yassociato ad un Manager ycon Annotation per conservare dati non statistici u label degli assi, ID, titolo etc. zNTuple - Basate su Objectivity/DB (per ora) yassociate ad un Manager yfunzionalità simili alle PAW RWN ycut in C++ compilati e caricati dinamicamente

36 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 36 Componenti in Lizard zAnalyzer - accesso a dati/codice specifico per ogni esperimento ycompilazione e caricamento dinamico del codice ymakefile modificabile per tener conto del SW di esperimento yinterfaccia semplice u condivide istogrammi/vettori/ntuple col tool interattivo yUtilizzabile anche per fitting complessi u es. Con funzioni fornite da librerie esterne

37 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 37 Componenti in Lizard (II) zPlotter - visualizzazione 2-D di VectorOfPoints ybasato sulle librerie Qt yPostscript zFitter - usa VectorOfPoints yNAG C o Minuit zController - interfaccia verso lutente ydefinisce (gran parte) dei comandi ypuo essere esteso dal linguaggio di script o da componenti GUI

38 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 38 Una sessione Lizard... z#Find the ntuple from database nt1=ntm.findNtuple("Charm1") z# Create an histogram h=hm.create1D("pt1",40,10,50) z# Project pT of the first # particle on the histogram nt1.cproject1D(h,"sqrt(PX1*PX1+PY1*PY1)",pz1 >0") z# Fit projection with a exponential and plot it fit(h,E")

39 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 39 Integrazione di Lizard zLesperimento CMS ha un framework di ricostruzione e analisi (CARF). zLintegrazione Lizard/CARF è già stata dimostrata ycreare istogrammi in CARF e visualizzarli con Lizard

40 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 40 Futuro di Lizard zIntegrare ulteriori interfacce AIDA zSoluzione free per la persistency zNtuple tipo CWN zPython 2.0 zGrafica piu completa ycolor plot, scatter plot, lego yformule matematiche (MathML) z...

41 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 41 Analisi in Geant4 zObiettivo yprodurre e visualizzare istogrammi in un programma di simulazione basato su Geant4 ysenza introdurre dipendenze dai package di istogrammi e plotting zSoluzione yutilizzare le interfacce AIDA zVerifica yimplementare con almeno due sistemi

42 1-2 Marzo 2001Lezioni 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. zAnalisi con sistemi diversi yWorkshop Geant4, Parigi Ott u JAS u Lizard u OpenScientist

43 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 43 Classi di Analisi in Geant4 zClassi astratte: yG4VAnalysisManager G4VAnalysisSystem Un AnalysisManager gestisce un insieme di AnalysisSystem zClassi reali G4LizardSystem, sistema di analisi Lizard GammaRayTelAnalysisManager manager per GammaTelescope L AnalysisManager restituisce una histo factory

44 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 44 Come fare... zSe si vuole riutilizzare un AnalysisSystem preesistente si crea una sottoclasse di G4VAnalysisManager u 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 zNel main si crea unistanza del nostro AnalysisManager

45 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 45 Analisi in un programma Geant4/I zAnalysis 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(); …

46 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 46 Analisi in un programma Geant4/II zvoid 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 yint main(int argc, char** argv){ … // Creation of the analysis manager GammaRayTelAnalysisManager* analysisMgr = new GammaRayTelAnalysisManager(detector); … }

47 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 47 Risultati

48 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 48 Java?

49 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 49 Sommario 2 zLe interfacce AIDA possono essere utilizzate per yprodurre un sistema di analisi molto flessibile yimplementare algoritmi di analisi indipendenti dal sistema (istogrammi,plotter) utilizzato zLizard e un sistema che si integra facilmente con I framework di esperimento zGrazie ad AIDA, gli esempi di Geant4 possono produrre/visualizzare istogrammi utilizzando JAS,Lizard,OpenScientist

50 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 50 Conclusioni zLuso di interfacce astratte migliora yflessibilita yindipendenza yinteroperabilita zL implementazione dei sistemi di analisi non viene condizionata zProssimo workshop AIDA yBoston, 1-2 May 2001

51 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 51 Bibliografia zGamma,Helm,Johnson, Vlissides Design Patterns Addison Wesley zA. Cockburn Surviving Object Oriented Projects Addison Wesley zC. Szyperski Component Software Addison Wesley zJacobson,Booch,Rumbaugh The Unified Software Development Process - Addison Wesley zBuschmann etc. A system of Patterns Wiley zR. Brooks, The mythical man month

52 1-2 Marzo 2001Lezioni su Software e Calcolo Moderno 52 Pagine web zPagina AIDA al Cern zPagina AIDA a SLAC zLizard


Scaricare ppt "1-2 Marzo 2001 Lezioni su Software e Calcolo Moderno 1 Introduzione agli Analysis Tools di AIDA Bernardino Ferrero Merlino, CERN IT/API."

Presentazioni simili


Annunci Google