GLAST LAT Offline SoftwareWorkshop - SLAC, Jan. 16-19, 2001 TDS objects and Converters. (Transient Data Store) Ian Gable Software Workshop Jan 2001.

Slides:



Advertisements
Similar presentations
Mantid Architecture Straw man proposal Nick Draper 24 th August 2007.
Advertisements

GLAST LAT Offline SoftwareWorkshop - SLAC, Jan , 2001 User Support Thomas Lindner SLAC January 16 th, 2001.
1 G4MICE Design Iteration Malcolm Ellis Imperial College Saturday 3 rd April 2004.
Calibration Infrastructure & Gaudi Design and Status.
Chapter 18 I/O in C. Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display Standard C Library I/O commands.
CFT Offline Monitoring Michael Friedman. Contents Procedure  About the executable  Notes on how to run Results  What output there is and how to access.
LHCb Software week November, 1999 M.Frank LHCb/CERN N-Tuples within Gaudi ã Definition ã Usage ä Run through simplified example ã The persistent.
JAS3 + AIDA LC Simulations Workshop SLAC 19 th May 2003.
IT253: Computer Organization Lecture 4: Instruction Set Architecture Tonga Institute of Higher Education.
Root, GLAST, and IDL Heather Kelly NASA/GSFC Emergent Corporation.
Computers Data Representation Chapter 3, SA. Data Representation and Processing Data and information processors must be able to: Recognize external data.
N ATIONAL E NERGY R ESEARCH S CIENTIFIC C OMPUTING C ENTER Charles Leggett A Lightweight Histogram Interface Layer CHEP 2000 Session F (F320) Thursday.
Created on 29/10/2008yahaya.wordpress.com1 Trees Another common nonlinear data structure is the tree. We have already seen an example of a tree when we.
ImageJ EE4H, M.Sc Computer Vision Dr. Mike Spann
Chapter 1 Working with strings. Objectives Understand simple programs using character strings and the string library. Get acquainted with declarations,
Openadaptor XML Support Using openadaptor for XML processing Oleg Dulin,
Downloading and Installing Autodesk Revit 2016
How to Download Sermons from the LBC Sermon Website To Download or to listen then please follow the instructions in the boxes (similar to this one) that.
GLAST Gaudi Code Review, 10 Sept. 2002, H. Kelly, 2-1 GLAST Event Data Model and Persistency.
Buffers Let’s go for a swim. Buffers A buffer is simply a collection of bytes A buffer is simply a collection of bytes – a char[] if you will. Any information.
C++ History C++ was designed at AT&T Bell Labs by Bjarne Stroustrup in the early 80's Based on the ‘C’ programming language C++ language standardised in.
M.Frank LHCb/CERN Using Shared Libraries ã The traditional way ã How to build shared images? ã Benefits ã Process configuration ã Fortran.
9 Associators How to relate objects to each other Create relations Save relations Use relations: Associators.
DANA uses a factory model to deliver data “just in time”
Downloading and Installing Autodesk Inventor Professional 2015 This is a 4 step process 1.Register with the Autodesk Student Community 2.Downloading the.
Use of Gaudi in Reconstruction Weidong Li 23/06/2004.
GAM 200 Club. How to Game Engine GAM 200 Club Zachary Nawar.
CHEP /21/03 Detector Description Framework in LHCb Sébastien Ponce CERN.
AMB HW LOW LEVEL SIMULATION VS HW OUTPUT G. Volpi, INFN Pisa.
Lecture 3 Classes, Structs, Enums Passing by reference and value Arrays.
STAR Event data storage and management in STAR V. Perevoztchikov Brookhaven National Laboratory,USA.
Apr. 8, 2002Calibration Database Browser Workshop1 Database Access Using D0OM H. Greenlee Calibration Database Browser Workshop Apr. 8, 2002.
STAR Schema Evolution Implementation in ROOT I/O V. Perevoztchikov Brookhaven National Laboratory,USA.
GLAST LAT Offline SoftwareCore review, Jan. 17, 2001 Review of the “Core” software: Introduction Environment: THB, Thomas, Ian, Heather Geometry: Joanne.
CHEP /21/03 Detector Description Framework in LHCb Sébastien Ponce CERN.
Tutorial: Examples (09may00 - ATLAS Software LBNL) May 2000 Prototype Framework Tutorial: Examples Paolo Calafiura, Charles Leggett HCG/NERSC/LBNL.
Gaudi Framework Tutorial, April Creating Objects and Writing Data.
Star Database Tutorial Package Design & Objectivity Discussion Interface Questions – What do you want? -> making requests – What do you get? -> data container.
25th Nov, 1999 LHCb Event Data Model Pavel Binko, LHCb / CERN 1 LHCb Software Week LHCb Event Data Model Pavel Binko LHCb / CERN.
OOP Basics Classes & Methods (c) IDMS/SQL News
Athena Tutorial: Liquid Argon Example ATHENA The ATLAS Control Framework Tutorial: Liquid Argon Example Based on original by S. Rajagopalan BNL.
Classes Classes are a major feature of C++. They support – – Abstraction – Data hiding – Encapsulation – Modularity – Re-use through inheritance.
Go4 Workshop J.Adamczewski-Musch, S.Linev Go4 advanced features.
Thomas Ruf, CERN EP Experience with C++ and ROOT used in the VX Beam Test Thomas Ruf, CERN, EP  Why? Event structure for VX-data rather complex: raw hits.
9 Associators How to relate objects to each other Create relations Save relations Use relations: Associators.
Athena StoreGate Tutorial: May 30, Objectives Learn how to access data objects using StoreGate How to record/retrieve by TYPE Optionally using keys.
Defining Data Types in C++ Part 2: classes. Quick review of OOP Object: combination of: –data structures (describe object attributes) –functions (describe.
Evaluation of the C++ binding to the Oracle Database System Dirk Geppert and Krzysztof Nienartowicz, IT/DB CERN IT Fellow Seminar November 20, 2002.
N ATIONAL E NERGY R ESEARCH S CIENTIFIC C OMPUTING C ENTER Charles Leggett Transient Conditions/Detector Store using StoreGate ATLAS Software Workshop.
HYDRA Framework. Setup of software environment Setup of software environment Using the documentation Using the documentation How to compile a program.
Root I/O and the Gaudi Framework
Copyright © Jim Fawcett Spring 2017
Classes C++ representation of an object
MPEG-4 Binary Information for Scenes (BIFS)
Using Shared Libraries
A C++ generic model for the GLAST Geometric Description
Chapter 18 I/O in C.
Geant4 Geometry Objects Persistency using ROOT
Stacks Chapter 4.
C++ History C++ was designed at AT&T Bell Labs by Bjarne Stroustrup in the early 80's Based on the ‘C’ programming language C++ language standardised in.
Templates.
Data Persistency Solution for LHCb
Raw Event Conversion Service in BOSS framework
Classes C++ representation of an object
GAUDI Detector Description News Radovan Chytracek 5/1/2019
Caching.
Event Storage GAUDI - Data access/storage Framework related issues
Use Of GAUDI framework in Online Environment
A few tricks to take you beyond the basics of Microsoft Office
Accessing Event Data Schedule: Timing Topic 20 minutes Lecture
Presentation transcript:

GLAST LAT Offline SoftwareWorkshop - SLAC, Jan , 2001 TDS objects and Converters. (Transient Data Store) Ian Gable Software Workshop Jan 2001

GLAST LAT Offline SoftwareWorkshop - SLAC, Jan , 2001 Ian Gable2 The TDS What is the TDS? A Gaudi mechanism for quickly and easily manipulating data objects. It boils down to a method of storing pointers to objects in a tree structure reminiscent of any file system. You could store raw data in a part of the tree /Event/Raw/CsIEvents And then store MC Events in another: /Event/MC/McHits Once you have an object in the TDS, it’s possible to make it persistent with very little extra difficulty. The persistency mechanism in our case is ROOT.

GLAST LAT Offline SoftwareWorkshop - SLAC, Jan , 2001 Ian Gable3 What is a TDS object? As the name suggest a TDS object is an object that plugs into the TDS To be a TDS object a class must inherit from the Gaudi class DataObject or CaintainedObject. The class must also have certain features that will allow it to work with the TDS The easiest thing to do is to show example Class:

GLAST LAT Offline SoftwareWorkshop - SLAC, Jan , 2001 Ian Gable4 Example TDS Class #ifndef TDCSI_DATA_H #define TDCSI_DATA_H 1 extern const CLID& CLID_MyClass; class MyClass : virtual public DataObject { public: virtual const CLID& clID() const { return MyClass::classID(); } static const CLID& classID() { return CLID_MyClass; } MyClass (); ~MyClass (); //!number of hit towers in the layer layer=0.. int getNumber (){ return someNumber }; //!energy recorded in the ith tower float getLongNumber() { return longNumber };

GLAST LAT Offline SoftwareWorkshop - SLAC, Jan , 2001 Ian Gable5 //! Serialize the object for reading virtual StreamBuffer& serialize( StreamBuffer& s ); //! Serialize the object for writing virtual StreamBuffer& serialize( StreamBuffer& s ) const; //! Fill the ASCII output stream virtual std::ostream& fillStream( std::ostream& s ) const; private: int m_someNumber; double m_longNumber };

GLAST LAT Offline SoftwareWorkshop - SLAC, Jan , 2001 Ian Gable6 //################################################################ // MyClassSerializeFunctions //################################################################ //! Serialize the object for writing inline StreamBuffer& MyClass::serialize( StreamBuffer& s ) const { DataObject::serialize(s); return s << m_someNumber << m_longNumber ; } //! Serialize the object for reading inline StreamBuffer& MyClass::serialize( StreamBuffer& s ) { DataObject::serialize(s); return s; >> m_someNumber >> m_longNumber ; }

GLAST LAT Offline SoftwareWorkshop - SLAC, Jan , 2001 Ian Gable7 The EventModel After setting up the object one needs to make an addition to the Glast EventModel –The event model records the Structure of the TDS Here’s our current EventModel: class EvModel { public: EvModel() { // The whole GLAST event EventModel::Event = "/Event"; // set up the MC structure EventModel::MC::Event = EventModel::Event + "/MC"; EventModel::Irf::Event = EventModel::Event + "/Irf"; EventModel::Irf::IrfAcdHits = EventModel::Irf::Event + "/IrfAcdHits"; EventModel::Irf::IrfCalHits = EventModel::Irf::Event + "/IrfCalHits"; EventModel::Irf::IrfTkrHits = EventModel::Irf::Event + "/IrfTkrHits"; EventModel::Raw::Event = EventModel::Event + "/Raw"; EventModel::Raw::TdCsIDatas = EventModel::Raw::Event + "/TdCsIDatas"; EventModel::Raw::TdSiDatas = EventModel::Raw::Event + "/TdSiDatas"; } };

GLAST LAT Offline SoftwareWorkshop - SLAC, Jan , 2001 Ian Gable8 Converters In terms of Gaudi a converter is a class that works with the TDS to transform objects from one representation to another. Converters become associated with TDS objects such that after a TDS object is matched with the appropriate converter only one line is needed to load the object –SmartDataPtr m_tdsObj(eventSvc(), “/Event/Sublevel/TDSObjects”) Once the above call is made the TDS checks to see if there is a pointer to an object in memory and if does not exists the appropriate converter is called to bring the object to life. An object can be loaded from whatever persistent form it exists in or it can be made from transforming another object.

GLAST LAT Offline SoftwareWorkshop - SLAC, Jan , 2001 Ian Gable9 Things to come away with TDS objects are easy to create and fit into the existing Gaudi GLAST frame work. Converters are very versatile. Once implemented a TDS object is simple to use. One line loading of an object which the end user doesn’t need to think about. It just happens. For more information please see the GLAST Gaudi home page. Linked from Software home Have a look at my document Making TDS objects and Converters