1 / 2

LCG P hysicist I nterfaces project

#240 Status and Plans of the LCG PI project. CppUnit. 3D Histogram. Reference Histogram. SPI. Test Case 1. SEAL. Equal?. mean. mean. 2D Histogram. A I D A. Applications. PI. Equal?. RMS. RMS. User code (e.g. GEANT4). Test Case 2. 1D Histogram. …. Technology. Middleware.

thimba
Download Presentation

LCG P hysicist I nterfaces project

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. #240 Status and Plans of the LCG PI project CppUnit 3D Histogram Reference Histogram SPI Test Case 1 SEAL Equal? mean mean 2D Histogram A I D A Applications PI Equal? RMS RMS User code (e.g. GEANT4) Test Case 2 1D Histogram … Technology Middleware CERN Fabric Grid deployment I/O Simu Implement Copy Equal? binRms binRms … POOL Experimental Frameworks PI_AIDA AIDA Analysis object manipulators Analysis Tools Test Case n Analysis tool 2 Analysis tool 1 Mean, RMS binMean, binError ... POOL Target Histogram Testing Frameworks Open Scientist Root (wrapper) SEAL Native JAS Test Cases Exposing/Using AIDA IFs p LCGPhysicistInterfaces project Vincenzo Innocente, Lorenzo Moneta, Andreas Pfeiffer CERN, EP/SFT H.C.Lee, W.L.Ueng Academia Sinica Computing Centre, Taiwan http://cern.ch/pi PI -- A project of the LCG Application Area AIDA – Using Standards for Data Analysis AIDA – Abstract Interfaces for Data Analysis (see #379) Open collaboration started in 1999 to discuss and agree on a common set of (Abstract) Interfaces Flexibility and extensibility User decides at runtime which implementation to use No change in code required ! Interoperability Modules interact through interfaces only, so mixing of different implementations is easy, even across languages using JAIDA/AIDAJNI. Other AIDA related presentations: #213, #311, #333, #349, #379, #399, #400, #427 • Mandate of the PI project • AIDA • Review, adapt, extend Interface to Data Analysis • Root implementation of AIDA • Provide an implementation of the Interfaces to Data Analysis, as • defined by AIDA, based on Root (using a wrapper to Root) • AIDA interface to SEAL and POOL services • Use SEAL and POOL to provide services such as plug-in manager, object whiteboard and persistency. • Blueprint compliant Analysis tool set • Statistics analysis tools based on AIDA interface • Mainly external contributions • Maintenance issue: Re-use – don’t re-invent ! • Integration of existing s/w • Integration of PI s/w into experiments’ frameworks The PI testing suite The PI AIDA Proxy layer • Histogram Sources: • Filling with fixed and random data • Copying from different implementation • Reading from XML/ROOT file Hurng-Chun Lee Academia Sinica Computing Centre, Taiwan • The PI AIDA-Proxy layer • All AIDA functionality is available • Excluding ITree • Easy to use • Hide factories from users • Value semantics • Implemented operator “+” and “=“ • Copy between implementations • Copying AIDA-native to AIDA-Root and vice versa • Choose implementation at runtime • User decides implementation when constructing the objet • Easier integration with other frameworks • Objects are managed by the user (not by AIDA Tree) • Purpose • Check the functionalities of AIDA Proxy • Check the consistencies between different histogram implementations • through the AIDA Proxy layer • Develop a unit test framework for AIDA Proxy on which test-cases can • be easily adapted • 1164 CppUnit assertions • only 104 (<10%) failures • Failures are due to implementation differences • Root takes the bin centers instead of the values to calculate the global • mean in H3D and Profiles • Root doesn’t store the binMean • Error treatment in Profile histograms is different

  2. #240 Status and Plans of the LCG PI project p LCGPhysicistInterfaces project Vincenzo Innocente, Lorenzo Moneta, Andreas Pfeiffer CERN, EP/SFT H.C.Lee, W.L.Ueng Academia Sinica Computing Centre, Taiwan http://cern.ch/pi Using Python as the integration bus simplifies integration Integrating with HippoDraw Using PyRoot from the SEAL project (see also: #175, #222) Integrating with Root from AidaProxy import * # create 1D and 2D histogram and plot them in a root canvas # usingfixed bin histograms as root doesn’t know about clouds h1 = Histogram1D("h1",“LogNormal Distribution",100,0,10) h2 = Histogram2D("h2",“Gaussian Distribution",100,0,100,100,0,100) # fill histograms with random gaussian points import random for i in range(0,5000) : h1.fill(random.lognormvariate(0,1)) h2.fill( random.gauss(45., 10.) , random.gauss(60., 20.) ) # create root canvas from rootPlotter import * rp=RootPlotter("AIDA to Root example",200,10,700,800) # set two canvas zones and options rp.canvas.Divide(2,1) rp.canvas.cd(1) rp.plot(h1) rp.canvas.cd(2) rp.plot(h2) from AidaProxy import * # create 1D and 2D cloud (unbinned histogram) and plot them using hippoDraw c1 = Cloud1D("MyCloud", "Log Normal Distribution") c2 = Cloud2D("MyCloud2", "Gaussian Distribution") # fill histograms with random gaussian points import random for i in range(0,5000) : c1.fill( random.lognormvariate(0,1) ) c2.fill( random.gauss(45., 10.) , random.gauss(60., 20.) ) # create HippoPLotter from hippoPlotter import * plHD=HippoPlotter() # plot cloud and create a binned histogram on a region plHD.plot(c1,'Histogram',['x','Entries/bin']) h1 = Histogram1D(“h1”,”Log Normal (Binned)”,100,0,5) c1=fillHistogram(h1) plHD.plot(h1) # now plot 2D clouds plHD.plot(c2,'Scatter Plot',['x','y']) plHD.plot(c2,'Color Plot',['x','y']) Cross-language interoperability Integrating with JAIDA from AidaProxy import * # create 1D and 2D cloud and plot them in hippoDraw h1 = Histogram1D("h1",“LogNormal Distribution",100,0,10) c2 = Cloud2D("MyCloud2", "Gaussian Distribution") # fill histograms with random gaussian points import random for i in range(0,5000) : h1.fill(random.lognormvariate(0,1)) xval = 1.*random.gauss(45., 10.) yval = 1.*random.gauss(60., 20.) c2.fill(xval,yval,1.) # create Plotter using JAIDA pl = pi_aida.Plotter() pl.createRegions(1,2) pl.region(0).plot(h1); pl.show() pl.region(1).plot(c2); pl.show()

More Related