Lattice Motivation: Maintaining relationships between elements of two

Slides:



Advertisements
Similar presentations
Chapter 12 Lists and Iterators. List Its an abstract concept not a vector, array, or linked structure. Those are implementations of a List. A list is a.
Advertisements

Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 4, Requirements Elicitation.
Object Relational Mapping. What does ORM do? Maps Object Model to Relational Model. Resolve impedance mismatch. Resolve mapping of scalar and non-scalar.
Interfaces. In this class, we will cover: What an interface is Why you would use an interface Creating an interface Using an interface Cloning an object.
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
Configuration Management
C++ fundamentals.
Distribution of Marks Internal Sessional Evaluation Assignments – 10 Quizzes – 10 Class Participation Attendence – 5 Mid – Term Test – 25 External Evaluation.
Proxy Design Pattern Source: Design Patterns – Elements of Reusable Object- Oriented Software; Gamma, et. al.
CSE 332: C++ templates and generic programming I Motivation for Generic Programming in C++ We’ve looked at procedural programming –Reuse of code by packaging.
Chapter 4 Linked Structures – Stacks Modified. Chapter Scope Object references as links Linked vs. array-based structures Managing linked lists Linked.
Page 1 ISMT E-120 Desktop Applications for Managers Introduction to Microsoft Access.
Programming With Java ICS201 University Of Hail1 Chapter 12 UML and Patterns.
1 DATABASE TECHNOLOGIES BUS Abdou Illia, Fall 2007 (Week 3, Tuesday 9/4/2007)
File Processing - Database Overview MVNC1 DATABASE SYSTEMS Overview.
Searching: Binary Trees and Hash Tables CHAPTER 12 6/4/15 Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education,
I Information Systems Technology Ross Malaga 4 "Part I Understanding Information Systems Technology" Copyright © 2005 Prentice Hall, Inc. 4-1 DATABASE.
Database Design and Management CPTG /23/2015Chapter 12 of 38 Functions of a Database Store data Store data School: student records, class schedules,
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 13 Introduction to Classes.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
STL multimap Container. STL multimaps multimaps are associative containers –Link a key to a value –AKA: Hashtables, Associative Arrays –A multimap allows.
Chapter 8 Object Design Reuse and Patterns. Object Design Object design is the process of adding details to the requirements analysis and making implementation.
Design Patterns Gang Qian Department of Computer Science University of Central Oklahoma.
Design.ppt1 Top-down designs: 1. Define the Problem IPO 2. Identify tasks, Modularize 3. Use structure chart 4. Pseudocode for Mainline 5. Construct pseudocode.
UML as a Specification Language for Embedded Systems. By, Mir Ahmed Ali, Asst. Professor, ECM department, SNIST. By, Prof. Narsiah sir, Director of School.
Chapter 6 Introduction to Defining Classes. Objectives: Design and implement a simple class from user requirements. Organize a program in terms of a view.
Object-Oriented Modeling: Static Models. Object-Oriented Modeling Model the system as interacting objects Model the system as interacting objects Match.
Chapter 3 Collections. Objectives  Define the concepts and terminology related to collections  Explore the basic structures of the Java Collections.
“Architecture” The outcome of top-level design, reflecting principal design decisions Can (and should) be modified and updated Analogous to architecture.
Objects and Classes Engineering 1D04, Teaching Session 9.
Introduction to Databases Angela Clark University of South Alabama.
CSCI  Sequence Containers – store sequences of values ◦ vector ◦ deque ◦ list  Associative Containers – use “keys” to access data rather than.
Lists List Implementations. 2 Linked List Review Recall from CMSC 201 –“A linked list is a linear collection of self- referential structures, called nodes,
CMSC 202 Computer Science II for Majors. CMSC 202UMBC Topics Templates Linked Lists.
1 Team Skill 3 Defining the System Part 1: Use Case Modeling Noureddine Abbadeni Al-Ain University of Science and Technology College of Engineering and.
Modular Decomposition, Abstraction and Specifications
Motivation for Generic Programming in C++
Interface Concepts Modeling Core Team
Database Development Lifecycle
Software Configuration Management
Linked List ADT used to store information in a list
EECE 310: Software Engineering
Reviewing Code A guide to smelling another developer’s source code.
PLM, Document and Workflow Management
Unified Modeling Language
Review: Two Programming Paradigms
Chapter 3: Using Methods, Classes, and Objects
INTRODUCTION TO OBJECT-ORIENTED PROGRAMMING (OOP) & CONCEPTS
Linked Lists head One downside of arrays is that they have a fixed size. To solve this problem of fixed size, we’ll relax the constraint that the.
structures and their relationships." - Linus Torvalds
Stack ADT & Modularity 2 implementations of the Stack abstract data type: Array Linked List Program design: modularity, abstraction and information hiding.
Basic Concepts in Data Management
Object Oriented Analysis and Design
Introduction to the Standard Template Library
The Object-Oriented Thought Process Chapter 05
Software Engineering Lecture #8.
Linked List Intro CSCE 121 J. Michael Moore.
UML Class Diagram.
Arrays and Collections
Chapter 24 Implementing Lists, Stacks, Queues, and Priority Queues
Analysis models and design models
Doubly Linked List Implementation
Chapter 5 Advanced Data Modeling
Using Use Case Diagrams
Interfaces.
Linked List Intro CSCE 121.
Doubly Linked List Implementation
structures and their relationships." - Linus Torvalds
T-FLEX DOCs PLM, Document and Workflow Management.
Lecture 3 – Data collection List ADT
Presentation transcript:

Lattice Motivation: Maintaining relationships between elements of two sets of objects is a common analysis task. Examples: Tracks  hits. Event hypotheses Vertices  tracks.  kinematic entities. Data analysis is the identification of increasingly complex relationships within the data. Documentation (almost up to date:) http://web.hep.uiuc.edu/home/jjt/Lattice/Lattice.html

Possible simplification: The problem: Everyone “rolls his own” code. • Redundant. • Buggy. Possible simplification: Manage this bookkeeping with a single shareable package. • Write and debug once. • Users can concentrate on analysis. CLEO’s solution: Make object relationships an object (Lattice). Properties: • Addition and removal of connections between objects. • Association of data with each connection (“link data”). • Complete set of data access methods.

Specifications: • Flexible º Any two sets of data can be connected. º Link data is user definable. º Lattices don’t interact. Objects can belong to multiple Lattices. • Minimal impact on existing code. º No performance penalty. º Little rewriting of working code: Data must have an Identifier type. (CLEO data already had this.) Gives type safety (LeftID ≠ RightID, usually).

The goal: • Establish and maintain connections between lists of data. ID = 1 2 M . N Links Right nodes Left nodes Lattice User data IDs do not need to be int The goal: • Establish and maintain connections between lists of data. • Links hold information that describes the connection. • Retrieve data in easy to use format. • Specify connectivity constraints.

Examples Clustering with classes of cluster membership. No overlaps allowed. Hits 1 2 8 Many One class 1 class 2 Clusters Track finding with hit sharing not allowed Tracks Hits c2 1 2 3 8 Many One Numbering is arbitrary. Lines might cross. Not allowed Tracks Hits c2 1 2 3 8 Many One Track finding with hit sharing allowed Clustering with classes of cluster membership. Overlaps allowed. Clusters Hits 1 2 8 Many One class 1 class 2

Issues: • Simple interface. Users only want to see one kind of container (STL vectors). • Unobtrusive. Impose no functional requirements on data classes, so new Lattices can be added without requiring code modification or affecting program behavior. • Persistence over write/read cycle. Lattice uses identifiers, not pointers to data. • Performance. Optimized for data access, at the expense of slower data insertion. This is hidden from the user; could be modified. • Adaptability. Generic implementation. A CLEO specific interface (i.e., to our data structures) is achieved by inheritance.

You are responsible for maintaining LinkData Construction and remodeling: Construct: (It’s a class template, so some instantiation is required.) pLattice = new Lattice<LeftData,RightData,LinkData>(Connectivity); You specify data types, link data, and the allowed connectivity. Remodel: (null pointer returned on failure) Make a new link: (your LinkData will be copied to it) Link* pLink = pLattice->connect(LeftID, RightID, LinkData&); Connect data through an existing link: Link* pLink = pLattice->connect(LeftID, Link&, RightID); Add datum to an existing link: Link* pLink = connect(Link&, RightID); You are responsible for maintaining LinkData

Data access functions: const vector<LeftID>* vLeft = pLattice->vLeftGivenLeft (LeftID); const vector<RightID>* vRight = pLattice->vRightGivenLeft(LeftID); const vector<Link*>* pLinks = linksGivenLeft(LeftID); const vector<LeftID>& vLeftID = pLink->vLeftID(); void connectLinks (LeftID, RightID, vector<Link*>&); void shareLinksLeft(LeftID, LeftID, vector<Link*>&); Verbose nomenclature - I don’t know that LeftID and RightID are different types. Too expensive to maintain. You supply vector; I fill it. linksGivenLeft connectLinks shareLinksLeft vLeftGivenLeft vRightGivenLeft vLeftID LinkData& ld = pLink->linkData(); Gives you write access to a link’s data. “It’s your data.” (GWB)

Status: • An integral part of the CLEO software environment for nearly two years (stable code, except when I “fix” something). • Being adapted (or considered) by two other experiments. • Not “plug and play,” but close.