Overview of My Experience With C++

Slides:



Advertisements
Similar presentations
US FAST site EMU CSC test results – a global view from ROOT N. Terentiev (Carnegie Mellon University) Fermilab July 23, 2004.
Advertisements

70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment Chapter 11: Monitoring Server Performance.
Henrik Loos High Level 17 June 2008 High Level Physics Applications for LCLS Commissioning Henrik Loos.
Hands-On Microsoft Windows Server 2008 Chapter 11 Server and Network Monitoring.
CH 13 Server and Network Monitoring. Hands-On Microsoft Windows Server Objectives Understand the importance of server monitoring Monitor server.
Windows Server 2008 Chapter 11 Last Update
Android 4: Creating Contents Kirk Scott 1. Outline 4.1 Planning Contents 4.2 GIMP and Free Sound Recorder 4.3 Using FlashCardMaker to Create an XML File.
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
Introduction to The Linaro Toolchain Embedded Processors Training Multicore Software Applications Literature Number: SPRPXXX 1.
1 Introduction to Tool chains. 2 Tool chain for the Sitara Family (but it is true for other ARM based devices as well) A tool chain is a collection of.
P6 - CONFIGURE THE SOFTWARE. CONFIGURE SOFTWARE Most software can be configured to suit an individual user, for example by changing the appearance of.
A First Program Using C#
ROOT An object oriented HEP analysis framework.. Computing in Physics Physics = experimental science =>Experiments (e.g. at CERN) Planning phase Physics.
System Calls 1.
CHAPTER FOUR COMPUTER SOFTWARE.
Drag and Drop Display and Builder. Timofei B. Bolshakov, Andrey D. Petrov FermiLab.
9 Chapter Nine Compiled Web Server Programs. 9 Chapter Objectives Learn about Common Gateway Interface (CGI) Create CGI programs that generate dynamic.
Android for Java Developers Denver Java Users Group Jan 11, Mike
1 SNL Current State (in transition state) By Matthias Clausen Ron Chestnut.
Teacher’s Assessment Assistant Worksheet Builder Starting the Program
A U.S. Department of Energy Office of Science Laboratory Operated by The University of Chicago Argonne National Laboratory Office of Science U.S. Department.
Writing macros and programs for Voyager cataloging Kathryn Lybarger ELUNA 2013 May 3, #ELUNA2013.
Tutorial 11 Five windows included in the Visual Basic Startup Screen Main Form Toolbox Project Explorer (Project) Properties.
ATCA based LLRF system design review DESY Control servers for ATCA based LLRF system Piotr Pucyk - DESY, Warsaw University of Technology Jaroslaw.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment, Enhanced Chapter 11: Monitoring Server Performance.
1.NET Web Forms Visual Studio © 2002 by Jerry Post.
Session 1 Introduction  What is RADE  Technology  Palette  Tools  Template  Combined Example  How to get RADE  Questions? RADE Applications EN-ICE-MTA.
CH 13 Server and Network Monitoring. Hands-On Microsoft Windows Server Objectives Understand the importance of server monitoring Monitor server.
The Report Generator Viewing Student Outcomes. Install the Report Generator In a browser, go to Click.
1 © Xchanging 2010 no part of this document may be circulated, quoted or reproduced without prior written approval of Xchanging. MOSS Training – UI customization.
Paul Scherrer Institut 5232 Villigen PSI ROME / / Matthias Schneebeli ROME Collaboration Meeting in Pisa Presented by Matthias Schneebeli.
Processor Structure and Function Chapter8:. CPU Structure  CPU must:  Fetch instructions –Read instruction from memory  Interpret instructions –Instruction.
CPS120: Introduction to Computer Science Compiling a C++ Program From The Command Line.
11 Computers, C#, XNA, and You Session 1.1. Session Overview  Find out what computers are all about ...and what makes a great programmer  Discover.
1 Getting Started with C++ Part 1 Windows. 2 Objective You will be able to create, compile, and run a very simple C++ program on Windows, using Microsoft.
October Test Beam DAQ. Framework sketch Only DAQs subprograms works during spills Each subprogram produces an output each spill Each dependant subprogram.
EPICS and LabVIEW Tony Vento, National Instruments
Industrial Control Engineering Session 1 Introduction  What is RADE  Technology  Palette  Tools  Template  Combined Example  How to get RADE 
Updates to CaPython/CaChannel John Hammonds Beamline Controls and Data Acquisition Group APS Engineering Support Division EPICS Collaboration Meeting INFN.
Online Data Monitoring Framework Based on Histogram Packaging in Network Distributed Data Acquisition Systems Tomoyuki Konno 1, Anatael Cabrera 2, Masaki.
Some of the utilities associated with the development of programs. These program development tools allow users to write and construct programs that the.
Fermilab Scientific Computing Division Fermi National Accelerator Laboratory, Batavia, Illinois, USA. Off-the-Shelf Hardware and Software DAQ Performance.
Introduction to Operating Systems Concepts
LIBRARY RELATIONS MANAGER
Go4 v2.2 Status & Overview CHEP 2003
Qt GUI and IDE development in EPICS
Operating Systems & System Software
The BLISS Framework 4.
Topics Introduction Hardware and Software How Computers Store Data
Introduction and Principles
CONTENT MANAGEMENT SYSTEM CSIR-NISCAIR, New Delhi
Google Web Toolkit Tutorial
Chapter 5: Using System Software
Content Management System
CS 3305 System Calls Lecture 7.
A451 Theory – 7 Programming 7A, B - Algorithms.
Introduction to Operating System (OS)
FESA evolution and the vision for Front-End Software
GIS - NetmapWEB Training Slides
Module 1: Getting Started
Compiler Construction
សេចក្តីផ្តើមពី Programming
Chapter 1: An Overview of Computers and Programming Languages
Electronics II Physics 3620 / 6620
The Basic Usage and The Event Handling in Glade.
A Virtual Implementation of VELA (CLARA)
High Level Physics Applications for LCLS Commissioning
Paul Dauncey With Jamie Ballin and Matt Noy
Project Migration / Management
Running & Testing :: IDEs
Presentation transcript:

Overview of My Experience With C++ duncan scott

Contents Why C++? Fermilab Tomoscope Application Design VELA BPM Monitor VELA Magnets app

Tomography And Related Diagnostics In Synchrotrons Why C++ ? Spent a 18 months writing a successful Longitudinal Phase Space Tomography programme at Fermilab Tomography And Related Diagnostics In Synchrotrons Everyone in my group used c / c++ (particle physicists) Fermilab Accelerator Controls Network, library, ACNET Very mature 30+ years of development Written in c++ CERN Root had all the GUI, visualisation and Analysis tools needed After initial pain I came to really enjoy working with c++ found it very powerful (ultimately) very rewarding

Setting up Tools Initial set-up can be painful Installing Root Integrated Development Environment CodeBlocks, text editor linking to libraries (ACNET, EPICS, Root, vxi11 etc.) Linux: makefiles Windows things c++ compiler Compiler differences etc. Compiler Pre-Processor Commands etc. Parallel, optimising, Learning the language In some sense once you’ve learnt one language you’ve learnt them all Debugging Valgrind, etc. Planning your application

GUI Interface: Pop-Up Windows, Expert Panels Front Page Layout Colour Schemes Configure Tomo- graphy Expert Pre-Processing DAQ Configuration Load / Save / Apply Set-ups

Example Front Page After Recon.

Application Design This is a huge rabbit hole of potential time wasting Really need to know and understand the systems you want to control and how they work before jumping in I have managed to get reasonable solution for magnets / BPMs After trying with screens I stopped Go back and learn the systems and try and form a better plan TARDIS DAQ and pre-processing Block Diagram

EPICS & VELA On return to DL started using some of the techniques I’d learnt for VELA Include one EPICS header file #include <cadef.h> Add some EPICS directories to search path in makefile Learn some new functions ca_search, ca_get, ca_put, ca_create_subscription Create some simple programmes Simple programs for learning Planning for more complex applications

BPM Global Definitions BPM monitor Design GUI Widgets BPM Choice, SA Values, Num shots Histograms Emit signals from widgets BPM Global Definitions All ‘offline Data’ Controller Signal Handler from GUI EPICS Interface Holds all BPM Objects Callback Functions update BPM Obj Set SA Start monitors (e.g. get 50 shots) DATA OBJECT Talks to Interface Holds raw data to be plotted

BPM Monitor GUI

BPM interface 6 BPM objects hold all info about each BPM Monitor structs are passed to each callback to allow update of bpm Objects and switches Easy to add more parameters if required

VELA Magnet Controller Linked to EPICS database Monitors Read / Set Values PSU status Set, Switch off / on Degauss Load / Save files

Magnet Global Definitions Magnet Monitor Design GUI Widgets Magnet, values PSU, Status Emit signals from widgets Magnet Global Definitions EPICS Interface Holds all Magnet Objects Callback Functions update Obj 4 Basic Functions Switch on / off Set Current Set and Wait / Timeout Read Current Intricacies of different magnet types, negative currents, etc, hidden from user code Master Controller Signal Handler from GUI Magnet Controller

VELA Magnet Interface Holds a ‘magnetObject’ for each magnet Contains all info. (30+ items (!) )

Monitoring Read, Set and PSU state are continuously monitored magnetObject are passed to callback functions through a pointer to monitorStruct Any parameter can be easily added

Why two controllers? The magnet controller can be used in other programmes E.g. an emittance measurement app. Will require, screen capture screen movers laser shutter magnet controller Longer term Goal have set of libraries that can control all the parts of the machine we are interested that can combined as needed.

Summary I was strongly encouraged to start working with c++ There was much initial pain, Learning the Root libraries enabled me to do all the GUI / data analysis / visualisation I needed for free and open source, good forums Writing hardware classes requires much thought knowledge of how parameters / hardware will develop to minimize refactoring I (hope) I have a good basic design on which to build larger applications Global class holds all offline info Epics interfaces with separate controllers Hardware objects hold all possible info. Monitor structs hold all info to handle call-backs, data update etc. Master controller and GUI