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*); AbsEvet* evet(AbsEvet*); void ed(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 AbsEvet permette l’accesso a tutti i dati di un evento HepAList<GTrack> *gTrackList = aEvet>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 HepLoretzVector p4(); Hep3Vector p3(); doube charge(); doube mass(); BtaAbsVertex* decayVtx(); PdtEtry* pdtEtry(); 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 BtaCadidate trk1, trk2; BtaOpVtx o; BtaCadidate trkNew = o.combie(trk1,tr k2); trkNew ha il vertice proveniente dal fit6/2/1997 di trk1 e trk2 Napoli, Luca Lista 29 BtaFinder HepAList<BtaCadidate> ist; BtaV0Fider k0s(ist, .420,.540); BtaV0Fider psis(ist, 2.8, 3.4); analogamente avremo, finder di p0, K*, D, B, etc. Napoli, 6/2/1997 Luca Lista 30 BtaAssociator BtaAsMcAssoc 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