Code Review Offline Week Piotr Krzysztof Skowroński 10 March 2004.

Slides:



Advertisements
Similar presentations
Container Classes A container class is a data type that is capable of holding a collection of items. In C++, container classes can be implemented as.
Advertisements

5/2/  Online  Offline 5/2/20072  Online  Raw data : within the DAQ monitoring framework  Reconstructed data : with the HLT monitoring framework.
CS4432: Database Systems II Hash Indexing 1. Hash-Based Indexes Adaptation of main memory hash tables Support equality searches No range searches 2.
CS 245Notes 51 CS 245: Database System Principles Hector Garcia-Molina Notes 5: Hashing and More.
AliRoot I/O and Folder Alice Offline-Week V 2002 Piotr Krzysztof Skowroński June 11, 2002.
Index tuning Hash Index. overview Introduction Hash-based indexes are best for equality selections. –Can efficiently support index nested joins –Cannot.
Software Engineering and Design Principles Chapter 1.
File System Implementation: beyond the user’s view A possible file system layout on a disk.
CS 333 Introduction to Operating Systems Class 18 - File System Performance Jonathan Walpole Computer Science Portland State University.
Building Secure Software Chapter 9 Race Conditions.
1 Exam Guide CSIT121 Summer-I 2001 Exam-II (Final Examination) Thursday June 28th 9:30AM.
Games Development 2 Entity / Architecture Review CO3301 Week
CLEO’s User Centric Data Access System Christopher D. Jones Cornell University.
ALICE Offline week, CERN 21 February 2005 I. Hrivnacova 1 New geometry framework in MUON I.Hrivnacova IPN, Orsay ALICE Offline week, CERN 21 February 2005.
Object Oriented Programming Elhanan Borenstein Lecture #4.
Areas For Review L3 Review of SM Software, 28 Oct The Charge From Jim’s with instructions for the review: “The time limit for this review.
IT253: Computer Organization Lecture 3: Memory and Bit Operations Tonga Institute of Higher Education.
Object Oriented Programming Elhanan Borenstein copyrights © Elhanan Borenstein.
Framework for Raw Data Thomas Kuhr Offline Week 29/06/2004.
ASP.NET The Clock Project. The ASP.NET Clock Project The ASP.NET Clock Project is the topic of Chapter 23. By completing the clock project, you will learn.
Area Detector Drivers Towards A Pattern Jon Thompson.
ADTs and C++ Classes Classes and Members Constructors The header file and the implementation file Classes and Parameters Operator Overloading.
N ATIONAL E NERGY R ESEARCH S CIENTIFIC C OMPUTING C ENTER Charles Leggett Updates to Interval of Validity Service (IOVSvc) ATLAS Software Week Dec
Andreas Morsch, CERN EP/AIP CHEP 2003 Simulation in ALICE Andreas Morsch For the ALICE Offline Project 2003 Conference for Computing in High Energy and.
C# Classes and Inheritance CNS 3260 C#.NET Software Development.
Designing Classes. Software changes Software is not like a novel that is written once and then remains unchanged. Software is extended, corrected, maintained,
Java Basics Opening Discussion zWhat did we talk about last class? zWhat are the basic constructs in the programming languages you are familiar.
First look at November 2008 data for EMEC module Maslennikov Alexei, Khoroshilov Andrey Budker Institute of Nuclear Physics, Novosibirsk Liquid Argon week,
Debugging of # P. Hristov 04/03/2013. Introduction Difficult problem – The behavior is “random” and depends on the “history” – The debugger doesn’t.
Symbian Programming Overview Spring 2004: Symbian Larry Rudolph How to program Cellphone? Limited to Series 60 phones Java MidP 2.0 (see wiki,
TB1: Data analysis Antonio Bulgheroni on behalf of the TB24 team.
CS333 Intro to Operating Systems Jonathan Walpole.
Container Classes  A container class is a data type that is capable of holding a collection of items.  In C++, container classes can be implemented as.
 2003 Prentice Hall, Inc. All rights reserved. 1 IS 0020 Program Design and Software Tools Preprocessor Midterm Review Lecture 7 Feb 17, 2004.
File Systems cs550 Operating Systems David Monismith.
Fall 2015CISC/CMPE320 - Prof. McLeod1 CISC/CMPE320 Today: –Review declaration, implementation, simple class structure. –Add an exception class and show.
Catie Welsh March 23,  Lab 6 due Friday by 1pm 2.
Upgrade Software University and INFN Catania Upgrade Software Alessia Tricomi University and INFN Catania CMS Trigger Workshop CERN, 23 July 2009.
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.
CSCI 156: Lab 11 Paging. Our Simple Architecture Logical memory space for a process consists of 16 pages of 4k bytes each. Your program thinks it has.
COMP 110 Designing and overloading methods Luv Kohli November 3, 2008 MWF 2-2:50 pm Sitterson 014.
Characters and Strings
ALICE Offline Week October 4 th 2006 Silvia Arcelli & Chiara Zampolli TOF Online Calibration - Strategy - TOF Detector Algorithm - TOF Preprocessor.
Summary of Workshop on Calibration and Alignment Database Magali Gruwé CERN PH/AIP ALICE Computing Day February 28 th 2005.
October 10-12, 1 AliRoot: I/O organisation ROOT in the ALICE experiment I/O Structure Run-Time Data-Exchange.
ROOT Based CMS Framework Bill Tanenbaum US-CMS/Fermilab 14/October/2002.
MINIX Presented by: Clinton Morse, Joseph Paetz, Theresa Sullivan, and Angela Volk.
CS 206 Introduction to Computer Science II 04 / 08 / 2009 Instructor: Michael Eckmann.
1 Ullman et al. : Database System Principles Notes 5: Hashing and More.
Overview of EMU Software Rick Wilkinson. Slice Test DAQ We succeeded in using Slice Test DAQ code to take test beam data, combining chamber and trigger.
AliRoot Classes for access to Calibration and Alignment objects Magali Gruwé CERN PH/AIP ALICE Offline Meeting February 17 th 2005 To be presented to detector.
AliRoot survey: Reconstruction P.Hristov 11/06/2013.
PHENIX Simulation System 1 September 8, 1999 Simulation Work-in-Progress: ROOT-in-PISA Indrani Ojha Banaras Hindu University and Vanderbilt.
AliRoot survey: Calibration P.Hristov 11/06/2013.
D. Elia (INFN Bari)ALICE Offline week / CERN Update on the SPD Offline Domenico Elia in collaboration with H. Tydesjo, A. Mastroserio Overview:
OOP Tirgul 7. What We’ll Be Seeing Today  Packages  Exceptions  Ex4 2.
Status of the DHCAL Simulation Jan Blaha Laboratoire d'Annecy-le-Vieux de Physique des Particules MicroMegas Physics Meeting LAPP, 16 Mars
WP12 - General Development News Sandro Wenzel
Analysis Frame for MC data
Jonathan Walpole Computer Science Portland State University
Code&Semantic Observations
MICE event viewer status - Mihailo Savic - CM 45
Recent performance improvements in ALICE simulation/digitization
Analysis framework - status
Online Software “To Do” List
AVG 24th 2015 ADVANCED c# - part 1.
CISC/CMPE320 - Prof. McLeod
Data Structures & Algorithms
CMPE212 – Reminders Assignment 2 due next Friday.
Games Development 2 Entity / Architecture Review
Presentation transcript:

Code Review Offline Week Piotr Krzysztof Skowroński 10 March 2004

2P. K. Skowroński Offline Week March March 2004 Loaders misusage Offten loaders are accessed and used completely differently than intendend Instead of taking data from the folder with proper NAME people grab the first global pointer they can find: //Ha!, they moved TreeX() from gAlice to Loader, bud gAlice has the pointer! gAlice->GetRunLoader()->....//bad //Gotya!, we have another global pointer AliRunLoader::GetRunLoader()->...//bad AliRunLoader::GetRunLoader(name)//good We should remove the possibilities of the bad usage With the cost of some software redesign, f.e. hits that get access to geometry

3P. K. Skowroński Offline Week March March 2004 Deleted objects taken from whiteboard We should consider hiding whiteboard from public access Reimplement it inside loaders Return const& instead of pointer Anyway everybody uses loader‘s shortcut methods to access data It is easier to debug in case an object is deleted Maybe people will think a little bit before deleting they must cast reference to pointer before doing that

4P. K. Skowroński Offline Week March March 2004 Loader gives too many possibilities Yes, list of public methods in loader is very long It can be minimized to only few But than user would have to do things like this: fLoader->GetDataLoader(”Hits”)->Load(”read”); fLoader->GetDataLoader(”Digits”)-> GetTaskLoader->Load(”read”); Look at the header files and consider carefully what should be thrown away

5P. K. Skowroński Offline Week March March 2004 Remnestants of the OldIO Methods like AliRun::TreeE(), AliRun::TreeS(), etc. are made being shortcuts to AliRunLoader or MayNotUse(), just not to be forced to go through all the code by one or two people Detector responsibles were supposed to remove it from the code AliRoot is full of the lines like gAlice->TreeD() We should remove these methods from AliRun immediately

6P. K. Skowroński Offline Week March March 2004 Global Pointers We could consider removal of all global pointers in AliRoot, including gAlice gAlice is really indispensable only in „hitisation” phase Detectors can be accessed via RunLoader and stored just as an array The same with the geometry  Especially that modeler is going to be introduced shortly MCApp could be accessed via loader or like a singleton  In simulation there can not be present more than one MC application at one time?  Data of MCApp can be written to AliHeader (TreeE) I know that global pointers are comfortable in usage, but you can not even imagine how much time Peter spends on debugging stuff connected with „data taken from the space” when making AliRoot really working Comments?

7P. K. Skowroński Offline Week March March 2004 Data containers It is true that we do not have uniform way of handling data containers that are written to the trees Some still have them in the detector object (ITS) Some have them in loaders (PHOS) Some others have this scattered all around the code When poor developer wants to decouple sth. from detector do not really know how to do it I propose to put them in loader, since filling containers is always connected with data loading Overloading Post() method seems to be the best solution Look at the PHOS Loader But not at PHOS Getter!!!!!!!! Comments?

8P. K. Skowroński Offline Week March March 2004 What is AliStream AliStack is an utility class used by Run Digitizer to manipulate I/O Opening sessions (Run Loader) Pushing next event Error checking in I/O manipulation Nacely encapsulates this functionality and decouple from Run Loader

9P. K. Skowroński Offline Week March March 2004 AliStram – why NOT get rid of it At the moment you throw it away you will start to think about reimplementing it with a different name 95% of its code is going to be moved to Run Digitizer Run Digitizer are going to cope with  arrays of Run Loaders and file names  managing opening sessions (of a given signal/background)  getting the next event (of a given signal/background)  deleting session (of a given signal/background)  error checking, etc And you loose functionality that is aready implemented and debugged Maybe chaining many signal and/or background directories is not used in practice, but... What you gain ? If you do not like sth. in the AliStream, maybe consider redesign?