Presented by Matthias Schneebeli

Slides:



Advertisements
Similar presentations
H.G.Essel: Go4 - J. Adamczewski, M. Al-Turany, D. Bertini, H.G.Essel, S.Linev CHEP 2004 Go4 v2.8 Analysis Design.
Advertisements

XML Parsing Using Java APIs AIP Independence project Fall 2010.
COSC 120 Computer Programming
Guide To UNIX Using Linux Third Edition
Guide To UNIX Using Linux Third Edition
C++ fundamentals.
Systems Software Operating Systems.
Collections Management Museums Reporting in KE EMu.
Types of software. Sonam Dema..
Reporting in EMu Crystal != Reporting or Why is reporting so difficult and can we do anything about it? Bernard Marshall KE Software.
1 Exception and Event Handling (Based on:Concepts of Programming Languages, 8 th edition, by Robert W. Sebesta, 2007)
Copyright 2003 Scott/Jones Publishing Brief Version of Starting Out with C++, 4th Edition Chapter 1 Introduction to Computers and Programming.
Introduction 01_intro.ppt
Computer Systems Week 10: File Organisation Alma Whitfield.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
COMPUTER SOFTWARE Section 2 “System Software: Computer System Management ” CHAPTER 4 Lecture-6/ T. Nouf Almujally 1.
UNIX SVR4 COSC513 Zhaohui Chen Jiefei Huang. UNIX SVR4 UNIX system V release 4 is a major new release of the UNIX operating system, developed by AT&T.
Talk. Paul Scherrer Institut 5232 Villigen PSI ROME / / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.
Shuei MEG review meeting, 2 July MEG Software Status MEG Software Group Framework Large Prototype software updates Database ROME Monte Carlo.
Standard Grade Computing System Software & Operating Systems.
Web Services Week 2 Aims: Getting started with creating simple C# applications within Visual Studio.NET Objectives: –An introduction to the syntax of C#.NET.
Paul Scherrer Institut 5232 Villigen PSI ROME / / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.
Talk. Paul Scherrer Institut 5232 Villigen PSI ROME / / Matthias Schneebeli ROME Softies Meeting Presented by Matthias Schneebeli.
Systems Software Operating Systems. What is software? Software is the term that we use for all the programs and data that we use with a computer system.
Talk. Paul Scherrer Institut 5232 Villigen PSI ROME / / Matthias Schneebeli ROME CHEP 2006 Presented by Matthias Schneebeli a universally applicable.
1 Control Software (CAT) Introduction USB Interface implementation Calorimeter Electronics Upgrade Meeting Frédéric Machefert Wednesday 5 th May, 2010.
I Power Higher Computing Software Development Development Languages and Environments.
H.G.Essel: Go4 - J. Adamczewski, M. Al-Turany, D. Bertini, H.G.Essel, S.Linev CHEP 2003 GSI Online Offline Object Oriented Go4.
OCR GCSE Computing © Hodder Education 2013 Slide 1 OCR GCSE Computing Python programming 1: Introduction.
Talk. Paul Scherrer Institut 5232 Villigen PSI ROME / / Matthias Schneebeli ROME CHEP 2006 Presented by Matthias Schneebeli a universally applicable.
Chapter 1 Computers, Compilers, & Unix. Overview u Computer hardware u Unix u Computer Languages u Compilers.
Paul Scherrer Institut 5232 Villigen PSI CHEP 2006 in Mumbay / / Matthias Schneebeli ROME CHEP 2006 Presented by Matthias Schneebeli a universally.
Talk. Paul Scherrer Institut 5232 Villigen PSI CHEP 2006 in Mumbay / / Matthias Schneebeli ROME CHEP 2006 Presented by Matthias Schneebeli a.
Talk. Paul Scherrer Institut 5232 Villigen PSI ROME / / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.
SoLID simulation with GEMC Zhiwen Zhao 2015/03/26.
Paul Scherrer Institut 5232 Villigen PSI ROME / / Matthias Schneebeli ROME Collaboration Meeting in Pisa Presented by Matthias Schneebeli.
Talk. Paul Scherrer Institut 5232 Villigen PSI ROME / / Matthias Schneebeli ROME Wednesday Seminar Presented by Matthias Schneebeli a universally.
SAP DEVELOPMENT BASICS Bohuslav Tesar. TRAINING OVERVIEW Amazing life of ABAP developer ;) SAP introduction ABAP basics ABAP Reporting.
Paul Scherrer Institut 5232 Villigen PSI ROME / / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.
Course Title Object Oriented Programming with C++ instructor ADEEL ANJUM Chapter No: 03 Conditional statement 1 BY ADEEL ANJUM (MSc-cs, CCNA,WEB DEVELOPER)
Lecture #1: Introduction to Algorithms and Problem Solving Dr. Hmood Al-Dossari King Saud University Department of Computer Science 6 February 2012.
Talk. Paul Scherrer Institut 5232 Villigen PSI ROME / / Matthias Schneebeli ROME Softies Meeting Presented by Matthias Schneebeli.
Talk. Paul Scherrer Institut 5232 Villigen PSI ROME / / Matthias Schneebeli ROME Wednesday Seminar Presented by Matthias Schneebeli a universally.
Paul Scherrer Institut 5232 Villigen PSI ROME / / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.
Solvency II Tripartite template V2 and V3 Presentation of the conversion tools proposed by FundsXML France.
HYDRA Framework. Setup of software environment Setup of software environment Using the documentation Using the documentation How to compile a program.
Go4 v2.2 Status & Overview CHEP 2003
Introduction to Visual Basic. NET,. NET Framework and Visual Studio
Topic 2: Hardware and Software
Development Environment
Topics Introduction Hardware and Software How Computers Store Data
Operating System.
Key Ideas from day 1 slides
MATLAB Basics Nafees Ahmed Asstt. Professor, EE Deptt DIT, DehraDun.
Distributed object monitoring for ROOT analyses with Go4 v.3
ROME Root based Object oriented Midas Extension
Objectives Identify the built-in data types in C++
Introduction to Programming the WWW I
Functions CIS 40 – Introduction to Programming in Python
Talk.
Computer Science 210 Computer Organization
Computer Science I CSC 135.
Topics Introduction Hardware and Software How Computers Store Data
Chapter One: An Introduction to Programming and Visual Basic
Smart Integration Express
Programming Fundamentals (750113) Ch1. Problem Solving
Introduction to Computer Programming
CSCI N317 Computation for Scientific Applications Unit 1 – 1 MATLAB
Programming Fundamentals (750113) Ch1. Problem Solving
Compiler Structures 1. Overview Objective
Presentation transcript:

Presented by Matthias Schneebeli ROME Softies Meeting Presented by Matthias Schneebeli

Index Introduction to the ROME Environment The code generation mechanism Objects inside ROME Projects Introduction to XML XML definition file Installation Sample of a ROME generated framework

Introduction to ROME

Framework Requirements Universal The framework should be usable by as many experiments as possible. Modular Possibility to easy exchange calculation modules. Object oriented Program should deal with objects, not with single values. Easy to use The user should write as less and as simple code as possible.

Universality ROME is clearly separated into an experiment independent part of the framework e.g. Event loop, IO. Works for all event based experiments an experiment dependent part of the framework e.g. Data structure, program structure Summarized in a framework definition file. Translated into c++ code by the ROMEBuilder. the calculation code Has to be written by the experimenter

The framework generation ’ROME’-Classes are base classes for generated classes. Totally experiment independent. ROMEBuilder Translation program. Reads in a XML framework definition file and translates this information into c++ code. Links the generated project. Documents the generated project. Like the MAKE command in ODBEdit ROME classes XML File Exp. classes ROMEBuilder Executable Documentation Project ROME Environment

Possible even during runtime Modularity ROME is based on Tasks and Folders. Tasks are independent calculation modules. The interface to the tasks are folders. Tasks can be combined or exchanged arbitrarily, as long as the interface matches. E.g. one can execute different calibration tasks without re-linking. B1 A1 B2 A2 A3 Possible even during runtime A4

ROME Objects ROME Objects : Only 6 different objects. Folders Data objects in memory Tasks Calculation objects Trees Data objects saved to disc Histograms Graphical data objects Steering Parameters Framework steering Midas Banks Midas raw data objects ROME Objects : Only 6 different objects. Access methods have same naming conventions

Interconnections Disk Histograms Tasks Histograms Folders Histograms (Input) Read (any Format) Histograms Read Fill Tasks Folders Histograms Fill Fill Histograms Flag Fill Trees Disk (Output) Write (ROOT)

Easy to use User can summarize the experiment dependent part of the framework in a XML file. The XML file is then translated by the romebuilder into c++ code. The user adds only calculation code to predefined event methods of the tasks. Calculation code is ‘c-code’.

Introduction to XML Extensible Markup Language (XML) XML File <Garage> <Car> <Type>Ferrari</Type> <Color>Red</Color> </Car> <Type>Fiat</Type> <Color>Blue</Color> <Bicycle> <Type>Bianchi</Type> <Color>White</Color> </Bicycle> </Garage> Introduction to XML Extensible Markup Language (XML) Standardized ascii format Tree structure Syntax is similar to html XSD File <xs:complexType name="VehicleDesc"> <xs:sequence> <xs:element name="Type" type="xs:string"/> <xs:element name="Color" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:element name="Garage"> <xs:complexType> <xs:element name="Car" type="VehicleDesc" maxOccurs="unbounded"/> <xs:element name="Bicycle" type="VehicleDesc" maxOccurs="unbounded"/> </xs:element>

XML Editors XMLSpy Table Format Commercial Software (50 Euro) Only for Windows EditiX Nice Tree Format Commercial Software (30 Euro) Windows, Linux, Mac ROME works with any Editor

XML Project Definition File <ROMEFrameworkDefinition> <Folders> Folder definitions… </Folders> <Tasks> Task definitions… </Tasks> <Trees> Tree definitions… </Trees> <GeneralSteeringParameters> Steering Parameters definitions… </GeneralSteeringParameters> <MidasBanks> Midas Bank definitions… </MidasBanks> </ROMEFrameworkDefinition > Folder Classes Task Classes Analyzer Class

Folders XML File <Folder> <FolderName>Folder Name</FolderName> <ArraySize>Array Size</ArraySize> <DataBaseAccess>yes/no</DataBaseAccess> <Field> <FieldName>Field Name 1<FieldName> <FieldType>Field Type 1<FieldType> </Field> <FieldName>Field Name 2<FieldName> <FieldType>Field Type 2<FieldType> </Folder> Code Single Folders [Field Type 1] Get[Folder Name]()->Get[Field Name 1](); void Get[Folder Name]()->Set[Field Name 1]([Field Type 1] value); Folder Arrays [Field Type 1] Get[Folder Name]At(int index)->Get[Field Name 1](); void Get[Folder Name]At(int index)->Set[Field Name 1]([Field Type 1] value);

Tasks XML File Code <Task> <TaskName>Task Name<TaskName> <Histogram> <HistName>Histo Name 1<HistName> <…> </Histogram> <SteeringParameters> </SteeringParameters> </Task> XML File void [Experiment Shortcut]T[Task Name]::Init() { } void [Experiment Shortcut]T[Task Name]::BeginOfRun() { } void [Experiment Shortcut]T[Task Name]::Event() { } void [Experiment Shortcut]T[Task Name]::EndOfRun() { } void [Experiment Shortcut]T[Task Name]::Terminate() { } Fill[Histo Name 1](double value,double weight) Draw[Histo Name 1]() Get[Histo Name 1]Handle() Fill[Histo Name 1]At(int index,double value,double weight) Draw[Histo Name 1]At(int index) Get[Histo Name 1]HandleAt(int index) Code Single Histograms Histogram Arrays

Installation Installation of ROOT Installation of LIBXML2 (only Linux) Installation of MIDAS (only online, Linux) CVS checkout of ROME Define environment variable ROMESYS Define environment variable ‘Path’ C:\> set ROMESYS=C:/ROME C:\> set Path=%Path%;%ROMESYS%/bin C:\> cvs checkout ROME C:\ROME> nmake –f Makefile.win C:\MyExp> ROMEBuilder.exe myExp.xml –v [–o Output Path] C:\MyExp> progname Windows [~]$ setenv ROMESYS ~/ROME [~]$ setenv PATH $ROMESYS/bin:$PATH [~]$ cvs checkout ROME [~/ROME]$ make [../MyExp]$ romebuilder myExp.xml [-o Output Path] [~/MyExp]$ progname Linux

Configuration File XML File <RunNumbers>1001,1002-1004</RunNumbers> <Modes> <AnalyzingMode>offline</AnalyzingMode> <InputDataFormat>midas</InputDataFormat> </Modes> <Tasks> <Task> <TaskName>Task 1</TaskName> <Active>yes/no</Active> </Task> </Tasks> <Trees> <Tree> <TreeName>Tree1</TreeName> <Read>yes/no</Read> <Write>yes/no</Write> </Tree> </Trees> <GeneralSteeringParameters> <SteeringParameterField> <SPName>Value</SPName> <SPValue>123</SPValue> </SteeringParameterField> </GeneralSteeringParameters> XML File

Summary ROME is a framework generator. Only 6 different objects with up to 6 access methods. All classes are generated, only event methods have to be written. No knowledge about object oriented programming is needed. Folders and Tasks support a very clear program structure. Modularity : tasks can be easily exchanged even at runtime.

Sample Experiment

Sample Overview 2 Folders PMTData Calib (Data base) 2 Tasks ReadMidas ADCCalib 1 Midas Bank ADC0

XML Definition File I sample.xml <Folder> <FolderName>PMTData</FolderName> <ArraySize>228</ArraySize> <Field> <FieldsName>ADC</FieldName> <FieldsType>Float_t</FieldType> </Field> </Folder> <FolderName>PMTCalib</FolderName> <DataBaseAccess>true</DataBaseAccess> <FieldsName>ADCPedestal</FieldName> <DataBasePath>/RunCatalog(id=#)/LPCalib[0,227]/pedestal</DataBasePath> sample.xml

XML Definition File II sample.xml <Task> <Tasks> <Task> <TaskName>ReadMidas</TaskName> </Task> <Histogram>ADCCalib</Histogram> <HistName>ADCHisto</HistName> <HistType>TH1F</HistType> <HistArraySize>228</HistArraySize> <HistXNbins>500</HistXNbins> <HistXmin>0</HistXmin> <HistXmax>500</HistXmax> </Tasks> <MidasBanks> <Bank> <BankName>ADC0</BankName> <BankType>unsigned short</BankType> </Bank> </MidasBanks> sample.xml

Read Midas Task XYZTReadMidas.cpp void XYZTReadMidas::Event() { for (int i=0;i<228;i++) { Float_t adcValue = gAnalyzer->GetADC0BankAt(i); gAnalyzer->GetPMTDataAt(i)->SetADC(adcValue); } XYZTReadMidas.cpp

ADC Calibration Task XYZTADCCalib.cpp void XYZTADCCalib::Event() { for (int i=0;i<228;i++) { float pmtData = gAnalyzer->GetPMTDataAt(i)->GetADC(); float pedestal = gAnalyzer->GetCalibAt(i)->GetADCPedestal(); FillADCHistoAt(i,pmtData - pedestal); } void XYZTADCCalib::EndOfRun() DrawADCHistoAt(i); XYZTADCCalib.cpp

Run Program C:\Sample> ROMEBuilder.exe sample.xml link messages C:\Sample> XYZ q : Terminates the program e : Ends the program s : Stops the program r : Restarts the program c : Continuous Analysis o : Step by step Analysis g : Run until event # i : Root interpreter root [0] TBrowser t root [1] cout << gAnalyzer->GetPMTData()->GetADC() Windows