Use of ROOT in Geant4



Similar documents
CLAS12 Offline Software Tools. G.Gavalian (Jlab)

Supported platforms & compilers Required software Where to download the packages Geant4 toolkit installation (release 9.6)

KITES TECHNOLOGY COURSE MODULE (C, C++, DS)

Performance Analysis and Optimization Tool

Introduction to ROOT

Rethinking SIMD Vectorization for In-Memory Databases

CMS Dashboard of Grid Activity

Lab 2 : Basic File Server. Introduction

G563 Quantitative Paleontology. SQL databases. An introduction. Department of Geological Sciences Indiana University. (c) 2012, P.

Performance monitoring at CERN openlab. July 20 th 2012 Andrzej Nowak, CERN openlab

ARDA Experiment Dashboard

CERTIFIED MULESOFT DEVELOPER EXAM. Preparation Guide

ATLAS Test Beam Analysis in Stockholm: An Overview

Tutorial 2 Online and offline Ship Visualization tool Table of Contents

Integrity Checking and Monitoring of Files on the CASTOR Disk Servers

How to Design and Create Your Own Custom Ext Rep

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

Intro to GPU computing. Spring 2015 Mark Silberstein, , Technion 1

Performance Monitoring of the Software Frameworks for LHC Experiments

The LHCb Software and Computing NSS/IEEE workshop Ph. Charpentier, CERN

Other GEANT4 capabilities

Cisco Change Management: Best Practices White Paper

Introduction: ROOT/C++ Analyzer

Event display for the International Linear Collider Summer student report

DSS. Diskpool and cloud storage benchmarks used in IT-DSS. Data & Storage Services. Geoffray ADDE

BlackBerry Enterprise Service 10. Secure Work Space for ios and Android Version: Security Note

Bachelor of Games and Virtual Worlds (Programming) Subject and Course Summaries

Building Java Servlets with Oracle JDeveloper

Basic Unix/Linux 1. Software Testing Interview Prep

Data logger and analysis tools

Contents WEKA Microsoft SQL Database

Short notes on webpage programming languages

Introduction to ROOT and data analysis

Redis OLTP (Transactional) Load Testing

SMock A Test Platform for the Evaluation of Monitoring Tools

Debugging Multi-threaded Applications in Windows

How To Monitor Your Computer With Nagiostee.Org (Nagios)

GLAST Geant4 Simulation

Tutorial 2: Reading and Manipulating Files Jason Pienaar and Tom Miller

Firewalls. October 23, 2015

Prof. Pietro Ducange Students Tutor and Practical Classes Course of Business Intelligence

Scalable Data Analysis in R. Lee E. Edlefsen Chief Scientist UserR! 2011

REAL TIME OPERATING SYSTEM PROGRAMMING-II: II: Windows CE, OSEK and Real time Linux. Lesson-12: Real Time Linux

SecureDoc Disk Encryption Cryptographic Engine

NVPRO-PIPELINE A RESEARCH RENDERING PIPELINE MARKUS TAVENRATH MATAVENRATH@NVIDIA.COM SENIOR DEVELOPER TECHNOLOGY ENGINEER, NVIDIA

Performance Evaluation and Optimization of A Custom Native Linux Threads Library

Arrays in database systems, the next frontier?

CSCI110 Exercise 4: Database - MySQL

SQL Anywhere 12 New Features Summary

Security Guide. BlackBerry Enterprise Service 12. for ios, Android, and Windows Phone. Version 12.0

ibolt V3.2 Release Notes

The System Monitor Handbook. Chris Schlaeger John Tapsell Chris Schlaeger Tobias Koenig

Setting up the Oracle Warehouse Builder Project. Topics. Overview. Purpose

Data mining as a tool of revealing the hidden connection of the plant

MAQAO Performance Analysis and Optimization Tool

University of Dayton Department of Computer Science Undergraduate Programs Assessment Plan DRAFT September 14, 2011

SAP HANA - Main Memory Technology: A Challenge for Development of Business Applications. Jürgen Primsch, SAP AG July 2011

ArcGIS for Server: Administrative Scripting and Automation

Performance Testing Process A Whitepaper

A Comparison Of Shared Memory Parallel Programming Models. Jace A Mogill David Haglin

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

IBM Cloud Manager with OpenStack

Arena Tutorial 1. Installation STUDENT 2. Overall Features of Arena

File Management. Chapter 12

Physical Data Organization

Virtuoso Virtual Database. Executive Summary. Virtuoso Virtual Database (VDB) Virtuoso VDB in focus

Microsoft Windows PowerShell v2 For Administrators

[Refer Slide Time: 05:10]

Brent A. Perdue. July 15, 2009

Equinox Framework: A Happier OSGi R6 Implementation

Course Development of Programming for General-Purpose Multicore Processors

Sybase Adaptive Server Enterprise

The Operating System Lock Down Solution for Linux

How To Develop Software

Talend for Data Integration guide

"FRAMEWORKING": A COLLABORATIVE APPROACH TO CONTROL SYSTEMS DEVELOPMENT

Storage Classes CS 110B - Rule Storage Classes Page 18-1 \handouts\storclas

VEEAM ONE 8 RELEASE NOTES

Table of Contents. The RCS MINI HOWTO

SA-9600 Surface Area Software Manual

CounterPoint SQL and Magento ecommerce Interface

Programming Exercise 3: Multi-class Classification and Neural Networks

1 Topic. 2 Scilab. 2.1 What is Scilab?

3 - Lift with Monitors

Advanced Encryption Standard (AES) User's Guide

SAP BusinessObjects Business Intelligence (BI) platform Document Version: 4.1, Support Package Report Conversion Tool Guide

Transcription:

Use of ROOT in Geant4 A.Dotti, SLAC I. Hrivnacova, IPN Orsay W. Pokorski, CERN ROOT Users Workshop, 11-14 March 2013, Saas-Fee

Outline Analysis tools in Geant4 Use of Root in Geant4 testing Experience with Root in multi-threading programs ROOT Users Workshop, 11-14 March 2013, Saas-Fee 2

Analysis Tools in Geant4 AIDA based tools New Geant4 analysis tools ROOT ROOT Users Workshop, 11-14 March 2013, Saas-Fee 3

AIDA Based Tools Historically first analysis tools in Geant4 examples Based on AIDA = Abstract Interfaces for Data Analysis Since Geant4 3.0 release (December 2000) First provided within the Geant4 example extended/analysis/anaex01 (jas, Lab), then available as external tools The AIDA compliant tools (linked in the Geant4 Guide for Application Developers): JAS, iaida, Open Scientist Lab, raida Not all kept maintained, not all implement the AIDA interfaces completely Not always easy to be installed & used See Geant4 user forum, Analysis category Still supported with Geant4 9.6 (November 2012) ROOT Users Workshop, 11-14 March 2013, Saas-Fee 4

New Analysis Tools New analysis category in Geant4 since Geant4 9.5 (December 2011) Based on g4tools from inlib/exlib developed by G. Barrand (LAL): http://inexlib.lal.in2p3.fr/ Pure header code - all code is inlined Can be installed on ios, Android, UNIXes, Windows Provides code to write histograms and flat ntuples in several formats: ROOT, XML AIDA format, CSV for ntuples. HBOOK Complete migration to g4tools in all Geant4 examples in the development plan for 2013 ROOT Users Workshop, 11-14 March 2013, Saas-Fee 5

Analysis Category Provides light analysis tools Available directly with Geant4 installation No need to link a Geant4 application with an external analysis package /geant4/source/analysis include Manager classes headers tools tools classes - headers only src Manager classes implementation test tools tests without use of managers /geant4/examples/extended/common/analysis include src ExG4HBookAnalysisManager ExG4HBookAnalysisManager class header class implementation ROOT Users Workshop, 11-14 March 2013, Saas-Fee 6

Analysis Managers Uniform interface to g4tools Hide the differences according to a selected technology (Root, XML, HBOOK) from the user Higher level management of g4tools objects (file, histograms, ntuples) Memory management Access to histograms, ntuple columns via indexes Integration in the Geant4 framework Interactive commands, units, (in)activation of selected histograms G4VAnalysis Manager G4CsvAnalysis Manager G4RootAnalysis Manager G4XmlAnalysis Manager EG4HbookAnalysis Manager Common base class: Interfaces functions non dependent on technology (void return type) Manager classes: Implement: - base class interfaces - specific access functions (with specific return type) - Instance() - singleton access Provided in examples, Requires linking with CERNLIB ROOT Users Workshop, 11-14 March 2013, Saas-Fee 7

B4RunAction.cc #include "B4Analysis.hh" void B4RunAction::BeginOfRunAction(const G4Run* run) { // Get analysis manager G4AnalysisManager* man = G4AnalysisManager::Instance(); // Open an output file man->openfile("exampleb4"); // Create histogram(s) man->createh1("0","edep in absorber", 100, 0., 800*MeV); man->createh1("1","edep in gap", 100, 0., 100*MeV); } void B4RunAction::EndOfRunAction(const G4Run* arun) { G4AnalysisManager* man = G4AnalysisManager::Instance(); man->write(); man->closefile(); } Example B4Analysis.hh #ifndef B4Analysis_h #define B4Analysis_h 1 #include "g4root.hh" //#include "g4xml.hh" //#include "g4hbook.hh" #endif Selection of the output format at a single place B4EventAction.cc #include "B4Analysis.hh" void N4EventAction::EndOfEventAction(const G4Run* arun) { G4AnalysisManager* man = G4AnalysisManager::Instance(); man->fillh1(0, fenergyabs); automatically man->fillh1(1, fenergygap); ROOT Users Workshop, 11-14 March 2013, Saas-Fee 8 } Histogram IDs are attributed

Example (2) A set of Geant4 commands which can be used to create histograms or set their properties dynamically Most of commands were defined according to manager classes defined specifically in each example The examples specific manager classes could be then removed or reduced significantly gammaspectrum.mac in TestEm5 /analysis/setfilename gammaspectrum /analysis/h1/set 3 200 0.01 10 MeV #gamma: energy at vertex /analysis/h1/set 5 200 0.01 10 MeV log10 #gamma: energy at vertex (log10) /analysis/h1/set 20 200 0 6 MeV #gamma: energy at exit /analysis/h1/set 40 200 0 6 MeV #gamma: energy at back ROOT Users Workshop, 11-14 March 2013, Saas-Fee 9

Examples With ROOT The Geant4 applications with use of ROOT classes are demonstrated in extended examples: analysis/anaex02 demonstration of use of Root histograms and ntuples AnaEx01 same with g4tools; AnaEx03 same with AIDA http://geant4.web.cern.ch/geant4/userdocumentation/doxygen/examples_do c/html/examples_analysis.html (link) persistency/p01, P02 Root I/O examples for storing and retrieving calorimeter hits (P01) and geometry objects (P02) Storing objects in a file using the 'reflection' technique for persistency provided by the Reflex tool The generation of the Reflex dictionary fails for Geant4 geometry classes using c-array with dynamic size declared via a variable of size_t type (as Reflex requires int) and therefore saving the Geant4 geometry with ROOT I/O is currently not possible Reviewing these examples with changes for Geant4 MT ROOT Users Workshop, 11-14 March 2013, Saas-Fee 10

Use of Root in Geant4 testing ROOT Users Workshop, 11-14 March 2013, Saas-Fee 11

Simplified Calorimeter Application SimplifiedCalorimeter application: Simplified versions of HEP calorimeters implemented with Geant4 All LHC calorimeter materials and technologies The most important variables for calorimetric measurements (response, resolution and shower shapes) are reconstructed and recorded for analysis. This application is used to test and verify physics improvements and new developments. Geant4 testing: A limited sample of about 10 millions events every month with each internal Geant4 development tag; and a sample at least 10 times larger for the June (beta) and the November (production) releases Scattered in about 2k - 10k jobs each producing 2 ROOT files ROOT Users Workshop, 11-14 March 2013, Saas-Fee 12

Use of ROOT in Testing Suite 1) Application level: the application produces histograms and trees that are saved in ROOT files 2) Python (pyroot) program: performs merging and analysis of the produced ROOT files and saves the result in a MySQL DB 3) Web application (DRUPAL module + 2nd pyroot program) to produce plots comparing, for a given quantity, different versions of Geant4 ROOT Users Workshop, 11-14 March 2013, Saas-Fee 13

Use of ROOT in Testing Suite (2) Strength points: We are pretty satisfied with it and we never had big issues. Since our GRID system is python based, we appreciate the possibility to integrate ROOT via pyroot (any strengthen of python and ROOT integration is welcome). Weak points: For the web-application part since we want to integrate with a DRUPALweb-site prototype we need to use php, the integration with the pyroot script that reads the DB and produces TGraphs is a bit cumbersome and complex. We may need to review this part and evaluate other histogramming facilities that are more web-friendly. Any idea? ROOT Users Workshop, 11-14 March 2013, Saas-Fee 14

Experience with ROOT in Multi-threading programs Simplified Calorimeter Application Geant4 VMC ROOT Users Workshop, 11-14 March 2013, Saas-Fee 15

Geant4 MT Geant4MT aims to reduce the memory footprint by sharing the largest data structures in Geant4 Key requirements for Geant4MT Bit-level compatibility of results with the sequential version - given the same starting state of a pseudo Random Number Generator (prng) for each event Simple porting of applications Efficient use of multi-core and many-core hardware though good scaling of performance. Geant4 MT prototype Public releases: 31 October 2011 based on 9.4.p01 and 13 August 2012 based on 9.5.p01 To be provided with standard Geant4 distribution since the next Geant4 release 10.0 (December 2013) ROOT Users Workshop, 11-14 March 2013, Saas-Fee 16

Simplified Calorimeter MT Application SimplifiedCalorimeter application uses ROOT for histograms, N-tuples and linear algebra calculations (matrix diagonalization) 1) Start of Run: Book of histograms and TTrees (simple variables, C-array and std::vector<double>) 2) Event Loop: TH::Fill(), TTree::Fill() ; creation, filling and manipulation of temporary histograms 3) End of Run: Run summary and analysis,tfile::write() ROOT Users Workshop, 11-14 March 2013, Saas-Fee 17

Simplified Calorimeter MT Application (2) Multi-threaded application Each G4 thread simulates a subset of the total number of events. Each thread also performs analysis: event reconstruction, filling of histograms and of two TTree Since the goal is to have a testing application to keep the code as simple as possible each thread is independent (no shared data): Each object has its own instances of each object (TH*, TTree, TFile) needed for the analysis Each thread will write out a separate file (unique name contains threadid) ROOT Users Workshop, 11-14 March 2013, Saas-Fee 18

Simplified Calorimeter MT Application (3) Problems with concurrent access to (hidden) shared resources make several steps non thread-safe: new TH*, new TTree(), TTree::SetBranchAddress(),TFile::Write ROOT's TH3 replaced with g4tools::histo object that is thread safe For the TTree methods a ROOT's forum entry discusses a possible work-around: to be tested TTree::Fill is thread-safe only if no std::vectors are used The work-around for the previous item may also solve this problem Added explicit lock via global mutex around critical sections of the code (same method used as in a ROOT's tutorials of TThread) A stand-alone (no Geant4) application that shows these problems is available ROOT Users Workshop, 11-14 March 2013, Saas-Fee 19

Geant4 VMC MT An independent experience with Geant4 MT prototype and ROOT IO also from tests with Geant4 VMC The ROOT IO an integral part of the VMC application Geant4 VMC MT - the same approach as in Geant4 MT Singleton objects -> singletons per thread Both TGeant4 and UserMCApplication are instantiated per each thread Added a new function in VMC (available since Root v5.34/00) TVirtualMC::InitMT(Int_t threadrank) ROOT Users Workshop, 11-14 March 2013, Saas-Fee 20

Geant4 VMC MT + ROOT IO The same approach as in SimplifiedCalorimeter test: Each thread opens and writes its own ROOT file No need for final merge: user analysis can chain files Geant4 MT + ROOT IO: Example ParN02Root in Geant4 MT branch: adds Root IO to ParN02 Added classes for ROOT IO management and locking: RootManagerMT, RootMutex Use of TThread, Locking Root IO needed till first TTree::Fill in each thread Geant4 VMC MT + ROOT IO TMCRootManager* classes in E02 (but not specific to E02) ROOT Users Workshop, 11-14 March 2013, Saas-Fee 21

Conclusions While the Geant4 framework itself is independent from any choice of analysis tool, the Geant4 user developing his own application can include ROOT analysis in several ways: Via g4tools, direct use of ROOT classes or via AIDA compliant tools All these options are demonstrated in the Geant4 examples. ROOT is successfully used in Geant4 testing As the test application analysis tools, via pyroot programs and finally also in a Web application The integration of ROOT in multi-threading applications is not straightforward More effort required to solve remaining problems ROOT Users Workshop, 11-14 March 2013, Saas-Fee 22