public void LocalBashCmdLineSendObjectsToSelector() { var rootFile = TestUtils.CreateFileOfInt(20); // Get a simple query that includes packing over a histogram. // The funny way we do the bin content is to make sure the histogram is accessed // in a query data dependent way - otherwise the system optimizes the histogram access // to the host! var q = new QueriableDummy <TestNtupe>(); var h = new ROOTNET.NTH1F("hi", "there", 1, 0.0, 10.0); h.Directory = null; h.Fill(5, 3.0); GC.WaitForPendingFinalizers(); var dude = q.Select(i => h.GetBinContent(i.run != 1 ? 1 : i.run)).Where(i => i > 2.5).Count(); var query = DummyQueryExectuor.LastQueryModel; // Ok, now we can actually see if we can make it "go". var exe = new TTreeQueryExecutor(new[] { rootFile.AsLocalBashUri() }, "dude", typeof(ntuple), typeof(TestNtupe)); exe.CompileDebug = true; int result = exe.ExecuteScalar <int>(query); Assert.AreEqual(20, result); }
/// <summary> /// Given a 2D plot, map to a 1D plot assuming radial distances. /// </summary> /// <param name="ctx"></param> /// <param name="plot"></param> /// <returns>1D plot of the 2D plot</returns> /// <remarks> /// - Radial conversion assumes that both coordinates are the same units. For example, if they are x and y distances. /// - Overflow & underflow bins are not handled. /// - Errors are not properly handled. /// </remarks> public static ROOTNET.Interface.NTH1 asRadial(IScopeContext ctx, ROOTNET.Interface.NTH2 plot) { // First, determine the distances var xmin = plot.Xaxis.GetBinLowEdge(1); var ymin = plot.Yaxis.GetBinLowEdge(1); var xmax = plot.Xaxis.GetBinUpEdge(plot.Xaxis.Nbins); var ymax = plot.Yaxis.GetBinUpEdge(plot.Yaxis.Nbins); var rmin = Math.Sqrt(xmin * xmin + ymin * ymin); var rmax = Math.Sqrt(xmax * xmax + ymax * ymax); var nbin = Math.Max(plot.Xaxis.Nbins, plot.Yaxis.Nbins); var result = new ROOTNET.NTH1F(plot.Name, plot.Title, nbin, rmin, rmax); // Loop over, adding everything in. for (int i_x = 1; i_x <= plot.Xaxis.Nbins; i_x++) { for (int i_y = 1; i_y <= plot.Yaxis.Nbins; i_y++) { var x = plot.Xaxis.GetBinCenter(i_x); var y = plot.Yaxis.GetBinCenter(i_y); var r = Math.Sqrt(x * x + y * y); result.Fill(r, plot.GetBinContent(i_x, i_y)); } } return(result); }
static ROOTNET.NTH1F drawHisto <TColor, TDepth>(Mat inImage, int row, int channel, string histoName = "default") where TColor : struct, IColor where TDepth : IComparable <TDepth>, new() { var testHisto = new ROOTNET.NTH1F(histoName, histoName, inImage.Width, 0.0, inImage.Width); Image <TColor, TDepth> tempImage = inImage.ToImage <TColor, TDepth>(); for (int pixel = 0; pixel < inImage.Width; pixel++) { testHisto.Fill(pixel, Convert.ToDouble(tempImage.Data[row, pixel, channel])); } return(testHisto); }