La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Luca Lista Software di ricostruzione OO in BaBar Luca Lista INFN, Sezione di Napoli II Workshop sul Software e Calcolo moderno, Perugia, 15-17 giugno 1998.

Presentazioni simili


Presentazione sul tema: "Luca Lista Software di ricostruzione OO in BaBar Luca Lista INFN, Sezione di Napoli II Workshop sul Software e Calcolo moderno, Perugia, 15-17 giugno 1998."— Transcript della presentazione:

1 Luca Lista Software di ricostruzione OO in BaBar Luca Lista INFN, Sezione di Napoli II Workshop sul Software e Calcolo moderno, Perugia, giugno 1998

2 Luca Lista Condizioni di lavoro B A B AR comincerà la presa dati tra meno di un anno Alta statistica –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 –10 9 eventi/anno (25Tbyte/anno di raw data) Affidabilità –Il riprocessamento deve essere molto raro Mantenibilità –più di 10 anni di vita per il software –sviluppo distribuito in Europa e America

3 Luca Lista Fortran e C++ in BaBar 200k 400k 600k 800k

4 Luca Lista Crescita del software di BaBar

5 Luca Lista Fortran vs C++

6 Luca Lista Uso di software standard CLHEP –manipolazione di vettori e matrici –geometria nello spazio –algebra di Lorentz HepTuple –ennuple e istogrammi Standard C++ Library ? Software commerciale: – Tools.h++ liste, container e iteratori, manipolazione di stringhe di caratteri, persistenza,... – Data Base

7 Luca Lista Struttura del software di B A B AR Simulazione Veloce Geant4 Simulazione Veloce Geant4 Simulazione Completa bbsim Simulazione Completa bbsim Simulazione Completa Geant4 Simulazione Completa Geant4 Interfaccia Beta Interfaccia Beta Digitizzazione Ricostruzione B A B AR Analisi F77 C++

8 Luca Lista Oggetti della ricostruzione Gli oggetti e le loro collaborazioni costituiscono un modello dellinsieme degli elementi che intervengono nella ricostruzione: –informazioni ricostruite: rappresentano loutput e linput dei vari passi della ricostruzione hit, tracce, cluster, particelle, informazioni sul PID,... –modelli ausiliari al problema elementi di rivelatore, traiettorie, … –algoritmi: creatori e manipolatori altri oggetti cluster finder, track fitter, converter transiente persistente... molti algoritmi di ricostruzione sono incapsulati in oggetti (moduli)

9 Luca Lista Il modello del rivelatore

10 Luca Lista Detector Model & Event Display

11 Luca Lista Loggetto modulo: incapsulare un algoritmo frStrip IfrStrip MakeIfrClusters IfrCluster EmcCluster MakeNeutralHad NeutralHadron I moduli hanno come input un insieme di oggetti e producono altri oggetti come output

12 Luca Lista Moduli e Framework I moduli sono animati dal Framework in maniera flessibile supporto per lI/O interfaccia interattiva ( Tcl, Tk ) lvoid begin (AppJob*); lAbsEvent* event (AbsEvent*); lvoid end (AppJob*); lvoid abort (AppJob*); lvoid help (); E possibile passare parametri a ciascun modulo attraverso uno script Tcl Una sequenza può essere interrotta per passare allevento successivo

13 Luca Lista Sequenze nella ricostruzione SvtSequence SvtInitSequence SvtBuildEnv SvtSimSequence SvtMakeDigis SvtRemapDigis SvtRecoSequence SvtHitReco SvtTrackFinder SvtFillGTrack SvtTracksTest SvtHist DchSequence DchInitSequence DchSimSequence MakePointers DchMakeDigi DchRecoSequence DchMakeHits DchTrackFinder DchHist TrkSequence TrkInitSequence TrkSimSequence TrkRecoSequence DcxTrackFinder TrkKillDch TrackMerge KalFit TrkKillKal TrkMassFitter TrkGTrkMatch DchMakePid TrkQASvt TrkQADch TrkQAMerge EmcSequence EmcInitSequence EmcSimSequence EmcFastGHitsToDigis EmcRecoSequence EmcMake2dCluster EmcMakeBump EmcTrackMatch EmcPidSequence EmcIdentify EmcHist EmcPidHist IfrSequence IfrInitSequence IfrBuildEnv IfrRndmInit MakeXReference BBGeomRead IfrGeomInit IfrVstModule IfrSimSequence IfrGHitToStrip IfrNoise IfrStripSort IfrMakeDigiTime IfrRecoSequence IfrStripToLayer IfrTimePointers IfrMake2DClusters IfrMake3DClusters IfrAnalSequence IfrNtuple IfrTimeHisto IfrTest IfrPidSequence SwmTrkMaker IfrTrackMatch IfrMake3DComposites IfrDiscrModule IfrDiscrNtuple DrcSequence DrcInitSequence DrcBuildEnv DrcBuildGeom DrcSimSequence DrcMakeDigis DrcRecoSequence DrcMakeTracks DrcMakeRecoHits DrcAssociate DrcIdentify DrcPrint DrcHist

14 Luca Lista Framework: moduli e sequenze

15 Luca Lista Evoluzione del disegno Analysis Design Production Testing Requirements Un prodotto completo è disponibile solo alla fine Un prototipo funzionante è disponibile sin dallinizio Analysis Design Production Testing Requirements Waterfall Evolutionary

16 Luca Lista Evoluzione del disegno BaBar ha avuto molto presto una catena sim rec analisi Modificare una parte del disegno (spesso...) non induce stravolgimenti drammatici ovunque Studiare le dipendenze allinterno del codice è un compito fondamentale per riconoscere i punti più deboli del design –Rational Rose –Uso delle metriche Il codice di BaBar non è perfetto, ma contributi più fortran-like tendono a essere limitati in aree ben definite –Gli sviluppatori dei sottosistemi stanno diventando sempre più competenti…!

17 Luca Lista Accesso ai dati di un evento La soluzione più semplice è la seguente: AbsEvent* event; MyObject *myObject = event->getMyObject(); Esempio: HepAList *gTrackList = event->getGTrackAList(); Tutti i moduli della ricostruzione dipende dalla classe AbsEvent, quindi gran parte della ricostruzione dipende da HepAList In pratica, tutta la ricostruzione dipenderebbe da tutti gli oggetti di un evento

18 Luca Lista Proxy Dictionary Lindipendenza dellevento dalle classi-dati avviene con un meccanismo di proxy-dictionary: MyObject *myObject = Ifd ::get(event); Esempio: HepAList *gTrackList = Ifd > ::get(event [, key]); nasconde il problema dellI/O (file sequenziale o database OO) e lo separa dallo sviluppo delle classi dei dati

19 Luca Lista Clustering nellIFR LIFR identifica, e K 0 L Linformazione ricostruita nellIFR si presenta nella forma di cluster di strip vicine nello spazio cluster

20 Luca Lista Cluster in 2 e 3 dimensioni E naturale pensare ad una ricostruzione prima in 2D, poi in 3D, siccome la geometria è proiettiva. Ifr2DCluster

21 Luca Lista Primo design a oggetti Come si traduce in oggetti: Come si presenta linterfaccia

22 Luca Lista Cluster compositi E necessario poter trattare cluster compositi da segmenti in diversi settori

23 Luca Lista Cluster astratti e polimorfismo E desiderabile che lutente non distingua tra cluster singoli o compositi

24 Luca Lista Evoluzione del modello Estensione dellinterfaccia ad ogni richiesta di una nuova funzionalità? Estensione a nuovi tipi di cluster?

25 Luca Lista Uso del visitor pattern Lestensione delle funzionalità non richiede modifica dellinterfaccia

26 Luca Lista Visitor pattern Diagramma di interazione

27 Luca Lista Introduzione di un nuovo tipo di cluster Nuovo layout dellRPC clilindrico con lettura stereo Non è più possibile usare clustering 2D Il clustering composito non può più essere costituito da elementi omogenei

28 Luca Lista Beta: linterfaccia allanalisi provide a simple, common basis for writing detailed physics analysis programs Facile da usare –non bisogna essere esperti di C++ Fornisce potenzialità di analisi complete Lo stesso codice piu girare su diversi campioni di dati: –full simulation –fast simulation –dati reali

29 Luca Lista Oggetti in Beta BtaCandidate –candidato particella BtaOperator –operatore che combina le particelle BtaFinder BtaAssociator

30 Luca Lista BtaCandidateBtaCandidate HepLorentzVector p4(); Hep3Vector p3(); double charge(); double mass(); BtaAbsVertex* decayVtx(); PdtEntry* pdtEntry(); TrkRecoTrk* recoTrk();... Relazione madre-figlio Gestione di candidati compositi (es.: K S + - ) Accesso alle informazioni dei sotto-rivelatori e di PID

31 Luca Lista BtaOperatorBtaOperator BtaOpAdd4 –somma i 4-momenti e le cariche BtaOpVertex –combina i vertici ma anche fit con vincoli di massa, etc. –BtaOpAdd4 o; –BtaCandidate t1, t2, t3; –BtaCandidate t12 = o.combine(t1, t2); –BtaCandidate t123 = o.combine(t1, t2, t3);

32 Luca Lista BtaFinderBtaFinder HepAList list; BtaV0Finder k0s(list,.420,.540); BtaV0Finder psis(list, 2.8, 3.4); analogamente avremo, finder di, K *, D, B, etc. –BtaVFinder, BtaV0Finder, BtaPidFinder, … I finder usano i combiner

33 Luca Lista BtaAssociatorBtaAssociator BtaMcAssoc –Monte Carlo truth (package PDT) Collegamenti MonteCarlo - Particelle ricostruite –BtaMcAssoc *truthMap; –BtaCandidate *reco; –BtaCandidate *mc = truthMap ->mcFromReco(reco);

34 Luca Lista BaBar Event Store BaBar ha adottato un database a oggetti per levent store Le motivazioni, rispetto alluso di un file sequenziale, sono che: –non e necessario caricare tutti gli eventi se bisogna analizzarne solo alcuni –è possibile caricare solo parte delle informazioni dellevento da analizzare –Il livello di dettaglio da esplorare può essere diverso evento per evento BaBar usa Objectivity sia per levent store che per le calibrazioni e allineamenti

35 Luca Lista BaBar Event Store Levento viene suddiviso in unità modulari che possono essere caricate separatamente evento per evento Parte dei dati può essere acceduta via rete Raw 25kB Event Rec 100kB Esd 10kB Aod 1kB Tag 100B Hdr <64B Sim ??? Tru ???

36 Luca Lista Vincoli per gli oggetti persistenti Ogni classe persistente deve ereditare da d_Object ( ooObj ) Oggetti persistenti non possono contenere puntatori a oggetti transienti ma solo smart pointers a oggetti persistenti ( d_Ref, o ooRef(T) ) Modificare una classe richiede modificare lo schema della classe nel database per poter continuare a usare oggetti precedentemente immagazzinati. BaBar ha sperimentato problemi nelluso dello schema evolution

37 Luca Lista ooHandlke(ooFDObj) fdbH; ooItr(Patron) patronItr; const char* pred = ((_firstName =˜.*James.*) AND (_address =˜.*Virginia.*)); patronItr.scan(fdbH, pred); while(patronItr.next()){ patronItr.print(); } 1) Objectivity Objectivity, come altri OODB, è molto intrusivo Usare Objy come suggerito dalla ditta rende il software completamente dipendente da un prodotto commerciale Objy può rompere lincapsulamento! 1) © Objectivity Inc., dal corso tenuto Mountain View

38 Luca Lista BaBar Event Store BaBar ha scelto un approccio che lo rende meno dipendente da Objy: –separare le classi transienti dalle classi persistenti Questo richiede una grossa estensione del disegno, ma tutto il codice (transiente) fino ad ora scritto e funzionante non deve essere modificato MyRecoObj MyRecoObjP

39 Luca Lista BaBar Event Store Vantaggi: –indipendenza dal prodotto: cambiare DB richiede modifiche in un ben determinato settore del codice –il codice in uso non va modificato –maggior robustezza Svantaggi: –si perdono diverse potenzialità: accesso automatico ai dati in uso nessun meccanismo esterno necessario alla persistenza –duplicazione delle classi ( Xxx XxxP ) –extra codice per la gestione dellaccesso al DB e della conversione transiente persistente

40 Luca Lista BaBar Event Store Come passare da un oggetto transiente a un oggetto persistente: AbsObject ConcObj1 ConcObj2 AbsObjectP ConcObj1P ConcObj2P Factory

41 Luca Lista ObjListP Oggetti persistenti compositi E conveniente compattare in un solo oggetto più oggetti semplici –es.: Geant Hits, Digis Implementare i puntatori non è immediato... Obj

42 Luca Lista Conclusioni Il software OO di BaBar è in sviluppo da > 2.5 anni E stata acquisita una enorme esperienza sulluso delle nuove tecnologie software –OO A&D –C++ e librerie standard –Objectivity –etc. I risultati sono più che soddisfacenti Si rivolge sempre più enfasi sulla qualità del processo di sviluppo Lanno prossimo il software verrà messo alla prova su dati reali!


Scaricare ppt "Luca Lista Software di ricostruzione OO in BaBar Luca Lista INFN, Sezione di Napoli II Workshop sul Software e Calcolo moderno, Perugia, 15-17 giugno 1998."

Presentazioni simili


Annunci Google