/// <summary>
        /// Build a nice plot of the training value
        /// </summary>
        /// <param name="source"></param>
        /// <returns></returns>
        internal static IFutureValue<ROOTNET.NTH1F> MakeNNPlot (this IQueryable<TrainingTree> source, Method<TrainingTree> m)
        {
            // Argument check
            if (!m.WeightFile.Exists)
            {
                throw new ArgumentException($"File {m.WeightFile.FullName} can't be located.");
            }

            // Generate a pretty detailed plot
            var mvaCalc = m.GetMVAValue();
            return source
                .FuturePlot("mva_weights", "MVA Output Weights", 10000, -1.0, 1.0, t => mvaCalc.Invoke(t), weight: t => t.Weight);
        }