Index: doc/theses/mike_brooks_MMath/Makefile
===================================================================
--- doc/theses/mike_brooks_MMath/Makefile	(revision 2581f1e470681f2114352c203ac50173672b3d5c)
+++ doc/theses/mike_brooks_MMath/Makefile	(revision 1abcec9b6adf2ed1d9f833ccc39e3e9f529c3d52)
@@ -100,4 +100,10 @@
 -include $(Plots)/*.d
 
+${Build}/plot-%.sum.dat ${Build}/plot-%.det.dat: ${Plots}/%.py ${Plots}/common.py ${Plots}/ListCommon.py ${Plots}/%.py.INPUTS | ${Build}
+	python3 $< ${Build}/plot-$*.sum.dat ${Build}/plot-$*.det.dat
+
+${Build}/plot-%.dat: ${Plots}/%.py ${Plots}/common.py ${Plots}/ListCommon.py ${Plots}/%.py.INPUTS | ${Build}
+	python3 $< > $@
+
 ${Build}/plot-%.dat: ${Plots}/%.py ${Plots}/common.py ${Plots}/ListCommon.py ${Plots}/%.py.INPUTS | ${Build}
 	python3 $< > $@
Index: doc/theses/mike_brooks_MMath/list.tex
===================================================================
--- doc/theses/mike_brooks_MMath/list.tex	(revision 2581f1e470681f2114352c203ac50173672b3d5c)
+++ doc/theses/mike_brooks_MMath/list.tex	(revision 1abcec9b6adf2ed1d9f833ccc39e3e9f529c3d52)
@@ -1034,6 +1034,5 @@
   \includegraphics{plot-list-1ord.pdf}
   \caption{Histogram of operation durations, decomposed by all first-order effects.
-  Each of the three breakdowns divides the entire population of test results into its mutually disjoint constituents.
-  \MLB{missing: overlay of means}}
+  Each of the three breakdowns divides the entire population of test results into its mutually disjoint constituents.}
   \label{fig:plot-list-1ord}
 \end{figure}
@@ -1046,5 +1045,5 @@
 
 A similar situation comes from \VRef[Figure]{fig:plot-list-1ord}'s second comparison, by operation type.
-Specific interactions like framework X doing better on stacks do occur; a selection of them is addressed in \MLB{TODO: cross reference}.
+Specific interactions do occur, like framework X doing better on stacks than on queues; a selection of these is addressed in \VRef[Figure]{fig:plot-list-2ord} and discussed shortly.
 But they are so irrelevant to the issue of picking a winning framework that it is sufficient here to number the operations opaquely.
 Whether a given list implementation is suitable for a language's general library succeeds or fails without knowledge of whether your use will have stack or queue movement.
@@ -1060,4 +1059,62 @@
 As does a small size on the Intel typically beat a medium size on the AMD by 66\%.
 Framework choice is simply not where you stand to win or lose the most.
+
+\begin{figure}
+	\centering
+	\includegraphics{plot-list-2ord.pdf}
+	\caption{Histogram of operation durations, illustrating interactions with framework.
+	Each distribution shows how its framework reacts to a single other factor being varied across one pair of options.
+	Every (binned and mean-contributing) individual data point represents a pair of test setups, one with the criterion set to the option labelled at the top; the other setup uses the bottom option.
+	This point's y-axis score is the ratio of these setups' durations.
+	The point lands in a bin closer to the label of the option that performs better.
+	}
+	\label{fig:plot-list-2ord}
+\end{figure}  
+
+\VRef[Figure]{fig:plot-list-1ord} stays razor-focused on only first-order effects in order to contextualize a winner/loser framework observation.
+But this perspective cannot address questions like, ``Where are \CFA's sore spots?''
+Moreover, the shallow threatment of operations by ordinals said nothing about how stack usage compares with queues'.
+
+\VRef[Figure]{fig:plot-list-2ord} provides such answers.
+Its size-zone criterion refines the obvious notion that a small size runs faster than a big size; this issue is by how much.
+Indeed, all means favour small and few tails favour medium.
+But the various frameworks do no respond to the different sizes and machines uniformly.
+On the AMD, \CFA and \uCpp have a modest size sensitivity, LQ-tailq's is moderate amd LQ-list seems unaffected.
+On the Intel, \CFA's increases to moderate, while \uCpp is now unaffected, and both LQs have a dramatic response.
+The Intel is more sensitive to size than the AMD.
+
+Turning next to movement and polarity, the responses appear more subdued.
+Note that LQ-list has no represntation in these comparisons because it only supports stacks that push and pop with the first element.
+\CFA is completely stable under movement and polarity changes.
+\uCpp and LQ show modest responses favouring queues and insertion at last.
+
+Finally, with accessor, a \CFA sore spot emerges.
+Note the pair of two-way comparisons pulled from the three experiment setups used.
+First, the all-head/insert-element opposition addresses which insertion style is better---by-head (top) and by-element (bottom).
+Then, the all-head/remove-element opposition addresses which removal style is better---by-head (top) and by-element (bottom).
+The LQs favour insertion by head and removal by element.
+\CFA and \uCpp favour both operations by head.
+The strongest effect is \CFA's aversion to removal by element---certainly an opportunity for improvement.
+
+\begin{comment}
+	These remarks are mostly about 3ord over 2ord.
+This analysis does not provide more detail about one framework beating another; it offers different benefits.
+These interactions further illustrate the lottery-ticket unpredictability that a linked-list user inevitably faces, by revealing stronger-still performance swings hidden from the first-order view.
+They illustrate the difficult signal-to-noise ratio that I had to overcome in preparing this data.
+They may serve as a reference guiding future \CFA linked-list work by informing on where to target improvements.
+Finally, the findings offer the conclusion that \CFA's list offers more consostent performance across usage scenarios, than the other lists.
+\end{comment}
+
+\begin{comment}
+Further to the interpretation guidance of \VRef[Figure]{fig:plot-list-2ord}'s caption, a comparison with the construction of \VRef[Figure]{fig:plot-list-1ord} may be helpful.
+In the first-order graph, the factors being compared had many options: four, twelve and four.
+# XXX Each option contributes its own, seemingly independent, mean and distribution.
+# XXX But, in fact, they are not totally independent.
+# WRONG: it's not just about binary, you also need a split on a conditioned factor
+	I'm trying to get to:
+Side by side in earlier style, but they're opposites, so they mirror each other, so you take option B, flip it over, and have option A---I'll just show A
+\end{comment}
+
+
 
 \MLB{ TODO: find a home for these original conclusions:
@@ -1124,5 +1181,7 @@
   \caption{Histogram of operation durations, decomposed by physical factors.
   Measurements are included from only the sizes in the ``small'' and ``medium'' stable zones.
-  This breakdown divides the entire population of test results into four mutually disjoint constituents.}
+  This breakdown divides the entire population of test results into four mutually disjoint constituents.
+  \MLB{I see that I broke it. But we might be getting rid of it.}
+  }
   \label{fig:plot-list-mchn-szz}
 \end{figure}
@@ -1131,5 +1190,5 @@
 Each of these four histograms shows variation in duration coming from the four specific sizes in a size zone, from combining results of all twelve operations and all four frameworks.
 Among the means of the four histograms, there is a standard deviation of 0.9 ns, which is 20\% of the global mean.
-This variability is due solely to physial factors.
+This variability is due solely to physical factors.
 
 From the perspective of assessing winning/losing frameworks, these physical effects are noise.
Index: doc/theses/mike_brooks_MMath/plots/ListCommon.py
===================================================================
--- doc/theses/mike_brooks_MMath/plots/ListCommon.py	(revision 2581f1e470681f2114352c203ac50173672b3d5c)
+++ doc/theses/mike_brooks_MMath/plots/ListCommon.py	(revision 1abcec9b6adf2ed1d9f833ccc39e3e9f529c3d52)
@@ -3,4 +3,5 @@
 import math
 import os
+import sys
 from subprocess import Popen, PIPE
 from scipy.stats import gmean
@@ -265,4 +266,20 @@
     return metadata
 
+def printSingleSummaryFrom( measure, dfgrouped, *,
+        file = sys.stdout,
+        index = True, 
+        end = '\n' ) :
+    aggregated = dfgrouped[measure].agg([
+        ("gmean", gmean), "std", "min", "max", "count",
+        lambda x: x.quantile(0.025),
+        lambda x: x.quantile(0.16),
+        lambda x: x.quantile(0.5),
+        lambda x: x.quantile(0.84),
+        lambda x: x.quantile(0.975)
+    ])
+    text = aggregated.to_csv(header=False, index=index, sep='\t')
+    print(text, file=file, end=end)
+
+
 swiftSweetspot = (lambda x: x > 16 and x < 150)
 # swiftSweetspot = (lambda x: x > 4 and x < 32)
@@ -303,16 +320,6 @@
 
         grouped = timings.groupby(['op_num', 'fx_num', 'fx'])
-
-        aggregated = grouped[measure].agg(
-            ["mean", "std", "min", "max", "count",
-            lambda x: x.quantile(0.025),
-            lambda x: x.quantile(0.16),
-            lambda x: x.quantile(0.5),
-            lambda x: x.quantile(0.84),
-            lambda x: x.quantile(0.975)]
-        )
-
-        text = aggregated.to_csv(header=False, index=True, sep='\t')
-        print(text, end='')
+        printSingleSummaryFrom( measure, grouped, end ='' )
+
 
 def printSingleDetail(
@@ -426,5 +433,7 @@
     lateFilter = {}, # exclude from output
     drillOn = ['fx'],
-    marginalizeOn = None ):  # None means match drill-on
+    marginalizeOn = None,  # None means match drill-on
+    sumFile = sys.stdout,
+    detFile = sys.stdout ):
 
     if marginalizeOn == None:
@@ -478,4 +487,14 @@
 #       print(mgroup, file=sys.stderr)
 
+        dkey_str = list( map( str, dkey ) )
+        header = str.join(', ', dkey_str)
+
+        dgroup_sole = dgroup.groupby((lambda _: 0))
+        print(f'"{header}"', file=sumFile)
+        printSingleSummaryFrom(
+            c_measure, dgroup_sole, file=sumFile, index=False )
+        print(file=sumFile)
+        print(file=sumFile)
+
         histo_raw = dgroup[ c_measureBkt ].value_counts()
         for b in buckets:
@@ -490,11 +509,9 @@
         histo.insert(y_lo_col_loc + 1, "y_hi", histo["y_lo"].apply(topValOfBucketBotVal))
 
-        dkey_str = list( map( str, dkey ) )
-        header = str.join(', ', dkey_str)
-        print(f'"{header}"')
+        print(f'"{header}"', file=detFile)
         text = histo.to_csv(header=False, index=False, sep='\t')
-        print(text)
-        print()
-        print()
+        print(text, file=detFile)
+        print(file=detFile)
+        print(file=detFile)
 
         # print(f'"{header}" FULL')
Index: doc/theses/mike_brooks_MMath/plots/list-1ord.d
===================================================================
--- doc/theses/mike_brooks_MMath/plots/list-1ord.d	(revision 2581f1e470681f2114352c203ac50173672b3d5c)
+++ doc/theses/mike_brooks_MMath/plots/list-1ord.d	(revision 1abcec9b6adf2ed1d9f833ccc39e3e9f529c3d52)
@@ -1,2 +1,2 @@
-plots/list-1ord.gp.INPUTS: build/plot-list-1ord.dat | build
+plots/list-1ord.gp.INPUTS: build/plot-list-1ord.sum.dat build/plot-list-1ord.det.dat | build
 plots/list-1ord.py.INPUTS: benchmarks/list/results-swift-general.csv
Index: doc/theses/mike_brooks_MMath/plots/list-1ord.gp
===================================================================
--- doc/theses/mike_brooks_MMath/plots/list-1ord.gp	(revision 2581f1e470681f2114352c203ac50173672b3d5c)
+++ doc/theses/mike_brooks_MMath/plots/list-1ord.gp	(revision 1abcec9b6adf2ed1d9f833ccc39e3e9f529c3d52)
@@ -15,21 +15,17 @@
 set grid
 set nokey
-set logscale y 2
-set yrange [0.4:3.0];
-set ytics ( \
-   "+40%%" 1.666666667, \
-   "+30%%" 1.428571429, \
-   "+20%%" 1.25, \
-   "+10%%" 1.111111111, \
-   "0" 1, \
-   "-20%%" 0.833333333, \
-   "-40%%" 0.714285714, \
-   "-60%%" 0.625, \
-   "-80%%" 0.555555556, \
-   "-100%%" 0.5, \
-   "-130%%" 0.434782609, \
-   "-160%%" 0.384615385, \
-   "-200%%" 0.333333333 \
-)
+
+set ylabel "Duration (relative)" offset -1.0,0
+set logscale y (2**0.2)
+set yrange [0.38:2.5];
+set format y "%.1f {/Symbol \264}"
+set ytics (0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.4)
+
+# Draw fake x axis at y=1.0; use vertical-only bounding 'H'
+unset border
+set arrow from graph 0, first 1 to graph 1, first 1 nohead lt -1 lw 2
+set arrow 100 from graph 0, graph 0 to graph 0, graph 1 nohead lw 1 front
+set arrow 101 from graph 1, graph 0 to graph 1, graph 1 nohead lw 1 front
+
 set xrange [-5.5:17.5];
 set xlabel "Machine, Size Zone;                           Operation;                                     Framework;       \nPrevalence                                   Prevalence                                     Prevalence"
@@ -57,9 +53,5 @@
    "LQ: tailq" 15, \
    "LQ: list"  16, \
-) rotate by -45
-
-set ylabel "Duration (relative)" offset -1.0,0
-set errorbars 2.0
-set pointintervalbox 0
+) scale 0 rotate by -45
 
 barHtScale_phys = 0.05
@@ -67,6 +59,9 @@
 barHtScale_fx = 0.05
 
+set errorbars 0 linewidth 4
+set pointintervalbox 0
 
-plot INDIR."/plot-list-1ord.dat" \
+
+plot INDIR."/plot-list-1ord.det.dat" \
        i  3 using (0):(0):(-1 - 1):(-1 - 1 +       barHtScale_phys * $3):1:2 title columnheader(1) with boxxyerror fc rgb "black"        fs transparent solid 0.15 noborder, \
     '' i  2 using (0):(0):(-1 - 2):(-1 - 2 +       barHtScale_phys * $3):1:2 title columnheader(1) with boxxyerror fc rgb "black" fs transparent solid 0.15 noborder, \
@@ -110,4 +105,27 @@
     '' i 19 using (1 + 13 +       barHtScale_fx * $3):2 notitle with steps lc rgb "dark-orange"  lw 0.3, \
     '' i 18 using (1 + 14 +       barHtScale_fx * $3):2 notitle with steps lc rgb "magenta"      lw 0.3, \
-    '' i 17 using (1 + 15 + 3.5 * barHtScale_fx * $3):2 notitle with steps lc rgb "purple"       lw 0.3
-
+    '' i 17 using (1 + 15 + 3.5 * barHtScale_fx * $3):2 notitle with steps lc rgb "purple"       lw 0.3, \
+\
+   INDIR."/plot-list-1ord.sum.dat" \
+       i  3 using (-1 - 1):1:(-1 - 1):(-1 - 1 + .8) notitle with xerrorbars lc rgb "black"       pt  5  ps 0.8, \
+    '' i  2 using (-1 - 2):1:(-1 - 2):(-1 - 2 + .8) notitle with xerrorbars lc rgb "black"       pt  5  ps 0.8, \
+    '' i  1 using (-1 - 3):1:(-1 - 3):(-1 - 3 + .8) notitle with xerrorbars lc rgb "black"       pt  5  ps 0.8, \
+    '' i  0 using (-1 - 4):1:(-1 - 4):(-1 - 4 + .8) notitle with xerrorbars lc rgb "black"       pt  5  ps 0.8, \
+\
+    '' i 10 using (     0):1:(     0):(     0 + .8) notitle with xerrorbars lc rgb "black"       pt  5  ps 0.8, \
+    '' i 11 using (     1):1:(     1):(     1 + .8) notitle with xerrorbars lc rgb "black"       pt  5  ps 0.8, \
+    '' i 12 using (     2):1:(     2):(     2 + .8) notitle with xerrorbars lc rgb "black"       pt  5  ps 0.8, \
+    '' i 13 using (     3):1:(     3):(     3 + .8) notitle with xerrorbars lc rgb "black"       pt  5  ps 0.8, \
+    '' i 14 using (     4):1:(     4):(     4 + .8) notitle with xerrorbars lc rgb "black"       pt  5  ps 0.8, \
+    '' i 15 using (     5):1:(     5):(     5 + .8) notitle with xerrorbars lc rgb "black"       pt  5  ps 0.8, \
+    '' i  4 using (     6):1:(     6):(     6 + .8) notitle with xerrorbars lc rgb "black"       pt  5  ps 0.8, \
+    '' i  5 using (     7):1:(     7):(     7 + .8) notitle with xerrorbars lc rgb "black"       pt  5  ps 0.8, \
+    '' i  6 using (     8):1:(     8):(     8 + .8) notitle with xerrorbars lc rgb "black"       pt  5  ps 0.8, \
+    '' i  7 using (     9):1:(     9):(     9 + .8) notitle with xerrorbars lc rgb "black"       pt  5  ps 0.8, \
+    '' i  8 using (    10):1:(    10):(    10 + .8) notitle with xerrorbars lc rgb "black"       pt  5  ps 0.8, \
+    '' i  9 using (    11):1:(    11):(    11 + .8) notitle with xerrorbars lc rgb "black"       pt  5  ps 0.8, \
+\
+    '' i 16 using (1 + 12):1:(1 + 12):(1 + 12 + .8) notitle with xerrorbars lc rgb "blue"        pt  7  ps 1.0, \
+    '' i 19 using (1 + 13):1:(1 + 13):(1 + 13 + .8) notitle with xerrorbars lc rgb "dark-orange" pt  9  ps 1.2, \
+    '' i 18 using (1 + 14):1:(1 + 14):(1 + 14 + .8) notitle with xerrorbars lc rgb "magenta"     pt  11 ps 1.2, \
+    '' i 17 using (1 + 15):1:(1 + 15):(1 + 15 + .8) notitle with xerrorbars lc rgb "dark-violet" pt  13 ps 1.4
Index: doc/theses/mike_brooks_MMath/plots/list-1ord.py
===================================================================
--- doc/theses/mike_brooks_MMath/plots/list-1ord.py	(revision 2581f1e470681f2114352c203ac50173672b3d5c)
+++ doc/theses/mike_brooks_MMath/plots/list-1ord.py	(revision 1abcec9b6adf2ed1d9f833ccc39e3e9f529c3d52)
@@ -6,4 +6,7 @@
 sys.path.insert(0, os.path.dirname(__file__))
 from ListCommon import *
+
+sumFile = open( sys.argv[1], 'w' )
+detFile = open( sys.argv[2], 'w' )
 
 physicals = ['machine', 'SizeZone']
@@ -21,5 +24,7 @@
     tgtPolarity = 'all',
     tgtAccessor = 'all',
-    drillOn=physicals )
+    drillOn=physicals,
+    sumFile = sumFile,
+    detFile = detFile )
 
 printHistos(
@@ -27,5 +32,7 @@
     tgtPolarity = 'all',
     tgtAccessor = 'all',
-    drillOn=ops )
+    drillOn=ops,
+    sumFile = sumFile,
+    detFile = detFile )
 
 printHistos(
@@ -33,3 +40,5 @@
     tgtPolarity = 'all',
     tgtAccessor = 'all',
-    drillOn=fx )
+    drillOn=fx,
+    sumFile = sumFile,
+    detFile = detFile )
Index: doc/theses/mike_brooks_MMath/plots/list-2ord.d
===================================================================
--- doc/theses/mike_brooks_MMath/plots/list-2ord.d	(revision 2581f1e470681f2114352c203ac50173672b3d5c)
+++ doc/theses/mike_brooks_MMath/plots/list-2ord.d	(revision 1abcec9b6adf2ed1d9f833ccc39e3e9f529c3d52)
@@ -1,2 +1,2 @@
-plots/list-2ord.gp.INPUTS: build/plot-list-2ord.dat | build
+plots/list-2ord.gp.INPUTS: build/plot-list-2ord.sum.dat build/plot-list-2ord.det.dat | build
 plots/list-2ord.py.INPUTS: benchmarks/list/results-swift-general.csv
Index: doc/theses/mike_brooks_MMath/plots/list-2ord.gp
===================================================================
--- doc/theses/mike_brooks_MMath/plots/list-2ord.gp	(revision 2581f1e470681f2114352c203ac50173672b3d5c)
+++ doc/theses/mike_brooks_MMath/plots/list-2ord.gp	(revision 1abcec9b6adf2ed1d9f833ccc39e3e9f529c3d52)
@@ -12,12 +12,11 @@
 set lmargin 10
 set bmargin 5
-set tmargin 2
+set tmargin 3.5
 
 set grid
-set nokey
 
 set logscale y (2**0.2)
-set yrange [0.57:1.65];
-set format y "%.2f {/Symbol \264}"
+set yrange [0.65:1.65];
+set format y "%.1f {/Symbol \264}"
 set ytics (0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6)
 set ylabel "Speedup,  bot. opt.  {/Symbol \256}  top opt." offset -0.5,0
@@ -30,5 +29,5 @@
 
 set xrange [-0.7:27.5];
-set xlabel "Criterion;  top / bot. Options;  Prevalence" offset 0,-1.5
+set xlabel "Criterion;  top-bottom Options;  Prevalence" offset 0,-1.5
 set format x ""
 set xtics ( \
@@ -42,8 +41,8 @@
 
 set label "small"                           at first  1.5, graph  1.05 center
-set label "(AMD)"                           at first  1.5, graph  0.06 center font "Times-Bold,18"
+set label "(AMD)"                           at first  1.5, graph  0.06 center font "Times-Bold,18" front
 set label "medium"                          at first  1.5, graph -0.05 center
 set label "small"                           at first  6.5, graph  1.05 center
-set label "(Intel)"                         at first  6.5, graph  0.06 center font "Times-Bold,18"
+set label "(Intel)"                         at first  6.5, graph  0.06 center font "Times-Bold,18" front
 set label "medium"                          at first  6.5, graph -0.05 center
 set label "Size Zone"                       at first  4  , graph -0.14 center
@@ -60,5 +59,5 @@
 set label "ins. elem."                      at first 19.5, graph -0.05 center
 set label "all head"                        at first 24.5, graph  1.05 center
-set label "rem. elem"                       at first 24.5, graph -0.05 center
+set label "rem. elem."                       at first 24.5, graph -0.05 center
 set label "Accessor"                        at first 22  , graph -0.14 center
 
@@ -84,60 +83,123 @@
 set arrow 21+.4 from 26+.4, graph -0.10 to 26+.4, graph -0.08 nohead lw 1
 
+# legend, augmented
+set key outside top center horizontal maxrows 1 samplen 2 width +1 # offset -10,0
+set object 2 rect from first  3.20, screen 0.93 to first  4.85, screen 0.99 fc rgb "blue"        fs transparent solid 0.20 border lc rgb "blue"        lw 0.3
+set object 3 rect from first  8.80, screen 0.93 to first 10.45, screen 0.99 fc rgb "dark-orange" fs transparent solid 0.25 border lc rgb "dark-orange" lw 0.3
+set object 4 rect from first 14.40, screen 0.93 to first 16.05, screen 0.99 fc rgb "magenta"     fs transparent solid 0.20 border lc rgb "magenta"     lw 0.3
+set object 5 rect from first 19.98, screen 0.93 to first 21.63, screen 0.99 fc rgb "dark-violet" fs transparent solid 0.25 border lc rgb "dark-violet" lw 0.3
+# word "mean" is title of a data series plotted froom $Singleton
+set arrow 99 from first 20.8, screen 0.96 to first 23, screen 0.96  nohead lw 1 dt 2
+
 set errorbars 2.0
 set pointintervalbox 0
 
-barHtScale_phys = 0.05
-barHtScale_op = 0.1
-barHtScale_fx = 0.05
-
-
-plot INDIR."/plot-list-2ord.dat" \
-       i ( 0 + 0) using (0):(0):( 0 + 0):( 0 + 0 +       barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "blue"        fs transparent solid 0.15 noborder, \
-    '' i ( 0 + 3) using (0):(0):( 0 + 1):( 0 + 1 +       barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "dark-orange" fs transparent solid 0.15 noborder, \
-    '' i ( 0 + 2) using (0):(0):( 0 + 2):( 0 + 2 +       barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "magenta"     fs transparent solid 0.15 noborder, \
-    '' i ( 0 + 1) using (0):(0):( 0 + 3):( 0 + 3 + 3.5 * barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "purple"      fs transparent solid 0.35 noborder, \
-    '' i ( 0 + 0) using                  ( 0 + 0 +       barHtScale_fx * $3):2 notitle with steps lc rgb "blue"         lw 0.3, \
-    '' i ( 0 + 3) using                  ( 0 + 1 +       barHtScale_fx * $3):2 notitle with steps lc rgb "dark-orange"  lw 0.3, \
-    '' i ( 0 + 2) using                  ( 0 + 2 +       barHtScale_fx * $3):2 notitle with steps lc rgb "magenta"      lw 0.3, \
-    '' i ( 0 + 1) using                  ( 0 + 3 + 3.5 * barHtScale_fx * $3):2 notitle with steps lc rgb "purple"       lw 0.3, \
-\
-    '' i ( 4 + 0) using (0):(0):( 5 + 0):( 5 + 0 +       barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "blue"        fs transparent solid 0.15 noborder, \
-    '' i ( 4 + 3) using (0):(0):( 5 + 1):( 5 + 1 +       barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "dark-orange" fs transparent solid 0.15 noborder, \
-    '' i ( 4 + 2) using (0):(0):( 5 + 2):( 5 + 2 +       barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "magenta"     fs transparent solid 0.15 noborder, \
-    '' i ( 4 + 1) using (0):(0):( 5 + 3):( 5 + 3 + 3.5 * barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "purple"      fs transparent solid 0.35 noborder, \
-    '' i ( 4 + 0) using                  ( 5 + 0 +       barHtScale_fx * $3):2 notitle with steps lc rgb "blue"         lw 0.3, \
-    '' i ( 4 + 3) using                  ( 5 + 1 +       barHtScale_fx * $3):2 notitle with steps lc rgb "dark-orange"  lw 0.3, \
-    '' i ( 4 + 2) using                  ( 5 + 2 +       barHtScale_fx * $3):2 notitle with steps lc rgb "magenta"      lw 0.3, \
-    '' i ( 4 + 1) using                  ( 5 + 3 + 3.5 * barHtScale_fx * $3):2 notitle with steps lc rgb "purple"       lw 0.3, \
-\
-    '' i ( 8 + 0) using (0):(0):(10 + 0):(10 + 0 + barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "blue"        fs transparent solid 0.15 noborder, \
-    '' i ( 8 + 2) using (0):(0):(10 + 1):(10 + 1 + barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "dark-orange" fs transparent solid 0.15 noborder, \
-    '' i ( 8 + 1) using (0):(0):(10 + 2):(10 + 2 + barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "magenta"     fs transparent solid 0.15 noborder, \
-    '' i ( 8 + 0) using                  (10 + 0 + barHtScale_fx * $3):2 notitle with steps lc rgb "blue"         lw 0.3, \
-    '' i ( 8 + 2) using                  (10 + 1 + barHtScale_fx * $3):2 notitle with steps lc rgb "dark-orange"  lw 0.3, \
-    '' i ( 8 + 1) using                  (10 + 2 + barHtScale_fx * $3):2 notitle with steps lc rgb "magenta"      lw 0.3, \
-\
-    '' i (11 + 0) using (0):(0):(14 + 0):(14 + 0 + barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "blue"        fs transparent solid 0.15 noborder, \
-    '' i (11 + 2) using (0):(0):(14 + 1):(14 + 1 + barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "dark-orange" fs transparent solid 0.15 noborder, \
-    '' i (11 + 1) using (0):(0):(14 + 2):(14 + 2 + barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "magenta"     fs transparent solid 0.15 noborder, \
-    '' i (11 + 0) using                  (14 + 0 + barHtScale_fx * $3):2 notitle with steps lc rgb "blue"         lw 0.3, \
-    '' i (11 + 2) using                  (14 + 1 + barHtScale_fx * $3):2 notitle with steps lc rgb "dark-orange"  lw 0.3, \
-    '' i (11 + 1) using                  (14 + 2 + barHtScale_fx * $3):2 notitle with steps lc rgb "magenta"      lw 0.3, \
-\
-    '' i (14 + 0) using (0):(0):(18 + 0):(18 + 0 +       barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "blue"        fs transparent solid 0.15 noborder, \
-    '' i (14 + 3) using (0):(0):(18 + 1):(18 + 1 +       barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "dark-orange" fs transparent solid 0.15 noborder, \
-    '' i (14 + 2) using (0):(0):(18 + 2):(18 + 2 +       barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "magenta"     fs transparent solid 0.15 noborder, \
-    '' i (14 + 1) using (0):(0):(18 + 3):(18 + 3 + 3.5 * barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "purple"      fs transparent solid 0.35 noborder, \
-    '' i (14 + 0) using                  (18 + 0 +       barHtScale_fx * $3):2 notitle with steps lc rgb "blue"         lw 0.3, \
-    '' i (14 + 3) using                  (18 + 1 +       barHtScale_fx * $3):2 notitle with steps lc rgb "dark-orange"  lw 0.3, \
-    '' i (14 + 2) using                  (18 + 2 +       barHtScale_fx * $3):2 notitle with steps lc rgb "magenta"      lw 0.3, \
-    '' i (14 + 1) using                  (18 + 3 + 3.5 * barHtScale_fx * $3):2 notitle with steps lc rgb "purple"       lw 0.3, \
-\
-    '' i (18 + 0) using (0):(0):(23 + 0):(23 + 0 +       barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "blue"        fs transparent solid 0.15 noborder, \
-    '' i (18 + 3) using (0):(0):(23 + 1):(23 + 1 +       barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "dark-orange" fs transparent solid 0.15 noborder, \
-    '' i (18 + 2) using (0):(0):(23 + 2):(23 + 2 +       barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "magenta"     fs transparent solid 0.15 noborder, \
-    '' i (18 + 1) using (0):(0):(23 + 3):(23 + 3 + 3.5 * barHtScale_fx * $3):1:2 title columnheader(1) with boxxyerror fc rgb "purple"      fs transparent solid 0.35 noborder, \
-    '' i (18 + 0) using                  (23 + 0 +       barHtScale_fx * $3):2 notitle with steps lc rgb "blue"         lw 0.3, \
-    '' i (18 + 3) using                  (23 + 1 +       barHtScale_fx * $3):2 notitle with steps lc rgb "dark-orange"  lw 0.3, \
-    '' i (18 + 2) using                  (23 + 2 +       barHtScale_fx * $3):2 notitle with steps lc rgb "magenta"      lw 0.3, \
-    '' i (18 + 1) using                  (23 + 3 + 3.5 * barHtScale_fx * $3):2 notitle with steps lc rgb "purple"       lw 0.3
+# One row, to plot one-off points
+$Singleton <<EOD
+0
+EOD
+
+
+
+
+# show colornames
+#   blue               #0000ff =   0   0 255
+#   dark-orange        #c04000 = 192  64   0
+#   magenta            #ff00ff = 255   0 255
+#   purple             #c080ff = 192 128 255
+
+
+
+
+
+set errorbars 0 linewidth 4
+
+
+barHtScale = 0.048
+
+plot \
+   INDIR."/plot-list-2ord.det.dat" \
+       i ( 0 + 0) using (0):(0):( 0 + 0):( 0 + 0 +       barHtScale * $3):1:2 notitle with boxxyerror fc rgb "blue"        fs transparent solid 0.20 noborder, \
+    '' i ( 0 + 3) using (0):(0):( 0 + 1):( 0 + 1 +       barHtScale * $3):1:2 notitle with boxxyerror fc rgb "dark-orange" fs transparent solid 0.25 noborder, \
+    '' i ( 0 + 2) using (0):(0):( 0 + 2):( 0 + 2 +       barHtScale * $3):1:2 notitle with boxxyerror fc rgb "magenta"     fs transparent solid 0.20 noborder, \
+    '' i ( 0 + 1) using (0):(0):( 0 + 3):( 0 + 3 + 3.5 * barHtScale * $3):1:2 notitle with boxxyerror fc rgb "dark-violet" fs transparent solid 0.25 noborder, \
+    '' i ( 0 + 0) using                  ( 0 + 0 +       barHtScale * $3):2 notitle with steps lc rgb "blue"         lw 0.3, \
+    '' i ( 0 + 3) using                  ( 0 + 1 +       barHtScale * $3):2 notitle with steps lc rgb "dark-orange"  lw 0.3, \
+    '' i ( 0 + 2) using                  ( 0 + 2 +       barHtScale * $3):2 notitle with steps lc rgb "magenta"      lw 0.3, \
+    '' i ( 0 + 1) using                  ( 0 + 3 + 3.5 * barHtScale * $3):2 notitle with steps lc rgb "dark-violet"  lw 0.3, \
+\
+    '' i ( 4 + 0) using (0):(0):( 5 + 0):( 5 + 0 +       barHtScale * $3):1:2 notitle with boxxyerror fc rgb "blue"        fs transparent solid 0.20 noborder, \
+    '' i ( 4 + 3) using (0):(0):( 5 + 1):( 5 + 1 +       barHtScale * $3):1:2 notitle with boxxyerror fc rgb "dark-orange" fs transparent solid 0.25 noborder, \
+    '' i ( 4 + 2) using (0):(0):( 5 + 2):( 5 + 2 +       barHtScale * $3):1:2 notitle with boxxyerror fc rgb "magenta"     fs transparent solid 0.20 noborder, \
+    '' i ( 4 + 1) using (0):(0):( 5 + 3):( 5 + 3 + 3.5 * barHtScale * $3):1:2 notitle with boxxyerror fc rgb "dark-violet" fs transparent solid 0.25 noborder, \
+    '' i ( 4 + 0) using                  ( 5 + 0 +       barHtScale * $3):2 notitle with steps lc rgb "blue"         lw 0.3, \
+    '' i ( 4 + 3) using                  ( 5 + 1 +       barHtScale * $3):2 notitle with steps lc rgb "dark-orange"  lw 0.3, \
+    '' i ( 4 + 2) using                  ( 5 + 2 +       barHtScale * $3):2 notitle with steps lc rgb "magenta"      lw 0.3, \
+    '' i ( 4 + 1) using                  ( 5 + 3 + 3.5 * barHtScale * $3):2 notitle with steps lc rgb "dark-violet"  lw 0.3, \
+\
+    '' i ( 8 + 0) using (0):(0):(10 + 0):(10 + 0 +       barHtScale * $3):1:2 notitle with boxxyerror fc rgb "blue"        fs transparent solid 0.20 noborder, \
+    '' i ( 8 + 2) using (0):(0):(10 + 1):(10 + 1 +       barHtScale * $3):1:2 notitle with boxxyerror fc rgb "dark-orange" fs transparent solid 0.25 noborder, \
+    '' i ( 8 + 1) using (0):(0):(10 + 2):(10 + 2 +       barHtScale * $3):1:2 notitle with boxxyerror fc rgb "magenta"     fs transparent solid 0.20 noborder, \
+    '' i ( 8 + 0) using                  (10 + 0 +       barHtScale * $3):2 notitle with steps lc rgb "blue"         lw 0.3, \
+    '' i ( 8 + 2) using                  (10 + 1 +       barHtScale * $3):2 notitle with steps lc rgb "dark-orange"  lw 0.3, \
+    '' i ( 8 + 1) using                  (10 + 2 +       barHtScale * $3):2 notitle with steps lc rgb "magenta"      lw 0.3, \
+\
+    '' i (11 + 0) using (0):(0):(14 + 0):(14 + 0 +       barHtScale * $3):1:2 notitle with boxxyerror fc rgb "blue"        fs transparent solid 0.20 noborder, \
+    '' i (11 + 2) using (0):(0):(14 + 1):(14 + 1 +       barHtScale * $3):1:2 notitle with boxxyerror fc rgb "dark-orange" fs transparent solid 0.25 noborder, \
+    '' i (11 + 1) using (0):(0):(14 + 2):(14 + 2 +       barHtScale * $3):1:2 notitle with boxxyerror fc rgb "magenta"     fs transparent solid 0.20 noborder, \
+    '' i (11 + 0) using                  (14 + 0 +       barHtScale * $3):2 notitle with steps lc rgb "blue"         lw 0.3, \
+    '' i (11 + 2) using                  (14 + 1 +       barHtScale * $3):2 notitle with steps lc rgb "dark-orange"  lw 0.3, \
+    '' i (11 + 1) using                  (14 + 2 +       barHtScale * $3):2 notitle with steps lc rgb "magenta"      lw 0.3, \
+\
+    '' i (14 + 0) using (0):(0):(18 + 0):(18 + 0 +       barHtScale * $3):1:2 notitle with boxxyerror fc rgb "blue"        fs transparent solid 0.20 noborder, \
+    '' i (14 + 3) using (0):(0):(18 + 1):(18 + 1 +       barHtScale * $3):1:2 notitle with boxxyerror fc rgb "dark-orange" fs transparent solid 0.25 noborder, \
+    '' i (14 + 2) using (0):(0):(18 + 2):(18 + 2 +       barHtScale * $3):1:2 notitle with boxxyerror fc rgb "magenta"     fs transparent solid 0.20 noborder, \
+    '' i (14 + 1) using (0):(0):(18 + 3):(18 + 3 + 3.5 * barHtScale * $3):1:2 notitle with boxxyerror fc rgb "dark-violet" fs transparent solid 0.25 noborder, \
+    '' i (14 + 0) using                  (18 + 0 +       barHtScale * $3):2 notitle with steps lc rgb "blue"         lw 0.3, \
+    '' i (14 + 3) using                  (18 + 1 +       barHtScale * $3):2 notitle with steps lc rgb "dark-orange"  lw 0.3, \
+    '' i (14 + 2) using                  (18 + 2 +       barHtScale * $3):2 notitle with steps lc rgb "magenta"      lw 0.3, \
+    '' i (14 + 1) using                  (18 + 3 + 3.5 * barHtScale * $3):2 notitle with steps lc rgb "dark-violet"  lw 0.3, \
+\
+    '' i (18 + 0) using (0):(0):(23 + 0):(23 + 0 +       barHtScale * $3):1:2 notitle with boxxyerror fc rgb "blue"        fs transparent solid 0.20 noborder, \
+    '' i (18 + 3) using (0):(0):(23 + 1):(23 + 1 +       barHtScale * $3):1:2 notitle with boxxyerror fc rgb "dark-orange" fs transparent solid 0.25 noborder, \
+    '' i (18 + 2) using (0):(0):(23 + 2):(23 + 2 +       barHtScale * $3):1:2 notitle with boxxyerror fc rgb "magenta"     fs transparent solid 0.20 noborder, \
+    '' i (18 + 1) using (0):(0):(23 + 3):(23 + 3 + 3.5 * barHtScale * $3):1:2 notitle with boxxyerror fc rgb "dark-violet" fs transparent solid 0.25 noborder, \
+    '' i (18 + 0) using                  (23 + 0 +       barHtScale * $3):2 notitle with steps lc rgb "blue"         lw 0.3, \
+    '' i (18 + 3) using                  (23 + 1 +       barHtScale * $3):2 notitle with steps lc rgb "dark-orange"  lw 0.3, \
+    '' i (18 + 2) using                  (23 + 2 +       barHtScale * $3):2 notitle with steps lc rgb "magenta"      lw 0.3, \
+    '' i (18 + 1) using                  (23 + 3 + 3.5 * barHtScale * $3):2 notitle with steps lc rgb "dark-violet"  lw 0.3, \
+\
+   INDIR."/plot-list-2ord.sum.dat" \
+       i ( 0 + 0) using ( 0 + 0 ):1 title "{/Helvetica=15 C{/Symbol \42}}"   with points     lc rgb "blue"        pt  7  ps 1.0, \
+    '' i ( 0 + 3) using ( 0 + 1 ):1 title "{/Symbol \155}C++"                with points     lc rgb "dark-orange" pt  9  ps 1.2, \
+    '' i ( 0 + 2) using ( 0 + 2 ):1 title "LQ-tailq"                         with points     lc rgb "magenta"     pt  11 ps 1.2, \
+    '' i ( 0 + 1) using ( 0 + 3 ):1 title "LQ-list"                          with points     lc rgb "dark-violet" pt  13 ps 1.4, \
+    '' i ( 0 + 0) using ( 0 + 0):1:( 0 + 0):( 0 + 0 + .8)            notitle with xerrorbars lc rgb "blue"        pt  0, \
+    '' i ( 0 + 3) using ( 0 + 1):1:( 0 + 1):( 0 + 1 + .8)            notitle with xerrorbars lc rgb "dark-orange" pt  0, \
+    '' i ( 0 + 2) using ( 0 + 2):1:( 0 + 2):( 0 + 2 + .8)            notitle with xerrorbars lc rgb "magenta"     pt  0, \
+    '' i ( 0 + 1) using ( 0 + 3):1:( 0 + 3):( 0 + 3 + .8)            notitle with xerrorbars lc rgb "dark-violet" pt  0, \
+\
+    '' i ( 4 + 0) using ( 5 + 0):1:( 5 + 0):( 5 + 0 + .8) notitle with xerrorbars lc rgb "blue"        pt  7  ps 1.0, \
+    '' i ( 4 + 3) using ( 5 + 1):1:( 5 + 1):( 5 + 1 + .8) notitle with xerrorbars lc rgb "dark-orange" pt  9  ps 1.2, \
+    '' i ( 4 + 2) using ( 5 + 2):1:( 5 + 2):( 5 + 2 + .8) notitle with xerrorbars lc rgb "magenta"     pt  11 ps 1.2, \
+    '' i ( 4 + 1) using ( 5 + 3):1:( 5 + 3):( 5 + 3 + .8) notitle with xerrorbars lc rgb "dark-violet" pt  13 ps 1.4, \
+\
+    '' i ( 8 + 0) using (10 + 0):1:(10 + 0):(10 + 0 + .8) notitle with xerrorbars lc rgb "blue"        pt  7  ps 1.0, \
+    '' i ( 8 + 2) using (10 + 1):1:(10 + 1):(10 + 1 + .8) notitle with xerrorbars lc rgb "dark-orange" pt  9  ps 1.2, \
+    '' i ( 8 + 1) using (10 + 2):1:(10 + 2):(10 + 2 + .8) notitle with xerrorbars lc rgb "magenta"     pt  11 ps 1.2, \
+\
+    '' i (11 + 0) using (14 + 0):1:(14 + 0):(14 + 0 + .8) notitle with xerrorbars lc rgb "blue"        pt  7  ps 1.0, \
+    '' i (11 + 2) using (14 + 1):1:(14 + 1):(14 + 1 + .8) notitle with xerrorbars lc rgb "dark-orange" pt  9  ps 1.2, \
+    '' i (11 + 1) using (14 + 2):1:(14 + 2):(14 + 2 + .8) notitle with xerrorbars lc rgb "magenta"     pt  11 ps 1.2, \
+\
+    '' i (14 + 0) using (18 + 0):1:(18 + 0):(18 + 0 + .8) notitle with xerrorbars lc rgb "blue"        pt  7  ps 1.0, \
+    '' i (14 + 3) using (18 + 1):1:(18 + 1):(18 + 1 + .8) notitle with xerrorbars lc rgb "dark-orange" pt  9  ps 1.2, \
+    '' i (14 + 2) using (18 + 2):1:(18 + 2):(18 + 2 + .8) notitle with xerrorbars lc rgb "magenta"     pt  11 ps 1.2, \
+    '' i (14 + 1) using (18 + 3):1:(18 + 3):(18 + 3 + .8) notitle with xerrorbars lc rgb "dark-violet" pt  13 ps 1.4, \
+\
+    '' i (18 + 0) using (23 + 0):1:(23 + 0):(23 + 0 + .8) notitle with xerrorbars lc rgb "blue"        pt  7  ps 1.0, \
+    '' i (18 + 3) using (23 + 1):1:(23 + 1):(23 + 1 + .8) notitle with xerrorbars lc rgb "dark-orange" pt  9  ps 1.2, \
+    '' i (18 + 2) using (23 + 2):1:(23 + 2):(23 + 2 + .8) notitle with xerrorbars lc rgb "magenta"     pt  11 ps 1.2, \
+    '' i (18 + 1) using (23 + 3):1:(23 + 3):(23 + 3 + .8) notitle with xerrorbars lc rgb "dark-violet" pt  13 ps 1.4, \
+\
+    $Singleton using (0):(0.1):("This text is placed offscrean-low") title "↕ mean" with labels
Index: doc/theses/mike_brooks_MMath/plots/list-2ord.py
===================================================================
--- doc/theses/mike_brooks_MMath/plots/list-2ord.py	(revision 2581f1e470681f2114352c203ac50173672b3d5c)
+++ doc/theses/mike_brooks_MMath/plots/list-2ord.py	(revision 1abcec9b6adf2ed1d9f833ccc39e3e9f529c3d52)
@@ -6,4 +6,7 @@
 sys.path.insert(0, os.path.dirname(__file__))
 from ListCommon import *
+
+sumFile = open( sys.argv[1], 'w' )
+detFile = open( sys.argv[2], 'w' )
 
 # for mvmt+polarity effects, where lq-list doesn't support queue or inslast
@@ -17,5 +20,7 @@
                    'SizeZone': ['ML'] },
     drillOn=['machine', 'SizeZone', 'fx'],
-    marginalizeOn=['SizeZone'] )
+    marginalizeOn=['SizeZone'],
+    sumFile = sumFile,
+    detFile = detFile )
 
 printHistos(
@@ -26,5 +31,7 @@
                    'SizeZone': ['ML'] },
     drillOn=['machine', 'SizeZone', 'fx'],
-    marginalizeOn=['SizeZone'] )
+    marginalizeOn=['SizeZone'],
+    sumFile = sumFile,
+    detFile = detFile )
 
 printHistos(
@@ -35,5 +42,7 @@
                    'fx': noLqList },
     drillOn=['movement', 'fx'],
-    marginalizeOn=['movement'] )
+    marginalizeOn=['movement'],
+    sumFile = sumFile,
+    detFile = detFile )
 
 printHistos(
@@ -44,5 +53,7 @@
                    'fx': noLqList },
     drillOn=['polarity', 'fx'],
-    marginalizeOn=['polarity'] )
+    marginalizeOn=['polarity'],
+    sumFile = sumFile,
+    detFile = detFile )
 
 printHistos(
@@ -50,8 +61,10 @@
     tgtPolarity = 'all',
     tgtAccessor = 'all',
-    earlyFilter = { 'accessor': ['allhead', 'inselem'] },
-    lateFilter = { 'accessor': ['inselem'] },
+    earlyFilter = { 'accessor': ['allhead', 'inselem'] }, # set up head-to-head benchmarking
+    lateFilter = { 'accessor': ['inselem'] }, # show one side of the mirror, as usual
     drillOn=['accessor', 'fx'],
-    marginalizeOn=['accessor'] )
+    marginalizeOn=['accessor'],
+    sumFile = sumFile,
+    detFile = detFile )
 
 printHistos(
@@ -62,3 +75,5 @@
     lateFilter = { 'accessor': ['remelem'] },
     drillOn=['accessor', 'fx'],
-    marginalizeOn=['accessor'] )
+    marginalizeOn=['accessor'],
+    sumFile = sumFile,
+    detFile = detFile )
