Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based...

31

description

Paul Scherrer Institut 5232 Villigen PSI ROME / / Matthias Schneebeli Index Introduction to the ROME Environment o Objects inside ROME Projects o ROMEBuilder o Data Base o Installation Sample of a ROME generated framework

Transcript of Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based...

Page 1: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.
Page 2: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

ROME

Root based Object oriented Midas Extension

Presented by Matthias Schneebeli

Page 3: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

Index

• Introduction to the ROME Environment

o Objects inside ROME Projects

o ROMEBuilder

o Data Base

o Installation

• Sample of a ROME generated framework

Page 4: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

Introduction to ROME

Page 5: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

Features• Tool for Event based Data Analysis• Fully Object Oriented• Root based• Full connection to the Midas Environment• Online and Offline• Based on Tasks and Folders for an easy Data and Program Structure• Experiment independent Base Classes• Experiment dependent Classes are generated out of simple XML-Files• The Users write only experiment specific code (physics)• Administrative code is implemented in the generated code• Self Documenting Code• Self Linking Project

Page 6: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

ObjectsFolders•Objects, where data is stored in•Stores the data of one detector (or sub detector) component

•Hierarchically arranged•Data inside of Folders is structured

Tasks•Tasks are objects, which provides actions

•They make calculations•Store and read data in folders•Fill trees and histograms•Hierarchically arranged. •Task also own histograms

Trees•Data Objects : only written, never read•Used to write data on files

Histograms•Graphical Data Objects : only written•Belong to one Task

Steering Parameters•Task steering•Framework steering

Page 7: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

Interconnections

Folders

TasksTasksTasksFill

Read

TreesTreesTreesRead

Flag

HistogramsHistogramsHistograms

HistogramsHistogramsHistograms

HistogramsHistogramsHistograms

Fill

Fill

Disk (Output)Write (ROOT)

Disk (Input) Read (any

Format)

Page 8: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

ADC BankValue 1Value 2

...

DMND Bank

Value 1Value 2

...

From Banks to Objects

PMT FolderADCTDC

XXXx

PMT FolderADCTDC

XXXx

PMT FolderADCTDC

HV demandHV measured

HV currentScaler

Readout values of a sub-detectors

Sub-detector with all it’s readout values

TDC BankValue 1Value 2

...

SCLR BankValue 1Value 2

...

MSRD BankValue 1Value 2

...

CRNT BankValue 1Value 2

...

Page 9: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

ADCcountscountscountscounts

TDCheader

chn./valuechn./value

Pedestal subtractionCounts -> Charge

Decoding (chn./crate/…

-> number)Offset correction

MappingADC/TDC -> counter

Rawdata

*.root

Decodeddata

*.root

Objectdata

*.root

Optional analysis ofdecoded data

Highlevel

analysis

Task Task TaskBanks ROME folder

ROME folder

Proposed Analysis Structure

ADCchargechargechargecharge

TDCtimetimetimetime

HitchargetimeHV

scaler

HitchargetimeHV

scaler

HitchargetimeHV

scaler

Page 10: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

Advantages of Proposed Analysis Structure

•High level analysis accesses data in objects–no knowledge of cable mapping or ADC/TDC decoding necessary

•ADC/TDC decoding is decoupled from mapping and high level analysis–If ADC/TDC module is changed, only decoding task needs to be changed–If counter is reconnected to different ADC/TDC,

only mapping task needs to be changed

•Data can be stored/retrieved between different tasks in ROOT format–Analyze raw data–Analyze decoded data–Analyze object data

Page 11: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

The ROME Environment• Experiment independent ‘ROME’-Classes

o Base classes for the generated, experiment dependent classes. • ROMEBuilder

o Builds all experiment dependent classes out of simple XML Files.o XML files describe Tasks, Folders, Trees, Histos, Steering Parameters and

Midas Banks.o Links the generated project.o Documents the generated project.

ROME classesROME classesROME classes

XML File

ROME classesROME classesExp. classes

ROMEBuilder Executable

Documentation

Project

ROME Environment

Page 12: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

XML Project Definition File<Experiment Shortcut>

<Author Name=“Author”/><Programname Name=“Program Name”/><Folder>

Folder definitions…</Folder><Task>

Task definitions…</Task><Trees>

Tree definitions…</Trees><GeneralSteeringParameters>

Steering Parameters definitions…</GeneralSteeringParameters><MidasBanks>

Midas Bank definitions…</MidasBanks>

</Experiment Shortcut>

Folder Classes

Analyzer Class

Task Classes

Page 13: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

Object Arrays[Field Type 1] Get[Folder Name]At(int index)->Get[Field 1]();void Get[Folder Name]At(int index)->Set[Field 1]([Field Type 1] value);

Single Objects[Field Type 1] Get[Folder Name]Object()->Get[Field 1]();void Get[Folder Name]Object()->Set[Field 1]([Field Type 1] value);

Folders<Experiment Shortcut>

<Folder><SubFolder FolderName=“Folder Name" FolderTitle="Folder Title“ Array=“yes/[no]” DataBase=“yes/[no]”>

<Author Name=“Author”/><Version Number=“Version Number”/><Description Text=“Class Description”/><Fields>

<Field Name 1 Type=“Field Type 1” Init=“Init Value 1” Comment=“Comment 1” DataBasePath=“DB-Path”/>

</Fields></SubFolder>

</Folder></Experiment Shortcut>

XML File

Code

Page 14: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

<Experiment Shortcut><Task>

<SubTask Name=“Task Name”><Histos>

<Histo Name Type=“Variable Type” ArraySize=“Array Size” Title=“Title” FolderName=”Histo Folder Name” FolderTitle=”Histo Folder Title” NumberOfBinsX=“# of X bins” XMin=“X min” XMax=“X max”/>

</Histos></SubTask>

</Task></Experiment Shortcut>

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](double value,double weight)Draw[Histo Name]()Get[Histo Name]Handle()

Fill[Histo Name]At(int index,double value,double weight)Draw[Histo Name]At(int index)Get[Histo Name]HandleAt(int index)

Code

Tasks

Histogram Arrays

Single Histograms

Page 15: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

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

Page 16: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

Benefit of a generated Framework• Consistent Program Structure

o All classes look the same

o Better readability

• Less Handwritten Code

o Code of a class is written once (in the builder) and reproduced many times

• Easier Maintenance

o Modification are done once (in the builder) and then available in the whole framework

Page 17: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

Installation• Installation of ROOT• Installation of LIBXML2 (only Linux)• Installation of MIDAS (only online,

Linux)

[~]$ setenv ROMESYS ~/ROME[~]$ setenv PATH $ROMESYS/bin:$PATH[~]$ cvs checkout ROME[~/ROME]$ make[../MyExp]$ romebuilder myExp.xml –v [-o Output Path][~/MyExp]$ progname

Linux

• CVS checkout of ROME• Define environment variable

ROMESYS• Define environment variable ‘Path’

C:\> set ROMESYS=C:/ROMEC:\> set Path=%Path%;%ROMESYS%/binC:\> cvs checkout ROMEC:\ROME> nmake –f Makefile.winC:\MyExp> ROMEBuilder.exe myExp.xml –v [–o Output Path]C:\MyExp> progname

Windows

Page 18: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

Configuration File

• XML-File for steering the program

<Configuration><Modes AnalyzingMode=“online” InputDataFormat=“root”/><RunNumbers=“1001,1002”/><Tasks>

<Task1 Active=“yes”/><Task2 Active=“no”/>

</Tasks><Trees>

<Tree1 Read=“yes” Write=“no” /><Tree2 Read=“no” Write=“yes” />

</Trees><GeneralSteeringParameters>

<ValueName>100</ValueName></GeneralSteeringParameters>

</Configuration>

XML File

Page 19: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

Sample Experiment

Page 20: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

Sample Overview

• 3 Folderso PMTDatao Calib (Data base)o PMTInfo (Data base)

• 2 Taskso ReadMidaso ADCCalib

• 1 Midas Banko ADC0

Page 21: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

XML Configuration File I<XYZ>

<Folder><SubFolder FolderName="PMTData" Array="257">

<Fields><ADC Type="Float_t" Initialisation="0" Comment="// ADC Data"/>

</Fields></SubFolder><SubFolder FolderName="Calib" Array="257" DataBase="yes">

<Fields><ADCPedestal Type="Float_t" Initialisation="0" DataBasePath=“/Calib/Ped”/>

</Fields></SubFolder><SubFolder FolderName="PMTInfo" Array="257" DataBase="yes">

<Fields><PMID Type="Int_t" Initialisation="0" DataBasePath=“/Info/PMID”/><ADCID Type="Int_t" Initialisation="0" DataBasePath=“/Info/ADCID”/>

</Fields></SubFolder>

</Folder>

sample.xml

Page 22: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 11.5.2004 / Matthias Schneebeli

XML Configuration File II

<Task><SubTask Name="ReadMidas“/><SubTask Name="ADCCalib">

<Histos><ADCHisto Type="TH1F" ArraySize="257" FolderName="adc" Title="ADC"

NumberOfBinsX=“500" XMin="0" XMax=“500"/></Histos>

</SubTask></Task><MidasBanks>

<ADC0 Type="unsigned short“/></MidasBanks>

</XYZ>

sample.xml

Page 23: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

Read Midas Task

void XYZTReadMidas::Event(){ for (int i=0;i<257;i++) { int iadc = fAnalyzer->GetPMTInfoAt(i)->GetADCID();

Float_t adcValue = fAnalyzer->GetADC0BankAt(iadc); fAnalyzer->GetPMTDataAt(i)->SetADC(adcValue); }}

XYZTReadMidas.cpp

Page 24: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

ADC Calibration Task

void XYZTADCCalib::Event(){ for (int i=0;i<257;i++) { float pmtData = fAnalyzer->GetPMTDataAt(i)->GetADC(); float pedestal = fAnalyzer->GetCalibAt(i)->GetADCPedestal(); FillADCHistoAt(i,pmtData - pedestal); }}void XYZTADCCalib::EndOfRun(){ for (int i=0;i<257;i++) { DrawADCHistoAt(i);

}}

XYZTADCCalib.cpp

Page 25: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

Run ProgramC:\Sample> ROMEBuilder.exe sample.xml –v link messagesC:\Sample> XYZSample 12005 events processed Task 'ReadMidas' : run time = 00:00:00 Task 'ADCCalib' : run time = 00:00:02

Windows

Page 26: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.
Page 27: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

The MEG Experiment

Page 28: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

MEG Experiment

CMDC TC

CMScaler

Scaler

CMHV

HV

EnvironmentEnv

Trigger

Trigger

MEG

CMHit

Hit

Hit Tree

CMRefCMPMTData

Ref

PMT Data Tree

PMT Data

CMPMTInfo

Info

Data base

CMCalib

Calib

Data base

Page 29: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

Referencies

CMHit

Hit

CMPMTInfo

Info

CMCalib

Calib

CMScaler

Scaler

CMHV

HV

EnvironmentEnv

Trigger

Trigger

MEG

PMT Data

CMPMTData

ADC0ADC1TDCInfo

CMRef Scaler HV Env Trigger

Page 30: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

Detailed Introduction to ROME

Page 31: Paul Scherrer Institut 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli ROME Root based Object oriented Midas Extension Presented by Matthias.

Paul Scherrer Institut • 5232 Villigen PSI ROME / 30.6.2004 / Matthias Schneebeli

ROME Classes

• ROMEAnalyzer

o Main Class

o Provides general steering methods

• ROMEEventLoop

o Implements the event loop

• ROMETask

• ROMETree

• ROMERunTable