DANA uses a factory model to deliver data “just in time”

Slides:



Advertisements
Similar presentations
INTRODUCTION TO SIMULATION WITH OMNET++ José Daniel García Sánchez ARCOS Group – University Carlos III of Madrid.
Advertisements

H.G.Essel: Go4 - J. Adamczewski, M. Al-Turany, D. Bertini, H.G.Essel, S.Linev CHEP 2004 Go4 v2.8 Analysis Design.
Templated Functions. Overloading vs Templating  Overloaded functions allow multiple functions with the same name.
Reconstruction and Analysis on Demand: A Success Story Christopher D. Jones Cornell University, USA.
The Event as an Object-Relational Database: Avoiding the Dependency Nightmare Christopher D. Jones Cornell University, USA.
CSE 332: C++ Overloading Overview of C++ Overloading Overloading occurs when the same operator or function name is used with different signatures Both.
CLEO’s User Centric Data Access System Christopher D. Jones Cornell University.
The JANA Calibrations and Conditions Database API March 23, 2009 David Lawrence JLab 3/23/091JANA Calibration API David Lawrence -- JLab.
Copyright © 2003 ProsoftTraining. All rights reserved. Distributed Object Computing Using Java and CORBA.
Introduction to Hall-D Software February 27, 2009 David Lawrence - JLab.
ACE Address Configuration Executive. Why ACE? ACE provides access to several address resolution protocols under a single API ACE is the only API available.
Threading Models in Visual Basic Language Student Name: Danyu Xu Student ID:98044.
Paul Scherrer Institut 5232 Villigen PSI ROME / / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.
Operating Systems ECE344 Ashvin Goel ECE University of Toronto Threads and Processes.
SB Implementing ScriptBasic Multi- Thread How to embed ScriptBasic multi-thread?
CS212: Object Oriented Analysis and Design Lecture 6: Friends, Constructor and destructors.
Program documentation Using the Doxygen tool Program documentation1.
Advanced BioPSE NCRR Dynamic Compilation Joint Session #1: Advanced BioPSE/SCIRun.
David N. Brown Lawrence Berkeley National Lab Representing the BaBar Collaboration The BaBar Mini  BaBar  BaBar’s Data Formats  Design of the Mini 
CS 346 – Chapter 4 Threads –How they differ from processes –Definition, purpose Threads of the same process share: code, data, open files –Types –Support.
Level 2 ID-tracking truth association Trigger AOD discussion 13 December 2006 Ricardo Gonçalo - RHUL.
A Technical Validation Module for the offline Auger-Lecce, 17 September 2009  Design  The SValidStore Module  Example  Scripting  Status.
Elliott Wolin Hall D Offline Meeting 6-Apr  DANA -> EVIO conversion 95% complete  Handles 20 DANA objects plus ID bank  Includes object ID’s.
VAPOR 3.0 Architecture Overview. Purpose of this document Provide understandable overview of 3.0 architecture Enable the development team to maintain.
Gaudi Framework Tutorial, April Algorithm Tools: what they are, how to write them, how to use them.
CHEP /21/03 Detector Description Framework in LHCb Sébastien Ponce CERN.
N ATIONAL E NERGY R ESEARCH S CIENTIFIC C OMPUTING C ENTER Charles Leggett Interval of Validity Service IOVSvc ATLAS Software Week May Architecture.
N ATIONAL E NERGY R ESEARCH S CIENTIFIC C OMPUTING C ENTER Charles Leggett Interval of Validity Service IOVSvc EDM Workshop Detector Description Session.
CHEP ‘06 David Lawrence JLab C++ Introspection and Object Persistency through JIL David Lawrence Ph. D. Jefferson Lab, Newport News VA.
FTP Server API Implementing the FTP Server Registering FTP Command Callbacks Data and Control Port Close Callbacks Other Server Calls.
Vertex finding and B-Tagging for the ATLAS Inner Detector A.H. Wildauer Universität Innsbruck CERN ATLAS Computing Group on behalf of the ATLAS collaboration.
Server-side Programming The combination of –HTML –JavaScript –DOM is sometimes referred to as Dynamic HTML (DHTML) Web pages that include scripting are.
Apr. 8, 2002Calibration Database Browser Workshop1 Database Access Using D0OM H. Greenlee Calibration Database Browser Workshop Apr. 8, 2002.
ROOT Tutorials - Session 51 ROOT Tutorials – Session 5 Dictionary Generation, rootcint, Simple I/O, Hands-on Fons Rademakers.
N ATIONAL E NERGY R ESEARCH S CIENTIFIC C OMPUTING C ENTER Charles Leggett Callbacks May
David Adams ATLAS DIAL: Distributed Interactive Analysis of Large datasets David Adams BNL August 5, 2002 BNL OMEGA talk.
July Doxygen A Code Documentation System Doxygen generates documentation directly from the structure and comments in the code –Browsable HTML documentation.
“How do I analyze the data?” -- everyone who’s ever analyzed data “How do I access the data?” Analysis Framework.
“How do I analyze the data?” -- everyone who’s ever analyzed data “How do I access the data?” Analysis Framework.
CHEP /21/03 Detector Description Framework in LHCb Sébastien Ponce CERN.
DØ Offline Reconstruction and Analysis Control Framework J.Kowalkowski, H.Greenlee, Q.Li, S.Protopopescu, G.Watts, V.White, J.Yu.
The JANA Reconstruction Framework David Lawrence - JLab May 25, /25/101JANA - Lawrence - CLAS12 Software Workshop.
Alberto Colla - CERN ALICE off-line week 1 Alberto Colla ALICE off-line week Cern, May 31, 2005 Table of contents: ● Summary of requirements ● Description.
Level 2 ID-tracking truth association How it works Information in POOL How to use it.
CINT & Reflex – The Future CINT’s Future Layout Reflex API Work In Progress: Use Reflex to store dictionary data Smaller memory footprint First step to.
The DCS Databases Peter Chochula. 31/05/2005Peter Chochula 2 Outline PVSS basics (boring topic but useful if one wants to understand the DCS data flow)
Muon Persistency Persistent Analysis Objects Muon Persistency Norbert Neumeister µ-PRS meeting February 10, 2004.
Timewarp Rigid Body Simulation Brian Mirtich. Simulation Discontinuities “Events that change the dynamic states or the equations of motion of some subset.
N ATIONAL E NERGY R ESEARCH S CIENTIFIC C OMPUTING C ENTER Charles Leggett Prototype GEANT4 Service for ATHENA framework ATLAS Software Workshop Dec 3.
October 19, 2010 David Lawrence JLab Oct. 19, 20101RootSpy -- CHEP10, Taipei -- David Lawrence, JLab Parallel Session 18: Software Engineering, Data Stores,
Paul Scherrer Institut 5232 Villigen PSI ROME / / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.
July FLTK The Fast Light Toolkit • A C++ graphical user interface toolkit • Can be used under X, Windows, MacOS • Supports OpenGL • Provides: – Interactive.
1 GlueX Software Oct. 21, 2004 D. Lawrence, JLab.
David Lawrence JLab May 11, /11/101Reconstruction Framework -- GlueX Collab. meeting -- D. Lawrence.
HYDRA Framework. Setup of software environment Setup of software environment Using the documentation Using the documentation How to compile a program.
7/9/ Realizing Concurrency using Posix Threads (pthreads) B. Ramamurthy.
DANA David Lawrence Oct. 21, D. Lawrence, JLab GlueX Software Workshop Oct Outline Requirements Philosophy Overview of Features Open Questions.
Process Tables; Threads
The DANA Analysis Framework David Lawrence Jlab Jan. 19,
Multithreading Tutorial
Go4 CHEP 2001 Multithreaded Inter-Task Communication with ROOT -
Process Tables; Threads
Class Commenting Doxygen for Classes.
Allen D. Malony Computer & Information Science Department
Multithreading Tutorial
Csc354 fall 2016 assignment 3 design spec
Use Of GAUDI framework in Online Environment
Lattice Motivation: Maintaining relationships between elements of two
Preference Activity class
CS Introduction to Operating Systems
Presentation transcript:

DANA uses a factory model to deliver data “just in time”

Factories and Data Objects Factory: Implements an algorithm to create one type of object from other type(s) of object(s). Data Object:Object produced by a factory. It may have persistence through a file. Factory: Implements an algorithm to create one type of object from other type(s) of object(s). Data Object:Object produced by a factory. It may have persistence through a file.

Factories are accessed via the type of data they produce vector cdchits; eventLoop->Get(cdchits); for(int i=0; i<cdchits.size(); i++){ float x = cdchits[i]->x; float y = cdchits[i]->y; }

Factory Tags Two factories producing data of the same type may be distinguished via their “tag”s Example: One factory may provide a list of objects that is a subset of the objects produced by another factory. Two factories producing data of the same type may be distinguished via their “tag”s Example: One factory may provide a list of objects that is a subset of the objects produced by another factory.

Factory Tags vector particles; vector kaons; eventLoop->Get(particles); eventLoop->Get(kaons, “Kaon”);

Object Identifiers All Data Objects have a member: identifier_t id (identifier_t is typedef’d as int) Identifiers are used to reference one object from another in a way that can be stored and retrieved from a file. All Data Objects have a member: identifier_t id (identifier_t is typedef’d as int) Identifiers are used to reference one object from another in a way that can be stored and retrieved from a file.

Object Identifiers vector trackcandidates; vector tracks; loop->Get(trackcandidates); loop->Get(tracks); for(unsigned int i=0;i<tracks.size();i++){ const DTrackCandidate *trackcandidate = GetByID(trackcandidates, tracks[i]->candidateid); … }

DEventProcessor  Programs are made by deriving from the DEventProcessor class  DEventProcessor defines a set of callback methods that are called at the appropriate times during the data processing  Programs are made by deriving from the DEventProcessor class  DEventProcessor defines a set of callback methods that are called at the appropriate times during the data processing

DEventProcessor Callback Methods class DEventProcessor{ public: … virtual derror_t init(void); virtual derror_t brun(DEventLoop *eventLoop, int runnumber); virtual derror_t evnt(DEventLoop *eventLoop, int eventnumber); virtual derror_t erun(void); virtual derror_t fini(void); … }

Multi-threading  Multi-core processors are on the near horizon. To fully leverage the next generation of CPUs, processes must be multi-threaded  Data analysis is a natural application for multi-threading where events are dispatched to processing threads.  Multi-core processors are on the near horizon. To fully leverage the next generation of CPUs, processes must be multi-threaded  Data analysis is a natural application for multi-threading where events are dispatched to processing threads.

Threads

Threads and ROOT Caution: End Users don’t get multi- threading for free! Since the evnt() callback can be called from multiple threads simultaneously, the ROOT global area must be locked when filling histograms. TThread::Lock() TThread::UnLock() Caution: End Users don’t get multi- threading for free! Since the evnt() callback can be called from multiple threads simultaneously, the ROOT global area must be locked when filling histograms. TThread::Lock() TThread::UnLock()

DEventSource Event sources inherit from DEventSource which defines the API for extracting data This way, the framework is divorced from the specific file format New file formats (or online sources) may be added by defining a new DEventSource-based class Event sources inherit from DEventSource which defines the API for extracting data This way, the framework is divorced from the specific file format New file formats (or online sources) may be added by defining a new DEventSource-based class

Shared Objects  DANA supports shared objects for implementing factories and DEventSource objects  Factories and Event Sources obtained from shared objects are given precedence over statically linked ones.  DANA supports shared objects for implementing factories and DEventSource objects  Factories and Event Sources obtained from shared objects are given precedence over statically linked ones.

Configuration Parameters  Parameters used to control the behavior of the algorithms (e.g. minimum number of hits per track)  Kept as key/value pairs in DApplication with standard way of setting and retrieving  NOT calibration constants  Parameters used to control the behavior of the algorithms (e.g. minimum number of hits per track)  Kept as key/value pairs in DApplication with standard way of setting and retrieving  NOT calibration constants

Example main() routine #include "MyProcessor.h" #include "DApplication.h" int main(int narg, char *argv[]) { // Instantiate our event processor MyProcessor myproc; // Instantiate an event loop object DApplication app(narg, argv); // Run though all events, calling our event processor's methods app.Run(&myproc, 4); return 0; }

Nightly Generated DOxygen documentation D/software/HDSoftware_Document ation/ D/software/HDSoftware_Document ation/