1-2 marzo 2001 lezioni su software e calcolo moderno 1 introduzione agli analysis tools di aida...

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

Upload: demetrio-parodi

Post on 02-May-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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

1

Introduzione agli Analysis Tools di AIDA

Bernardino Ferrero Merlino, CERN IT/API

Page 2: 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

Page 3: 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 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...

Page 4: 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 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!

Page 5: 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 5

25 anni

WWW

Page 6: 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 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

Page 7: 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 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”

Page 8: 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 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à

Page 9: 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 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…

Page 10: 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 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

Page 11: 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 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 …

Page 12: 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 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

Page 13: 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 13

Semplificazione modello fisico

Classe astratta

IHistogram1D *myHist=…;myHist->fill(…);

Classe reale

FancyHistogram1D *myHist=…;myHist->fill(…);

1 include file

N include files

Page 14: 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 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à

Page 15: 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 15

Architettura

Page 16: 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 16

Architettura di AIDA/1

Page 17: 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 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!

Page 18: 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 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

Page 19: 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 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”

Page 20: 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 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

Page 21: 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 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; …}

Page 22: 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 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 );}

Page 23: 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 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

Page 24: 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 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”

Page 25: 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 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

Page 26: 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 26

Esempi di utilizzo di AIDA

Lizard

Analisi in Geant4

Page 27: 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 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

Page 28: 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 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)

Page 29: 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 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)

Page 30: 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 30

Architettura di Lizard/I

Déjà vu...

Page 31: 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 31

Architettura di Lizard/II

Anaphe è un layered system ogni livello dipende

solo dai sotto-livelli riduzione delle

dipendenze es. Protocollo di rete

Page 32: 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 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)

Page 33: 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 33

Scripting in Lizard

User

PythonController Shadow classes

C++ interfaces

C++ implementations

Automatically generated by SWIG

AIDA Interfaces

Anaphe implementations

Page 34: 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 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

Page 35: 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 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

Page 36: 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 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

Page 37: 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 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

Page 38: 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 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")

Page 39: 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 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

Page 40: 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 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)

...

Page 41: 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 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

Page 42: 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 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

Page 43: 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 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”

Page 44: 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 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

Page 45: 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 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();…

Page 46: 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 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);…}

Page 47: 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 47

Risultati

Page 48: 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 48

Java?

Page 49: 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 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

Page 50: 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 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

Page 51: 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 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”

Page 52: 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 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