Presentation is loading. Please wait.

Presentation is loading. Please wait.

25th May, 1999 HTL - Histogram Template Library Pavel Binko, LHCb / CERN 1 LHCb Computing Meeting HTL - Histogram Template Library Pavel Binko LHCb / CERN.

Similar presentations


Presentation on theme: "25th May, 1999 HTL - Histogram Template Library Pavel Binko, LHCb / CERN 1 LHCb Computing Meeting HTL - Histogram Template Library Pavel Binko LHCb / CERN."— Presentation transcript:

1 25th May, 1999 HTL - Histogram Template Library Pavel Binko, LHCb / CERN 1 LHCb Computing Meeting HTL - Histogram Template Library Pavel Binko LHCb / CERN

2 25th May, 1999 HTL - Histogram Template Library Pavel Binko, LHCb / CERN 2 LHCb Computing Meeting What is HTL ? C++ class library –Provides powerful histogramming functionality –It only deals with histograms - binned data (not with n-tuples - unbinned data) –Exploits the template facility of C++ –Designed to be compact, extensible, modular and performant –Uses “the same” basic signature as HBOOK subroutines Histogram name, number of bins, lower and upper bounds of the histogram axis are enough to create a 1D histogram Transient and Persistent Histograms are de-coupled –Uses Objectivity/DB for persistency –Light weight Persistent Object Manager available (pre-alpha version)

3 25th May, 1999 HTL - Histogram Template Library Pavel Binko, LHCb / CERN 3 LHCb Computing Meeting Histogram Classes User works with these predefined types –Histo1D - 1D histogram with Gravity_Bin_1D and fixed binning –Histo1DVar - 1D histogram with Gravity_Bin_1D and variable binning –ProfileHisto - 1D histogram with Profile_Bin and fixed binning –ProfileHistoVar - 1D histogram with Profile_Bin and variable binning –Histo2D - 2D histogram with Weighted_Bin and fixed binning –Histo2DF - 2D histogram with Float_Weighted_Bin and fixed binning –Histo2DVar - 2D histogram with Weighted_Bin and variable binning Persistent version of all of them available –PHisto1D etc.

4 25th May, 1999 HTL - Histogram Template Library Pavel Binko, LHCb / CERN 4 LHCb Computing Meeting Partitions and Bins Partitions describe –One dimension of the problem space –How it is divided into intervals Bins contain information about –The content, the error and possibly the center of the bin –Fix and variable binning available Weighted_Bin represents bins with weighted data points –By default the gravity centers are the middle or center of the bin Gravity_Bin_1D represents bins with weighted data points –They know how to determine the gravity center of the bins Profile_Bin represents bins that can average another quantity

5 25th May, 1999 HTL - Histogram Template Library Pavel Binko, LHCb / CERN 5 LHCb Computing Meeting I_Histo Interface –virtual const char* name( ) –Title attached to current histogram. –virtual I_Bin& i_bin( I_Bin_Location &a_location ) –virtual I_Bin& i_extra_bin( I_Extra_Bin_Location &a_location ) –In-range and extra bin associated with extra location a_location –virtual Size bin_count( ) –virtual Size extra_bin_count( ) –Number of in-range and extra bins –virtual Size dim( ) –Dimension of the histo, i.e., of the problem space –virtual I_Partition& i_partition( Index p = 0 ) –Partition interface of this histogram –virtual I_Bin& i_bin( Index i ) –Any bin (in-range or extra) with index "i" (note that this is a linear access)

6 25th May, 1999 HTL - Histogram Template Library Pavel Binko, LHCb / CERN 6 LHCb Computing Meeting I_Partition Interface –virtual double i_bin_width( Index i ) –Width of in-range bin "i". –virtual double i_lower_point( ) –Leftmost point of the partition. –virtual double i_lower_point( Index i ) –Leftmost point of bin indexed by "i". –virtual double i_upper_point( ) –Rightmost point of the partition. –virtual double i_upper_point( Index i ) –Rightmost point of bin indexed by "i".

7 25th May, 1999 HTL - Histogram Template Library Pavel Binko, LHCb / CERN 7 LHCb Computing Meeting I_Bin Interface –virtual double value( Index i = 0) and virtual double error( Index i = 0) –Value and error associated with this bin –virtual Size count( ) –Count associated with this bin = Number of entries –virtual void set_value( double other, Index i = 0 ) –Set the value associated with this bin to "other" –virtual void set_error( double other, Index i = 0 ) –Change/set the error of the bin to "other" –virtual void set_count( Size other ) –Change/set the count of the bin to "other" –virtual double center( Index i = 0) –Absolute or relative center of this bin on axis "i" –virtual int offset( Index i = 0) –Relative or absolute position for the center of the bin

8 25th May, 1999 HTL - Histogram Template Library Pavel Binko, LHCb / CERN 8 LHCb Computing Meeting Create and fill a histogram #include "HTL/Histograms.h" // Transient histograms Histo1D *histo = new Histo1D( "Transient Histo_1D", 20, 0.0, 20.0 ); // Let's fill the histogram with 50000 points long i; double x, w; for( i=0; i<50000; i++ ) { x = (i % 22) - 1; w = (x-9.5)*(x-9.5)/100; histo->fill(x,w); } delete histo;

9 25th May, 1999 HTL - Histogram Template Library Pavel Binko, LHCb / CERN 9 LHCb Computing Meeting Helper Classes I_Histo, I_Partition and I_Bin interfaces not sufficient –Helper classes introduced do add missing functionality H_2D_Helper ( make slices, 2D projections ) H_Bin_Helper ( mins, maxs, in_range_error( ), bin_center() ) H_HistoTable1D and 2D ( write( ) - ASCII table output ) H_Printout ( print( ) - line printer output ) H_Statistics ( mean( ), rms( ), entries counts ) –Shortcuts for mean( ) and rms( ) provided Syntax: histo->mean( )

10 25th May, 1999 HTL - Histogram Template Library Pavel Binko, LHCb / CERN 10 LHCb Computing Meeting Output of a histogram #include "HTL/Histograms.h" // Transient histograms #include "HTL/PHistograms.h" // Persistent histograms Histo1D *histoT = new Histo1D("Transient Histo_1D", 20, 0.0, 20.0 ); HepRef(PHisto2D) histoP = new PHisto2D("Persistent Histo_2D", 20, 0.0, 20.0, 20, 0.0, 20.0 ); // Line printer representation of a histogram HPrinter hp( cout ); // Into any output stream hp.print( *histoT ); // ASCII table with a histogram contents HistoTable1D ht1( "histo.txt” ); // Only into a text file ht1.write( *histoP ); delete histoT; delete histoP;

11 25th May, 1999 HTL - Histogram Template Library Pavel Binko, LHCb / CERN 11 LHCb Computing Meeting What is missing Fill( ) is not part of any interface –Implemented as non-virtual inline functions Output the histogram contents as an array (not ASCII) Open for any input...

12 25th May, 1999 HTL - Histogram Template Library Pavel Binko, LHCb / CERN 12 LHCb Computing Meeting Interface to PAW (1) Provide set of new (similar to old) PAW commands To access HTL histograms the same way as the HBOOK histograms are accessed now Two new menus created –OODB - interface to the Objectivity/DB OPEN - Open a data base and a container HTLIN - Put in memory the HTL histogram indexed by ID LIST - List the HTL histograms in the currently opened data base –T_HTL - to manipulate HTL transient histograms 1DHISTO - Create an HTL histogram PRINT - Print a HTL histogram LIST - List HTL histograms DELETE - Delete HTL histograms identified by ID PLOT - Plot a HTL histogram FRHBOOK - Convert the HBOOK histogram ID into an HTL histogram

13 25th May, 1999 HTL - Histogram Template Library Pavel Binko, LHCb / CERN 13 LHCb Computing Meeting Interface to PAW (2) Proof of concept done –Integration of C++ in a FORTRAN application possible –Integration of HTL in well known PAW framework possible Missing –1D histograms with non-equidistant binning –Profile histograms –2D histograms –Interface to KUIP vectors (PUT/CONTENT, GET/CONTENT etc...) –HTL histograms filling –Fitting –etc.

14 25th May, 1999 HTL - Histogram Template Library Pavel Binko, LHCb / CERN 14 LHCb Computing Meeting Integration in GAUDI Neither HTL code, nor HTL libraries compatible with our strategy –Changes done by Dino Ferrero Merlino and me –Library compiled in our environment with new created project file Integration started last week - not part of this GAUDI release Required changes –Slight modifications into HistogramSvc –Decisive changes in IHistogram interface Merging of HTL interfaces into single consistent IHistogram interface


Download ppt "25th May, 1999 HTL - Histogram Template Library Pavel Binko, LHCb / CERN 1 LHCb Computing Meeting HTL - Histogram Template Library Pavel Binko LHCb / CERN."

Similar presentations


Ads by Google