L’ambiente per la simulazione e
l’analisi in CMS
Claudio Grandi
INFN-Bologna
Claudio Grandi
INFN-Bologna
Attività principali
•
•
•
•
Simulazione della fisica
Simulazione del rivelatore
Simulazione dell’elettronica
Simulazione del trigger
• Ricostruzione
• Analisi
•
La simulazione dell’elettronica viene chiamata
digitizzazione
Claudio Grandi
INFN-Bologna
2
Attività principali
4-momenti
Geometria
del
rivelatore
Dati per
l’analisi
Dati del
Trigger
Claudio Grandi
INFN-Bologna
Simulazione
del rivelatore
Simulazione
della fisica
HITS
Digitizzazione
(Specifica di
CMS)
Ricostruzione
DIGI
(raw data)
Simulazione
del Trigger
Trigger
DIGI
3
ORCA Prod.
MC Prod.
Gli strumenti utilizzati
HEPEVT
ntuples
Pythia
CMSIM
(GEANT3)
Zebra files
with HITS
Catalog import
Objectivity
Database
ORCA
Digitization
(merge signal
and pile-up)
Objectivity
Database
ORCA
ooHit
Formatter
HLT Grp
Databases
Claudio Grandi
INFN-Bologna
Objectivity
Database
Objectivity
Objectivity
Database
ytivitcejbO
Database
esabataD
Mirrored Db’s
Level 1 Trigger
simulation
HLT Algorithms
Reconstructed
Objects
(US,Russia,Italy...)
Catalog import
4
Gli strumenti utilizzati
• Simulazione della fisica Pythia
• Simulazione del rivelatore CMSIM (GEANT3)
•
•
•
•
Simulazione dell’elettronica ORCA
Simulazione del trigger ORCA
Ricostruzione ORCA
Analisi ORCA+HBOOK+PAW ( +IGUANA)
C++/JAVA
Claudio Grandi
INFN-Bologna
FORTRAN
5
ORCA e CARF
Object Reconstruction for CMS Analysis
–
–
–
–
–
digitizzazione del rivelatore
ricostruzione del rivelatore
simulazione del trigger
ricostruzione degli oggetti fisici
strumenti di analisi
CMS Analysis and Reconstruction Framework
– immagazzinamento dei dati
– framework per analisi e ricostruzione
•
La proprietà di un dato di poter essere
immagazzinato su disco è detta persistenza
Un oggetto non persistente è detto transiente
Claudio Grandi
INFN-Bologna
6
Programmare in ORCA
N.B. Non entrerò nel dettaglio di come funziona
ORCA né di come si programma ad oggetti
• L’utente deve costruire un oggetto di analisi,
che come tutti gli oggetti viene creato e distrutto
• L’oggetto analisi deve sapere quando viene
letto un nuovo evento per poterlo analizzare
– L’oggetto analisi si registra presso un servizio che sa
quando viene letto un nuovo evento per poter essere
notificato al momento opportuno
•
Il servizio che notifica la presenza di un nuovo
evento viene chiamato Dispatcher, l’oggetto che si
registra al Dispatcher si chiama Observer
Claudio Grandi
INFN-Bologna
7
Dispatcher/Observer
Dispatcher
Obs1
Claudio Grandi
Obs2
INFN-Bologna
Obs3
Obs4
Observers
8
Un oggetto di analisi
• Tipicamente un’analisi deve eseguire qualcosa:
– all’inizio della sua vita
Nel costruttore dell’analisi
– al set-up della geometria (della calibrazione, ecc…)
Deve essere Observer di SetUp
– evento per evento
Deve essere Observer di Event
– alla fine del processamento
Nel distruttore dell’analisi
• L’oggetto di analisi viene creato (come oggetto
statico) semplicemente dichiarandolo!
PKBuilder<UserAnal> myAnal(“UserAnal”);
Claudio Grandi
INFN-Bologna
9
Il flusso del programma
• In ORCA gli oggetti vengono prodotti solo
quando richiesti:
– l’iniziatore del processamento è il codice utente
– l’analisi deve conoscere solamente a chi chiedere gli
oggetti che vuole utilizzare senza conoscere le fasi
precedenti del processamento!
– All’atto di una richiesta di alto livello viene iniziata
una catena di richieste che arriva fino agli oggetti
elementari (ad esempio i raw data). Le richieste
vengono quindi soddisfatte ripercorrendo la catena
in senso inverso
•
La tecnica viene chiamata reconstruction on
demand ed è implementata tramite LazyObserver
Claudio Grandi
INFN-Bologna
10
Lazy Observers
Dispatcher
Lazy
Obs2
uptodate
obsolete
Lazy
Obs1
uptodate
obsolete
Claudio Grandi
INFN-Bologna
Obs
11
Esempio: il trigger di muoni
RPC
DTBX
CSC
RPC
BTI
Wire card Strip card
On-chamber
Trigger
Electronics
Bunch & Track Identifier
PACT
Trigger Server
TRACO
TRAck COrrelator
Wire LCT
card
Strip LCT
card
motherboard
PAttern
Comparator
Trigger
Muon Trigger Track Finder
Muon Trigger
Track Finder
RPC
sorter
DT
sorter
CSC
sorter
Calorimeter
quiet bits
Claudio Grandi
DT MTTF
CSC MTTF
Global muon Trigger
INFN-Bologna
12
Componenti DT on-chamber
Il BTI trova segmenti in un
quadrupletto e assegna il BX
utilizzando una tecnica di
mean-timer
Il TRACO costruisce tracce in una
camera correlando i segmenti dei
piani R-
Il Trigger Server seleziona i migliori 2
segmenti della camera, sopprime i ghosts
e passa le tracce al Trigger Regionale
Claudio Grandi
INFN-Bologna
13
Pacchetti in ORCA
Interfaccia all’utente
System setup
Simulazione delle
componenti del trigger
Claudio Grandi
INFN-Bologna
Configurazione
Geometria
ecc...
14
Diagramma delle classi
Si attivano solamente quando
l’output del trigger è richiesto
Oggetti visti
dall’utente
Camere e Trigger
Units sono in corrispondenza 1-1
Claudio Grandi
INFN-Bologna
15
Interaction diagram per il BTI
Quando un evento è letto
Claudio Grandi
INFN-Bologna
Quando l’output è richiesto
16
Esempio di codice utente
#include “...” // All needed include files here
class UserAnal : ActiveObserver<G3EventProxy*> {
public:
UserAnal() {}
virtual ~UserAnal() {}
void upDate(G3Eventproxy* ev) {
// Processing an event...
L1MuDTTrigSetup* setup = Singleton<L1MuDTTrigSetup>::instance();
L1MuDTTrig* dttrig = setup->DTTrig();
//define chamber (iwh,ist,ise) and BX (is)
int iwh=…;int ist=…;int ise=…;int is=…;
L1MuDTChambPhSegm* first = dttrig->chPhiSegm1(iwh,ist,ise,is);
L1MuDTChambPhSegm* second = dttrig->chPhiSegm2(iwh,ist,ise,is);
L1MuDTChambThSegm* theta = dttrig->chThetaSegm(iwh,ist,ise,is);
}
};
#include “Utilities/Notification/interface/PackageInitializer.h”
PKBuilder<UserAnal> myAnal(“UserAnal”);
Claudio Grandi
INFN-Bologna
17
SCRAM e CVS
Software Configuration, Release And
Management
–
–
–
–
–
Sviluppato da CMS
Compilazione e link dei programmi (build)
Gestione della configurazione
Distribuzione dell’ambinete di siluppo
condivisione delle risorse
Concurrent Versioning System
– Gestione del codice sorgente (anche in sviluppo!)
•
Il processo di copilazione e creazione di
librerie, link di un eseguibile, ecc... viene detto
build
Claudio Grandi
INFN-Bologna
18
Comandi frequenti
scram list lista dei progetti disponibili
scram project ORCA ORCA_4_0_0 installazione di
una directory di sviluppo per ORCA 4.0.0
scram b build delle librerie o degli eseguibili
eval `scram runtime -csh` definizione
dell’ambiente per buid e running
cvs co Examples/ExProduction copia il codice da
CVS alla directory di lavoro
•
repository dove CVS tiene il codice
checkout/commit copia dal repository alla
directory di lavoro e viceversa
head l’ultima versione disponibile nella repository
tag una versione a cui è stato dato un nome
Claudio Grandi
INFN-Bologna
19
La struttura delle directories
creata da
Top Directory
scram project ...
.SCRAM
bin
OS
OS
config
configurazioni per il
build
Claudio Grandi
OS
logs
log
files
src
subsys
tmp
OS
subsys
codice sorgente
(checkout + utente)
files temporanei
librerie (incluso in
(files oggetto,
$LD_LIBRARY_PATH) dipendenze, ecc...)
eseguibili
(incluso in $PATH)
configurzioni
per i pacchetti
esterni
lib
INFN-Bologna
20
Struttura per un sottosistema
informazioni
sul dominio
(doc, html, ecc...)
domain
interface
package
src
implementazione
dei metodi (.cc)
interfacce
(.h, .icc)
Claudio Grandi
Sub-system
top Directory
INFN-Bologna
programmi
utente per
test
(.cpp, .cc)
test
stubs
.h e .cc per
librerie di
test
21
Librerie
• Viene prodotta una libreria per ogni
sottosistema. Per crearla si usa scram b nella
top directory del sottosistema
– shared (libxxx.so): funzioni caricate a run-time
• si possono ricompilare le librerie senza dover ri-linkare!
• le librerie devono essere disponibili a run-time
– archive (libxxx.a): funzioni attaccate all’eseguibile
– debug (libxxx_d.so e libxxx_d.a): ogni libreria
può essere compilata con l’opzione per il debugger
(lenta! occupa molto spazio!)
– per default vengono create shared e shared_debug
• Editare top_dir/config/library_makefile.mk per
avere solo le shared (se è il caso!)
Claudio Grandi
INFN-Bologna
22
Il sotto-dominio Workspace
• Contiene i programmi utente
• Assomiglia alla directory test di un package
• E’ il posto in cui lavorare!
• Per la configurazione si usa il file:
top_dir/config/Worksapce_makefile.mk
• Se fate il check-out di Workspace avete alcuni
programmi di esempio e files per la
configurazione dell’ambiente oltre ad un
esempio di BuildFile (vedi oltre...)
Claudio Grandi
INFN-Bologna
23
BuildFile
• Sono l’equivalente dei Makefile unix e sono
invocati da scram b (in test o Workspace)
• Contengono le informazioni sulle librerie:
<ignore>commenti</ignore>
<External ref=cern>
<External ref=cmsim>
<lib name=L1MuDTTrigger>
<use name=Muon>
<use name=CARF>
<use name=Utilities>
<bin file=ExProdRead.cpp>
Commenti sull’eseguibile
</bin>
Claudio Grandi
INFN-Bologna
include prodotti esterni
include la libreria
di un package
include tutte le librerie
di un sotto-dominio
sorgente dell’eseguibile
24
Parametri
• Gran parte dei parametri (nomi dei files,
numero di eventi, informazioni per il pile-up,
ecc..) sono passati ai programmi tramite
variabili ambientali unix
• Alcuni parametri di configurazione sono scritti
nel file .orcarc che viene cercato nella
directory di lavoro
• L’interfaccia per l’uso del database (Objectivity)
è in fase di sviluppo (molti cambiamenti in
ORCA 4 rispetto ad ORCA 3!!!)
Claudio Grandi
INFN-Bologna
25
Input files
• In ORCA 3 era possibile leggere direttamente
gli HITS di GEANT dai files .fz e fare tutta
l’analisi in modo transiente
• In ORCA 4 l’analisi può essere fatta solamente
a partire da databases di Objectivity
• Esiste un programma speciale di ORCA che
viene chiamato ooHitFormat che “copia” gli
HITS di GEANT dai files .fz ai databases di
Objectivity senza fare alcun processamento
Claudio Grandi
INFN-Bologna
26
Objectivity/DB
• Objectivity/DB (Objy) è un database ad oggetti.
Ciò significa che i dati sono salvati in strutture
complesse e non in strutture lineari
– Vi ricordate:
COMMON/MZSTORE/...ISTORE(BIGNUMBER)???
• Ogni oggetto è caratterizzato da un
identificatore. Questo permette di usare un
efficiente sistema di puntatori per navigare nel
database
• Ogni oggetto è creato a partire dalle
informazioni contenute nell’header file
– sono possibili strutture arbitrariamente complesse!!!
Claudio Grandi
INFN-Bologna
27
Componenti di Objy
Claudio Grandi
INFN-Bologna
28
Un po’ di lessico di Objy
Federazione: è il punto d’ingresso al sistema di
databases
Schema: contiene la struttura degli oggetti. E’
salvato nella federazione
Database: coincide fisicamente con un file
Boot file: contiene le informazioni per entrare
nella federazione
Lock server: è un processo che gestisce gli
accessi concorrenti ai files delle federazioni
AMS server: è un processo che permette di
accedere ai databases remoti
Container: le unità logiche in cui è diviso un
database
Claudio Grandi
INFN-Bologna
29
Uso di Objy con ORCA
• Ogni utente si crea una propria federazione di
sviluppo
• La variabile ambientale $OO_FD_BOOT punta al
boot file della federazione
• I databases coi dati possono essere attaccati
alla federazione privata in read-only
• Se si vogliono solamente analizzare i dati
senza modificare gli schemi o creare nuovi
databases, si può usare la federazione comune
di analisi (attualmente quelle dei gruppi HLT)
Claudio Grandi
INFN-Bologna
30
Documentazione
• Pagine web:
– http://cmsdoc.cern.ch/orca ORCA
– http://cmsdoc.cern.ch/orca/tutorials/in
dex.html tutorial di ORCA 3
– http://cmsdoc.cern.ch/Releases/SCRAM/cu
rrent/doc/html/index.html SCRAM
– http://www.loria.fr/~molli/cvs/doc/cvs_
toc.html CVS
– http://wwwinfo.cern.ch/asd/lhc++/Object
ivity/index.html Objectivity
Claudio Grandi
INFN-Bologna
31