diff --git a/examples/DBASE/test.database b/examples/DBASE/test.database
index 451a26680519d5bbdcd2f74ddddf723b79fa5beb..577f1a66e1ecfb783d2e8d070499977634c70cd2 100644
--- a/examples/DBASE/test.database
+++ b/examples/DBASE/test.database
@@ -2,6 +2,11 @@
 50017
 g_ctp_parm_filename="PARAM/general.param"
 g_decode_map_filename="MAPS/jun04.map"
+# Values taken from Logbook.  Not necessarily official.
+gpbeam    = 4.015
+hpcentral = 2.074
+htheta_lab = 10.99
+hpartmass = 0.13957
 52949
 g_ctp_parm_filename="PARAM/52949/general.param"
 g_decode_map_filename="MAPS/july04.map"
diff --git a/examples/PARAM/hcana.param b/examples/PARAM/hcana.param
index 61d60c67416cd2b92a6e69416e20b1281f30689b..646ac747fa0834ee7ced8d01863f7f86467ba47c 100644
--- a/examples/PARAM/hcana.param
+++ b/examples/PARAM/hcana.param
@@ -15,3 +15,7 @@ hdc_plane_names = "1x1 1y1 1u1 1v1 1y2 1x2 2x1 2y1 2u1 2v1 2y2 2x2"
 hcal_layer_names = "1pr 2ta 3ta 4ta"
 
 hhodo_plane_names = "1x 1y 2x 2y"
+
+# The following were defined in REPLAY.PARAM
+h_recon_coeff_filename =    'PARAM/hms_recon_coeff.dat'  ;hms optics matrix
+s_recon_coeff_filename =    'PARAM/sos_recon_coeff.dat'  ;sos optics matrix
diff --git a/examples/PARAM/hms_recon_coeff.dat b/examples/PARAM/hms_recon_coeff.dat
new file mode 100644
index 0000000000000000000000000000000000000000..7b1ca30ea68c6f78f12008a6b872c8b1d131c0d1
--- /dev/null
+++ b/examples/PARAM/hms_recon_coeff.dat
@@ -0,0 +1,407 @@
+! recostruction matrix elements for HMS, tune HMS-100
+! <theta y phi delta | nmpq>;(x**n xp**m y**p yp**q)
+! as of 02/20/97, no z offset included: this statement is obsolete
+! created: 06/28/98
+! zeroth order matrix elements from fitting:
+! <theta|> -4.7276368293E-03 rad
+! <y|> -1.1606458055E-04 m
+! <phi|>  4.8280702357E-05 rad 
+! <p|> -3.8725980576E-03 %
+! <theta y phi delta | nmpq>;(x**n xp**m y**p yp**q)
+! **** mkj ****
+!  aug 26, 2003 added coefficients correcting theta
+!   for  raster ( x at target). Previously delta was corrected
+!   raster ( with up to 4 order) . y and phi were corrected
+!   for coefficient 00012 .
+!   Got coefficients from SIMC hms/recon_cosy.dat
+!     which is labeled:
+!        HMS Recon coefficients calculated 02-Feb-00  16:32:32 (HMS100 tune, P=-1.576
+!    The correction is up to 6th order.
+!  **** mkj *****
+ ---------------------------------------------------------------------
+   .342704157      .183629749E-01 -.742670280E-02  .256021141     1000
+  -3.02138749     -.152502758      .472422058E-01  .130192976     0100
+  -.673199668E-02 -.407567405      .258501913      .278565265E-02 0010
+   .110287597     -.483378951     -2.16704420      .407874298E-01 0001
+  -.495779826     -.548491564E-01  .147936777E-01 -.318166729     2000
+   4.49999138      .451213193     -.151686093      3.07552684     1100
+   .796294361      1.48286554     -.303847305     -.297352223E-01 1010
+   .261524802     -20.7938893      5.00402934     -.249121889     1001
+  -1.65128983     -.995337651      .536837816      2.14776190     0200
+  -6.47649939      .226936328     -.123499047     -.266124530     0110
+  -3.98529962     -6.32858639      1.39991277      4.27708696     0101
+   .113653600E-01  .690088486E-01 -.437114986E-01 -.438953228E-01 0020
+   .881941403      .227473684     -.628899349E-01  .475605891     0011
+  -3.71740449      3.93769576      .113368630     -3.53478948     0002
+   1.95723299     -.820253354E-01  .103519807      .936834319     3000
+  -31.4466915      2.57527314     -2.51407447     -13.5405899     2100
+  -5.89608158     -3.50686592      .471876566     -.312542194E-01 2010
+   40.5129114      58.0458860     -12.5399800     -2.74488175     2001
+   156.932838     -23.8014414      21.1502247      51.8797642     1200
+   57.3250219      40.7718723     -7.13532706      .284008412     1110
+  -298.395506     -639.340672      173.523125      10.6819836     1101
+   1.88702326      .266847247      .271167866      .954315611     1020
+  -24.4326614     -33.6584609     -.114525239      .434687181     1011
+   180.539265      53.7698885      3.76822635      31.9077575     1002
+  -279.667300      64.3177661     -60.6190378     -20.4989850     0300
+  -64.0800162     -86.2289723      11.5806188      3.95564331     0210
+  -247.924962      1524.67217     -483.832639     -46.7762650     0201
+  -21.7150970     -13.4646889      .401043380     -7.06883817     0120
+   211.296709      323.699221     -6.72775908      25.6924121     0111
+  -1440.32950      361.536621     -384.751537     -467.898102     0102
+  -.656643228      3.62511407     -1.27960041     -.358205667     0030
+  -1.58376006      67.9025208     -22.9733471     -3.15593520     0021
+   23.7224929     -987.049261      560.285176      34.1790370     0012
+  -180.294278      5983.27702     -3518.42552     -71.5085362     0003
+  -4.16665084      1.49723155     -.759630854     -2.30278775     4000
+   69.1944845     -46.6812620      21.8666725      58.0248309     3100
+   18.5878217      3.69400020      .602106657E-01 -1.46212838     3010
+  -227.551196     -96.3179597      .489353421      20.4063547     3001
+  -243.511203      535.564222     -239.722086     -491.562374     2200
+  -230.021793     -40.7163893      .940804015      47.2957535     2110
+   3150.68103      1424.96519      38.5622615     -521.870646     2101
+  -10.2926426     -3.56149925     -1.10754304     -1.00472512     2020
+   138.770921      263.397128     -15.7671082     -26.1090659     2011
+  -211.394983     -1895.91500      234.605250      406.369321     2002
+  -832.967425     -2704.20708      1207.70554      1718.29721     1300
+   429.578554     -234.967423     -20.3231936     -432.372956     1210
+  -11612.7737     -2668.84972     -1176.05843      4021.85608     1201
+   130.736123      70.7440580      5.42914965      16.7434624     1120
+  -1905.84788     -3551.03419      224.098878      343.660595     1111
+   363.670026      16804.9474     -2673.42755     -4586.96491     1102
+   6.91955519     -9.98074257      7.57861652      4.98155457     1030
+  -114.693315      63.5563817     -65.8809200     -36.5101930     1021
+   710.699660      4980.54374     -780.431756      60.2646297     1012
+  -7520.04385     -13187.0100      2486.26739      536.066295     1003
+   4347.54210      5161.66425     -2427.09769     -1950.10403     0400
+   1156.75126      1725.44332      188.803395      1323.39948     0310
+   12047.3853     -8815.37699      3407.72589     -11081.6594     0301
+  -26.9308548      60.3544886     -47.8411214     -67.2731587     0220
+   826.904198      4520.84740      916.341424     -974.052221     0211
+   19983.2818      7167.34390     -4225.20780      9358.46286     0202
+  -26.0105902     -188.661888      54.6866678     -37.4367181     0130
+   648.226508      2521.63446     -1052.88888      292.436840     0121
+  -8498.59600     -31139.3846      8203.03704     -697.205971     0112
+   63967.4235      128236.246     -24237.5465     -2336.48364     0103
+  -1.07911254      1.22231630     -.173675833      3.83526317     0040
+   9.94134973      258.488500     -10.9579494     -84.9391998     0031
+   158.508425     -2684.84975     -3.07844063      726.975013     0022
+  -3017.64724      14872.1349     -469.458295     -1667.46714     0013
+   466.801936     -55258.4859      4661.52259      3912.11649     0004
+   1.88180503     -2.54978699      1.02249535      4.96781903     5000
+   27.9678707      85.1165188     -25.6500831     -214.635508     4100
+  -19.6018738     -1.90234997     -2.26475906      3.07907961     4010
+   338.908065     -3.13670480      84.7364876     -48.5819865     4001
+  -1595.43911     -986.185572      116.663362      3438.51266     3200
+   256.718721     -2.53553430      86.9081338     -71.7570318     3110
+  -5619.82737      2554.66160     -3220.55423      1952.97191     3101
+   5.63505956      5.65523837     -.178636671     -9.82929708     3020
+   28.4611788     -535.882022      112.200518      63.7792928     3011
+  -3335.14896      6481.34708     -841.916671     -2407.64911     3002
+   17748.8967      4446.27557      1781.86526     -27888.4078     2300
+  -365.812295      713.968459     -1184.61359      175.230779     2210
+   26149.2365     -61279.3626      44610.2113     -20776.5089     2201
+   82.8634399     -82.7911036      40.7995535      223.223395     2120
+  -4711.16007      7972.91446     -3042.34279     -1765.82660     2111
+   111837.314     -122751.891      25531.4588      55520.9916     2102
+  -13.8546171     -44.6122707     -1.49148927      7.53241271     2030
+   379.629516      2219.19103     -283.396915     -8.69875712     2021
+  -2940.77125     -39662.7132      6848.07035      332.501630     2012
+  -4833.05018      291262.775     -40868.2995     -930.899000     2003
+  -75870.6114     -3035.26190     -19402.1263      118850.529     1400
+  -1090.33337     -5565.51679      8155.50571      3660.70792     1310
+  -76601.8398      456263.377     -281440.652      79440.7749     1301
+  -2721.78279     -512.627944     -452.280825     -1934.55934     1220
+   83864.4298      5816.23957      23306.1137      11961.6529     1211
+  -1306713.82      400125.281     -216284.553     -418149.697     1202
+   100.956187      1309.56623     -226.290462     -173.118732     1130
+  -4032.82257     -56824.1834      10616.2930      1607.73072     1121
+   79840.4758      782713.236     -150889.930     -14254.2451     1112
+  -330377.607     -4233718.14      646182.662      39788.7678     1103
+   6.06681234      7.12938618     -.220192683     -1.11240314     1040
+  -243.665570     -948.255482      153.244584      165.982247     1031
+   7181.11150      25876.5416     -2553.92502     -3998.95843     1022
+  -75005.8412     -104271.766     -23488.8683      29493.1698     1013
+   124433.465     -149264.761      219376.542     -13196.6766     1004
+   113262.801     -18667.6651      53113.3093     -209797.800     0500
+  -11632.6603      7242.92619     -21110.0334     -18679.7717     0410
+   301044.558     -1035121.76      655646.504     -71841.5676     0401
+   8371.11263      2221.54910      1543.28892      6295.96049     0320
+  -258028.488     -135832.589     -66162.4672     -36062.5709     0311
+   4218622.48      128274.356      663799.998      1118597.09     0302
+  -167.926507     -3321.19532      237.754153      1077.44822     0230
+   15453.6273      205593.650     -24454.8426     -11675.9844     0221
+  -438724.451     -3267312.69      463392.237      52657.7588     0212
+   2249544.29      17936516.3     -2298746.48     -118752.747     0203
+  -25.5889867     -61.6539042      41.8282483     -107.686882     0140
+   1866.01089     -1606.56535     -3207.84127      946.869731     0131
+  -71480.9824     -31234.8373      79600.1247      25102.1443     0122
+   814034.645      434180.428     -606101.312     -259877.198     0113
+  -2102030.39     -1584569.00      1583206.11      303094.278     0104
+  -3.59866781     -19.7084031     -18.4827350     -1.36754912     0050
+   50.9893561      384.737475      1103.07001      164.395576     0041
+   1986.13677      18001.7932     -34498.4820      90.2668576     0032
+  -30037.4064     -584192.598      674006.856      1100.41524     0023
+   20801.9238      6212983.14     -6436686.94     -17333.4694     0014
+   408508.663     -23722308.6      22707746.7      30963.1531     0005
+   1.12584242     0.000000000E+00 0.000000000E+00 0.768177700     00001
+  -3.30929606     0.000000000E+00 0.000000000E+00 -1.24824954     10001
+   9.55821560     0.000000000E+00 0.000000000E+00  7.18980365     01001
+   -12.8075508    0.000000000E+00 0.000000000E+00 -1.79480024     00002
+   31.3282870     0.000000000E+00 0.000000000E+00  4.30979026     20001
+   -366.358594    0.000000000E+00 0.000000000E+00 -47.5141035     11001
+   1281.27264     0.000000000E+00 0.000000000E+00  127.404997     02001
+   8.46492946     0.000000000E+00 0.000000000E+00  1.52132362     00201
+   -212.181332    0.000000000E+00 0.000000000E+00 -44.8420242     00111
+   86.2168045     0.000000000E+00 0.000000000E+00  13.9035869     10002
+   -202.375577    0.000000000E+00 0.000000000E+00 -75.1770025     01002
+   1292.40575     0.000000000E+00 0.000000000E+00  332.945301     00021
+   152.465743      412.398418      -118.551680    0.000000000E+00 00012
+   56.8142343     0.000000000E+00 0.000000000E+00  15.5951865     00003
+  -111.090641     0.000000000E+00 0.000000000E+00 -15.7177358     30001
+   1301.23090     0.000000000E+00 0.000000000E+00  249.924995     21001
+  -3377.64137     0.000000000E+00 0.000000000E+00 -1205.61003     12001
+  -1080.57253     0.000000000E+00 0.000000000E+00  1650.70638     03001
+  -206.758367     0.000000000E+00 0.000000000E+00 -8.63945412     10201
+   1286.12280     0.000000000E+00 0.000000000E+00  51.7345340     01201
+   457.388990     0.000000000E+00 0.000000000E+00  246.328770     10111
+   315.521007     0.000000000E+00 0.000000000E+00 -1468.88025     01111
+  -2.86376084     0.000000000E+00 0.000000000E+00 -77.6962058     20002
+  -284.532504     0.000000000E+00 0.000000000E+00  808.267218     11002
+  -54.9686786     0.000000000E+00 0.000000000E+00 -1887.27393     02002
+  -894.903229     0.000000000E+00 0.000000000E+00 -13.1721627     00202
+  -58.1868148     0.000000000E+00 0.000000000E+00 -1758.72381     10021
+   28.1001103     0.000000000E+00 0.000000000E+00  10443.6142     01021
+   24.9869024     0.000000000E+00 0.000000000E+00  377.176889     00112
+  -4.71048927     0.000000000E+00 0.000000000E+00 -174.332974     10003
+  -0.94935661     0.000000000E+00 0.000000000E+00  893.518077     01003
+   5.91096156     0.000000000E+00 0.000000000E+00 -2708.57078     00022
+   0.10590745     0.000000000E+00 0.000000000E+00 -149.156349     00004
+  0.744204334E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 00101
+   2.84521581     0.000000000E+00 0.000000000E+00 0.000000000E+00 10101
+  -25.4393730     0.000000000E+00 0.000000000E+00 0.000000000E+00 01101
+ -0.932044457     0.000000000E+00 0.000000000E+00 0.000000000E+00 00011
+   13.7051555     0.000000000E+00 0.000000000E+00 0.000000000E+00 10011
+  -72.5425087     0.000000000E+00 0.000000000E+00 0.000000000E+00 01011
+   11.1885519     0.000000000E+00 0.000000000E+00 0.000000000E+00 00102
+  -64.8809742     0.000000000E+00 0.000000000E+00 0.000000000E+00 00030
+  -29.8576040     0.000000000E+00 0.000000000E+00 0.000000000E+00 20101
+   257.607594     0.000000000E+00 0.000000000E+00 0.000000000E+00 11101
+   222.800622     0.000000000E+00 0.000000000E+00 0.000000000E+00 02101
+  -5.74703998     0.000000000E+00 0.000000000E+00 0.000000000E+00 00301
+  -58.3774171     0.000000000E+00 0.000000000E+00 0.000000000E+00 20011
+  -75.7986407     0.000000000E+00 0.000000000E+00 0.000000000E+00 11011
+  -20.0306669     0.000000000E+00 0.000000000E+00 0.000000000E+00 02011
+   81.5699850     0.000000000E+00 0.000000000E+00 0.000000000E+00 00211
+   39.9072357     0.000000000E+00 0.000000000E+00 0.000000000E+00 10102
+   26.1337898     0.000000000E+00 0.000000000E+00 0.000000000E+00 01102
+   11.1028012     0.000000000E+00 0.000000000E+00 0.000000000E+00 00121
+   15.8064184     0.000000000E+00 0.000000000E+00 0.000000000E+00 10012
+   2.52332790     0.000000000E+00 0.000000000E+00 0.000000000E+00 01012
+   1.49611639     0.000000000E+00 0.000000000E+00 0.000000000E+00 00103
+   2.94427172     0.000000000E+00 0.000000000E+00 0.000000000E+00 00031
+   5.91096156     0.000000000E+00 0.000000000E+00 0.000000000E+00 00022
+  0.196444306     0.000000000E+00 0.000000000E+00 0.000000000E+00 00013
+  0.105907450     0.000000000E+00 0.000000000E+00 0.000000000E+00 00004
+   169.573680     0.000000000E+00 0.000000000E+00 0.000000000E+00 40001
+  -1188.40309     0.000000000E+00 0.000000000E+00 0.000000000E+00 31001
+  -2564.00859     0.000000000E+00 0.000000000E+00 0.000000000E+00 22001
+  -796.126266     0.000000000E+00 0.000000000E+00 0.000000000E+00 13001
+  -170.135856     0.000000000E+00 0.000000000E+00 0.000000000E+00 04001
+   25.2737324     0.000000000E+00 0.000000000E+00 0.000000000E+00 30101
+  -302.117798     0.000000000E+00 0.000000000E+00 0.000000000E+00 21101
+   10.5088748     0.000000000E+00 0.000000000E+00 0.000000000E+00 12101
+   17.9545609     0.000000000E+00 0.000000000E+00 0.000000000E+00 03101
+   393.042869     0.000000000E+00 0.000000000E+00 0.000000000E+00 20201
+  -2654.79358     0.000000000E+00 0.000000000E+00 0.000000000E+00 11201
+  -675.207959     0.000000000E+00 0.000000000E+00 0.000000000E+00 02201
+   31.5374558     0.000000000E+00 0.000000000E+00 0.000000000E+00 10301
+  -66.2872749     0.000000000E+00 0.000000000E+00 0.000000000E+00 01301
+   11.0483668     0.000000000E+00 0.000000000E+00 0.000000000E+00 00401
+   53.9952733     0.000000000E+00 0.000000000E+00 0.000000000E+00 30011
+   19.8514223     0.000000000E+00 0.000000000E+00 0.000000000E+00 21011
+   6.99512779     0.000000000E+00 0.000000000E+00 0.000000000E+00 12011
+   2.03058969     0.000000000E+00 0.000000000E+00 0.000000000E+00 03011
+  -414.755722     0.000000000E+00 0.000000000E+00 0.000000000E+00 20111
+  -242.924295     0.000000000E+00 0.000000000E+00 0.000000000E+00 11111
+  -53.2831769     0.000000000E+00 0.000000000E+00 0.000000000E+00 02111
+   14.0854426     0.000000000E+00 0.000000000E+00 0.000000000E+00 10211
+  -7.18970025     0.000000000E+00 0.000000000E+00 0.000000000E+00 01211
+   46.6175282     0.000000000E+00 0.000000000E+00 0.000000000E+00 00311
+   327.023510     0.000000000E+00 0.000000000E+00 0.000000000E+00 30002
+  -46.7603764     0.000000000E+00 0.000000000E+00 0.000000000E+00 21002
+  -13.1130776     0.000000000E+00 0.000000000E+00 0.000000000E+00 12002
+  -2.14608775     0.000000000E+00 0.000000000E+00 0.000000000E+00 03002
+  -405.162634     0.000000000E+00 0.000000000E+00 0.000000000E+00 20102
+  -37.8327394     0.000000000E+00 0.000000000E+00 0.000000000E+00 11102
+  -3.28616433     0.000000000E+00 0.000000000E+00 0.000000000E+00 02102
+  -797.756623     0.000000000E+00 0.000000000E+00 0.000000000E+00 10202
+  -100.253463     0.000000000E+00 0.000000000E+00 0.000000000E+00 01202
+  -58.1494000     0.000000000E+00 0.000000000E+00 0.000000000E+00 00302
+  -49.7218825     0.000000000E+00 0.000000000E+00 0.000000000E+00 20021
+  -23.4940000     0.000000000E+00 0.000000000E+00 0.000000000E+00 11021
+  -4.63065295     0.000000000E+00 0.000000000E+00 0.000000000E+00 02021
+  -7.01252658     0.000000000E+00 0.000000000E+00 0.000000000E+00 10121
+  -1.66128414     0.000000000E+00 0.000000000E+00 0.000000000E+00 01121
+   8.99761159     0.000000000E+00 0.000000000E+00 0.000000000E+00 00221
+  -26.9158564     0.000000000E+00 0.000000000E+00 0.000000000E+00 20012
+  -2.93740577     0.000000000E+00 0.000000000E+00 0.000000000E+00 11012
+ -0.281699956     0.000000000E+00 0.000000000E+00 0.000000000E+00 02012
+  -44.2613806     0.000000000E+00 0.000000000E+00 0.000000000E+00 10112
+  -5.18873926     0.000000000E+00 0.000000000E+00 0.000000000E+00 01112
+  -2.30913015     0.000000000E+00 0.000000000E+00 0.000000000E+00 00212
+   12.9742811     0.000000000E+00 0.000000000E+00 0.000000000E+00 20003
+   1.29863794     0.000000000E+00 0.000000000E+00 0.000000000E+00 11003
+  0.179319821     0.000000000E+00 0.000000000E+00 0.000000000E+00 02003
+  0.359636043     0.000000000E+00 0.000000000E+00 0.000000000E+00 10103
+ -0.686000125E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 01103
+  0.479897726     0.000000000E+00 0.000000000E+00 0.000000000E+00 00203
+   2.12875475     0.000000000E+00 0.000000000E+00 0.000000000E+00 10040
+   1.00542982     0.000000000E+00 0.000000000E+00 0.000000000E+00 01040
+  0.574499599E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 00140
+  -1.51837641     0.000000000E+00 0.000000000E+00 0.000000000E+00 10031
+ -0.259505376     0.000000000E+00 0.000000000E+00 0.000000000E+00 01031
+   1.21378871     0.000000000E+00 0.000000000E+00 0.000000000E+00 00131
+  -3.83394487     0.000000000E+00 0.000000000E+00 0.000000000E+00 10022
+ -0.448803101     0.000000000E+00 0.000000000E+00 0.000000000E+00 01022
+  0.432742246E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 00122
+  0.433795780E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 10013
+  0.381017134E-03 0.000000000E+00 0.000000000E+00 0.000000000E+00 01013
+  0.717327023E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 00113
+  0.404935152E-02 0.000000000E+00 0.000000000E+00 0.000000000E+00 10004
+ -0.704014248E-03 0.000000000E+00 0.000000000E+00 0.000000000E+00 01004
+  0.417717692E-02 0.000000000E+00 0.000000000E+00 0.000000000E+00 00104
+ -0.108814119     0.000000000E+00 0.000000000E+00 0.000000000E+00 00050
+  0.265212468     0.000000000E+00 0.000000000E+00 0.000000000E+00 00041
+  0.342938618E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 00032
+  0.274219030E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 00023
+  0.382346774E-02 0.000000000E+00 0.000000000E+00 0.000000000E+00 00014
+  0.146595810E-02 0.000000000E+00 0.000000000E+00 0.000000000E+00 00005
+  -221.978975     0.000000000E+00 0.000000000E+00 0.000000000E+00 50001
+   2081.48433     0.000000000E+00 0.000000000E+00 0.000000000E+00 41001
+  -430.560936     0.000000000E+00 0.000000000E+00 0.000000000E+00 32001
+  -218.050288     0.000000000E+00 0.000000000E+00 0.000000000E+00 23001
+  -55.5844501     0.000000000E+00 0.000000000E+00 0.000000000E+00 14001
+  -11.3642568     0.000000000E+00 0.000000000E+00 0.000000000E+00 05001
+   108.432463     0.000000000E+00 0.000000000E+00 0.000000000E+00 40101
+  -931.864934     0.000000000E+00 0.000000000E+00 0.000000000E+00 31101
+  -192.977158     0.000000000E+00 0.000000000E+00 0.000000000E+00 22101
+  -28.6473383     0.000000000E+00 0.000000000E+00 0.000000000E+00 13101
+  -3.41017534     0.000000000E+00 0.000000000E+00 0.000000000E+00 04101
+   61.3278498     0.000000000E+00 0.000000000E+00 0.000000000E+00 30201
+  -43.6289186     0.000000000E+00 0.000000000E+00 0.000000000E+00 21201
+  -47.1521819     0.000000000E+00 0.000000000E+00 0.000000000E+00 12201
+  -14.9198830     0.000000000E+00 0.000000000E+00 0.000000000E+00 03201
+   58.8310901     0.000000000E+00 0.000000000E+00 0.000000000E+00 20301
+  -36.3378650     0.000000000E+00 0.000000000E+00 0.000000000E+00 11301
+  -8.01512328     0.000000000E+00 0.000000000E+00 0.000000000E+00 02301
+  -104.944287     0.000000000E+00 0.000000000E+00 0.000000000E+00 10401
+   34.7713353     0.000000000E+00 0.000000000E+00 0.000000000E+00 01401
+  -122.288125     0.000000000E+00 0.000000000E+00 0.000000000E+00 00501
+  -77.5453423     0.000000000E+00 0.000000000E+00 0.000000000E+00 40011
+  -64.1314449     0.000000000E+00 0.000000000E+00 0.000000000E+00 31011
+  -13.9857505     0.000000000E+00 0.000000000E+00 0.000000000E+00 22011
+  -2.33654082     0.000000000E+00 0.000000000E+00 0.000000000E+00 13011
+ -0.340596491     0.000000000E+00 0.000000000E+00 0.000000000E+00 04011
+   29.3394194     0.000000000E+00 0.000000000E+00 0.000000000E+00 30111
+   48.1149331     0.000000000E+00 0.000000000E+00 0.000000000E+00 21111
+   9.50174924     0.000000000E+00 0.000000000E+00 0.000000000E+00 12111
+   1.38837541     0.000000000E+00 0.000000000E+00 0.000000000E+00 03111
+   52.4792515     0.000000000E+00 0.000000000E+00 0.000000000E+00 20211
+   3.80058742     0.000000000E+00 0.000000000E+00 0.000000000E+00 11211
+  0.234555136     0.000000000E+00 0.000000000E+00 0.000000000E+00 02211
+   39.5808085     0.000000000E+00 0.000000000E+00 0.000000000E+00 10311
+   15.2563542     0.000000000E+00 0.000000000E+00 0.000000000E+00 01311
+  -7.28080327     0.000000000E+00 0.000000000E+00 0.000000000E+00 00411
+  -597.497346     0.000000000E+00 0.000000000E+00 0.000000000E+00 40002
+  -102.721749     0.000000000E+00 0.000000000E+00 0.000000000E+00 31002
+  -15.3681107     0.000000000E+00 0.000000000E+00 0.000000000E+00 22002
+  -2.17208316     0.000000000E+00 0.000000000E+00 0.000000000E+00 13002
+ -0.274609264     0.000000000E+00 0.000000000E+00 0.000000000E+00 04002
+   106.837983     0.000000000E+00 0.000000000E+00 0.000000000E+00 30102
+   12.3766158     0.000000000E+00 0.000000000E+00 0.000000000E+00 21102
+   1.46530330     0.000000000E+00 0.000000000E+00 0.000000000E+00 12102
+  0.185393293     0.000000000E+00 0.000000000E+00 0.000000000E+00 03102
+   11.8887131     0.000000000E+00 0.000000000E+00 0.000000000E+00 20202
+  -2.55669988     0.000000000E+00 0.000000000E+00 0.000000000E+00 11202
+ -0.863809017     0.000000000E+00 0.000000000E+00 0.000000000E+00 02202
+   18.8047014     0.000000000E+00 0.000000000E+00 0.000000000E+00 10302
+   2.49667580     0.000000000E+00 0.000000000E+00 0.000000000E+00 01302
+  -3.93088497     0.000000000E+00 0.000000000E+00 0.000000000E+00 00402
+   12.7034651     0.000000000E+00 0.000000000E+00 0.000000000E+00 30021
+   7.96187516     0.000000000E+00 0.000000000E+00 0.000000000E+00 21021
+   1.60982507     0.000000000E+00 0.000000000E+00 0.000000000E+00 12021
+  0.257565675     0.000000000E+00 0.000000000E+00 0.000000000E+00 03021
+   5.93574507     0.000000000E+00 0.000000000E+00 0.000000000E+00 20121
+  0.679348453     0.000000000E+00 0.000000000E+00 0.000000000E+00 11121
+  0.757550151E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 02121
+   7.36294581     0.000000000E+00 0.000000000E+00 0.000000000E+00 10221
+   2.30080135     0.000000000E+00 0.000000000E+00 0.000000000E+00 01221
+ -0.118383007     0.000000000E+00 0.000000000E+00 0.000000000E+00 00321
+   14.4258145     0.000000000E+00 0.000000000E+00 0.000000000E+00 30012
+   1.52658163     0.000000000E+00 0.000000000E+00 0.000000000E+00 21012
+  0.163028817     0.000000000E+00 0.000000000E+00 0.000000000E+00 12012
+  0.171689509E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 03012
+   15.0743734     0.000000000E+00 0.000000000E+00 0.000000000E+00 20112
+   1.60706583     0.000000000E+00 0.000000000E+00 0.000000000E+00 11112
+  0.166465023     0.000000000E+00 0.000000000E+00 0.000000000E+00 02112
+   2.28803297     0.000000000E+00 0.000000000E+00 0.000000000E+00 10212
+  0.265413449     0.000000000E+00 0.000000000E+00 0.000000000E+00 01212
+   3.26683930     0.000000000E+00 0.000000000E+00 0.000000000E+00 00312
+  -1.44694805     0.000000000E+00 0.000000000E+00 0.000000000E+00 30003
+ -0.301551821     0.000000000E+00 0.000000000E+00 0.000000000E+00 21003
+ -0.979405958E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 12003
+ -0.218874633E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 03003
+  0.213731277     0.000000000E+00 0.000000000E+00 0.000000000E+00 20103
+ -0.424871757E-02 0.000000000E+00 0.000000000E+00 0.000000000E+00 11103
+ -0.263981236E-02 0.000000000E+00 0.000000000E+00 0.000000000E+00 02103
+ -0.390336182     0.000000000E+00 0.000000000E+00 0.000000000E+00 10203
+ -0.220563449E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 01203
+ -0.252061070E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 00303
+  0.835395726     0.000000000E+00 0.000000000E+00 0.000000000E+00 20031
+  0.101082424     0.000000000E+00 0.000000000E+00 0.000000000E+00 11031
+  0.113826515E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 02031
+  0.967539242     0.000000000E+00 0.000000000E+00 0.000000000E+00 10131
+  0.283940573     0.000000000E+00 0.000000000E+00 0.000000000E+00 01131
+  0.704094684E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 00231
+   1.96621152     0.000000000E+00 0.000000000E+00 0.000000000E+00 20022
+  0.211929662     0.000000000E+00 0.000000000E+00 0.000000000E+00 11022
+  0.222297020E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 02022
+  0.192176728     0.000000000E+00 0.000000000E+00 0.000000000E+00 10122
+  0.208429359E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 01122
+  0.409197722     0.000000000E+00 0.000000000E+00 0.000000000E+00 00222
+  0.116208798E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 20013
+ -0.861751979E-03 0.000000000E+00 0.000000000E+00 0.000000000E+00 11013
+ -0.368034008E-03 0.000000000E+00 0.000000000E+00 0.000000000E+00 02013
+ -0.305595883E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 10113
+  0.792820773E-03 0.000000000E+00 0.000000000E+00 0.000000000E+00 01113
+ -0.103581312E-02 0.000000000E+00 0.000000000E+00 0.000000000E+00 00213
+ -0.317665296E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 20004
+ -0.868692894E-02 0.000000000E+00 0.000000000E+00 0.000000000E+00 11004
+ -0.130336633E-02 0.000000000E+00 0.000000000E+00 0.000000000E+00 02004
+ -0.485930059E-02 0.000000000E+00 0.000000000E+00 0.000000000E+00 10104
+ -0.181322677E-03 0.000000000E+00 0.000000000E+00 0.000000000E+00 01104
+ -0.225313015E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 00204
+  0.102736083     0.000000000E+00 0.000000000E+00 0.000000000E+00 10041
+  0.316791817E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 01041
+  0.177406989E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 00141
+  0.128130316E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 10032
+  0.134309873E-02 0.000000000E+00 0.000000000E+00 0.000000000E+00 01032
+  0.442654916E-01 0.000000000E+00 0.000000000E+00 0.000000000E+00 00132
+ -0.500745668E-02 0.000000000E+00 0.000000000E+00 0.000000000E+00 10023
+ -0.362264901E-04 0.000000000E+00 0.000000000E+00 0.000000000E+00 01023
+ -0.100846774E-03 0.000000000E+00 0.000000000E+00 0.000000000E+00 00123
+ -0.259911565E-03 0.000000000E+00 0.000000000E+00 0.000000000E+00 10014
+ -0.865988929E-05 0.000000000E+00 0.000000000E+00 0.000000000E+00 01014
+  0.126433262E-03 0.000000000E+00 0.000000000E+00 0.000000000E+00 00114
+ -0.376405317E-03 0.000000000E+00 0.000000000E+00 0.000000000E+00 10005
+ -0.495262130E-04 0.000000000E+00 0.000000000E+00 0.000000000E+00 01005
+  0.505435025E-04 0.000000000E+00 0.000000000E+00 0.000000000E+00 00105
+ -0.126889588E-02 0.000000000E+00 0.000000000E+00 0.000000000E+00 00060
+  0.318778677E-02 0.000000000E+00 0.000000000E+00 0.000000000E+00 00051
+  0.474276817E-02 0.000000000E+00 0.000000000E+00 0.000000000E+00 00042
+  0.108549858E-04 0.000000000E+00 0.000000000E+00 0.000000000E+00 00033
+  0.908354900E-04 0.000000000E+00 0.000000000E+00 0.000000000E+00 00024
+  0.311879063E-05 0.000000000E+00 0.000000000E+00 0.000000000E+00 00015
+  0.232698271E-05 0.000000000E+00 0.000000000E+00 0.000000000E+00 00006
+ ---------------------------------------------------------------------
diff --git a/examples/PARAM/sos_recon_coeff.dat b/examples/PARAM/sos_recon_coeff.dat
new file mode 100644
index 0000000000000000000000000000000000000000..dde306f6fd3d4b48ff946c291339a0aa6e6fcbe3
--- /dev/null
+++ b/examples/PARAM/sos_recon_coeff.dat
@@ -0,0 +1,267 @@
+ ---------------------------------------------------------------------
+   .379139198E-01  .842839975E-03 -.165349417E-01  1.09008330     1000
+  -.340475497     -.190557451E-03 -.303884217E-01  .864312703E-01 0100
+   .412883275E-04 -.183808587      .979733182      .254302566E-02 0010
+   .815995425E-03  .575826053E-01 -5.49469348     -.117673035     0001
+  -.528286695E-01 -.422038183E-01  .689674787E-01  .795969827     2000
+  -.280522018E-01 -.615710778E-01 -.407260139E-01  3.54822776     1100
+   .580273258E-01  2.36544241      1.35260940      .230035665     1010
+  -.248614039     -14.5575974      7.01872929     -1.25071096     1001
+  -.252140610     -.101163199E-01 -.156760594E-01 -1.48667569     0200
+  -.811528766E-01  .901049007     -4.92046279      .288221600     0110
+  -.820406238E-01 -5.72170059      4.90060419     -.587392000     0101
+   .591913926E-01  .442996896E-01 -.230355364      .173773836     0020
+  -.219573091      .138562767      1.13340742     -5.56476527     0011
+   .183157973     -.826984028     -1.15673466      16.2159664     0002
+   .141613116      .563557025E-01 -.132614085      .893431379     3000
+  -.736574959     -.239878097      .448683179      6.22480992     2100
+  -.147618189      5.49472968     -3.14205915     -1.26710492     2010
+   .697380983      1.62324987     -12.8412738      6.95062674     2001
+   .799836904     -.338942744E-01 -.339159381      4.84876509     1200
+   1.04463497      5.12456575      11.5182373      .161979673     1110
+  -5.73077452     -65.4895006      21.7592854     -5.62857441     1101
+  -.940144651E-01  .729997893     -1.23899720      3.93503678     1020
+   .445867546     -5.51357171      1.00751517     -28.1235302     1011
+   5.30156098      6.84633968      19.6403132      16.8571460     1002
+  -3.12917608      .584819316      1.22766131     -2.41644263     0300
+   .446613746     -21.0828990      9.59314583     -5.28850025     0210
+  -3.88969612      80.7762158     -64.0493585      22.3948037     0201
+  -1.65486895      .429698026      7.45203435     -10.9048792     0120
+   15.9989982     -8.21241443     -75.9609989      81.9559180     0111
+  -60.4402763      21.2298911      212.509960     -248.259132     0102
+   .604652321      1.53919563      5.35871564     -6.62271245     0030
+  -9.25519025     -31.3433274     -16.5768903      38.0695796     0021
+   38.5001423      192.329974      34.8941730     -88.1044751     0012
+  -43.0872876     -450.298401     -695.196371      496.318701     0003
+  -.280910732      .110007520     -1.29442669     -6.87528629     4000
+   1.70456640     -.790200026E-01  3.24383795     -7.35688444     3100
+  -.980466960     -11.2835109      15.9675705     -14.5026852     3010
+   2.57242009      38.4628243     -12.1845687      66.4941464     3001
+  -3.08843217      .385636778     -2.10129804      32.8640525     2200
+   5.90646560      48.5058838     -79.1614198     -9.58971005     2110
+  -10.4317985     -17.6586954      56.1703738      103.838657     2101
+  -.495166447      .291029779      8.65190371     -61.9746102     2020
+   11.1187517     -13.7564113     -44.1495212      750.712571     2011
+  -29.1394954      29.2851208      7.16099318     -1767.78840     2002
+  -9.07930174      .465978293      .933872266     -16.0084695     1300
+  -1.83572469     -52.4119547      134.467671     -26.5805950     1210
+  -10.6276201     -115.283001     -131.157302      95.6252426     1201
+  -11.6763151      3.96624253      25.5702701     -120.170295     1120
+   81.2559728      24.2679709     -225.807372      1137.51843     1111
+  -112.359178     -116.026197      479.835157     -3361.40683     1102
+  -5.29485259     -39.0977840      114.868020     -29.3504217     1030
+   52.9540035      435.131830     -1915.00058      456.800801     1021
+  -255.245852     -1998.72127      10430.0610     -3507.86935     1012
+   710.282918      3346.50103     -18642.5174      9294.88698     1003
+   5.47692943     -3.42404936      .398772011      26.3688033     0400
+  -7.02852980      36.0408590     -125.997347      12.0775052     0310
+   26.0411563     -59.5277011      195.059592     -.870074117     0301
+  -1.70642864     -8.05137099      66.2405899     -108.403205     0220
+   116.037347      25.1955957     -419.542715      685.197915     0211
+  -498.764979     -12.3929700      868.952277     -1583.11852     0202
+  -11.4654209      3.91337164      105.681673      .948774663     0130
+   182.564797      367.199616     -3314.03838      275.734707     0121
+  -785.464215     -1180.95553      21302.3634     -3567.09815     0112
+   1074.60409     -936.552421     -39399.4921      14185.0001     0103
+   27.3214997     -32.7467761      27.7875506     -31.0089464     0040
+  -72.0083764      499.365480      171.394594     -263.310809     0031
+  -1228.82936     -3038.62107     -5146.59971      3660.01403     0022
+   6990.44924      7629.29170      26216.2932     -19292.3817     0013
+  -12389.5540     -5952.19133     -40019.6818      27353.7886     0004
+   .233451694     -.725229200      4.49313708     -43.3437356     5000
+  -2.63479797      2.33506679     -12.0336095     -40.6088590     4100
+   2.80978052      56.6704274     -103.441626     -72.3865672     4010
+  -7.68051561     -132.315167      517.040649      601.038133     4001
+   1.55805319     -3.82640802      15.5718115      47.3538727     3200
+  -17.8565522     -346.988718      507.124617     -323.449119     3110
+   59.8473991      827.189754     -1801.08879      1569.31536     3101
+  -4.92016617     -7.94687178      12.2896473     -135.280605     3020
+   56.5503782      109.903033     -172.184206      2326.00503     3011
+  -184.441942     -120.544100      410.841450     -5124.02325     3002
+   34.2299151     -5.62614655     -19.6635668      28.5705216     2300
+   50.2036531      730.763870     -1384.99022      323.129619     2210
+  -92.7242514     -1185.38953      3546.92453     -1234.40563     2201
+  -21.1694556     -4.26971067     -187.353025     -263.232713     2120
+   50.8019739     -9.39109616      1961.55237      2703.80378     2111
+   407.045396      336.291695     -4962.65404     -7780.19411     2102
+  -32.8883563     -267.260855     -481.397420     -103.624057     2030
+   553.125925      3101.61079      6834.48349      6266.75033     2021
+  -2233.40649     -10995.3016     -40114.5660     -41964.2086     2012
+   1986.62069      12638.4725      95744.3925      70261.8242     2003
+  -157.435585      19.8341717      13.9972473      315.679803     1400
+  -52.8533936     -330.790519      1380.72305     -25.2066060     1310
+   43.1893277     -589.102339     -2937.18781      26.6981676     1301
+  -.131234530     -112.413423     -23.3238739      1664.16589     1220
+   284.871958      401.268662      200.871609     -12034.7631     1211
+  -1481.98521     -206.864693     -1872.19232      21158.0840     1202
+  -26.4458611     -371.408877     -1592.68708      147.661187     1130
+  -376.587514      3004.18852      14892.4013      5188.12933     1121
+   2666.07022     -20519.1906     -55737.5598     -46520.0024     1112
+  -2562.26184      61442.9024      72144.0869      108561.498     1103
+   15.2846925     -178.339099      98.7028679      778.606191     1040
+   259.514383      2089.90320      1620.09957     -20530.4149     1031
+  -972.532761     -10654.4336     -22167.5340      179631.580     1022
+  -6644.40422      31062.5766      95321.3704     -687066.885     1013
+   18138.9284     -39607.3611     -127382.262      803139.181     1004
+   260.033050     -9.37175174     -1.22854324     -149.131593     0500
+   12.9346160     -209.050875     -1828.13619      367.568826     0410
+   1.03860566      1642.89764      6259.32653     -1101.69817     0401
+   228.168555      47.9387217     -1007.66858     -1366.33588     0320
+  -2473.77471      401.516926      8723.22926      10463.1494     0311
+   7453.65344     -2459.90132     -20213.8613     -11893.8889     0302
+   43.0657501      2527.25046     -3579.69004     -265.543867     0230
+   85.9932457     -26732.0327      29217.0535      9454.46277     0221
+  -1310.73720      95335.7974     -74758.8642     -71048.3225     0212
+   1714.54526     -88924.4487      80562.0556      168080.435     0203
+   392.721684      363.565031     -671.427466     -301.828056     0140
+  -4902.70897     -5019.37580      3974.69466      12449.5401     0131
+   15252.5174      23287.3413      5749.87907     -48658.7614     0122
+   24169.2549     -36349.3754     -39136.7356     -186715.777     0113
+  -104121.773      895.479217     -3184.62532      792792.749     0104
+   41.5090986     -1148.66253     -1959.97263      651.990633     0050
+  -902.499745      24376.2669      13971.6905     -6281.70119     0041
+   8862.26009     -201261.260     -102332.755      6816.59750     0032
+  -33284.0983      822732.760      1107381.57      144256.913     0023
+   37274.2374     -1756990.04     -5432659.57     -988369.924     0014
+   3194.06668      1808484.40      9426156.81      2089893.33     0005
+  -.734005948      .000000000E+00  .000000000E+00  101.080958     6000
+   4.03546917      .000000000E+00  .000000000E+00 -235.474771     5100
+   .000000000E+00 -48.0176565      274.841961      .000000000E+00 5010
+   .000000000E+00  97.8419414     -1415.79591      .000000000E+00 5001
+   2.05839214      .000000000E+00  .000000000E+00 -174.906709     4200
+   .000000000E+00  811.417591     -1360.99969      .000000000E+00 4110
+   .000000000E+00 -2087.95015      5179.72150      .000000000E+00 4101
+  -24.6478776      .000000000E+00  .000000000E+00  1387.09849     4020
+   209.361971      .000000000E+00  .000000000E+00 -13347.2648     4011
+  -506.249544      .000000000E+00  .000000000E+00  25591.7786     4002
+  -35.9951898      .000000000E+00  .000000000E+00  1370.20393     3300
+   .000000000E+00 -3600.45042      3538.05250      .000000000E+00 3210
+   .000000000E+00  7524.67426     -10368.9029      .000000000E+00 3201
+   16.7701194      .000000000E+00  .000000000E+00  1785.11257     3120
+   448.015228      .000000000E+00  .000000000E+00 -12501.4175     3111
+  -2582.00272      .000000000E+00  .000000000E+00  70665.3189     3102
+   .000000000E+00  26.3558036     -3598.27809      .000000000E+00 3030
+   .000000000E+00 -1707.32364      32248.0060      .000000000E+00 3021
+   .000000000E+00  2366.24326     -95444.5145      .000000000E+00 3012
+   .000000000E+00  3260.93076      58043.6500      .000000000E+00 3003
+   85.1713624      .000000000E+00  .000000000E+00 -2956.22410     2400
+   .000000000E+00  7780.01535     -2907.83488      .000000000E+00 2310
+   .000000000E+00 -14636.9488      8134.53415      .000000000E+00 2301
+  -301.445311      .000000000E+00  .000000000E+00  4634.51958     2220
+   509.781116      .000000000E+00  .000000000E+00 -23255.2766     2211
+   3016.84963      .000000000E+00  .000000000E+00 -2992.69769     2202
+   .000000000E+00 -2765.24904      2365.34945      .000000000E+00 2130
+   .000000000E+00  29060.8651      30172.3857      .000000000E+00 2121
+   .000000000E+00 -105263.627     -343723.291      .000000000E+00 2112
+   .000000000E+00  164542.543      859596.652      .000000000E+00 2103
+   617.734883      .000000000E+00  .000000000E+00  13164.1544     2040
+  -9762.94511      .000000000E+00  .000000000E+00 -329312.117     2031
+   61777.0098      .000000000E+00  .000000000E+00  2755829.40     2022
+  -188522.811      .000000000E+00  .000000000E+00 -9589667.98     2013
+   293596.776      .000000000E+00  .000000000E+00  11777955.3     2004
+   155.742569      .000000000E+00  .000000000E+00  8004.70162     1500
+   .000000000E+00 -10710.7950     -3347.29371      .000000000E+00 1410
+   .000000000E+00  26613.4941      7824.54712      .000000000E+00 1401
+   1595.56179      .000000000E+00  .000000000E+00 -13614.5237     1320
+  -2346.18950      .000000000E+00  .000000000E+00  69708.0101     1311
+  -14502.8338      .000000000E+00  .000000000E+00 -54026.6988     1302
+   .000000000E+00  10576.5378      15937.5378      .000000000E+00 1230
+   .000000000E+00 -62086.0056     -76687.9044      .000000000E+00 1221
+   .000000000E+00 -55297.1950     -298675.928      .000000000E+00 1212
+   .000000000E+00  588445.113      1388085.99      .000000000E+00 1203
+  -597.751474      .000000000E+00  .000000000E+00  2913.83304     1140
+   6306.24490      .000000000E+00  .000000000E+00 -120786.591     1131
+   9249.80576      .000000000E+00  .000000000E+00  1516439.68     1122
+  -392504.112      .000000000E+00  .000000000E+00 -7016627.96     1113
+   1095950.97      .000000000E+00  .000000000E+00  9306653.35     1104
+   .000000000E+00 -8733.05877     -8552.74975      .000000000E+00 1050
+   .000000000E+00  137325.477      352699.311      .000000000E+00 1041
+   .000000000E+00 -910386.624     -3196889.05      .000000000E+00 1032
+   .000000000E+00  3234363.59      10796249.9      .000000000E+00 1023
+   .000000000E+00 -7252714.69     -10916643.6      .000000000E+00 1014
+   .000000000E+00  9543523.46     -6478540.83      .000000000E+00 1005
+   187.600021      .000000000E+00  .000000000E+00 -7467.84730     0600
+   .000000000E+00  8248.31060      9123.23763      .000000000E+00 0510
+   .000000000E+00 -26718.3257     -20637.9818      .000000000E+00 0501
+  -972.185544      .000000000E+00  .000000000E+00  28252.5400     0420
+  -5564.66121      .000000000E+00  .000000000E+00 -252365.927     0411
+   37465.5972      .000000000E+00  .000000000E+00  611723.395     0402
+   .000000000E+00 -22890.0920      22487.2028      .000000000E+00 0330
+   .000000000E+00  229636.659     -133458.844      .000000000E+00 0321
+   .000000000E+00 -795394.324      102279.096      .000000000E+00 0312
+   .000000000E+00  1010473.66      227935.761      .000000000E+00 0303
+  -824.302042      .000000000E+00  .000000000E+00  6197.39315     0240
+  -2787.07768      .000000000E+00  .000000000E+00 -40717.8144     0231
+   192262.614      .000000000E+00  .000000000E+00 -104938.059     0222
+  -1015988.95      .000000000E+00  .000000000E+00  1807893.56     0213
+   1581572.44      .000000000E+00  .000000000E+00 -3864158.57     0204
+   .000000000E+00  4929.32145      8058.93465      .000000000E+00 0150
+   .000000000E+00 -157973.959      292812.788      .000000000E+00 0141
+   .000000000E+00  1124967.46     -4749970.24      .000000000E+00 0132
+   .000000000E+00 -1039698.52      25070359.8      .000000000E+00 0123
+   .000000000E+00 -14297693.9     -62207004.0      .000000000E+00 0114
+   .000000000E+00  38481213.4      72831847.8      .000000000E+00 0105
+  -5527.79362      .000000000E+00  .000000000E+00 -5997.21048     0060
+   80926.6935      .000000000E+00  .000000000E+00  130411.524     0051
+  -538292.630      .000000000E+00  .000000000E+00 -303996.532     0042
+   1573640.14      .000000000E+00  .000000000E+00 -2290518.44     0033
+   257457.657      .000000000E+00  .000000000E+00  6087225.09     0024
+  -9176115.43      .000000000E+00  .000000000E+00  5616794.55     0015
+   12403312.1      .000000000E+00  .000000000E+00  2571808.44     0006
+ -0.432787425     0.000000000E+00 0.000000000E+00 0.391005873     00001
+  0.111255322     0.000000000E+00 0.000000000E+00 0.801847205     10001
+ -0.222099911     0.000000000E+00 0.000000000E+00  1.39223024     01001
+  0.000000000E+00  1.05404300    -0.472399367     0.000000000E+00 00101
+  0.000000000E+00 -6.27039977      3.78630828     0.000000000E+00 00011
+  0.187705863E-01 0.000000000E+00 0.000000000E+00 0.288248330     00002
+  0.466755273E-01 0.000000000E+00 0.000000000E+00 0.544095505     20001
+  0.255381022E-01 0.000000000E+00 0.000000000E+00  7.40084080     11001
+ -0.695597072     0.000000000E+00 0.000000000E+00  2.94559377     02001
+  0.000000000E+00  2.46445435     -2.54411388     0.000000000E+00 10101
+  0.000000000E+00-0.875373764      2.46186900     0.000000000E+00 01101
+  0.206789175     0.000000000E+00 0.000000000E+00-0.296304303     00201
+  0.000000000E+00 0.328318087      2.21842346     0.000000000E+00 10011
+  0.000000000E+00 -17.7113496      10.4387423     0.000000000E+00 01011
+  -2.83396800     0.000000000E+00 0.000000000E+00-0.810485111     00111
+  0.333321181E-01 0.000000000E+00 0.000000000E+00 0.727649980     10002
+ -0.106615205     0.000000000E+00 0.000000000E+00  2.24994616     01002
+  0.000000000E+00-0.440727542E-01 0.829650831E-03 0.000000000E+00 00102
+   9.05531754     0.000000000E+00 0.000000000E+00  4.35294783     00021
+  0.000000000E+00  1.17053477    -0.377328467     0.000000000E+00 00012
+  0.462025566E-02 0.000000000E+00 0.000000000E+00 0.224334624     00003
+ -0.213218941E-01 0.000000000E+00 0.000000000E+00-0.231138001     30001
+  0.671951131     0.000000000E+00 0.000000000E+00  7.83883863     21001
+  -2.48151318     0.000000000E+00 0.000000000E+00  51.8024010     12001
+  -1.53316700     0.000000000E+00 0.000000000E+00 -12.1339968     03001
+  0.000000000E+00 -1.93828614     -1.12464412     0.000000000E+00 20101
+  0.000000000E+00  14.7092776     -10.0892893     0.000000000E+00 11101
+  0.000000000E+00 -7.70961193      11.6264715     0.000000000E+00 02101
+   1.21564770     0.000000000E+00 0.000000000E+00-0.997171793     10201
+  -2.13666486     0.000000000E+00 0.000000000E+00 -8.63467712     01201
+  0.000000000E+00 -5.64716834      6.40534160     0.000000000E+00 00301
+  0.000000000E+00  10.3926000     -4.84593297     0.000000000E+00 20011
+  0.000000000E+00 -16.1788532      21.9577619     0.000000000E+00 11011
+  0.000000000E+00 -39.5563571      24.3791266     0.000000000E+00 02011
+  -8.29395208     0.000000000E+00 0.000000000E+00 -12.3262090     10111
+   14.3644302     0.000000000E+00 0.000000000E+00  66.1129198     01111
+  0.000000000E+00 -11.0477274     -7.23587036     0.000000000E+00 00211
+  0.254197599E-01 0.000000000E+00 0.000000000E+00 0.395279317     20002
+  0.219900371E-01 0.000000000E+00 0.000000000E+00  11.1361643     11002
+ -0.763757716     0.000000000E+00 0.000000000E+00  11.5920111     02002
+  0.000000000E+00 -1.23069700     0.143156389     0.000000000E+00 10102
+  0.000000000E+00  5.40559063     -2.75062054     0.000000000E+00 01102
+  0.489849474E-01 0.000000000E+00 0.000000000E+00-0.413153323     00202
+   3.71345858     0.000000000E+00 0.000000000E+00  35.6736779     10021
+  -3.93972567     0.000000000E+00 0.000000000E+00 -139.812832     01021
+  0.000000000E+00  271.617600     -130.343209     0.000000000E+00 00121
+  0.000000000E+00 0.685511203     0.670438936     0.000000000E+00 10012
+  0.000000000E+00 -12.9229381      10.2806595     0.000000000E+00 01012
+ -0.469630205E-01 0.000000000E+00 0.000000000E+00 0.929541757E-01 00112
+  0.165068696E-01 0.000000000E+00 0.000000000E+00 0.666969645     10003
+ -0.495401630E-01 0.000000000E+00 0.000000000E+00  3.03133290     01003
+  0.000000000E+00 0.265342622    -0.214067719     0.000000000E+00 00103
+  0.000000000E+00 -745.760209      400.637642     0.000000000E+00 00031
+  -1.44823908     0.000000000E+00 0.000000000E+00  1.73786094     00022
+  0.000000000E+00 -1.62597887      1.25528356     0.000000000E+00 00013
+  0.169392626E-02 0.000000000E+00 0.000000000E+00 0.195681174     00004
+ ---------------------------------------------------------------------
diff --git a/src/THcHallCSpectrometer.cxx b/src/THcHallCSpectrometer.cxx
index a23020b9d2360b14f8ab4dba763b1af4e186a06e..fad38103fd1c5ce2a9cddfa29b5f13148c19ec8e 100644
--- a/src/THcHallCSpectrometer.cxx
+++ b/src/THcHallCSpectrometer.cxx
@@ -44,18 +44,16 @@
 
 #include "THcHallCSpectrometer.h"
 #include "THaTrackingDetector.h"
+#include "THcGlobals.h"
+#include "THcParmList.h"
 #include "THaTrack.h"
 #include "THaTrackProj.h"
 #include "THaTriggerTime.h"
 #include "TMath.h"
 #include "TList.h"
 
-#include "TList.h"
-#include "TMath.h"
-
-#ifdef WITH_DEBUG
 #include <iostream>
-#endif
+#include <fstream>
 
 using namespace std;
 
@@ -95,23 +93,194 @@ Bool_t THcHallCSpectrometer::GetTrSorting() const
 }
  
 //_____________________________________________________________________________
-Int_t THcHallCSpectrometer::FindVertices( TClonesArray& tracks )
+void THcHallCSpectrometer::InitializeReconstruction()
+{
+  fNReconTerms = 0;
+  for(Int_t i=0;i<fNReconTerms;i++) {
+    for(Int_t j=0;j<4;j++) {
+      fReconCoeff[i][j] = 0.0;
+    }
+    for(Int_t j=0;j<5;j++) {
+      fReconExponents[i][j] = 0;
+    }
+  }
+  fAngSlope_x = 0.0;
+  fAngSlope_y = 0.0;
+  fAngOffset_x = 0.0;
+  fAngOffset_y = 0.0;
+  fDetOffset_x = 0.0;
+  fDetOffset_y = 0.0;
+  fZTrueFocus = 0.0;
+}
+//_____________________________________________________________________________
+Int_t THcHallCSpectrometer::ReadDatabase( const TDatime& date )
 {
-  // Reconstruct target coordinates for all tracks found in the focal plane.
 
-  TIter nextTrack( fTrackingDetectors );
+  static const char* const here = "THcHallCSpectrometer::ReadDatabase";
 
-  nextTrack.Reset();
-  while( THaTrackingDetector* theTrackDetector =
-	 static_cast<THaTrackingDetector*>( nextTrack() )) {
 #ifdef WITH_DEBUG
-    if( fDebug>1 ) cout << "Call FineTrack() for " 
-			<< theTrackDetector->GetName() << "... ";
+  cout << "In THcHallCSpectrometer::ReadDatabase()" << endl;
 #endif
-    theTrackDetector->FindVertices( tracks );
-#ifdef WITH_DEBUG
-    if( fDebug>1 ) cout << "done.\n";
+
+  // Get the matrix element filename from the variable store
+  // Read in the matrix
+
+  InitializeReconstruction();
+
+  char prefix[2];
+
+  cout << " GetName() " << GetName() << endl;
+
+  prefix[0]=tolower(GetName()[0]);
+  prefix[1]='\0';
+
+  string reconCoeffFilename;
+  DBRequest list[]={
+    {"_recon_coeff_filename",&reconCoeffFilename,kString},
+    {"theta_offset",&fThetaOffset,kDouble},
+    {"phi_offset",&fPhiOffset,kDouble},
+    {"delta_offset",&fDeltaOffset,kDouble},
+    {"pcentral",&fPCentral,kDouble},
+    {0}
+  };
+  gHcParms->LoadParmValues((DBRequest*)&list,prefix);
+
+  ifstream ifile;
+  ifile.open(reconCoeffFilename.c_str());
+  if(!ifile.is_open()) {
+    Error(here, "error opening reconstruction coefficient file %s",reconCoeffFilename.c_str());
+    return kInitError; // Is this the right return code?
+  }
+  
+  string line="!";
+  int good=1;
+  while(good && line[0]=='!') {
+    good = getline(ifile,line).good();
+    cout << line << endl;
+  }
+  // Read in focal plane rotation coefficients
+  // Probably not used, so for now, just paste in fortran code as a comment
+  while(good && line.compare(0,4," ---")!=0) {
+    //  if(line(1:13).eq.'h_ang_slope_x')read(line,1201,err=94)h_ang_slope_x
+    //  if(line(1:13).eq.'h_ang_slope_y')read(line,1201,err=94)h_ang_slope_y
+    //  if(line(1:14).eq.'h_ang_offset_x')read(line,1201,err=94)h_ang_offset_x
+    //  if(line(1:14).eq.'h_ang_offset_y')read(line,1201,err=94)h_ang_offset_y
+    //  if(line(1:14).eq.'h_det_offset_x')read(line,1201,err=94)h_det_offset_x
+    //  if(line(1:14).eq.'h_det_offset_y')read(line,1201,err=94)h_det_offset_y
+    //  if(line(1:14).eq.'h_z_true_focus')read(line,1201,err=94)h_z_true_focus
+    good = getline(ifile,line).good();
+  }
+  // Read in reconstruction coefficients and exponents
+  line=" ";
+  good = getline(ifile,line).good();
+  cout << line << endl;
+  fNReconTerms = 0;
+  cout << "Reading matrix elements" << endl;
+  while(good && line.compare(0,4," ---")!=0) {
+    if(fNReconTerms >= fMaxReconElements) {
+      Error(here, "too much data in reconstruction coefficient file %s",reconCoeffFilename.c_str());
+      return kInitError; // Is this the right return code?
+    }
+#if 0
+    Double_t x,y,z,t;
+    Int_t a,b,c,d,e;
+    sscanf(line.c_str()," %le %le %le %le %1d%1d%1d%1d%1d",&x,&y,&z,&t,
+	   &a,&b,&c,&d,&e);
+    cout << x << " " << y << " " << z << " " << t << " "
+	 << a << b << c << d << endl;
 #endif
+    sscanf(line.c_str()," %le %le %le %le %1d%1d%1d%1d%1d"
+	   ,&fReconCoeff[fNReconTerms][0],&fReconCoeff[fNReconTerms][1]
+	   ,&fReconCoeff[fNReconTerms][2],&fReconCoeff[fNReconTerms][3]
+	   ,&fReconExponents[fNReconTerms][0]
+	   ,&fReconExponents[fNReconTerms][1]
+	   ,&fReconExponents[fNReconTerms][2]
+	   ,&fReconExponents[fNReconTerms][3]
+	   ,&fReconExponents[fNReconTerms][4]);
+    // Parse line into fReconCoeff[fNReconTerms][0 - 3] and
+    //                 fReconExponents[fNReconTerms][0 - 5]
+    fNReconTerms++;
+    good = getline(ifile,line).good();    
+  }
+#if 0
+  cout << fNReconTerms << " Reconstruction terms" << endl;
+  for (Int_t i=0;i<fNReconTerms;i++) {
+    cout << fReconCoeff[i][0] << " " << fReconCoeff[i][1] << " "
+	 << fReconCoeff[i][2] << " " << fReconCoeff[i][3] << " "
+	 << fReconExponents[i][0] << fReconExponents[i][1]
+	 << fReconExponents[i][2] << fReconExponents[i][3]
+	 << fReconExponents[i][4] << endl;
+  }
+#endif
+  if(!good) {
+    Error(here, "error processing reconstruction coefficient file %s",reconCoeffFilename.c_str());
+    return kInitError; // Is this the right return code?
+  }
+
+  return kOK;
+}
+
+//_____________________________________________________________________________
+Int_t THcHallCSpectrometer::FindVertices( TClonesArray& tracks )
+{
+  // Reconstruct target coordinates for all tracks found in the focal plane.
+
+  // In Hall A, this is passed off to the tracking detectors.
+  // In Hall C, we do the target traceback here since the traceback should
+  // not depend on which tracking detectors are used.
+
+  cout << "In THcHallCSpectrometer::FindVertices" << endl;
+  for (Int_t it=0;it<tracks.GetLast()+1;it++) {
+    THaTrack* track = static_cast<THaTrack*>( tracks[it] );
+
+    Double_t hut[5];
+    Double_t hut_rot[5];
+    
+    hut[0] = track->GetX()/100.0 + fZTrueFocus*track->GetTheta() + fDetOffset_x;//m
+    hut[1] = track->GetTheta() + fAngOffset_x;//radians
+    hut[2] = track->GetY()/100.0 + fZTrueFocus*track->GetPhi() + fDetOffset_y;//m
+    hut[3] = track->GetPhi() + fAngOffset_y;//radians
+
+    Double_t gbeam_y = 0.0;// This will be the y position from the fast raster
+
+    hut[4] = -gbeam_y/100.0;
+
+    // Retrieve the focal plane coordnates
+    // Do the transpormation
+    // Stuff results into track
+    hut_rot[0] = hut[0];
+    hut_rot[1] = hut[1] + hut[0]*fAngSlope_x;
+    hut_rot[2] = hut[2];
+    hut_rot[3] = hut[3] + hut[2]*fAngSlope_y;
+    hut_rot[4] = hut[4];
+
+    // Compute COSY sums
+    Double_t sum[4];
+    for(Int_t k=0;k<4;k++) {
+      sum[k] = 0.0;
+    }
+    for(Int_t iterm=0;iterm<fNReconTerms;iterm++) {
+      Double_t term=1.0;
+      for(Int_t j=0;j<5;j++) {
+	if(fReconExponents[iterm][j]!=0) {
+	  term *= pow(hut_rot[j],fReconExponents[iterm][j]);
+	}
+      }
+      for(Int_t k=0;k<4;k++) {
+	sum[k] += term*fReconCoeff[iterm][k];
+      }
+    }
+    // Transfer results to track
+    // No beam raster yet
+    //; In transport coordinates phi = hyptar = dy/dz and theta = hxptar = dx/dz 
+    //;    but for unknown reasons the yp offset is named  htheta_offset
+    //;    and  the xp offset is named  hphi_offset
+
+    track->SetTarget(0.0, sum[1]*100.0, sum[0]+fPhiOffset, sum[2]+fThetaOffset);
+    track->SetDp(sum[3]*100.0+fDeltaOffset);	// Percent.  (Don't think podd cares if it is % or fraction)
+    // There is an hpcentral_offset that needs to be applied somewhere.
+    // (happly_offs)
+    track->SetMomentum(fPCentral*(1+track->GetDp()/100.0));
   }
 
   // If enabled, sort the tracks by chi2/ndof
@@ -157,16 +326,19 @@ Int_t THcHallCSpectrometer::TrackTimes( TClonesArray* Tracks ) {
   // To be useful, a meaningful timing resolution should be assigned
   // to each Scintillator object (part of the database).
   
+#if 0
   if ( !Tracks ) return -1;
-  
+
   THaTrack *track=0;
   Int_t ntrack = GetNTracks();
 
+  THaTrack *track=0;
+
   // linear regression to:  t = t0 + pathl/(beta*c)
   //   where t0 is the time of the track at the reference plane (sc_ref).
   //   t0 and beta are solved for.
   //
-#if 0
+
   for ( Int_t i=0; i < ntrack; i++ ) {
     track = static_cast<THaTrack*>(Tracks->At(i));
     THaTrackProj* tr_ref = static_cast<THaTrackProj*>
diff --git a/src/THcHallCSpectrometer.h b/src/THcHallCSpectrometer.h
index f560bbff1dba69b8887ebcee648add6c155bfd2e..356e6cf3d5df335364be9ada63416c70074740b8 100644
--- a/src/THcHallCSpectrometer.h
+++ b/src/THcHallCSpectrometer.h
@@ -17,14 +17,35 @@ public:
   THcHallCSpectrometer( const char* name, const char* description );
   virtual ~THcHallCSpectrometer();
 
+  virtual Int_t   ReadDatabase( const TDatime& date );
   virtual Int_t   FindVertices( TClonesArray& tracks );
   virtual Int_t   TrackCalc();
   virtual Int_t   TrackTimes( TClonesArray* tracks );
 
   Bool_t SetTrSorting( Bool_t set = kFALSE );
   Bool_t GetTrSorting() const;
-  
+
 protected:
+  void InitializeReconstruction();
+
+  // Should look at the ThaMatrixElement class in THaVDC.h for better way
+  // to store matrix element data
+#define fMaxReconElements 1000
+  Int_t fNReconTerms;
+  Double_t fReconCoeff[fMaxReconElements][4];
+  Int_t fReconExponents[fMaxReconElements][5];
+  Double_t fAngSlope_x;
+  Double_t fAngSlope_y;
+  Double_t fAngOffset_x;
+  Double_t fAngOffset_y;
+  Double_t fDetOffset_x;
+  Double_t fDetOffset_y;
+  Double_t fZTrueFocus;
+  Double_t fThetaOffset;
+  Double_t fPhiOffset;
+  Double_t fDeltaOffset;
+  Double_t fPCentral;
+
   //  THaScintillator *sc_ref;  // calculate time track hits this plane
 
   // Flag for fProperties indicating that tracks are to be sorted by chi2