StdHepC++ L. Garren Presented by M. Fischler

Slides:



Advertisements
Similar presentations
Copyright © 2002 Pearson Education, Inc. Slide 1.
Advertisements

Chapter 19 Standard Template Library. Copyright © 2006 Pearson Addison-Wesley. All rights reserved Learning Objectives Iterators Constant and mutable.
Event Generators Norman Graf (SLAC) May 20, 2003 May 20, 2003.
MC-tester as tool for transition from F77 HEPEVT to C++ HepMC Nadia Davidson.
Recent and Proposed Changes to ZOOM Recent entries Intended future additions Possibilities –D0 and CDF users can affect which new “possible” additions.
Monte Carlo Particle ID Numbers Computer Readable Files Palm Particle Data Book Tom Trippe PDG Collaboration Meeting November 13, 2004.
Data Structures Using C++ 2E
Lecture 1: Introduction and Overview CSCI 700 – Algorithms 1.
CS261 – Recitation 5 Fall Outline Assignment 3: Memory and Timing Tests Binary Search Algorithm Binary Search Tree Add/Remove examples 1.
Event Generator Event Generators Information needed Event Generator Information Event Kinematic Information Generated Event Structure – generated particles.
Generator Interface Issues Lynn Garren Nov. 30, 2005.
Generators 1 Object Oriented Generators in Java Michael Chu & Nicholas Weaver.
MONTE CARLO EVENT GENERATION IN A MULTILANGUAGE, MULTIPLATFORM ENVIRONMENT Norman Graf Tony Johnson Stanford Linear Accelerator Center Abstract: We discuss.
Monte Carlo Particle ID Numbers Computer Readable Files PDA Particle Data Book Applications Tom Trippe PDG Collaboration Meeting September 22, 2006.
Conservation Laws Monte Carlo Particle ID Numbers Computer Readable Files Palm Particle Data Book Tom Trippe PDG Advisory Committee Meeting November 14,
Software Modelling Class Diagram. Class Diagrams The main building block in object oriented modeling They are used both for general conceptual modeling.
Status of Sirene Maarten de Jong. What?  Sirene is a program that simulates the detector response to muons and showers  It is based on the formalism.
IS 350 Course Introduction. Slide 2 Objectives Identify the steps performed in the software development life cycle Describe selected tools used to design.
Monte Carlo navigation Alan Barr University of Cambridge.
Final Exam Review CS 3358.
CS212: Object Oriented Analysis and Design
GEANT4 for Future Linear Colliders
The Generator Phase in Gauss
DDC 2423 DATA STRUCTURE Main text:
Programming with ANSI C ++
Lecture 1 Introduction Richard Gesick.
Course Outcomes of Object Oriented Modeling Design (17630,C604)
Multiway Search Trees Data may not fit into main memory
A Simple Syntax-Directed Translator
Automated Tree-Level Feynman Diagram and Event Generation
Chapter 19 Java Data Structures
SOFTWARE DESIGN AND ARCHITECTURE
Particle Properties: A Proposal from Herwig
EvtGen Miniworkshop, Patrick Robbe LAL Orsay, 21 Jan 2005
Patrick Robbe, LAL Orsay, 13 May 2004
CS3340 – OOP and C++ L. Grewe.
CS101 Introduction to Computing Lecture 19 Programming Languages
Map interface Empty() - return true if the map is empty; else return false Size() - return the number of elements in the map Find(key) - if there is an.
Prof. Michael Neary Lecture 7: The STL Prof. Michael Neary
More Graph Algorithms.
Discussion section #2 HW1 questions?
Primary Particle Generation
Use of Mathematics using Technology (Maltlab)
Chapter 6 Intermediate-Code Generation
Linear Collider Simulation Tools
G.A.P.Cirrone, S.E.Mazzaglia - INFN/LNS, Italy
Graphs Chapter 11 Objectives Upon completion you will be able to:
Ch. 8 Priority Queues And Heaps
Primary Particle Generation
Programming 1 (CS112) Dr. Mohamed Mostafa Zayed 1.
A Robust Data Structure
Chapter 10: File-System Interface
Control Flow Analysis (Chapter 7)
Database Design Hacettepe University
A Introduction to Computing II Lecture 13: Trees
Chapter 4 Unordered List.
Simulation and Physics
Intermediate Code Generation
EE 312 Final Exam Review.
STL List.
Use of GEANT4 in CMS The OSCAR Project
Linear Collider Simulation Tools
Review: What is an activation record?
Intermediate Code Generating machine-independent intermediate form.
8.3 Vectors Copyright © 2008 Pearson Addison-Wesley. All rights reserved. 1.
Heaps Chapter 6 Section 6.9.
DAGs Longin Jan Latecki
STL List.
Lecture 3 – Data collection List ADT
Implementation Plan system integration required for each iteration
Presentation transcript:

StdHepC++ L. Garren Presented by M. Fischler Fermi National Accelerator Laboratory USA http://www-pat.fnal.gov/stdhep/c++

What is StdHep? From event generators StdHep To simulation packages Lund, Pythia, Isajet, Herwig, … Produce events in some form StdHep To simulation packages Consume events in some form Geant3, MCFast, … Packages can conform to StdHep formats directly, but StdHep also has interfaces to package formats

What Does StdHep Do? Standardized Fortran Monte Carlo output HEPEVT common block PDG particle numbering scheme C++ requires a similar standard Analysis moving to C++ C++ Monte Carlo generators Events and particles are natural C++ objects StdHepC++ Initial interface much like HEPEVT common block Translation routines Major rewrite under way

5 Key Classes in StdHepC++ All classes are in StdHep namespace StdHep::ParticleData StdHep::Particle StdHep::Collision StdHep::Event StdHep::Run

Run is logically a sequence of Event is a set of Collision has a specially structured container of Particle has methods to refer to common ParticleData may come from standard reference or be application specific

StdHep::Particle Volatile particle information Particle ID status code color generated mass helicity momentum (CLHEP LorentzVector) creation vertex (CLHEP LorentzVector) decay vertex (CLHEP LorentzVector)

(volatile Particle information continued) mother secondmother index to the first daughter index to the last daughter Method to access appropriate StdHep::ParticleData Mother and daughter entries deliberately designed to be compatible with HEPEVT common block Ideally, information about the particle tree should (will) be decoupled from the Particle class

StdHep::Collision A Collision is a single beam interaction collision number input I/O stream for bookkeeping purposes number of Particles in the collision vector of pointers to Particles method to get Particle Conceptually, Collision is a special sort of container of Particles

StdHep::Event Each beam crossing may have several interactions. Therefore an Event is a collection of Collisions. event number number of Collisions vector of pointers to Collisions method to get Collision method to get Particle Conceptually, Event is special sort of container of Collisions

StdHep::Run Collects event-independent information Logically refers to a sequence of Events number of Events to generate number of Events generated number of Events written to I/O nominal center-of-mass energy cross section random number seeds I/O methods

Taking Advantage of C++ and O-O The classes described (particularly Particle) have some data which ought to be decoupled StdHep::Particle mother secondmother index to the first daughter index to the last daughter These implement a type of aggregation, with special relationship properties The C++ std library defines semantics for containers - stick with those semantics!

A Collision is a DAG <Particle> Directed Acyclic Graph of Particles templated class, works as a std::container but augmented with parent/child relations a parent may have any number of children a child may have more than one parent each parent or child (Particle) is a node on the graph Acyclic: there is at most one relation between two nodes there cannot be a closed directed cycle

The DAG class Looks and feels like other container classes iterators; same sorts of loop constructs; … Also embodies parent/child relationships Removes parent/child information from Particle Provides natural methods for traversing the particle tree in various ways Including the concept of two isomorphic graphs of different types of objects Allows for disconnected nodes

How DAG Will be Used class Particle {…}; class Collision : public DAG <Particle> { /* plus any not-per-particle data and methods */ }; DAG has methods to insert/delete a Particle, assign parent/child, and provide iterators dereferencing a DAG::iterator gives you a Particle Nodelist<Particle> ordered list of some iterators associated with a DAG provides clean std syntax for loops over daughters, etc.

Some examples of DAG methods Constructors empty relations induce from another DAG fill from Nodelist in some other DAG itp = dag.insert(p); itp = dag.insertChild(p, itm); Nodelist<T>-returning methods: Nodelist<Particle> children (itp) Nodelist<Particle> parents (itp)

Conclusion There is a strong need for C++ standard Monte Carlo generator interface. StdHepC++ is a natural object-oriented implementation of such an interface. At present we have working examples which integrate StdHepC++ with the Fortran versions of Herwig, Pythia, Isajet. On the other side, StdHepC++ provides event blocks readable by MCFast and Geant3, and will have an interface to Geant4.