Luca Lista Software di ricostruzione OO in BaBar Luca Lista INFN, Sezione di Napoli II Workshop sul...

42
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 of Luca Lista Software di ricostruzione OO in BaBar Luca Lista INFN, Sezione di Napoli II Workshop sul...

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

Luca Lista

Software di ricostruzione OO in BaBar

Software di ricostruzione OO in BaBar

Luca Lista

INFN, Sezione di Napoli

II Workshop sul Software e Calcolo moderno,

Perugia, 15-17 giugno 1998

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

Luca Lista

Condizioni di lavoro Condizioni di lavoro

• BABAR 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

– 109 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

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

Luca Lista

Fortran e C++ in BaBarFortran e C++ in BaBar200k

400k

600k

800k

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

Luca Lista

Crescita del software di BaBarCrescita del software di BaBar

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

Luca Lista

Fortran vs C++Fortran vs C++

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

Luca Lista

Uso di software Uso di software standardstandard

• 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

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

Luca Lista

Struttura del software di BStruttura del software di BAABBARAR

Simulazione VeloceGeant4

Simulazione VeloceGeant4

Simulazione Completabbsim

Simulazione Completabbsim

Simulazione CompletaGeant4

Simulazione CompletaGeant4

InterfacciaBeta

InterfacciaBeta

DigitizzazioneDigitizzazione

RicostruzioneRicostruzioneBABARBABAR

AnalisiAnalisi

F77F77

C++C++

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

Luca Lista

Oggetti della ricostruzioneOggetti della ricostruzione

• Gli oggetti e le loro collaborazioni costituiscono un modello dell’insieme degli elementi che intervengono nella ricostruzione:– informazioni ricostruite: rappresentano

l’output e l’input 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)

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

Luca Lista

Il modello del rivelatoreIl modello del rivelatore

IfrGeom

Ifr

IfrBarrelSector

IfrPlanarSector

IfrBarrelView

IfrView

IfrBwdCapSector

IfrCylindricalSector

IfrDetLeaf

IfrEndCapView

IfrFecIteratorIfrFwdCapSector

IfrInnerSector

IfrInnerView

IfrLayer

IfrLayerIterator

IfrSectorIterator

IfrViewIterator

-_components

1..*

1

IfrDetComposite

1

#_parent

0..1 -_component

0..1 1

1

IfrDetIterator

1

0..1

-_iterator

0..1

IfrSector IfrFec

#_coil

0..1

IfrCoil

1

#_ifrSpecialIron0..1

IfrSpecialIron

1

#_geom0..1

1IfrDetector

0..1

1

0..1

1

0..1

IfrMaterial

1IfrGIfr

0..1

1

0..1

1

IfrDetComponent

10..1

0..1 1

1..*

1

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

Luca Lista

Detector Model & Event DisplayDetector Model & Event Display

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

Luca Lista

L’oggetto modulo: L’oggetto modulo: incapsulare un algoritmoincapsulare un algoritmo

IfrStripfrStrip

MakeIfrClustersMakeIfrClusters

IfrClusterIfrCluster

EmcClusterEmcCluster

MakeNeutralHadMakeNeutralHad

NeutralHadronNeutralHadron

• I moduli hanno come input un insieme di oggetti e producono altri oggetti come output

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

Luca Lista

Moduli e FrameworkModuli e Framework

• I moduli sono animati dal Framework in maniera flessibile

• supporto per l’I/O• interfaccia interattiva (Tcl, Tk)

void begin (AppJob*); AbsEvent* event (AbsEvent*); void end (AppJob*); void abort (AppJob*); void help ();

• E’ possibile passare parametri a ciascun modulo attraverso uno script Tcl

• Una sequenza può essere interrotta per passare all’evento successivo

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

Luca Lista

Sequenze nella ricostruzioneSequenze 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

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

Luca Lista

Framework: moduli e sequenzeFramework: moduli e sequenze

AppSequenceAppModule

AppExecutable AppFramework

1..n

TclFramework

MakeIfrClusters

MakeNeutralHad

AbsEvent

1..n

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

Luca Lista

Evoluzione del disegnoEvoluzione del disegno

AnalysisAnalysis

DesignDesignProductionProduction

TestingTesting

RequirementsRequirements

Un prodotto completo è disponibile solo alla fine

Un prototipo funzionante è disponibile sin dall’inizio

AnalysisAnalysis

DesignDesign

ProductionProduction

TestingTesting

RequirementsRequirements

Waterfall Evolutionary

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

Luca Lista

Evoluzione del disegnoEvoluzione del disegno

• BaBar ha avuto molto presto una catena simrecanalisi

• Modificare una parte del disegno (spesso...) non induce stravolgimenti drammatici ovunque

• Studiare le dipendenze all’interno 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…!

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

Luca Lista

Accesso ai dati di un eventoAccesso ai dati di un evento

• La soluzione più semplice è la seguente:

AbsEvent* event;MyObject *myObject =

event->getMyObject();

•Esempio:

HepAList<GTrack> *gTrackList = event->getGTrackAList();

• Tutti i moduli della ricostruzione dipende dalla classe AbsEvent, quindi gran parte della ricostruzione dipende da HepAList<GTrack>

• In pratica, tutta la ricostruzione dipenderebbe da tutti gli oggetti di un evento

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

Luca Lista

Proxy DictionaryProxy Dictionary

• L’indipendenza dell’evento dalle classi-dati avviene con un meccanismo di proxy-dictionary:

MyObject *myObject = Ifd<MyObject>::get(event);

• Esempio:

HepAList<GTrack> *gTrackList = Ifd<HepAList<GTrack> > ::get(event [, key]);

• nasconde il problema dell’I/O (file sequenziale o database OO) e lo separa dallo sviluppo delle classi dei dati

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

Luca Lista

Clustering nell’IFRClustering nell’IFR

• L’IFR identifica , e K0L

• L’informazione ricostruita nell’IFR si presenta nella forma di cluster di strip “vicine” nello spazio

cluster cluster

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

Luca Lista

Cluster in 2 e 3 dimensioniCluster in 2 e 3 dimensioni

• E’ naturale pensare ad una ricostruzione prima in 2D, poi in 3D, siccome la geometria è proiettiva.

Ifr2DCluster

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

Luca Lista

Primo design a oggettiPrimo design a oggetti

• Come si traduce in oggetti:

Ifr3DCluster Ifr2DCluster21 Ifr1DCluster1 1..n

• Come si presenta l’interfaccia

Ifr2DCluster

numberOfHits () : intnumberOfStrips () : intfirstLayer () : intlastLayer () : inthitLayer () : int

Ifr3DCluster

centerOfGravity () : PointcovMatrix () : BbrErrordirection (from : Point) : VectornumberOfHits () : intnumberOfStrips () : intfirstLayer () : intlastLayer () : inthitLayers () : int

21

Ifr1DCluster

numberOfStrips( )

1

1..n

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

Luca Lista

Cluster compositiCluster compositi

• E’ necessario poter trattare cluster compositi da segmenti in diversi settori

Ifr3DCluster

centerOfGravity () : PointcovMatrix () : BbrErrordirection (from : Point) : VectornumberOfHits () : intnumberOfStrips () : intfirstLayer () : intlastLayer () : inthitLayers () : int

Ifr3DComposite

centerOfGravity () : PointcovMatrix () : BbrErrordirection (from : Point) : VectornumberOfHits () : intnumberOfStrips () : intfirstLayer () : intlastLayer () : inthitLayers () : int

1..n

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

Luca Lista

Cluster astratti e polimorfismoCluster astratti e polimorfismo

• E’ desiderabile che l’utente non distingua tra cluster singoli o compositi

Ifr3DCluster

centerOfGravity () : PointcovMatrix () : BbrErrordirection (from : Point) : VectornumberOfHits () : intnumberOfStrips () : intfirstLayer () : intlastLayer () : inthitLayers () : int

IfrAbs3D

centerOfGravity () : PointcovMatrix () : BbrErrordirection (from : Point) : VectornumberOfHits () : intnumberOfStrips () : intfirstLayer () : intlastLayer () : inthitLayers () : int

Ifr3DComposite

centerOfGravity () : PointcovMatrix () : BbrErrordirection (from : Point) : VectornumberOfHits () : intnumberOfStrips () : intfirstLayer () : intlastLayer () : inthitLayers () : int

1..n

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

Luca Lista

Evoluzione del modelloEvoluzione del modello

• Estensione dell’interfaccia ad ogni richiesta di una nuova funzionalità?

• Estensione a nuovi tipi di cluster?

IfrAbs3D

IfrAbs3D () : IfrAbs3DIfrAbs3D (a : const IfrAbs3D&) : IfrAbs3Dposition () : HepPoint~IfrAbs3D ()numberOfDigis () : intnumberOfStrips () : intcovMatrix () : BbrErrorpolCovMatrix () : BbrError$polCovMatrix ( : BbrError&, : HepPoint&) : BbrErrorfirstLayer () : intlastLayer () : inthitLayers () : inthitLayersI () : inthitsInLayer (n : int) : intstripsInLayer (n : int) : intmaxMissed () : intsectionCode () : Ifr::SectionCodecomponent ( : int = 0) : Ifr3DCluster*numberOfComponents () : intnumberOfComponents ( : Ifr::SectorCode) : intnumberOfComponents ( : Ifr::SectionCode) : intgetComposite () : Ifr3DComposite*hasBarrel () : boolhasEndCap () : boolhasFwdCap () : boolhasBwdCap () : boolhasInner () : booloperator == ( : const IfrAbs3D&) : boolnumber () : unsigned int$resetCounter () : voidsaveGuts ( : RWvostream&) : voidrestoreGuts ( : RWvistream&) : void

Ifr3DComposite Ifr3DCluster1..n

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

Luca Lista

Uso del visitor patternUso del visitor pattern

• L’estensione delle funzionalità non richiede modifica dell’interfaccia

Ifr3DCluster

accept (IfrClusterVisitor<T>) : T

Ifr2DCluster

accept (IfrClusterVisitor<T>) : T

2

IfrAbs3D

accept (IfrClusterVisitor<T>) : T

Ifr3DComposite

accept (IfrClusterVisitor<T>) : T

1..n

IfrClusterVisitor

operate (Ifr3DCluster*) : Toperate (Ifr3DComposite*) : Toperate (Ifr2DCluster*) : T

T Ifr3DComposite:: accept(IfrClusterVisitor<T>& v){ return v.operate(this);}

T Ifr3DCluster:: accept(IfrClusterVisitor<T>& v){ return v.operate(this);}

T Ifr2DCluster:: accept(IfrClusterVisitor<T>& v){ return v.operate(this);}

IfrVstNumberOfStrips

operate (Ifr3DCluster*) : intoperate (Ifr3DComposite*) : intoperate (Ifr2DCluster*) : int

IfrClusterVisitor<int>

operate (Ifr3DCluster*) : intoperate (Ifr3DComposite*) : intoperate (Ifr2DCluster*) : int

IfrClusterVisitor<class Point>

operate (Ifr3DCluster*) : Pointoperate (Ifr3DComposite*) : Pointoperate (Ifr2DCluster*) : Point

IfrVstCenterOfGravity

operate (Ifr3DCluster*) : Pointoperate (Ifr3DComposite*) : Pointoperate (Ifr2DCluster*) : Point

IfrVstHitLayers

operate (Ifr3DCluster*) : intoperate (Ifr3DComposite*) : intoperate (Ifr2DCluster*) : int

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

Luca Lista

Visitor patternVisitor pattern

• Diagramma di interazione

theCluster : Ifr3DComposite

theCOGInstance : IfrVstCenterOfGravity

theClient

operate (this)

getSomeInformation()

accept (theCOGInstance)

doSomeComputation()

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

Luca Lista

Introduzione di un nuovo tipo di cluster

Introduzione di un nuovo tipo di cluster

• Nuovo layout dell’RPC clilindrico con lettura stereo

• Non è più possibile usare clustering 2D

• Il clustering composito non può più essere costituito da elementi omogenei

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

Luca Lista

Beta: l’interfaccia all’analisiBeta: l’interfaccia all’analisi

“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

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

Luca Lista

Oggetti in BetaOggetti in Beta

•BtaCandidate– candidato particella

•BtaOperator– operatore che combina le

particelle

•BtaFinder•BtaAssociator

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

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.: KS +-)

• Accesso alle informazioni dei sotto-rivelatori e di PID

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

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);

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

Luca Lista

BtaFinderBtaFinder

• HepAList<BtaCandidate> 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

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

Luca Lista

BtaAssociatorBtaAssociator

• BtaMcAssoc– Monte Carlo truth (package PDT)

• Collegamenti MonteCarlo - Particelle ricostruite

– BtaMcAssoc *truthMap;– BtaCandidate *reco;– BtaCandidate *mc = truthMap ->mcFromReco(reco);

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

Luca Lista

BaBar Event StoreBaBar Event Store

• BaBar ha adottato un database a oggetti per l’event store

• Le motivazioni, rispetto all’uso di un file sequenziale, sono che:– non e’ necessario caricare tutti gli

eventi se bisogna analizzarne solo alcuni

– è possibile caricare solo parte delle informazioni dell’evento da analizzare

– Il livello di dettaglio da esplorare può essere diverso evento per evento

• BaBar usa Objectivity sia per l’event store che per le calibrazioni e allineamenti

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

Luca Lista

BaBar Event StoreBaBar Event Store

• L’evento viene suddiviso in unità modulari che possono essere caricate separatamente evento per evento

• Parte dei dati può essere acceduta via rete

RawRaw 25kB25kB

EventEvent

RecRec 100kB100kB

EsdEsd 10kB10kB

AodAod 1kB1kB

TagTag 100B100B

HdrHdr <64B<64B

SimSim ??????

TruTru ??????

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

Luca Lista

Vincoli per gli oggetti persistentiVincoli 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<T>, 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 nell’uso dello schema evolution

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

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)

ObjectivityObjectivity

• Objectivity, come altri OODB, è molto intrusivo

• Usare Objy come suggerito dalla ditta rende il software completamente dipendente da un prodotto commerciale

• Objy può rompere l’incapsulamento!

1) © Objectivity Inc., dal corso tenuto Mountain View

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

Luca Lista

BaBar Event StoreBaBar 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

MyRecoObjMyRecoObj MyRecoObjPMyRecoObjP

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

Luca Lista

BaBar Event StoreBaBar 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 dell’accesso al DB e della conversione transiente persistente

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

Luca Lista

BaBar Event StoreBaBar Event Store

• Come passare da un oggetto transiente a un oggetto persistente:

AbsObjectAbsObject

ConcObj1ConcObj1 ConcObj2ConcObj2

AbsObjectPAbsObjectP

ConcObj1PConcObj1P ConcObj2PConcObj2P

FactoryFactory

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

Luca Lista

ObjListPObjListP

ObjListPObjListP

Oggetti persistenti compositiOggetti persistenti compositi

• E’ conveniente compattare in un solo oggetto più oggetti semplici– es.: Geant Hits, Digis

• Implementare i puntatori non è immediato...

ObjObj ObjObj ObjObj ObjObj

ObjObj ObjObj ObjObj ObjObj

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

Luca Lista

ConclusioniConclusioni

• Il software OO di BaBar è in sviluppo da > 2.5 anni

• E’ stata acquisita una enorme esperienza sull’uso 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

• L’anno prossimo il software verrà messo alla prova su dati reali!