Download presentation
Presentation is loading. Please wait.
Published byShon Park Modified over 9 years ago
1
Python -based Physics Analysis Environment for LHCb G. Barrand, M. Frank, P. Mato, E. de Oliveira, A.Tsaregorodtsev, I. Belyaev CHEP 2004, Interlaken, Switzerland
2
30 Sep'2k+4 Computing Python based physics analysis for LHCb 2 Goals User friendly environment for development of physics analysis code User friendly environment for development of physics analysis code input: event data files (DST); output: AOD, Ntuples, Histos, … input: event data files (DST); output: AOD, Ntuples, Histos, … “Easy-to-understand”, “readable” “Easy-to-understand”, “readable” Physics-driven semantics (using physics concepts) Physics-driven semantics (using physics concepts) 1-1 matching with physical description 1-1 matching with physical description all technical details hidden from the user all technical details hidden from the user Compact Compact ~1 page of code per “typical” analysis algorithm ~1 page of code per “typical” analysis algorithm Interactive Interactive (re)define cuts/algorithms on-flight (re)define cuts/algorithms on-flight visualization (event and statistics display) visualization (event and statistics display) Complete functionality Complete functionality to be used by “real” analysis to be used by “real” analysis Rapid Application Development (RAD) Rapid Application Development (RAD) prototyping, no compilation prototyping, no compilation
3
30 Sep'2k+4 Computing Python based physics analysis for LHCb 3 Python Why Python -based ? Python is a language with the special emphasize for fast prototyping and development Python is a language with the special emphasize for fast prototyping and development Scripting and interactivity combined in a natural way Scripting and interactivity combined in a natural way Easy integration with third party software (Python as the glue) Easy integration with third party software (Python as the glue) Availability of external packages Availability of external packages Visualization, statistical analysis Visualization, statistical analysis ROOT, HippoDraw, Panoramix, PyX, GNUplot ROOT, HippoDraw, Panoramix, PyX, GNUplot Event display Event display Panoramix (LHCb) Panoramix (LHCb) Bookkeeping data base Bookkeeping data base Interface to GRID Interface to GRID GANGA GANGA and many others and many others
4
30 Sep'2k+4 Computing Python based physics analysis for LHCb 4 LHCb Analysis Applications DaVinci C++ Analysis Application LoKi Physics Analysis ToolKit LHCb Event Model GaudiPython Bender LCG Dictionaries Bender Python Analysis Application Externals: Visualization, Event Display, etc PyLCGDict DaVinci Tools Gaudi Framework Services, Algorithms & Application Control
5
30 Sep'2k+4 Computing Python based physics analysis for LHCb 5 GaudiPython The generic package for Gaudi & Python bindings The generic package for Gaudi & Python bindings Access to major Gaudi Components Access to major Gaudi Components Services, Algorithms and Tools Services, Algorithms and Tools Application Configuration Application Configuration Algorithm schedule Algorithm schedule Configuration of all components Configuration of all components “Dynamic” reconfiguration is possible “Dynamic” reconfiguration is possible The technique Using the LCG Dictionary (only for the interfaces) and the PyLCGDict package from SEAL to produce the C++/Python bindings. (see Wim Lavrijsen’s talk) Using the LCG Dictionary (only for the interfaces) and the PyLCGDict package from SEAL to produce the C++/Python bindings. (see Wim Lavrijsen’s talk)
6
30 Sep'2k+4 Computing Python based physics analysis for LHCb 6 LoKi High Level C++ Physics Analysis ToolKit High Level C++ Physics Analysis ToolKit Set of high level analysis utilities built on top of DaVinci tools Set of high level analysis utilities built on top of DaVinci tools Physics oriented semantics Physics oriented semantics Inspired by KAL from genius H. Albrecht and GPATTERN by T. Glebe Inspired by KAL from genius H. Albrecht and GPATTERN by T. Glebe Compact code Compact code Concept of locality (entities defined at the place they are needed) Concept of locality (entities defined at the place they are needed) Technicalities are “hidden” from end-user Technicalities are “hidden” from end-user The kernel has low coupling to event model The kernel has low coupling to event model Templated/Inline/Efficient Templated/Inline/Efficient
7
30 Sep'2k+4 Computing Python based physics analysis for LHCb 7 LoKi LOKI_ALGORITHM( MyAlg ) { select( “K-”, “K-” == ID && PT > 1 * GeV ); select( “pi+”, “pi+”== ID && P > 3 * GeV ); Cut dmass = ABSDM(“D0”) < 30 * MeV ; for( Loop D0 = loop(“K- pi+”,”D0”) ; D0 ; ++D0 ) { if ( VCHI2(D0) > 4 && dmass( D0 ) ) { D0->save(“D0”) ; } } for ( Loop Dst = loop( “D0 pi+”); Dst ; ++Dst ) { double dm = M(Dst) – M1(Dst) ; plot ( dm, “DM for D*+”, 130, 180 ) ; } return StatusCode::SUCCESS ; }; Plenty of useful “functors” Plenty of useful “functors” P, PT, IP,VCHI2,Q,…. Selection/filtering of particles Selection/filtering of particles Multi-particle looping Multi-particle looping Kinematical/Topology fits Kinematical/Topology fits Intuitive interface to histograms and N- Tuples Intuitive interface to histograms and N- Tuples Book-and-fill on demand Easy matching for MC- truth information Easy matching for MC- truth information
8
30 Sep'2k+4 Computing Python based physics analysis for LHCb 8 Bender = LoKi + Python + Bender = LoKi + Python + … LCG dictionaries for C++/Python binding LCG dictionaries for C++/Python binding A bit of raw Boost.Python also A bit of raw Boost.Python also >95% of LoKi’s C++ functionality is available in Python >95% of LoKi’s C++ functionality is available in Python Non-trivial due to heavy templated nature of LoKi Non-trivial due to heavy templated nature of LoKi Situation improving with PyLCGDict evolution Situation improving with PyLCGDict evolution The mixture of C++ and Python is possible The mixture of C++ and Python is possible C++ algorithm with Python cuts (“ LoKiHybrid ”) C++ algorithm with Python cuts (“ LoKiHybrid ”) The bulk of actual computations in C++ The bulk of actual computations in C++ Minimal Python -related penalty Minimal Python -related penalty The conversion between existing Python Bender ’s and C++ LoKi ’ s algorithms is simple in both directions: The conversion between existing Python Bender ’s and C++ LoKi ’ s algorithms is simple in both directions: Semantics is very similar Semantics is very similar
9
30 Sep'2k+4 Computing Python based physics analysis for LHCb 9 CMT + GaudiPython Configuration: CMT + GaudiPython Job (self)-configuration/environment: cmt.py Job (self)-configuration/environment: cmt.py Application configuration: GaudiPython Application configuration: GaudiPython import cmt cmt.project( ‘Bender’, ‘v4r0’ ) cmt.use ( package = ‘Ex/BenderExample’) cmt.setup() g = gaudimodule.AppMgr() g.TopAlg += [ “MyAlgorithm” ] g.ExtSvc += [ “MyService” ] g.OutputLevel = Info g.run( 100 )
10
30 Sep'2k+4 Computing Python based physics analysis for LHCb 10 Physics analysis Functions and cuts Functions and cuts Selection of particles Selection of particles Looping over combinations Looping over combinations Saving/retrieve of interesting combinations, Saving/retrieve of interesting combinations, Vertex/Mass-Vertex/Direction/Lifetime fits Vertex/Mass-Vertex/Direction/Lifetime fits cut = (ID ==‘D+’) & ( P > 5*GeV ) & ( PT > 2*GeV ) k = self.select( tag = ‘K+’, cuts = ( ‘K+’ == ID ) & ( PT > 0.5 * GeV ) for phi in self.loop(formula=‘K+ K-’, pid=‘phi(1020)’) : m = M( phi ) / GeV p = P( phi ) / GeV
11
30 Sep'2k+4 Computing Python based physics analysis for LHCb 11 Histos & N-Tuples Histograms Histograms N-Tuples N-Tuples h1 = self.plot ( title = “ phi mass ”, value = M( phi ), low=1000, high=1050 ) tup = self.nTuple( title = “Phi NTuple” ) tup.column ( name= “ID”, value= ID(phi) ) tup.column ( name= “p”, value= P (phi) ) tup.column ( name= “pt”, value= PT(phi) ) tup.write()
12
30 Sep'2k+4 Computing Python based physics analysis for LHCb 12 Histo Histo visualization The histogram visualization can be done through The histogram visualization can be done through ROOT ROOT native ROOT through Python prompt ( pyROOT ) native ROOT through Python prompt ( pyROOT ) rootPlotter from LCG-PI through AIDA pointer rootPlotter from LCG-PI through AIDA pointer Panoramix Panoramix Directly through AIDA pointer Directly through AIDA pointer HippoDraw HippoDraw hippoPlotter from LCG-PI through AIDA pointer hippoPlotter from LCG-PI through AIDA pointer Few lines “common interface” for trivial plotting exist Few lines “common interface” for trivial plotting exist The interactive analysis of Gaudi N-Tuples is possible in Bender with ROOT persistency and ROOT module directly The interactive analysis of Gaudi N-Tuples is possible in Bender with ROOT persistency and ROOT module directly Prototype for HippoDraw Prototype for HippoDraw
13
30 Sep'2k+4 Computing Python based physics analysis for LHCb 13 Everything can be combined Bender/Python prompt Panoramix PI/ROOT ROOT HippoDraw
14
30 Sep'2k+4 Computing Python based physics analysis for LHCb 14 Panoramix Event Display: Panoramix The integrated analysis and visualization of statistical and event data is possible The integrated analysis and visualization of statistical and event data is possible
15
30 Sep'2k+4 Computing Python based physics analysis for LHCb 15 Complete Example from bendermodule import * class Dstar(Algo): def analyse( self ) : self.select ( tag=‘K-’, cuts=(‘K-’ ==ID)&(PT>1*GeV) ) self.select ( tag=‘pi+’,cuts=(‘pi+’==ID)&(P >3*GeV) ) dmass = ABSDM(“D0”) < 30 * MeV for D0 in self.loop ( formula=‘K- pi+’, pid=‘D0’ ) : If ( VCHI2(D0) < 4 ) & dmass( D0 ) : D0.save(‘D0’) tup = self.nTuple ( title = “D*+ N-Tuple ” ) for Dst in self.loop ( formula=‘D0 pi+’, pid=‘D*(2010)+’ ) : dm = M(Dst)-M1(Dst) h1 = self.plot( title = “Delta mass for D*+”, value = dm, low=130, high=170 ) tup.column( name = ‘M’, value = M(Dst) / GeV ) tup.column( name = ‘DM’, value = dm / GeV ) tup.column( name = ‘p’, value = P (Dst) / GeV ) tup.column( name = ‘pt’, value = PT(Dst) / GeV ) tup.write () return SUCCESS
16
30 Sep'2k+4 Computing Python based physics analysis for LHCb 16 Conclusions GaudiPython, Loki, Bender are regularly released as part of the official LHCb software GaudiPython, Loki, Bender are regularly released as part of the official LHCb software In both LHCb supported platforms (Linux, Windows) In both LHCb supported platforms (Linux, Windows) Sufficient functionality for Physics Analysis is available Sufficient functionality for Physics Analysis is available Real analysis can be done Real analysis can be done Performance is adequate Performance is adequate No noticeable difference between pure C++ (DaVinci) analysis and Python (Bender) analysis No noticeable difference between pure C++ (DaVinci) analysis and Python (Bender) analysis About compact and user-friendliness… About compact and user-friendliness… Users will have to judge after some time of usage Users will have to judge after some time of usage Essential for successful and good physics analysis Essential for successful and good physics analysis
17
30 Sep'2k+4 Computing Python based physics analysis for LHCb 17 LoKi Bender Loki is a god of wit and mischief in Norse mythology Loki is a god of wit and mischief in Norse mythology Lo ops & Ki nematics Lo ops & Ki nematics Ostap Suleiman Berta Maria Bender -bei The cult-hero of books by I.Il’f & E.Petrov: “The 12 chairs”, “The golden calf” The cult-hero of books by I.Il’f & E.Petrov: “The 12 chairs”, “The golden calf” The title: “ The great schemer” The title: “ The great schemer” Attractive & brilliant cheater Attractive & brilliant cheater
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.