CMSSW Tutorial Part 1



Similar documents
CMS Data Format and Analysis Environments

The Data Quality Monitoring Software for the CMS experiment at the LHC

PXL 2.1: Toolkit for Physics Analyses in the Elementary Particle Physics

A Practical Guide to Test Case Types in Java

How To Teach Physics At The Lhc

Measurement of Neutralino Mass Differences with CMS in Dilepton Final States at the Benchmark Point LM9

The Benefits of Modular Programming

Software Development Kit

White Paper March 1, Integrating AR System with Single Sign-On (SSO) authentication systems

2.5.3 Use basic database skills to enter information in a database

JMulTi/JStatCom - A Data Analysis Toolkit for End-users and Developers

Calorimetry in particle physics experiments

Open access to data and analysis tools from the CMS experiment at the LHC

Course 6232A: Implementing a Microsoft SQL Server 2008 Database

Implementing a Microsoft SQL Server 2008 Database

Introduction to Eclipse, Creating Eclipse plug-ins and the Overture editor. David Holst Møller Engineering College of Aarhus

A Process for ATLAS Software Development

WebSphere Server Administration Course

IBM WebSphere Server Administration

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation

Advantage of Jquery: T his file is downloaded from

Scientific Programming in Python

Python Loops and String Manipulation

Drupal Website Design Curriculum

PHYSICS WITH LHC EARLY DATA

How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)

Rakudo Perl 6 on the JVM. Jonathan Worthington

E4 development: examples, methods and tools. Eclipse Con France 2014

SCADA/HMI MOVICON TRAINING COURSE PROGRAM

Password-based authentication

Tracking/Vertexing/BeamSpot/b-tag Results from First Collisions (TRK )

ARIZONA CTE CAREER PREPARATION STANDARDS & MEASUREMENT CRITERIA SOFTWARE DEVELOPMENT,

Anne-Catherine Le Bihan Antonio Pierro. Big thanks to Vincenzo Innocente for his help

What is new in syslog-ng Premium Edition 4 F1

Content. Development Tools 2(63)

Curriculum Map. Discipline: Computer Science Course: C++

JAAS Java Authentication and Authorization Services

ECG-1615A. How to Integrate IBM Enterprise Content Management Solutions With Microsoft SharePoint and IBM Connections. elinar.com

MARTe Framework. Middleware for RT Control Development

Joomla! Override Plugin

Lecture 1 Introduction to Android

Cloud Computing Architecture

SmartPOS 2.0 Advanced Point of Sales + Rabbit MQ + SmartERP (Based in Idempiere 1.0.c) Sponsored by Rapid Corp L.L.C (U.S.A)

Alarm & SMS Templates

WebSphere Business Monitor

Getting Started with IVI-COM and Python for the Lambda Genesys Power Supply

Version Control Your Jenkins Jobs with Jenkins Job Builder

Getting Started with the Internet Communications Engine

Top rediscovery at ATLAS and CMS

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

Accelerator between Microsoft Dynamics CRM 2011 and SAP ERP for BizTalk Server 2010 / 2013

ARIZONA CTE CAREER PREPARATION STANDARDS & MEASUREMENT CRITERIA SOFTWARE DEVELOPMENT,

Summer Internship 2013

Kentico CMS 5 Developer Training Syllabus

Data Quality Monitoring. workshop

Performance Analysis and Visualization of SystemC Models. Adam Donlin and Thomas Lenart Xilinx Research

EXT: SEO dynamic tag

Database Monitoring Requirements. Salvatore Di Guida (CERN) On behalf of the CMS DB group

Vantage CRM Archiving Setup

Where s the Interoperability for Asset Management?

XPoints: Extension Interfaces for Multilayered Applications

Using Files as Input/Output in Java 5.0 Applications

Experiences with Online Programming Examinations

Web development... the server side (of the force)

Fundamentals of Java Programming

Bosch Packaging Academy Essential Training

No no-argument constructor. No default constructor found

Dynamic Adaptability of Services in Enterprise JavaBeans Architecture

Visual Basic. murach's TRAINING & REFERENCE

Web application for detailed realtime database transaction monitoring

Cello How-To Guide. Scheduler

Data XML and XQuery A language that can combine and transform data

CS 2112 Spring Instructions. Assignment 3 Data Structures and Web Filtering. 0.1 Grading. 0.2 Partners. 0.3 Restrictions

Last not not Last Last Next! Next! Line Line Forms Forms Here Here Last In, First Out Last In, First Out not Last Next! Call stack: Worst line ever!

A Dynamic, Runtime-Extensible, Client-Managed Service Framework

Seminar Automotive Open Systems Architecture

Measurement of the Mass of the Top Quark in the l+ Jets Channel Using the Matrix Element Method

Research and Design of Universal and Open Software Development Platform for Digital Home

IBM Tivoli Workload Scheduler Integration Workbench V8.6.: How to customize your automation environment by creating a custom Job Type plug-in

Use of ROOT in Geant4

Model-driven Development for a Treasure Hunt Android application

TECHNICAL NOTE TNOI34

McAfee One Time Password

Oracle Service Bus. Situation. Oracle Service Bus Primer. Product History and Evolution. Positioning. Usage Scenario

Frameworks & Android. Programmeertechnieken, Tim Cocx

Enterprise Web Developer : Using the Emprise Javascript Charting Widgets.

TinyUrl (v1.2) 1. Description. 2. Configuration Commands

How To Create A C++ Web Service

GTask Developing asynchronous applications for multi-core efficiency

CORD Monitoring Service

CLOUD COMPUTING & WINDOWS AZURE

GJC Web Design Virtuemart 2.0 Radius Shipping Plugin

Transcription:

CMSSW Tutorial Part 1 Thiago Tomei

Goals of Part 1 Understand the Framework concept. Understand the (modular) architecture. Five types of modules. Understand how modules interact among themselves They interact through the Event. Understand the Event concept.

Understand the Framework concept As we have seen: Software bus model One main executable: cmsrun Plugin modules user code is one of them! Config file _cfg.py configures cmsrun execution at runtime.

Modular architecture A module is a piece of CMSSW code that can be plugged into the CMSSW executable cmsrun. When preparing an analysis job: The user defines a process. The user attaches modules to that process. Specifies a ParameterSet for each via the _cfg.py file. The process is run for every event, in the order given by the cms.path statement in the _cfg.py, by cmsrun. Five types of modules: Source (not quite a module, but...) EDProducer EDFilter EDAnalyzer OutputModule Advanced: a module is an instantiation of a C++ class, i.e. an object.

Modular architecture (2) Modules don't interact directly among themselves. The Event acts as broker among the different modules. Example: module A produces muons, module B needs muons (to make an invariant mass perhaps...) Module A produces muons and puts them into the Event. Module B asks the Event for the muons and uses them. As the user, you define a process in which you will run modules A and B. Then, you define the order in which they will run, and if there are dependencies among them. In the example above, you better make sure that module A runs before module B, because B depends on A. cmsrun automatically runs an ''event loop'', running your process (modules A and B) over all the events.

Module Syntax In the _cfg.py file: process.demo = cms.edanalyzer(''demoanalyzer'', mintracks = cms.untracked.uint32(4) ) module label (also called tag) module name module parameters When you label a module, you make no references to its name in the code anymore.

A quick example import FWCore.ParameterSet.Config as cms process = cms.process("nobel") Advanced: the configuration language is simply Python! process.themuons = cms.edproducer(''muonproducer'') process.zcandidates = cms.edproducer(''candviewcombiner'', ) decay = cms.string(''themuons@+ themuons@-''), cut = cms.string(''86.0 < mass < 96.0'') process.nobelprize = cms.edanalyzer(''higgsanalysis'', ) children = cms.inputtag(''zcandidates'') process.p = cms.path(process.themuons * process.zcandidates * process.nobelprize) Remember: - module label - module name - parameters

Event Data Model In software terms: an Event is a single entity in memory, a C++ type-safe container called The Event contains the minimum well-defined set of data for instance, a single MC hard interaction or a single triggered bunch crossing. Data within the Event are identified by four quantities: C++ class type of the data module label product instance label (usually empty string) process name edm::event reco::muoncollection_themuons NOBEL class type module label process name

Getting data from the Event To hold an access result, all Event data access methods use edm::handle<type> where type is the C++ type of the datum. To request data from an Event, use a form of the following: get which either returns one object or throws a C++ exception. getmany which returns a list of zero or more matches to the data request. After get or getmany, indicate how to identify the data, e.g getbylabel, and then use the name associated with the handle type.

Another quick example In a source code file: void DemoAnalyzer::analyze(edm::Event const& ievent, edm::eventsetup const& isetup) { edm::handle<reco::trackcollection> trackshandle; ievent.getbylabel(''goodtracks'', trackshandle); // Do some (hopefully) useful analysis here } Analysis modules are usually written as a C++ class inheriting from EDAnalyzer Such a class must have three methods: beginjob(const edm::eventsetup&); analyze(const edm::event&, const edm::eventsetup&); endjob();

Ready-to-go modules Many modules are already written. Example consider the beginning of the Z + 2 jets analysis: Reconstruct muons Reconstruct jets Quality and kinematics cuts in the muons Quality and kinematics cuts in the jets At least two muons At least two jets Get the two highest pt muons Invariant mass of the two muons in the Z window Get the two highest Et jets Fill some basic kinematics histogram in a per-event basis

Ready-to-go modules Many modules are already written. Example consider the beginning of the Z + 2 jets analysis: globalmuons (already in the standard RECO) siscone5calojets (already in the standard RECO) PtMinMuonSelector EtMinCaloJetSelector MuonCountFilter CaloJetCountFilter LargestPtCandViewSelector CandViewCombiner LargestEtCaloJetSelector CandViewHistoAnalyzer So you would just write a _cfg.py no C++ coding needed at first stage!