Nicola Amapane Tommaso Boccali (SNS Pisa)

Slides:



Advertisements
Presentazioni simili
Funzioni e procedure Ogni linguaggio di programmazione ad alto livello mette a disposizione del programmatore questi strumenti, ed il C non è da meno!
Advertisements

Una applicazione complessa non può essere sviluppata in un unico file: sarebbe ingestibile! Deve necessariamente essere strutturata su più file sorgente.
Lezione 1 Primi passi in HtML SCRIVERE TESTI di Sergio Capone
Code::Blocks Ambiente di sviluppo.
Code::Blocks Ambiente di sviluppo.
Installazione di Apache 2, PHP5, MySQL 5
File System Cos’è un File System File e Directory
Algoritmi e Programmazione
Classi ed Oggetti in Java (Cenni). Richiami Ruolo delle Classi in Java Oggetti.
1 Classi di memorizzazione. 2 Definiscono le regole di visibilità delle variabili e delle funzioni quando il programma è diviso su più file Stabiliscono.
Mantenimento dello stato Laboratorio Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR -
Connessione con MySQL.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Dr. Giovanni Stracquadanio
Root Stefano Lacaprara (slides rubate a Tommaso Boccali)
Laboratorio di Linguaggi note sull'uso dell' IDE DevC++ Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
Corso Linux Base 2. Uso del Sistema. © Corso Linux Base - Uso del Sistema Logging In (1) Una volta partito il sistema lutente esegue la procedura.
Installazione pacchetti sotto Linux. Linux: Installare le applicazioni Adesso che abbiamo configurato Linux vogliamo imparare a installare qualche programma.
Guida Linux Molto rapida…. Due parole sullambiente grafico Potete usare: KDE o GNOME Si sceglie prima di mettere la password. Questione di gusti…
Le tecniche di vendita come fattore di successo
Struttura dei sistemi operativi (panoramica)
Corso di Informatica A.A
memoria gestita staticamente:
1 LINUX: struttura generale The layers of a UNIX system. User Interface.
Windows Sistema operativo con interfaccia grafica per PC IBM compatibili (varie versioni dal 95) La gestione dei file viene fatta secondo le modalità.
Sistemi Operativi - Introduzione 1 Informazioni utili Per avere una distribuzione linux sul proprio pc: 1.
1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... ASP. Net Web Part e controlli di login Elaborazione di Franco Grivet Chin.
DBMS ( Database Management System)
C# LE BASI 2007 Prima lezione - Introduzione.
Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno.
Claudio Grandi INFN-Bologna Lambiente per la simulazione e lanalisi in CMS Claudio Grandi INFN-Bologna.
Software per il b-tagging Gabriele Segneri Firenze, 16 Gennaio 2003.
Semplici Esercizi con ORCA N. Amapane Ricostruzione delle tracce –Da TrackerReco/GtfPattern Ricostruzione dei muoni –Da MuonAnalysis/MuonTutorial Per maggiori.
BRIDGE-3K Verso il futuro La migrazione dai sistemi HP3000. Un ponte verso il futuro conservando la cultura e le risorse aziendali. NOVITA 2007.
Modulo 7 – reti informatiche u.d. 3 (syllabus – )
Restituzione questionario
SEZIONE STUDENTE HOMEPAGE STUDENTE Lo studente ha la sola facoltà di registrarsi e fare il test. Inizierà il suo lavoro cliccando su REGISTRATI (figura.
Informatica Avanzata Trattamento di Foto e Immagini Digitali UNI3 - NICHELINO Lez. N Dicembre 2008 di Pautasso Luciano Lez.
Inserire il CDROM CygWin nel lettore, aprite la directory cyg e lanciare in esecuzione (con un doppio click del pulsante sinistro del mouse sulla relativa.
PROGRAMMARE IN C Un ambiente di sviluppo `e un software che serve per scrivere ed eseguire programmi. Generalmente integra almeno 3 funzionalita’: Editor:
Creare pagine web Xhtlm. Struttura di una pagina.
Costruzione di applicazioni Compilazione Loading (linking) Esecuzione su Linux.
Internet Explorer I preferiti Stampa di pagine web Salvataggio di pagine web Copia di elementi di pagine web in altri applicativi.
Backup and Migrate, Captcha ReCaptcha e Spamicide Docente: Simone Zambenedetti. Moduli per la Sicurezza.
“ La qualità in diabetologia “
BIOINFO3 - Lezione 361 RICERCA DI SIMILARITA TRA SEQUENZE Un altro problema comunissimo in bioinformatica è quello della ricerca di similarità tra sequenze.
BIOINFO3 - Lezione 321 ACCESSO REMOTO AL SERVER SIBILLA Attraverso Internet è possibile accedere al server sibilla.cribi.unipd.it. Potrete così effettuare.
BIOINFO3 - Lezione 331 SUBROUTINE IN PERL Una subroutine (funzione, metodo, procedura o sottoprogramma), e` una prozione di codice all`interno di un programma.
Amministrazione della rete: web server Apache
Costruire una tabella pivot che riepiloghi il totale del fatturato di ogni agente per categorie di vendita, mese per mese. Per inserire una tabella pivot.
Ant Che cos’è Come si utilizza Funzionalità principali
Costruzione di una semplice Agenda telefonica Elettronica Esercizio sull'uso delle principali system call Unix.
ASP – Active Server Pages Introduzione Pagine Web Statiche & Dinamiche(ASP)
Introduzione a Windows Lezione 2 Riccardo Sama' Copyright  Riccardo Sama'
PHP - PHP: Hypertext Preprocessor. Introduzione PHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor") è un linguaggio di scripting general-purpose.
Corso Web CSV – Andiamo on-line 1 Andiamo on-line Corso di formazione Elementi base per la costruzione di un sito web.
CNAF 18/11/2004 Federica Fanzago INFN Padova a/grape... BAT... BATMAN...o? M.Corvo, F.Fanzago, N.Smirnov (INFN Padova) + tutte le persone che fanno i test.
ROOT Tutorial.
Copyright BC Webcams! Tutto quello che avreste voluto sapere e non avete mai osato chiedere! “Telecamera per Web”
Realizzato dagli stagisti media educator Per creare un utente andate su Amministrazione del sito -> Utenti -> Profili -> Nuovo utente. L'username.
1 Esercitazione Sistemi distribuiti: sistemi che risisedono su più calcolatori interconnessi da una rete di comunicazione Algoritmi distribuiti: programmi.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Programmazione Web PHP e MySQL 1. 2Programmazione Web - PHP e MySQL Esempio: un blog.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
GUIDA ALL’UTILIZZO DEL
Tutorial Holdings Management, aggiungere, modificare ed assegnare note support.ebsco.com.
Un sito con Wordpress Includere Digital-mente – Corso livello 4 docente: prof.ssa MANUELA MARSILI.
Analisi matematica Introduzione ai limiti
1. COS'E' UN BLOG? Un blog è un diario personale e pubblico. Personale, perché è tuo e lo gestisci come vuoi. Pubblico, perché tutti lo possono leggere.
Programmazione orientata agli Oggetti Introduzione a Java.
Transcript della presentazione:

Nicola Amapane Tommaso Boccali (SNS Pisa) CMS Software: The Basic Tools Nicola Amapane Tommaso Boccali (SNS Pisa) Torino, 14-16 Aprile 2003

ma lo stesso vale anche per gli altri progetti! Outline Dove è il codice? Come compilo? Come eseguo? Come trovo la documentazione? Come scrivo ntuple, o ROOT files? Parleremo di ORCA, ma lo stesso vale anche per gli altri progetti!

SCRAM è la chiave di tutto Software Configuration, Release And Management Gestisce: Ambiente Configurazione di tool e librerie esterne Inizializzazione variabili di ambiente Path di eseguibili e librerie a runtime Compilazione e link Opzioni di compilazione, compilatori Dipendenze e ricompilazione parziale Link delle librerie corrette Documentazione: da http://cmsdoc.cern.ch/cmsoo/cmsoo.html

SCRAM: i primi passi Aiuto: scram help Elencare i progetti e le versioni diponibili: scram list scram list [project] Creare l’ambiente impostando tutte le dipendenze ed i tool per una versione di un certo progetto (ORCA, OSCAR…): scram project <project> <version>

Creare un’area ORCA Esempio: usare il più recente prerelease di ORCA: scram project ORCA ORCA_7_2_0_pre13 Viene creata la directory “ORCA_7_2_0_pre13” con alcune sottodirectory: .SCRAM/, config/ mantengono la configurazione di SCRAM tmp/ directory di lavoro di SCRAM lib/ conterrà le librerie compilate bin/ conterrà gli eseguibili src/ conterrà il codice Voi utilizzerete solo src/ Il resto è gestito automaticamente!

Don’t worry - SCRAM si occupa di questo per voi! src/, lib/, bin/ …inizialmente sono vuote! Esiste una “release area” centrale con tutto il codice e le librerie precompilate per una data versione. Dovete scaricare solo il codice che volete modificare Durante la compilazione, gli header vengono presi dalla repository se non sono presenti sotto src/ Durante il link ed a runtime, le librerie vengono prese dalla repository se non sono presenti sotto lib/ Quando compilate, le librerie sono create automaticamenrte sotto lib/ e gli eseguibili sotto bin/ Don’t worry - SCRAM si occupa di questo per voi!

Struttura del codice ORCA è strutturato a SubSystems e Packages, a tre livelli E’ necessario per gestire le dipendenze fra pacchetti A questa struttura corrisponde 1:1 una struttura di directory Per ogni package viene creata una libreria! ORCA SubSystem 1 Package 1 Package 2 Package 3

I Subsystem di ORCA http://cmsdoc.cern.ch/cmsoo/cmsoo.html

All’ interno di ogni pacchetto c’è un’ulteriore struttura: interface/ contiene l’interfaccia delle classi, è la sola informazione importante per un developer che debba utilizzarle. src/ Contiene l’implementazione delle classi, (da guardare per modificare o per capire meglio l’algoritmo usato) test/ contiene codice utile per testare il package, esempi, ecc. doc/ documentazione del pacchetto (!)

Scaricare il codice CVS (Concurrent Versions System) è un tool che permette lo sviluppo parallelo del codice da parte di più persone Ognuno lavora su una copia personale Si possono recuperare le modifiche fatte da altri e rendere disponibili le proprie Mentre il software è in continua evoluzione, è possibile “congelare” una versione funzionante e stabile e darle un nome (TAG) Per iniziare: indicare dove è la “repository” In CMS abbiamo due facili script per fare questo, a seconda che voi siate registrati come developer oppure no: Developers (read/write access): project ORCA non developers: cmscvsroot ORCA; cvs login la password è “98passwd”

CVS checkout Per scaricare il pacchetto XXX/YYY cvs co –r <tag> <file o directory> Viene scaricato nella directory corrente! Dovete assicurarvi di mettere i pacchetti nel posto giusto Esistono delle convenzioni sui nomi dei tag e.g. “ORCA_7_1_1” o “ORCA_7_2_0_pre13” Se non si specifica –r <tag> viene presa la versione più recente di ogni file Che tipicamente non funziona! Provate con il tag ORCA_7_2_0_pre13 di MuonAnalysis/MuonTutorial Attenzione a rispettare la struttura delle directory: dovete avere ORCA_7_2_0_pre13/src/MuonAnalysis/MuonTutorial

CVS Altre funzionalità: cvs diff cvs log cvscheck cvs commit Diff fra la propria versione e la repository cvs log Storia delle modifiche nella repository cvscheck Quali file sono cambiati? cvs commit Inserire le proprie modifiche nella repository http://www.cvshome.org/docs/

Meno male che ci pensa SCRAM! Compilazione Molto complicato! Diversi sistemi (SUN, Linux RH6, Linux RH7) Quali opzioni di compilazione? Dove prendo i pacchetti che non ho scaricato? Tool esterni: dove? quale versione? CLHEP, GEANT, ROOT, Objectivity, COBRA, IGUANA... Meno male che ci pensa SCRAM!

Ad-interim! In questo momento sono in corso due importanti transizioni: RedHat 6  RedHat 7 ORCA dalla versione 7 in poi è sviluppata solo su RedHat 7 gcc 2.95.2  gcc 3.2 La prima è ancora default ma verrà abbandonata presto Noi stiamo guardando ORCA_7_2_0_pre13 e vogliamo gcc3: setenv SCRAM_ARCH Linux__2.4/gcc3 eval `scram runtime –csh` Quest’ ultimo comando imposta tutte le variabili di ambiente necessarie anche per la corretta esecuzione di un job!

Compilazione Per compilare si usa semplicemente: scram build (oppure scram b) Compila tutti i pacchetti che trova nella directory corrente e sue sottodirectory: ORCA_7_2_0_pre13/src/MuonAnalysis/MuonTutorial/src In ogni pacchetto, viene creata una libreria usando tutti i file src/*.cc Provate a compilare MuonTutorial! Da qui compila tutto quello che avete scaricato Da qui tutti i pacchetti di MuonAnalysis Da qui solo MuonAnalysis

Compilazione Beh, non succede nulla! SCRAM si è accorto che non avete cambiato nulla rispetto alla release area, e allora perché ricompilare? Facciamo touch di un file .cc in src/, e riproviamo. touch MuonTrackPrinter.cc scram b Ora questo file viene ricompilato e la libreria ricreata! Andando a vedere in lib/, dovrebbe essere apparsa la libreria!

Pulizia! Se volete eliminare tutto quello che avete compilato scram b clean Cancella tutti gli oggetti intermedi (.o) E’ utile se si fanno grossi pasticci…

Eseguibili Ok, la libreria è compilata. Ma come creo un programma eseguibile? Il main ci è fornito da COBRA (il framework). Noi non creeremo (quasi) mai un main() alla C++, che abbia il controllo flusso del programma Il nostro codice è in una libreria che viene caricata a runtime Dobbiamo chiedere a COBRA: Di istanziare le nostre classi: usando PKBuilder<class> Di chiamare alcuni metodi quando appropriato: usando il meccanismo di Dispatcher/Observer

Linking Per creare un eseguibile devo fare il “link” della mie classi con: il framework l’API dei database la geometria la ricostruzione il sistema grafico le librerie matematiche Ecc. ecc. Anche qui ci aiuta SCRAM, ma ha bisogno di istruzioni: il BuildFile

Il BuildFile <environment> <group name=G3> <group name=RecReader> <External ref=COBRA Use=CARF> <group name=MuonReconstruction> <use name=MuonReco> <group name=L1GlobalMuon> <use name=Trigger> <group name=MuonTrackFinder> <use name=Muon> <use name=CommonReco> <use name=CommonDet> <External ref=COBRA Use=Utilities> <External ref=COBRA Use=MagneticField> <lib name=MuonTutorial> <bin file=printMuonTracks.cpp></bin> </environment> Serve ad “aiutare” scram specificando quali librerie devono essere linkate. XML!!!!

Il BuildFile <environment> <group name=G3> <group name=RecReader> <External ref=COBRA Use=CARF> <group name=MuonReconstruction> <use name=MuonReco> <group name=L1GlobalMuon> <use name=Trigger> <group name=MuonTrackFinder> <use name=Muon> <use name=CommonReco> <use name=CommonDet> <External ref=COBRA Use=Utilities> <External ref=COBRA Use=MagneticField> <lib name=MuonTutorial> <bin file=printMuonTracks.cpp></bin> </environment> Un environment definisce le librerie per un eseguibile, in questo caso quello creato a partire da printMuonTracks.cpp, specificato nella direttiva <bin>

Il BuildFile <environment> <group name=G3> <group name=RecReader> <External ref=COBRA Use=CARF> <group name=MuonReconstruction> <use name=MuonReco> <group name=L1GlobalMuon> <use name=Trigger> <group name=MuonTrackFinder> <use name=Muon> <use name=CommonReco> <use name=CommonDet> <External ref=COBRA Use=Utilities> <External ref=COBRA Use=MagneticField> <lib name=MuonTutorial> <bin file=printMuonTracks.cpp></bin> </environment> Le direttive <External> specificano che abbiamo bisogno di librerie non appartenti a ORCA

Il BuildFile <environment> <group name=G3> <group name=RecReader> <External ref=COBRA Use=CARF> <group name=MuonReconstruction> <use name=MuonReco> <group name=L1GlobalMuon> <use name=Trigger> <group name=MuonTrackFinder> <use name=Muon> <use name=CommonReco> <use name=CommonDet> <External ref=COBRA Use=Utilities> <External ref=COBRA Use=MagneticField> <lib name=MuonTutorial> <bin file=printMuonTracks.cpp></bin> </environment> <lib> e <group> specificano di linkare librerie o gruppi di librerie <use> specifica di cercare le definizioni dei gruppi in altri subsystem <environment> <External ref=Objectivity> <External ref=HepODBMS> <Group name=G3> <External ref=COBRA Use=GeneratorInterface> <group name=TkTrackWriter> <group name=TrackAnalysis> <lib name=TkRecoDebugTools> </lib> <use name=TrackerReco> <External ref=COBRA Use=MagneticField> <group name=RecReader> <External ref=COBRA Use=CARF> <External ref=COBRA Use=Utilities> <bin file=TrackPersistentTest.cpp></bin> </environment>

Linking Normalmente gli eseguibili ed i relativi BuildFile sono messi nella directory test/ di ogni pacchetto. Per crearli basta andare in questa directory e fare scram b L’eseguibile viene messo in bin/, che scram ha aggiunto al vostro path!

Pacchetti “speciali” Alcune importanti eccezioni alla struttura che ho descritto: Examples Questo subsystem contiene molti esempi e programmi di uso comune per la produzione di eventi (ExProduction) I pacchetti di Examples non hanno le sottodirectory interface/, src/, test/ Li useremo anche noi! Workspace Questo “subsystem” non ha pacchetti nè sottodirectory. Contiene una struttura semplice che potete usare per dei test veloci Provate a scaricarlo e compilarlo!

Esecuzione Coraggio, mancano solo 2 passi: configurare l’ambiente runtime (path, variabili d’ambiente) eval `scram runtime –csh` (lo avete già fatto!) rehash (se il vostro eseguibile è stato creato dopo il comando precedente) Fornire opzioni all’eseguibile e al framework con il file .orcarc nella directory di esecuzione

.orcarc Verbose:info = 1 Verbose:test = 0 CMSRandom:Seeds = 40 3 FirstEvent = 0 MaxEvents = 20 FilePath = suncmsc:/data/valid/ORCA_7_2_0_pre13 FileProtocol = rfio InputCollections = /System/NoPileUpTk/single_muminus_pt50/single_muminus_pt50/ opzioni che controllano la “verbosita’” del codice; abilitano dei printout di debug/info etc. Numero random iniziale (importante per la riproducibilita’) Da quale evento cominciare quanti eventi processare

Come si specificano i campioni? FilePath Se non specificato, usa la directory corrente Può essere una directory locale, eg. FilePath = /data/ORCA_7_2_0 o remota a cui si accede via RFIO FileProtocol = rfio FilePath = suncmsc:/data/valid/ORCA_7_2_0_pre13 oppure FilePath = /castor/cern.ch/user/U/USERNAME/tutorial InputCollections InputCollections = /System/NoPileUpTk/single_muminus_pt50/single_muminus_pt50/ OWNER (e.g. per diverse luminosità) Tutto il dataset (oppure un solo run, una collezione) DATASET

Sì ma dove li trovo? A regime, su: http://cmsdoc.cern.ch/cms/production/www/html/general/index.html Attualmente, ci sono solo campioni scritti su Objectivity/DB I campioni usati per il DAQ TDR Usabili sono con ORCA 6  Esistono dei campioni di prova per ogni (pre)release di ORCA 7 FilePath = suncmsc:/data/valid/<ORCA_VERSION> Potete accederci con RFIO (rfdir, rfcp) Esiste uno script per fare la lista dei dataset (rfdumpcatalog)

Workspace: ExRunEvent Esempio elementare: contiamo gli eventi! In realtà meno di quanto sembri, dato che analizzaremo eventi con pile-up. per ogni evento di segnale, quanti eventi di pile up ci sono? Guardiamo l’esempio in Workspace La nostra classe è un Observer<G3EventProxy*>, cerchiamo G3EventProxy nella documentazione di COBRA: http://cobra.web.cern.ch/cobra/COBRA_7_2_0/doc/ReferenceManual/html/classes.html Troviamo, fra l’altro, il metodo G3EventProxy::pileups() Ad ogni evento di pile-up (SimPU) possiamo chiedere id().eventInRun() e id().runNumber() Lo stesso possiamo chiedere all’evento di trigger (SimSignal)

Proviamo! Avete gia’compilato Workspace! Guardate/modificate il .orcarc Scegliete un campione a bassa luminosità Eseguite! ExRunEvent Su 100 eventi dovreste avere ~3150 eventi di Pile up Considerando che a bassa luminosità 3.5 eventi sono attesi per Bunch-Crossing, e consideriamo i bunch crossing [-5,+3] (sono 9), ci aspettiamo 3.5 x 100 x 9 = 3150 eventi

Giochiamo! Esercizi (Cercate sulla documentazione di COBRA) Stampate l’evento di trigger Hint: SimSignal()::Print() Modificate il codice in modo da stampare l’elenco delle paricelle generate per l’evento di trigger Hint: SimSignal()::genparts() Stampate solamente il pile-up in-time Hint: G3EventProxy::pileups(int minb, int maxb)

Ntuple, Trees, etc. Esempio di scrittura di un’ntupla: Examples/HBook Esempio di scrittura di ROOT files: Examples/Root Per la scrittura di Tree: MuonAnalysis/MuonHLTSelection

https://lcgappdev.cern.ch/savannah/projects/orca/ Bugs! Savannah! https://lcgappdev.cern.ch/savannah/projects/orca/