sthists.addValues ( (x, ) ) # only fill with first 1000 # Print some statistics from static histogram # Could do same for dynamic datarep = sthist.getDataRep() print "Histogram :" print " Title : " + sthist.getTitle() print " Entries : %i" % sthist.numberOfEntries() print " Mean = %f" % datarep.getMean ( 'x' ) print " Rms = %f" % datarep.getRMS ( 'x' ) # Print the average X value on the display canvas.selectDisplay ( sthist) canvas.addTextRep ( sthist, 'averagex' ) canvas.selectDisplay ( dyhist) canvas.addTextRep ( dyhist, 'averagex' ) # Get the contents of the bins as a DataArray high = sthist.createDataArray() low = sthists.createDataArray () # Take difference with high statistics one scaled down, and a column # to the low one. low[ 'diff' ] = high[ 'Entries / bin' ] / 10 - low[ 'Entries / bin' ] # Create an XY plot to see the difference xyplot = Display ( "XY Plot", low, ( 'X', 'diff', 'nil', 'Error' ) ) canvas.addDisplay ( xyplot ) low.register ('difference ntuple' )
gauss.fit ( ) print "After fitting" parms = gauss.parameters ( ) print parms # Add another function. gauss1 = Function ( "Gaussian", datarep1 ) gauss1.addTo ( hist ) # Do another fit, should fit to linear sum gauss1.fit () # Add Chi-squared per d.f. display canvas.addTextRep ( hist, 'Chi-squared' ) # Create an NTuple from the histogram. # Calculate the residuals result = hist.createNTuple () ntc.registerNTuple ( result ) coords = result.getColumn ( 'Cost' ) values = result.getColumn ( 'Density' ) res = [] for i in range ( result.rows ) : x = coords[i] diff = values[i] - gauss1.valueAt ( x ) res.append ( diff )