Introduction to ROOT. Sebastian Fleischmann. 06th March 2012 Terascale Introductory School PHYSICS AT THE. University of Wuppertal TERA SCALE SCALE

Size: px
Start display at page:

Download "Introduction to ROOT. Sebastian Fleischmann. 06th March 2012 Terascale Introductory School PHYSICS AT THE. University of Wuppertal TERA SCALE SCALE"

Transcription

1 to ROOT University of Wuppertal 06th March 2012 Terascale Introductory School

2 Basic ROOT classes 4 Interlude: 5 in ROOT 6 es and legends 7 Graphical user interface 8 ROOT trees 9 Appendix: s

3 33 ROOT is an analysis software widely used in particle physics with three main applications Graphics/Plotting Various 1-dim to 3-dim plot styles Also 3D graphics support Data analysis Math library Additional analysis libraries, e.g. RooStats (statistics tools) and TMVA (neural networks, boosted decision trees, etc), see Terascale statistics school Data storage ROOT has optimised data structures for event based data allows to store arbitrary C++ classes

4 44 Documentation During this tutorial and your work you will often need the ROOT documentation User s guide: content/users-guide Reference of all ROOT classes: reference-guide ClassIndex.html Exercises for this tutorial: ~fleischm/lehre/root/tutorial.html

5 55 My first > ini ROOT532_64 # at NAF: ini ROOT53200 > root ******************************************* * * * W E L C O M E to R O O T * * * * Version 5.32/00 2 December 2011 * * * * You are welcome to visit our Web site * * * * * ******************************************* ROOT 5.32/00 (tags/v @42375, Dec , 12:42:25 on l CINT/ROOT C/C++ Interpreter version , July 2, 2010 Type? for help. Commands must be C++ statements. Enclose multiple statements between. root [0]

6 66 My first The C interpreter CINT ROOT includes a C interpreter (CINT) root [0] (const double) e+00 root [1] for (unsigned int i=0; i!=3; i++) { \ > std::cout«i«std::endl;} root [2] Allows to perform simple calculations interactively How to get out of ROOT: root [2].q >

7 77 My first Executing macros CINT commands can also be executed from a macro file: test1.c 1 void test1(){ 2 for (unsigned int i=0; i<3; i++) { 3 std::cout<<i<<std::endl; 4 } 5 } > root -l test1.c root [0] Processing test1.c root [1].q root -l suppresses the ROOT welcome screen

8 My first Loading and compiling macros 88 Helmholtz Alliance You can load macros and execute functions defined inside: > root -l root [0].L test1.c root [1] test1() root [2].q You can also compile macros to ensure correct syntax: > root -l root [0].L test1.c+ Info in <TUnixSystem::ACLiC>: creating shared library./test1 In file included from./test1_c_aclic_dict.h:33, from./test1_c_aclic_dict.cxx:16:./test1.c: In function âvoid test1()â:./test1.c:3: error: âcoutâ is not a member of âstdâ./test1.c:3: error: âendlâ is not a member of âstdâ g++:./test1_c_aclic_dict.o: Datei oder Verzeichnis nicht gef Error in <ACLiC>: Compilation failed! root [1]

9 99 My first Loading and compiling macros Ok, so fix the code: 1 #include <iostream> 2 void test1(){ 3 for (unsigned int i=0; i<3; i++) { 4 std::cout<<i<<std::endl; 5 } 6 } root [0].L test1.c+ Info in <TUnixSystem::ACLiC>: creating shared library./test1 root [1] test1() root [2] Compiling makes execution faster and helps to find syntax errors

10 Classes and functions in the TMath namespace The TMath namespace (use with #include "TMath.h") contains ROOT implementations of various mathematical functions and constants, eg constants: TMath::Pi(), TMath::C() functions: TMath::Log2(x), TMath::Poisson(x, par) 10 10

11 TLorentzVector TLorentzVector is a ROOT class for a physical 4-vector constructor: TLorentzVector myvec(px, py, pz, e); setting components: myvec.setxyzm(px, py, pz, m); myvec.setptetaphie(pt, eta, phi, e); and several others, see root/html/tlorentzvector.html getting p T, η: myvec.pt(); myvec.eta(); arithmetic operations are possible: TLorentzVector myvec3 = myvec1+myvec1; TLorentzVector myvec3 = 5. * myvec1; as well as calculations of angles between spatial components: double deltaphi = myvec1.deltaphi(myvec2); 11 11

12 Exercise 1 Please try to work through exercise 1 now ~fleischm/lehre/root/tutorial.html 12 12

13 Interlude Memory management in ROOT and pointers Helmholtz Alliance are used in C++ to create memory resistant (permanent, non-local) objects Distinguish pointer and the actual object Creating an object of TLorentzVector and obtaining a pointer to it with new: 1 // creating a TLorentzVector in memory 2 // and get pointer to it: 3 TLorentzVector* tlvpointer = 4 new TLorentzVector(px, py, pz, e); 5 // access functions of the object that is pointed to: 6 double pt = tlvpointer->pt(); 7 // remove the object from memory 8 delete tlvpointer; 9 tlvpointer = 0; compared to 1 // creating a TLorentzVector locally: 2 TLorentzVector tlv(px, py, pz, e); 3 // access functions of the object: 4 double pt = tlv.pt(); 5 // object automatically removed when out of scope

14 Interlude Memory management in ROOT and pointers Many ROOT objects, like histograms, trees, canvases (we will use those in the following), are created with a name, i.e. a string to identify them ROOT holds a list of these objects and will automatically delete them, when ROOT is terminated You should usually created named objects with unique names, i.e. do not reuse an existing name 14 14

15 in ROOT Many data in high energy physics are presented as histograms, therefore the 1-dimensional histogram class TH1 is one of the basic classes in ROOT. 1 #include "TH1.h" Entries [GeV] E Jet 2 // create 1dim histogram with 100 bins from 0 to 1000: 3 TH1F* hist = new TH1F 4 ("histname", "title;x label;y label", 100, 0., 1000.); 5 // Fill entries: 6 hist->fill(30.); 7 hist->fill(50.); 8 // draw the histogram: 9 hist->draw(); 15 15

16 in ROOT I Not only 1-dimensional histograms (TH1), but also 2-dim (TH2) and 3-dim (TH3) histograms are supported. I Bin entries can be integer (TH1I) or floating point numbers (TH1F). 16

17 Exercise 2 Please try to work through exercise 2 now ~fleischm/lehre/root/tutorial.html 17 17

18 es and legends in ROOT ROOT distinguishes between the histogram and the canvas on which the histogram is drawn (the canvas may even be divided in pads, but we ignore this...) One can also draw several histograms into the same coordinate system If more than one histogram is drawn one should add a legend 18 18

19 Exercise 3 Please try to work through exercise 3 now ~fleischm/lehre/root/tutorial.html 19 19

20 Graphical user interface () The Editor The is rudimentary in ROOT, but sufficient to adjust many parameters Enable the editor and toolbar on a canvas via the window s menu Right-click on an object opens its context menu 20 20

21 Graphical user interface TBrowser The TBrowser allows to browse files and draw their contents You can open it with new TBrowser; Note: There is a new and an old TBrowser, if your TBrowser looks differently you are most likely using an old ROOT version 21 21

22 Exercise 4 Please try to work through exercise 4 now ~fleischm/lehre/root/tutorial.html 22 22

23 Data storage in ROOT: ROOT can store data in a TTree TTree has entries (e.g. collision events) each with identical data structure One entry at a time can be loaded from the TTree into memory B. Bellenot, A. Naumann; CSC09

24 Exercise 5 Please try to work through exercise 5 now ~fleischm/lehre/root/tutorial.html 24 24

25 Appendix Vectors in the Standard Template Library (STL) Helmholtz Alliance s are no vectors in the mathematical sense, like ROOT s TLorentzVector, but containers to store arrays with variable size of other objects. They are templated, i.e. you can create a vector of nearly all classes, e.g. std::vector<float> or std::vector<tlorentzvector>. 1 // creating a vector of floats with size 0: 2 std::vector<float> myfloatvec; 3 // adding an entry with value 100. to the end: 4 myfloatvec.push_back(100.); 5 // accessing the first entry: 6 std::cout << myfloatvec[0] << std::endl; 7 // resizing a vector and setting new entries to 10: 8 myfloatvec.resize(5, 10.); 9 // looping over a vector with iterators: 10 std::vector<float>::iterator iter = myfloatvec.begin(); 11 for (; iter!=myfloatvec.end(); iter++) { 12 std::cout << (*iter) << std::endl; 13 }

Data Analysis Frameworks: Project 9

Data Analysis Frameworks: Project 9 Computational Data Analysis Frameworks: 03/04/2008 1 Creating a ROOT macro Executing a macro with ROOT (Fitting a distribution with Breit-Wigner and Polynomial) Modifying a macro and improving graph formatting

More information

ROOT: An object-orientated analysis framework

ROOT: An object-orientated analysis framework C++ programming for physicists ROOT: An object-orientated analysis framework PD Dr H Kroha, Dr J Dubbert, Dr M Flowerdew 1 Kroha, Dubbert, Flowerdew 14/04/11 What is ROOT? An object-orientated framework

More information

Introduction to ROOT and application to data analysis at the LHC

Introduction to ROOT and application to data analysis at the LHC Introduction to ROOT and application to data analysis at the LHC INSTITUTE OF PHYSICS, HANOI August 13, 2014 1 Outline 1 ROOT: Motivation and Introduction 2 ROOT basics 3 ROOT analysis 4 Application to

More information

ROOT Analysis Framework (I) Introduction. Qipeng Hu March 15 th, 2015

ROOT Analysis Framework (I) Introduction. Qipeng Hu March 15 th, 2015 ROOT Analysis Framework (I) Introduction Qipeng Hu March 15 th, 2015 What is ROOT? Why do we use it? Simple answer: It makes plots! Graph [fb/gev] dσ jet /de T,jet 7 6 5 4 3 2 s = 14 TeV η

More information

ROOT TUTORIAL. Dirk Krücker, Kelly Beernaert, Ilya Bobovnikov.

ROOT TUTORIAL. Dirk Krücker, Kelly Beernaert, Ilya Bobovnikov. ROOT TUTORIAL Dirk Krücker, Kelly Beernaert, Ilya Bobovnikov https://indico.desy.de/conferencedisplay.py?confid=15780 July 21 th, 2016 DESY Summer Student Program 2016 What is ROOT? 2 ROOT is the Swiss

More information

Lecture I: Basics REU Root Duke Jen Raaf

Lecture I: Basics REU Root Duke Jen Raaf Lecture I: Basics Linux commands What is ROOT? Interactive ROOT session - command line vs. macros vs. user-compiled code Opening files / accessing information Histograms and Trees and Functions, Oh My!

More information

HEP data analysis using ROOT

HEP data analysis using ROOT HEP data analysis using ROOT week I ROOT, CLING and the command line Histograms, Graphs and Trees Mark Hodgkinson Course contents ROOT, CLING and the command line Histograms, Graphs and Trees File I/O,

More information

ROOT. Introduction. Spring 2010 Lecture 5. S. Lehti and V.Karimäki. COMPUTING METHODS IN HIGH ENERGY PHYSICS (page 1)

ROOT. Introduction. Spring 2010 Lecture 5. S. Lehti and V.Karimäki. COMPUTING METHODS IN HIGH ENERGY PHYSICS (page 1) Introduction ROOT is an object-oriented framework aimed at solving data analysis challenges of high energy physics. The commonly used components of ROOT are Command line interpreter Histogramming and fitting

More information

Lecture 7. Simulations and Event Generators. KVI Root-course, April Gerco Onderwater, KVI p.1/18

Lecture 7. Simulations and Event Generators. KVI Root-course, April Gerco Onderwater, KVI p.1/18 Lecture 7 Simulations and Event Generators KVI Root-course, April 19 2005 Gerco Onderwater, KVI p.1/18 Exercise 1 Write a macro which performs a benchmark comparison between TRandom, TRandom2, TRandom3.

More information

INTRODUCTION TO ROOT & BASIC APPLICATIONS

INTRODUCTION TO ROOT & BASIC APPLICATIONS INTRODUCTION TO ROOT & BASIC APPLICATIONS by Alexis Pompili (pompili@ba.infn.it) Master course Laboratorio di Analisi Da3 Esercitazione 0 LABORATORIO ANALISI DATI Alexis Pompili How to access the Virtual

More information

CSCI-1200 Data Structures Fall 2018 Lecture 22 Hash Tables, part 2 & Priority Queues, part 1

CSCI-1200 Data Structures Fall 2018 Lecture 22 Hash Tables, part 2 & Priority Queues, part 1 Review from Lecture 21 CSCI-1200 Data Structures Fall 2018 Lecture 22 Hash Tables, part 2 & Priority Queues, part 1 the single most important data structure known to mankind Hash Tables, Hash Functions,

More information

Introduction to ROOT. M. Eads PHYS 474/790B. Friday, January 17, 14

Introduction to ROOT. M. Eads PHYS 474/790B. Friday, January 17, 14 Introduction to ROOT What is ROOT? ROOT is a software framework containing a large number of utilities useful for particle physics: More stuff than you can ever possibly need (or want)! 2 ROOT is written

More information

Understanding the predefined examples

Understanding the predefined examples Tutorial category: Expert mode Understanding the predefined examples 1/32 Version 1.0 Date 29/10/2013 Official MadAnalysis 5 website : https://launchpad.net/madanalysis5/ Goals of this tutorial Understanding

More information

ROOT Trips & Tricks. Ole Hansen. Jefferson Lab. Hall A & C Analysis Workshop June 26 27, 2017

ROOT Trips & Tricks. Ole Hansen. Jefferson Lab. Hall A & C Analysis Workshop June 26 27, 2017 ROOT Trips & Tricks Ole Hansen Jefferson Lab Hall A & C Analysis Workshop June 26 27, 2017 Ole Hansen (Jefferson Lab) ROOT Trips & Tricks Analysis Workshop 2017 1 / 25 Brief Introduction Ole Hansen (Jefferson

More information

CS 376b Computer Vision

CS 376b Computer Vision CS 376b Computer Vision 09 / 25 / 2014 Instructor: Michael Eckmann Today s Topics Questions? / Comments? Enhancing images / masks Cross correlation Convolution C++ Cross-correlation Cross-correlation involves

More information

UEE1303(1070) S12: Object-Oriented Programming Advanced Topics of Class

UEE1303(1070) S12: Object-Oriented Programming Advanced Topics of Class UEE1303(1070) S12: Object-Oriented Programming Advanced Topics of Class What you will learn from Lab 6 In this laboratory, you will learn the advance topics of object-oriented programming using class.

More information

Scientific Computing

Scientific Computing Scientific Computing Martin Lotz School of Mathematics The University of Manchester Lecture 1, September 22, 2014 Outline Course Overview Programming Basics The C++ Programming Language Outline Course

More information

ROOT for beginners. First Day Discovering the graphical environment

ROOT for beginners. First Day Discovering the graphical environment ROOT for beginners First Day Discovering the graphical environment Welcome to ROOT! Today's menu: Handling ROOT files Plotting 1-D spectra Handling canvases Decorating a figure Fitting a 1-D spectrum Operations

More information

ROOT Course. Vincenzo Vitale, Dip. Fisica and INFN Roma 2

ROOT Course. Vincenzo Vitale, Dip. Fisica and INFN Roma 2 ROOT Course Vincenzo Vitale, Dip. Fisica and INFN Roma 2 Introduction This is a basic introduction to ROOT. The purpose of the course is to provide a starting knowledge and some practical experiences on

More information

rootpy: Pythonic ROOT

rootpy: Pythonic ROOT rootpy: Pythonic ROOT rootpy.org Noel Dawe on behalf of all rootpy contributors September 20, 2016 Noel Dawe (rootpy) 1/23 rootpy: Pythonic ROOT What s the problem? Why would we even consider developing

More information

CS242 COMPUTER PROGRAMMING

CS242 COMPUTER PROGRAMMING CS242 COMPUTER PROGRAMMING I.Safa a Alawneh Variables Outline 2 Data Type C++ Built-in Data Types o o o o bool Data Type char Data Type int Data Type Floating-Point Data Types Variable Declaration Initializing

More information

C++ Basics. Data Processing Course, I. Hrivnacova, IPN Orsay

C++ Basics. Data Processing Course, I. Hrivnacova, IPN Orsay C++ Basics Data Processing Course, I. Hrivnacova, IPN Orsay The First Program Comments Function main() Input and Output Namespaces Variables Fundamental Types Operators Control constructs 1 C++ Programming

More information

Root programming and data analysis

Root programming and data analysis Special Praktikum: Root programming and data analysis Ascii data: Co60.dat Ge detector t Preamplifier Shaping amp. MCA γ 60Co γ-source 1173 and 1333 kev Ascii data Ascii data: Each line: corresponds to

More information

CSE 333. Lecture 10 - references, const, classes. Hal Perkins Paul G. Allen School of Computer Science & Engineering University of Washington

CSE 333. Lecture 10 - references, const, classes. Hal Perkins Paul G. Allen School of Computer Science & Engineering University of Washington CSE 333 Lecture 10 - references, const, classes Hal Perkins Paul G. Allen School of Computer Science & Engineering University of Washington Administrivia New C++ exercise out today, due Friday morning

More information

The Run 2 ATLAS Analysis Event Data Model

The Run 2 ATLAS Analysis Event Data Model The Run 2 ATLAS Analysis Event Data Model Marcin Nowak, BNL On behalf of the ATLAS Analysis Software Group and Event Store Group 16 th International workshop on Advanced Computing and Analysis Techniques

More information

Practical Statistics for Particle Physics Analyses: Introduction to Computing Examples

Practical Statistics for Particle Physics Analyses: Introduction to Computing Examples Practical Statistics for Particle Physics Analyses: Introduction to Computing Examples Louis Lyons (Imperial College), Lorenzo Moneta (CERN) IPMU, 27-29 March 2017 Introduction Hands-on session based on

More information

CE221 Programming in C++ Part 1 Introduction

CE221 Programming in C++ Part 1 Introduction CE221 Programming in C++ Part 1 Introduction 06/10/2017 CE221 Part 1 1 Module Schedule There are two lectures (Monday 13.00-13.50 and Tuesday 11.00-11.50) each week in the autumn term, and a 2-hour lab

More information

Introduction to C++ Systems Programming

Introduction to C++ Systems Programming Introduction to C++ Systems Programming Introduction to C++ Syntax differences between C and C++ A Simple C++ Example C++ Input/Output C++ Libraries C++ Header Files Another Simple C++ Example Inline Functions

More information

Advanced Systems Programming

Advanced Systems Programming Advanced Systems Programming Introduction to C++ Martin Küttler September 19, 2017 1 / 18 About this presentation This presentation is not about learning programming or every C++ feature. It is a short

More information

An Introduction to Root I/O

An Introduction to Root I/O An Introduction to Root I/O C Coleman-Smith Duke Physics cec24@phy.duke.edu March 31, 2010 Outline Getting Started With Root What is root What can root do Compiling, installing, getting help Macros & Functions

More information

Physics 234: Computational Physics

Physics 234: Computational Physics Physics 234: Computational Physics In-class Midterm Exam Friday, February 12, 2010 Student s Name: Fill-in-the-blank and multiple choice questions (20 points) Mark your answers on the exam sheet in blue

More information

INTRODUCTION TUTORIAL

INTRODUCTION TUTORIAL INTRODUCTION TUTORIAL Introduction to ROOT Adrian Bevan YETI January 2007 Uses ROOT 5.12.00 OVERVIEW 3 tutorials over the next two days: Introduction: Introduction to ROOT. Multi Variate Analysis: Training

More information

Numbers. John Perry. Spring 2017

Numbers. John Perry. Spring 2017 Basic MAT 685: C++ Numbers University of Southern Msississippi Spring 2017 Outline Basic 1 2 Basic 3 4 Outline Basic 1 2 Basic 3 4 Variable? Basic Name representing data in computer s memory first character?

More information

Basic memory model Using functions Writing functions. Basics Prototypes Parameters Return types Functions and memory Names and namespaces

Basic memory model Using functions Writing functions. Basics Prototypes Parameters Return types Functions and memory Names and namespaces Basic memory model Using functions Writing functions Basics Prototypes Parameters Return types Functions and memory Names and namespaces When a program runs it requires main memory (RAM) space for Program

More information

Object-oriented Programming in C++

Object-oriented Programming in C++ Object-oriented Programming in C++ Working with C and C++ Wolfgang Eckhardt, Tobias Neckel March 23, 2015 Working with C and C++, March 23, 2015 1 Challenges of This Course Heterogeneity of the audience

More information

HEP data analysis using ROOT

HEP data analysis using ROOT HEP data analysis using ROOT week 3 ROOT Maths and Physics Libraries ROOT Geometries Mark Hodgkinson 1 Week 3 ROOT maths and physics libraries vectors and their operations data modelling with RooFit ROOT

More information

CHAPTER 4 FUNCTIONS. Dr. Shady Yehia Elmashad

CHAPTER 4 FUNCTIONS. Dr. Shady Yehia Elmashad CHAPTER 4 FUNCTIONS Dr. Shady Yehia Elmashad Outline 1. Introduction 2. Program Components in C++ 3. Math Library Functions 4. Functions 5. Function Definitions 6. Function Prototypes 7. Header Files 8.

More information

AN OVERVIEW OF C++ 1

AN OVERVIEW OF C++ 1 AN OVERVIEW OF C++ 1 OBJECTIVES Introduction What is object-oriented programming? Two versions of C++ C++ console I/O C++ comments Classes: A first look Some differences between C and C++ Introducing function

More information

CSCI-1200 Data Structures Fall 2018 Lecture 21 Hash Tables, part 1

CSCI-1200 Data Structures Fall 2018 Lecture 21 Hash Tables, part 1 Review from Lecture 20 CSCI-1200 Data Structures Fall 2018 Lecture 21 Hash Tables, part 1 Finishing binary search trees & the ds set class Operators as non-member functions, as member functions, and as

More information

EL2310 Scientific Programming

EL2310 Scientific Programming Lecture 15: Inheritance and Polymorphism, STL (pronobis@kth.se) Overview Overview Lecture 15: Inheritance and Polymorphism, STL Wrap Up Additional Bits about Classes Overloading Inheritance Polymorphism

More information

CSCI-1200 Data Structures Fall 2017 Lecture 5 Pointers, Arrays, & Pointer Arithmetic

CSCI-1200 Data Structures Fall 2017 Lecture 5 Pointers, Arrays, & Pointer Arithmetic CSCI-1200 Data Structures Fall 2017 Lecture 5 Pointers, Arrays, & Pointer Arithmetic Review from Letctures 3 & 4 C++ class syntax, designing classes, classes vs. structs; Passing comparison functions to

More information

Weekly Research Report

Weekly Research Report Weekly Research Report Andrew William Watson sites.temple.edu/awwatson 17 July 2013 24 July 2013 Abstract This past week, I spent most of my time trudging through C++ and ROOT tutorials and reference pages

More information

Advanced C++ 4/13/2017. The user. Types of users. Const correctness. Const declaration. This pointer and const.

Advanced C++ 4/13/2017. The user. Types of users. Const correctness. Const declaration. This pointer and const. The user. Advanced C++ For : COP 3330. Object oriented Programming (Using C++) http://www.compgeom.com/~piyush/teach/3330 #define private public #define protected public #define class struct Source: Lutz

More information

Welcome to MCS 360. content expectations. using g++ input and output streams the namespace std. Euclid s algorithm the while and do-while statements

Welcome to MCS 360. content expectations. using g++ input and output streams the namespace std. Euclid s algorithm the while and do-while statements Welcome to MCS 360 1 About the Course content expectations 2 our first C++ program using g++ input and output streams the namespace std 3 Greatest Common Divisor Euclid s algorithm the while and do-while

More information

Short Notes of CS201

Short Notes of CS201 #includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system

More information

Cpt S 122 Data Structures. Introduction to C++ Part II

Cpt S 122 Data Structures. Introduction to C++ Part II Cpt S 122 Data Structures Introduction to C++ Part II Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Topics Objectives Defining class with a member function

More information

CSCI-1200 Data Structures Fall 2009 Lecture 20 Hash Tables, Part II

CSCI-1200 Data Structures Fall 2009 Lecture 20 Hash Tables, Part II Review from Lecture 19 CSCI-1200 Data Structures Fall 2009 Lecture 20 Hash Tables, Part II Operators as non-member functions, as member functions, and as friend functions. A hash table is a table implementation

More information

An introduction to. Templates. Generic Programming. Good old C. Metaprogramming 4/13/2017

An introduction to. Templates. Generic Programming. Good old C. Metaprogramming 4/13/2017 An introduction to C++ Templates For : COP 3330. Object oriented Programming (Using C++) http://www.compgeom.com/~piyush/teach/3330 Templates Are C macros on Steroids Give you the power to parametrize

More information

Why C++? C vs. C Design goals of C++ C vs. C++ - 2

Why C++? C vs. C Design goals of C++ C vs. C++ - 2 Why C++? C vs. C++ - 1 Popular and relevant (used in nearly every application domain): end-user applications (Word, Excel, PowerPoint, Photoshop, Acrobat, Quicken, games) operating systems (Windows 9x,

More information

EP578 Computing for Physicists

EP578 Computing for Physicists EP578 Computing for Physicists Topic 12 Advanced Trees Department of Engineering Physics University of Gaziantep Course web page www.gantep.edu.tr/~bingul/ep578 Jan 2012 Sayfa 1 Introduction We will consider

More information

6. Control Statements II

6. Control Statements II Visibility Declaration in a block is not visible outside of the block. 6. Control Statements II Visibility, Local Variables, While Statement, Do Statement, Jump Statements main block int main () int i

More information

CS201 - Introduction to Programming Glossary By

CS201 - Introduction to Programming Glossary By CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with

More information

Cpt S 122 Data Structures. Templates

Cpt S 122 Data Structures. Templates Cpt S 122 Data Structures Templates Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Topics Introduction Function Template Function-template and function-template

More information

Course Text. Course Description. Course Objectives. StraighterLine Introduction to Programming in C++

Course Text. Course Description. Course Objectives. StraighterLine Introduction to Programming in C++ Introduction to Programming in C++ Course Text Programming in C++, Zyante, Fall 2013 edition. Course book provided along with the course. Course Description This course introduces programming in C++ and

More information

Welcome to Teach Yourself Acknowledgments Fundamental C++ Programming p. 2 An Introduction to C++ p. 4 A Brief History of C++ p.

Welcome to Teach Yourself Acknowledgments Fundamental C++ Programming p. 2 An Introduction to C++ p. 4 A Brief History of C++ p. Welcome to Teach Yourself p. viii Acknowledgments p. xv Fundamental C++ Programming p. 2 An Introduction to C++ p. 4 A Brief History of C++ p. 6 Standard C++: A Programming Language and a Library p. 8

More information

Looping and Counting. Lecture 3 Hartmut Kaiser hkaiser/fall_2012/csc1254.html

Looping and Counting. Lecture 3 Hartmut Kaiser  hkaiser/fall_2012/csc1254.html Looping and Counting Lecture 3 Hartmut Kaiser hkaiser@cct.lsu.edu http://www.cct.lsu.edu/ hkaiser/fall_2012/csc1254.html Abstract First we ll discuss types and type safety. Then we will modify the program

More information

Functions and Recursion

Functions and Recursion Functions and Recursion 1 Storage Classes Scope Rules Functions with Empty Parameter Lists Inline Functions References and Reference Parameters Default Arguments Unary Scope Resolution Operator Function

More information

Looping and Counting. Lecture 3. Hartmut Kaiser hkaiser/fall_2011/csc1254.html

Looping and Counting. Lecture 3. Hartmut Kaiser  hkaiser/fall_2011/csc1254.html Hartmut Kaiser hkaiser@cct.lsu.edu http://www.cct.lsu.edu/ hkaiser/fall_2011/csc1254.html 2 Abstract First we ll discuss types and type safety. Then we will modify the program we developed last time (Framing

More information

The Imperative Paradigm

The Imperative Paradigm The Imperative Paradigm Joseph Spring 7COM1023 Programming Paradigms 1 Discussion What makes a Language Imperative? Procedural Abstraction Expressions and Assignment Library Support for Data Structures

More information

Using Functional Languages and Declarative Programming to Analyze Large Datasets: LINQtoROOT

Using Functional Languages and Declarative Programming to Analyze Large Datasets: LINQtoROOT Journal of Physics: Conference Series Using Functional Languages and Declarative Programming to Analyze Large Datasets: LINQtoROOT To cite this article: G Watts 2012 J. Phys.: Conf. Ser. 396 022057 Related

More information

Stream Computing using Brook+

Stream Computing using Brook+ Stream Computing using Brook+ School of Electrical Engineering and Computer Science University of Central Florida Slides courtesy of P. Bhaniramka Outline Overview of Brook+ Brook+ Software Architecture

More information

Welcome to Python 3. Some history

Welcome to Python 3. Some history Python 3 Welcome to Python 3 Some history Python was created in the late 1980s by Guido van Rossum In December 1989 is when it was implemented Python 3 was released in December of 2008 It is not backward

More information

Praktikum: Entwicklung interaktiver eingebetteter Systeme

Praktikum: Entwicklung interaktiver eingebetteter Systeme Praktikum: Entwicklung interaktiver eingebetteter Systeme C++-Labs (falk@cs.fau.de) 1 Agenda Writing a Vector Class Constructor, References, Overloading Templates, Virtual Functions Standard Template Library

More information

QUIZ. 1. Explain the meaning of the angle brackets in the declaration of v below:

QUIZ. 1. Explain the meaning of the angle brackets in the declaration of v below: QUIZ 1. Explain the meaning of the angle brackets in the declaration of v below: This is a template, used for generic programming! QUIZ 2. Why is the vector class called a container? 3. Explain how the

More information

Engineering Tools III: OOP in C++

Engineering Tools III: OOP in C++ Engineering Tools III: OOP in C++ Engineering Tools III: OOP in C++ Why C++? C++ as a powerful and ubiquitous tool for programming of numerical simulations super-computers (and other number-crunchers)

More information

CSCI-1200 Data Structures Fall 2013 Lecture 9 Iterators & Lists

CSCI-1200 Data Structures Fall 2013 Lecture 9 Iterators & Lists Review from Lecture 8 CSCI-1200 Data Structures Fall 2013 Lecture 9 Iterators & Lists Explored a program to maintain a class enrollment list and an associated waiting list. Unfortunately, erasing items

More information

Object Oriented Design Final Exam (From 3:30 pm to 4:45 pm) Name:

Object Oriented Design Final Exam (From 3:30 pm to 4:45 pm) Name: Object Oriented Design Final Exam (From 3:30 pm to 4:45 pm) Name: Section 1 Multiple Choice Questions (40 pts total, 2 pts each): Q1: Employee is a base class and HourlyWorker is a derived class, with

More information

PyROOT: Seamless Melting of C++ and Python. Pere MATO, Danilo PIPARO on behalf of the ROOT Team

PyROOT: Seamless Melting of C++ and Python. Pere MATO, Danilo PIPARO on behalf of the ROOT Team PyROOT: Seamless Melting of C++ and Python Pere MATO, Danilo PIPARO on behalf of the ROOT Team ROOT At the root of the experiments, project started in 1995 Open Source project (LGPL2) mainly written in

More information

CS 241 Computer Programming. Introduction. Teacher Assistant. Hadeel Al-Ateeq

CS 241 Computer Programming. Introduction. Teacher Assistant. Hadeel Al-Ateeq CS 241 Computer Programming Introduction Teacher Assistant Hadeel Al-Ateeq 1 2 Course URL: http://241cs.wordpress.com/ Hadeel Al-Ateeq 3 Textbook HOW TO PROGRAM BY C++ DEITEL AND DEITEL, Seventh edition.

More information

Exercise 6.2 A generic container class

Exercise 6.2 A generic container class Exercise 6.2 A generic container class The goal of this exercise is to write a class Array that mimics the behavior of a C++ array, but provides more intelligent memory management a) Start with the input

More information

CSE 333. Lecture 9 - intro to C++ Hal Perkins Department of Computer Science & Engineering University of Washington

CSE 333. Lecture 9 - intro to C++ Hal Perkins Department of Computer Science & Engineering University of Washington CSE 333 Lecture 9 - intro to C++ Hal Perkins Department of Computer Science & Engineering University of Washington Administrivia New exercise posted yesterday afternoon, due Monday morning - Read a directory

More information

Lecture 8. Xiaoguang Wang. February 13th, 2014 STAT 598W. (STAT 598W) Lecture 8 1 / 47

Lecture 8. Xiaoguang Wang. February 13th, 2014 STAT 598W. (STAT 598W) Lecture 8 1 / 47 Lecture 8 Xiaoguang Wang STAT 598W February 13th, 2014 (STAT 598W) Lecture 8 1 / 47 Outline 1 Introduction: C++ 2 Containers 3 Classes (STAT 598W) Lecture 8 2 / 47 Outline 1 Introduction: C++ 2 Containers

More information

Outline. Introduction. Arrays declarations and initialization. Const variables. Character arrays. Static arrays. Examples.

Outline. Introduction. Arrays declarations and initialization. Const variables. Character arrays. Static arrays. Examples. Outline Introduction. Arrays declarations and initialization. Const variables. Character arrays. Static arrays. Examples. 1 Arrays I Array One type of data structures. Consecutive group of memory locations

More information

GCC : From 2.95 to 3.2

GCC : From 2.95 to 3.2 GCC : From 2.95 to 3.2 Topics Simple changes name of standard include files, std::endl, iostream, throw statements, vector iterators More complicated changes string streams, parameterized macros, hash_map

More information

CSCI-1200 Data Structures Fall 2017 Lecture 9 Iterators & STL Lists

CSCI-1200 Data Structures Fall 2017 Lecture 9 Iterators & STL Lists Review from Lecture 8 CSCI-1200 Data Structures Fall 2017 Lecture 9 Iterators & STL Lists Designing our own container classes Dynamically allocated memory in classes Copy constructors, assignment operators,

More information

Thursday, February 16, More C++ and root

Thursday, February 16, More C++ and root More C++ and root Today s Lecture Series of topics from C++ Example of thinking though a problem Useful physics classes in ROOT Functions by this point you are used to the syntax of a function pass by

More information

Welcome Back. CSCI 262 Data Structures. Hello, Let s Review. Hello, Let s Review. How to Review 8/19/ Review. Here s a simple C++ program:

Welcome Back. CSCI 262 Data Structures. Hello, Let s Review. Hello, Let s Review. How to Review 8/19/ Review. Here s a simple C++ program: Welcome Back CSCI 262 Data Structures 2 - Review What you learned in CSCI 261 (or equivalent): Variables Types Arrays Expressions Conditionals Branches & Loops Functions Recursion Classes & Objects Streams

More information

Outline. 1 About the course

Outline. 1 About the course Outline EDAF50 C++ Programming 1. Introduction 1 About the course Sven Gestegård Robertz Computer Science, LTH 2018 2 Presentation of C++ History Introduction Data types and variables 1. Introduction 2/1

More information

CSE 374 Programming Concepts & Tools. Hal Perkins Spring 2010

CSE 374 Programming Concepts & Tools. Hal Perkins Spring 2010 CSE 374 Programming Concepts & Tools Hal Perkins Spring 2010 Lecture 19 Introduction ti to C++ C++ C++ is an enormous language: g All of C Classes and objects (kind of like Java, some crucial differences)

More information

CSE 374 Programming Concepts & Tools. Hal Perkins Fall 2015 Lecture 19 Introduction to C++

CSE 374 Programming Concepts & Tools. Hal Perkins Fall 2015 Lecture 19 Introduction to C++ CSE 374 Programming Concepts & Tools Hal Perkins Fall 2015 Lecture 19 Introduction to C++ C++ C++ is an enormous language: All of C Classes and objects (kind of like Java, some crucial differences) Many

More information

Computational Physics Operating systems

Computational Physics Operating systems Computational Physics numerical methods with C++ (and UNIX) 2018-19 Fernando Barao Instituto Superior Tecnico, Dep. Fisica email: fernando.barao@tecnico.ulisboa.pt Computational Physics 2018-19 (Phys Dep

More information

Cpt S 122 Data Structures. Course Review Midterm Exam # 2

Cpt S 122 Data Structures. Course Review Midterm Exam # 2 Cpt S 122 Data Structures Course Review Midterm Exam # 2 Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Midterm Exam 2 When: Monday (11/05) 12:10 pm -1pm

More information

CSCI-1200 Data Structures Spring 2018 Exam 1 Solutions

CSCI-1200 Data Structures Spring 2018 Exam 1 Solutions CSCI-1200 Data Structures Spring 2018 Exam 1 Solutions 1 Parcel Delivery [ / 35] In the following problem you will finish the implementation of a program that is designed to keep track of several delivery

More information

Computer Science II Lecture 1 Introduction and Background

Computer Science II Lecture 1 Introduction and Background Computer Science II Lecture 1 Introduction and Background Discussion of Syllabus Instructor, TAs, office hours Course web site, http://www.cs.rpi.edu/courses/fall04/cs2, will be up soon Course emphasis,

More information

Introduction to Programming

Introduction to Programming Introduction to Programming session 5 Instructor: Reza Entezari-Maleki Email: entezari@ce.sharif.edu 1 Fall 2010 These slides are created using Deitel s slides Sahrif University of Technology Outlines

More information

MA400: Financial Mathematics

MA400: Financial Mathematics MA400: Financial Mathematics Introductory Course Lecture 1: Overview of the course Preliminaries A brief introduction Beginning to program Some example programs Aims of this course Students should have

More information

Lecture 8: Object-Oriented Programming (OOP) EE3490E: Programming S1 2017/2018 Dr. Đào Trung Kiên Hanoi Univ. of Science and Technology

Lecture 8: Object-Oriented Programming (OOP) EE3490E: Programming S1 2017/2018 Dr. Đào Trung Kiên Hanoi Univ. of Science and Technology Lecture 8: Object-Oriented Programming (OOP) 1 Introduction to C++ 2 Overview Additional features compared to C: Object-oriented programming (OOP) Generic programming (template) Many other small changes

More information

Getting Started with ROOT

Getting Started with ROOT Getting Started with ROOT Welcome to Getting Started with ROOT. Physicists are involved in the business of getting data into files, analyzing it, and then producing histogram plots and fits. This tutorial

More information

CSCI-1200 Data Structures Spring 2018 Lecture 14 Associative Containers (Maps), Part 1 (and Problem Solving Too)

CSCI-1200 Data Structures Spring 2018 Lecture 14 Associative Containers (Maps), Part 1 (and Problem Solving Too) CSCI-1200 Data Structures Spring 2018 Lecture 14 Associative Containers (Maps), Part 1 (and Problem Solving Too) HW6 NOTE: Do not use the STL map or STL pair for HW6. (It s okay to use them for the contest.)

More information

Introduction to C++ Introduction. Structure of a C++ Program. Structure of a C++ Program. C++ widely-used general-purpose programming language

Introduction to C++ Introduction. Structure of a C++ Program. Structure of a C++ Program. C++ widely-used general-purpose programming language Introduction C++ widely-used general-purpose programming language procedural and object-oriented support strong support created by Bjarne Stroustrup starting in 1979 based on C Introduction to C++ also

More information

Outline. Introduction. Pointer variables. Pointer operators. Calling functions by reference. Using const with pointers. Examples.

Outline. Introduction. Pointer variables. Pointer operators. Calling functions by reference. Using const with pointers. Examples. Outline Introduction. Pointer variables. Pointer operators. Calling functions by reference. Using const with pointers. Examples. 1 Introduction A pointer is a variable that contains a memory address Pointers

More information

Crash Course into. Prof. Dr. Renato Pajarola

Crash Course into. Prof. Dr. Renato Pajarola Crash Course into Prof. Dr. Renato Pajarola These slides may not be copied or distributed without explicit permission by all original copyright holders C Language Low-level programming language General

More information

PyROOT Automatic Python bindings for ROOT. Enric Tejedor, Stefan Wunsch, Guilherme Amadio for the ROOT team ROOT. Data Analysis Framework

PyROOT Automatic Python bindings for ROOT. Enric Tejedor, Stefan Wunsch, Guilherme Amadio for the ROOT team ROOT. Data Analysis Framework PyROOT Automatic Python bindings for ROOT Enric Tejedor, Stefan Wunsch, Guilherme Amadio for the ROOT team PyHEP 2018 Sofia, Bulgaria ROOT Data Analysis Framework https://root.cern Outline Introduction:

More information

Introducing C++ to Java Programmers

Introducing C++ to Java Programmers Introducing C++ to Java Programmers by Kip Irvine updated 2/27/2003 1 Philosophy of C++ Bjarne Stroustrup invented C++ in the early 1980's at Bell Laboratories First called "C with classes" Design Goals:

More information

Absolute C++ Walter Savitch

Absolute C++ Walter Savitch Absolute C++ sixth edition Walter Savitch Global edition This page intentionally left blank Absolute C++, Global Edition Cover Title Page Copyright Page Preface Acknowledgments Brief Contents Contents

More information

Intro to Programming & C Why Program? 1.2 Computer Systems: Hardware and Software. Why Learn to Program?

Intro to Programming & C Why Program? 1.2 Computer Systems: Hardware and Software. Why Learn to Program? Intro to Programming & C++ Unit 1 Sections 1.1-4 and 2.1-10, 2.12-13, 2.15-17 CS 1428 Spring 2019 Jill Seaman 1.1 Why Program? Computer programmable machine designed to follow instructions Program a set

More information

Introduction to C ++

Introduction to C ++ Introduction to C ++ Thomas Branch tcb06@ic.ac.uk Imperial College Software Society October 18, 2012 1 / 48 Buy Software Soc. s Free Membership at https://www.imperialcollegeunion.org/shop/ club-society-project-products/software-products/436/

More information

Chapter 15 - C++ As A "Better C"

Chapter 15 - C++ As A Better C Chapter 15 - C++ As A "Better C" Outline 15.1 Introduction 15.2 C++ 15.3 A Simple Program: Adding Two Integers 15.4 C++ Standard Library 15.5 Header Files 15.6 Inline Functions 15.7 References and Reference

More information

Lesson 13 - Vectors Dynamic Data Storage

Lesson 13 - Vectors Dynamic Data Storage Lesson 13 - Vectors Dynamic Data Storage Summary In this lesson we introduce the Standard Template Library by demonstrating the use of Vectors to provide dynamic storage of data elements. New Concepts

More information