Simulazione, Ricostruzione e analisi degli eventi in Object

Simulazione, Ricostruzione e
analisi degli eventi in
Object Oriented in BABAR
Luca Lista
INFN Napoli
I Workshop sul Software e Calcolo moderno
Napoli, 6-7 febbraio 1997
1
Il rivelatore BABAR
rivelatore di vertice con 5 strati di silicio
 camera a deriva
 identificazione di particelle Cerenkov
(DIRC)
 calorimetro a cristalli di CsI
 rivelatore di m e adroni neutri (K0L) con
piani di RPC (IFR)

Napoli, 6/2/1997
Luca Lista
2
BABAR
Napoli, 6/2/1997
Luca Lista
3
Caratteristiche della presa dati
BABAR comincerà la presa dati nel 1999
 2 kHz al trigger di livello 1
 50 Mbyte/sec alla farm di livello 3
 circa 100 Hz (2.5Mbyte/sec) di frequenza di
registrazione di eventi
 109 eventi/anno (25Tbyte/anno di raw data)

Napoli, 6/2/1997
Luca Lista
4
Obiettivi del software offline
funzionante nel 1999 per analizzare i primi
dati
 deve garantire efficienza e funzionalità su
un’elevata mole di dati
 deve garantire la mantenibilità, stabilità
aggiornabilità per > 10 anni

Napoli, 6/2/1997
Luca Lista
5
Condizioni di lavoro

lavorare in una B factory impone:
il riprocessamento dei dati non può essere
frequente
 la ricostruzione deve garantire una elevata
affidabilità
 necessari assicurare il controllo della qualità
dei dati ricostruiti
Napoli, 6/2/1997
Luca Lista
6
Condizioni di sviluppo codice
il software di BABAR viene sviluppato da
molte persone in Europa ed America
 è necessario curare gli strumenti di
distribuzione e sviluppo del codice (l’uso
della rete è fondamentale)
 è necessario curare il design del software
(non basta che il C++ compili...)

Napoli, 6/2/1997
Luca Lista
7
Strumenti tradizionali in alte energie
FORTRAN 77
 estensioni per emulare la gestione dinamica
della memoria

“banche” ZEBRA

gestione del codice
PATCHY, HISTORIAN ...

CERNLIB, HBOOK, PAW, GEANT, ...
Napoli, 6/2/1997
Luca Lista
8
Evidenti limiti del FORTRAN 77
allocazione dinamica della memoria
(ZEBRA) e puntatori
 dichiarazione dei tipi implicita
(IMPLICIT NONE)
 limite delle 72 colonne (schede perforate!!)

già diverse caratteristiche del C superano da
tempo questi limiti

Inadeguatezza al design e alla gestione della
complessità
Napoli, 6/2/1997
Luca Lista
9
Alcuni principi di design del codice
cercare la fattorizzazione in elementi
semplici di un problema complesso
 separare interfaccia e implementazione
 raggruppare il codice comune e riutilizzarlo
 fornire gli strumenti di base
 fornire potenti classi di dati astratte


(Molte cose che già avete ascoltato...)
Napoli, 6/2/1997
Luca Lista
10
BABAR è il primo esperimento ad
applicare la tecnologia OO su larga scala
(quasi) tutto il codice che viene attualmente
sviluppato è in C++
 gran parte della simulazione resta in
FORTRAN 77 (GEANT 3)

Napoli, 6/2/1997
Luca Lista
11
Fortran e C++
Frazione di codice BaBar per linguaggio
100%
90%
80%
70%
60%
F77
50%
C++
40%
30%
20%
10%
Napoli, 6/2/1997
Luca Lista
19-dic
03-dic
21-nov
07-nov
10-ott
14-set
28-ago
04-lug
07-giu
20-mag
16-feb
0%
12
Fortran e C++
Linee di codice in Fortran
160000
140000
120000
100000
Reco
Sim
80000
Ext & Com
60000
40000
20000
Napoli, 6/2/1997
Luca Lista
19-dic
03-dic
21-nov
07-nov
10-ott
14-set
28-ago
04-lug
07-giu
20-mag
16-feb
0
13
Fortran e C++
Linee di codice in C++
160000
140000
120000
100000
Reco
Sim
80000
Ext & Com
60000
40000
20000
Napoli, 6/2/1997
Luca Lista
19-dic
03-dic
21-nov
07-nov
10-ott
14-set
28-ago
04-lug
07-giu
20-mag
16-feb
0
14
Fortran e C++
Reco
9%
Ext & Com
37%
Ext & Com
36%
Reco
58%
Sim
54%
Sim
6%
F77 Loc
Napoli, 6/2/1997
Luca Lista
C++ Loc
15
Uso di librerie standard

CLHEP
manipolazione di vettori e matrici
geometria nello spazio
algebra di Lorentz
HepTuple
 Rogue Wave Tools.h++ (commerciale)

liste, container e iteratori, manipolazione di
stringhe di caratteri, ...

Standard C++ Library ?
Napoli, 6/2/1997
Luca Lista
16
Data Base e mass storage
 accesso
efficiente e rapido ai dati
 possibilità di non leggere tutte le
informazioni di un evento
. . .
Objectivity (RD45)
Napoli, 6/2/1997
Luca Lista
17
Struttura del software di BABAR
Simulazione Veloce
Aslund
Simulazione Completa
bbsim
Simulazione Completa
Geant4
Digitizzazione
BABAR
F77
C++
Napoli, 6/2/1997
Ricostruzione
Interfaccia
Beta
Luca Lista
Analisi
18
Oggetti
Gli oggetti modellizzano parte dei dati con
le loro funzionalità e le interfaccie a come
manipolarli
 Molto più efficaci di “banche” di dati in
FORTRAN

Napoli, 6/2/1997
Luca Lista
19
Tracking
A
A
AbsTrackFitter
AbsRecoTrack
AbsTrkRep
A
AbsHitOnTrack
T
HepAList
<AbsHitOnTrack>
Napoli, 6/2/1997
Luca Lista
TrkSimpleHelix
20
Oggetti e Moduli
IfrDigi
IfrCluster
MakeIfrClusters
NeutralHadron
MakeNeutralHad
EmcCluster
Napoli, 6/2/1997
Luca Lista
21
Moduli e Framework



I moduli sono animati dal
Framework
supporto per l’I/O
interfaccia interattiva
(Tcl)
 void



Napoli, 6/2/1997

begi(AppRu*);
void
begi(AppJob*);
AbsEvet*
evet(AbsEvet*);
void
ed(AppJob*);
Luca Lista
void
22
Framework
A
AbsEvent
Module_1
Napoli, 6/2/1997
AppModule 0..n
Module_2
Luca Lista
AppFramework
TclFramework
23
la classe AbsEvet

permette l’accesso a tutti i dati di un evento
HepAList<GTrack>
*gTrackList =
aEvet>getGTrackAList();
 (Modifica del design in corso!)
nasconde l’interfaccia con l’I/O (file
sequenziale o database OO)
 separare il problema dell’I/O dallo sviluppo
Napoli, 6/2/1997
Luca Lista
24
delle classi dei dati

Beta: interfaccia all’analisi
Beta rappresenta l’interfaccia ai dati per
l’analisi
 fornisce potenti strumenti per l’analisi
 oggetti Beta sono generati da diversi
programmi (Aslund, bbsim, ricostruzione...)
 analisi scritte oggi in Beta, basate sulla
simulazione veloce, potranno funzionare sui
dati veri senza cambiare una riga di codice

Napoli, 6/2/1997
Luca Lista
25
Oggetti in Beta
 BtaCandidate
 BtaOperator
 BtaFinder
 BtaAssociator
Napoli, 6/2/1997
Luca Lista
26
BtaCandidate
HepLoretzVector
p4();
 Hep3Vector p3();
 doube charge();
 doube mass();
 BtaAbsVertex*
decayVtx();
 PdtEtry*
pdtEtry();

Napoli, 6/2/1997
Luca Lista
27
BtaOperator

BtaOpAdd4
somma i 4-momenti e le cariche

BtaOpVertex
combina i vertici

fit con vincoli di massa, etc.
Napoli, 6/2/1997
Luca Lista
28
Esempi di uso di BtaOperator
BtaCadidate trk1,
trk2;
 BtaOpVtx o;
 BtaCadidate trkNew
=
o.combie(trk1,tr
k2);
 trkNew ha il vertice proveniente dal
fit6/2/1997
di trk1 e trk2
Napoli,
Luca Lista
29

BtaFinder
HepAList<BtaCadidate>
ist;
 BtaV0Fider k0s(ist,
.420,.540);
 BtaV0Fider psis(ist,
2.8, 3.4);
 analogamente avremo, finder di p0, K*, D, B, etc.

Napoli, 6/2/1997
Luca Lista
30
BtaAssociator

BtaAsMcAssoc
Monte Carlo truth (package PDT)

Collegamenti MonteCarlo - Particelle
ricostruite
Napoli, 6/2/1997
Luca Lista
31
Conclusioni

nonostante...
la conoscenza delle tecniche OO non è ancora
molti diffusa,
è difficile coinvolgere nuove persone,
non tutti i tools “classici” sono disponibili in
C++,

la scelta del C++ / Object Oriented sta
mostrando notevoli vantaggi
Napoli, 6/2/1997
Luca Lista
32
Fine
Napoli, 6/2/1997
Luca Lista
33
Napoli, 6/2/1997
Luca Lista
34