CLEO’s User Centric Data Access System Christopher D. Jones Cornell University.

Slides:



Advertisements
Similar presentations
JQuery MessageBoard. Lets use jQuery and AJAX in combination with a database to update and retrieve information without refreshing the page. Here we will.
Advertisements

Why care about debugging? How many of you have written a program that worked perfectly the first time? No one (including me!) writes a program that works.
DLC-MODS Workbook 1.2 Pinky says, “Hello.” Presented by University of Tennessee Libraries Digital Library Center Melanie Feltner-Reichert, Metadata Librarian.
Tutorial 12: Enhancing Excel with Visual Basic for Applications
SYSTEM PROGRAMMING & SYSTEM ADMINISTRATION
Web Applications Development Using Coldbox Platform Eddie Johnston.
Guide to Oracle10G1 Introduction To Forms Builder Chapter 5.
Reconstruction and Analysis on Demand: A Success Story Christopher D. Jones Cornell University, USA.
EventStore Managing Event Versioning and Data Partitioning using Legacy Data Formats Chris Jones Valentin Kuznetsov Dan Riley Greg Sharp CLEO Collaboration.
Tutorial 6 & 7 Symbol Table
A Guide to Oracle9i1 Introduction To Forms Builder Chapter 5.
Event-Driven Programming and Access Events
A Guide to SQL, Seventh Edition. Objectives Understand the concepts and terminology associated with relational databases Create and run SQL commands in.
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
The Event as an Object-Relational Database: Avoiding the Dependency Nightmare Christopher D. Jones Cornell University, USA.
A Guide to SQL, Seventh Edition. Objectives Embed SQL commands in PL/SQL programs Retrieve single rows using embedded SQL Update a table using embedded.
Chapter 2: The Visual Studio.NET Development Environment Visual Basic.NET Programming: From Problem Analysis to Program Design.
ASP.NET Programming with C# and SQL Server First Edition Chapter 8 Manipulating SQL Server Databases with ASP.NET.
Guide To UNIX Using Linux Third Edition
Chapter 11 ASP.NET JavaScript, Third Edition. 2 Objectives Learn about client/server architecture Study server-side scripting Create ASP.NET applications.
Introduction to Unix (CA263) Introduction to Shell Script Programming By Tariq Ibn Aziz.
Systems Software Operating Systems.
Microsoft Office Word 2013 Expert Microsoft Office Word 2013 Expert Courseware # 3251 Lesson 4: Working with Forms.
MS Access: Database Concepts Instructor: Vicki Weidler.
Section 13.1 Add a hit counter to a Web page Identify the limitations of hit counters Describe the information gathered by tracking systems Create a guest.
Microsoft Visual Basic 2005 CHAPTER 8 Using Procedures and Exception Handling.
1 Shawlands Academy Higher Computing Software Development Unit.
Introduction to Shell Script Programming
1. Outline 4 functions of a typical operating system of a PC(4) Resource management Operating systems organise how to: Load programs from backing storage.
9 Chapter Nine Compiled Web Server Programs. 9 Chapter Objectives Learn about Common Gateway Interface (CGI) Create CGI programs that generate dynamic.
1 In the good old days... Years ago… the WWW was made up of (mostly) static documents. –Each URL corresponded to a single file stored on some hard disk.
Automating Database Processing Chapter 6. Chapter Introduction Design and implement user-friendly menu – Called navigation form Macros – Automate repetitive.
1 Functions 1 Parameter, 1 Return-Value 1. The problem 2. Recall the layout 3. Create the definition 4. "Flow" of data 5. Testing 6. Projects 1 and 2.
IceCube DAQ Mtg. 10,28-30 IceCube DAQ: “DOM MB to Event Builder”
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
© Logicalis Group Using DB2/400 effectively. Data integrity facilities Traditional iSeries database usage Applications are responsible for data integrity.
Just as there are many human languages, there are many computer programming languages that can be used to develop software. Some are named after people,
IT 456 Seminar 5 Dr Jeffrey A Robinson. Overview of Course Week 1 – Introduction Week 2 – Installation of SQL and management Tools Week 3 - Creating and.
Linux+ Guide to Linux Certification, Third Edition
Getting Started with MATLAB 1. Fundamentals of MATLAB 2. Different Windows of MATLAB 1.
DEBUGGING. BUG A software bug is an error, flaw, failure, or fault in a computer program or system that causes it to produce an incorrect or unexpected.
1 Κατανεμημένες Διαδικτυακές Εφαρμογές Πολυμέσων Γιάννης Πετράκης.
Recent Software Issues L3 Review of SM Software, 28 Oct Recent Software Issues Occasional runs had large numbers of single-event files. INIT message.
N ATIONAL E NERGY R ESEARCH S CIENTIFIC C OMPUTING C ENTER Charles Leggett Interval of Validity Service IOVSvc ATLAS Software Week May Architecture.
Rails & Ajax Module 5. Introduction to Rails Overview of Rails Rails is Ruby based “A development framework for Web-based applications” Rails uses the.
Copyright © 2012 UNICOM Systems, Inc. Confidential Information z/Ware Product Overview illustro Systems International A Division of UNICOM Global.
I Power Higher Computing Software Development Development Languages and Environments.
The Software Development Process
Chapter Six Introduction to Shell Script Programming.
8 Chapter Eight Server-side Scripts. 8 Chapter Objectives Create dynamic Web pages that retrieve and display database data using Active Server Pages Process.
Introduction to Files in VB Chapter 9.1, 9.3. Overview u Data Files  random access  sequential u Working with sequential files  open, read, write,
CSC 2720 Building Web Applications Basic Frameworks for Building Dynamic Web Sites / Web Applications.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Programming Logic and Design Fourth Edition, Comprehensive Chapter 14 Event-Driven Programming with Graphical User Interfaces.
Chapter – 8 Software Tools.
Event Management. EMU Graham Heyes April Overview Background Requirements Solution Status.
Introduction to ASP.NET, Second Edition2 Chapter Objectives.
Some of the utilities associated with the development of programs. These program development tools allow users to write and construct programs that the.
FILES AND EXCEPTIONS Topics Introduction to File Input and Output Using Loops to Process Files Processing Records Exceptions.
Chapter 2 Build Your First Project A Step-by-Step Approach 2 Exploring Microsoft Visual Basic 6.0 Copyright © 1999 Prentice-Hall, Inc. By Carlotta Eaton.
COMPREHENSIVE Excel Tutorial 12 Expanding Excel with Visual Basic for Applications.
David Lawrence JLab May 11, /11/101Reconstruction Framework -- GlueX Collab. meeting -- D. Lawrence.
The purpose of a CPU is to process data Custom written software is created for a user to meet exact purpose Off the shelf software is developed by a software.
ASP.NET Programming with C# and SQL Server First Edition
A Guide to SQL, Seventh Edition
CMS High Level Trigger Configuration Management
Java Programming Language
Topics Introduction to File Input and Output
Design and Programming
Topics Introduction to File Input and Output
Presentation transcript:

CLEO’s User Centric Data Access System Christopher D. Jones Cornell University

3/22/02C. Jones GlueX Meeting2 Introduction Physicists want to spend their time studying the data instead of learning about, writing and debugging code for the data access system. Our goal was to create a data access system that minimizes learning curve code writing time code debugging time Guiding Principles concentrate on how physicists use and think about data use general purpose ideas so users can learn one thing and apply it everywhere do not lock a physicist into one data storage format if it is hard to use, it is our fault and we should fix it immediately

3/22/02C. Jones GlueX Meeting3 Simple & General Data Model A Record holds all data that are related by life-time e.g. Event Record holds Raw Data, Tracks, Calorimeter Showers, etc. A Stream is a time ordered sequence of Records A Frame is a collection of Records that describe the state of the detector at an instant in time. A user’s analysis states what Streams she wishes to study (e.g. Event) and at each time a new Record appears in one of those Streams we give her a Frame.

3/22/02C. Jones GlueX Meeting4 Processing Data A new Record is read in from a Source A new Frame is created holding all the Records pertinent to that instant in time The Frame is passed to Processors which decide if the Record is interesting If the Record is interesting to all Processors, it is written out to a Sink DB Processor 1Processor 2 skim

3/22/02C. Jones GlueX Meeting5 General Purpose Access Framework Event Database Calibration Database Pi0FinderRareBTracks Frame SelectBtoKPiEventDisplayEvent List Sources: data from storage Producers: data from algorithm Processors: analyze and filter data Sinks: store data Data Providers: data returned when requested Data Requestor: sequentially run requestors for each new Record from a source

3/22/02C. Jones GlueX Meeting6 Multiple Sources and Sinks Can read from/write to multiple Sources/Sinks at same time The multiple Sources and Sinks can be different formats –Read user data from a file and reconstruction from database Only one Source can be used to decide exactly what Records (e.g. Events) to process –Sources that determine what to process are called Active. –In above example, system will prompt you to determine if you want to run over all the events in the user’s file OR in the database. CLEO uses many different formats –Several data file formats –Objectivity database for event storage –CORBA data transfer from DAQ –Calibration Objectivity database –Calibration text file formats –Etc.

3/22/02C. Jones GlueX Meeting7 Easy to Write Correct Code Try to reduce the time it takes to write and debug code Skeleton Code Generators use scripts to generate source code and directories mkproc MyAnalysisProc user just writes her algorithm in the member function skeletons Cannot change data once it has been published avoids accidentally corrupting data that may be used by other processes Cannot get ‘bad’ data data can only be accessed by calling a function that retrieves data from a Record I.e. no global data an exception is thrown if no data is available Why we use exceptions instead of returning a null pointer null pointer: even if a user must have the data for his algorithm to work, he must check for a null pointer and ‘do the right thing’ if it is null. If they do not check, the program will crash and he will lose all of his work exceptions: only if a user can deal with missing data (which is rare) do they need to catch the exception. Any uncaught exception will be caught by the data access system and a useful error message will be given before the program exits

3/22/02C. Jones GlueX Meeting8 Simple Data Access Call All data is accessed through a type-safe call to the templated ‘extract’ function MyAnalysisProcessor::event( Frame& iFrame ) { … Item runHeader; extract( iFrame.record( Stream::kBeginRun ), runHeader ); … Table tracks; extract( iFrame.record( Stream::kEvent ), tracks); Item<> is a smart pointer to a singly occurring item, where the template type is the type of data the user wants. Table<> is a smart pointer to our own container class. We use our own container class to guarantee that all multiply occurring items each have their own unique identifier. If say ‘track 4 is a muon’ everyone agrees on which track is # 4 even if it appears in multiple lists.

3/22/02C. Jones GlueX Meeting9 General Purpose Data Access Executable One data access executable for all our data access needs Physics Analysis, Event Display, Reconstruction, Monte Carlo Production, Online Data Quality Monitoring, Online Software Trigger Users only need to learn one program Modular the executable is a light-weight framework which allows code ‘modules’ to be assembled to form a particular data access job Dynamic Linking drastically reduces link time easy comparison of two algorithms that produce the same data statically linked executables are also supported

3/22/02C. Jones GlueX Meeting10 Command Line Interface Fully scriptable via Tcl interpreter –e.g. can create variables and make loops Full ‘shell’ like editing –Tab completion of command name or file name –Use left and right arrows to move cursor on the line –Use standard shell command keys e.g. k: delete to end of line Full history –Use up and down arrows to scroll through command history –history : returns list of all commands ever typed –etc. All commands support ‘help’ sub-command

3/22/02C. Jones GlueX Meeting11 Room for Improvements Syntax level tab completion –At the moment tab completion only works for command and file names –Would be nice if within a command the tab would work Easier customization of job –CLEO has 500 dynamically loadable modules –Provide Tcl scripts which load commonly used modules –To customize a job, user needs to know which modules to pick Core system documentation –No overview documentation about how the whole system works –No ‘how-to’ information on building sources and sinks