diff --git a/DEF-files/HMS/PRODUCTION/EPICS/hepics_vars.def b/DEF-files/HMS/PRODUCTION/EPICS/hepics_vars.def
index 4fd6b0b4c70446379fac95e06ad746c3bcf6f314..314810bc43f8faa6cc0bba3b1d465c5c2c19b77d 100644
--- a/DEF-files/HMS/PRODUCTION/EPICS/hepics_vars.def
+++ b/DEF-files/HMS/PRODUCTION/EPICS/hepics_vars.def
@@ -32,5 +32,4 @@ IPM3H07B.YRAW
 IPM3H07C.XRAW
 IPM3H07C.YRAW
 
-
-end epics
\ No newline at end of file
+end epics
diff --git a/SCRIPTS/src/replay_hms.cxx b/SCRIPTS/src/replay_hms.cxx
index 0814ed8e277f3b245c78f9d37715618d5e2e708c..db56e4652f7aad0b3e0a240859ea2f6fc0943fa6 100644
--- a/SCRIPTS/src/replay_hms.cxx
+++ b/SCRIPTS/src/replay_hms.cxx
@@ -25,6 +25,7 @@ using namespace std;
 #include "THcGlobals.h"
 #include "THcHallCSpectrometer.h"
 #include "THcHelicity.h"
+#include "THcHelicityScaler.h"
 #include "THcHodoEff.h"
 #include "THcHodoscope.h"
 #include "THcParmList.h"
@@ -190,6 +191,11 @@ int replay_hms(
   hscaler->SetUseFirstEvent(kTRUE);
   gHaEvtHandlers->Add(hscaler);
 
+  // helicity scaler
+  auto helscaler = new THcHelicityScaler("H", "Hall C helicity scalers");
+  hscaler->SetROC(5);
+  gHaEvtHandlers->Add(helscaler);
+
   // Add event handler for prestart event 125.
   THcConfigEvtHandler* hconfig = new THcConfigEvtHandler("hconfig", "Config Event type 125");
   gHaEvtHandlers->Add(hconfig);
diff --git a/SCRIPTS/src/replay_shms.cxx b/SCRIPTS/src/replay_shms.cxx
index 285d4d045cf2b6a0182f2f91aef61fecf6547491..133e60cd7d599293bc7b8e8767aa4989483202de 100644
--- a/SCRIPTS/src/replay_shms.cxx
+++ b/SCRIPTS/src/replay_shms.cxx
@@ -25,6 +25,7 @@ using namespace std;
 #include "THcGlobals.h"
 #include "THcHallCSpectrometer.h"
 #include "THcHelicity.h"
+#include "THcHelicityScaler.h"
 #include "THcHodoEff.h"
 #include "THcHodoscope.h"
 #include "THcParmList.h"
@@ -197,6 +198,11 @@ int replay_shms(
   pscaler->SetUseFirstEvent(kTRUE);
   gHaEvtHandlers->Add(pscaler);
 
+  // helicity scaler
+  auto helscaler = new THcHelicityScaler("P", "Hall C helicity scalers");
+  hscaler->SetROC(8);
+  gHaEvtHandlers->Add(helscaler);
+
   // Add event handler for prestart event 125.
   THcConfigEvtHandler* pconfig = new THcConfigEvtHandler("pconfig", "Config Event type 125");
   gHaEvtHandlers->Add(pconfig);
diff --git a/TEMPLATES/HMS/PRODUCTION/hstackana_production.template b/TEMPLATES/HMS/PRODUCTION/hstackana_production.template
index 34b02e99a34da829b2380d78fc70650e8e147a62..709ac837210f292ea5be9453f95a735b68740cab 100644
--- a/TEMPLATES/HMS/PRODUCTION/hstackana_production.template
+++ b/TEMPLATES/HMS/PRODUCTION/hstackana_production.template
@@ -11,34 +11,34 @@ Run Length   : {H.1MHz.scalerTime:%.3f} sec
 * Beamline
 ***********
 With no cuts on BCM{gBCM_Current_threshold_index+1}.
-  
-BCM1 Current: {H.BCM1.scalerCharge/H.1MHz.scalerTime:%.3f} uA		  
-BCM2 Current: {H.BCM2.scalerCharge/H.1MHz.scalerTime:%.3f} uA		 
-BCM4A Current: {H.BCM4A.scalerCharge/H.1MHz.scalerTime:%.3f} uA		  
-BCM4B Current: {H.BCM4B.scalerCharge/H.1MHz.scalerTime:%.3f} uA		 
-BCM4C Current: {H.BCM4C.scalerCharge/H.1MHz.scalerTime:%.3f} uA		 
-Unser Current: {H.Unser.scalerCharge/H.1MHz.scalerTime:%.3f} uA		  
+
+BCM1 Current: {H.BCM1.scalerCharge/H.1MHz.scalerTime:%.3f} uA
+BCM2 Current: {H.BCM2.scalerCharge/H.1MHz.scalerTime:%.3f} uA
+BCM4A Current: {H.BCM4A.scalerCharge/H.1MHz.scalerTime:%.3f} uA
+BCM4B Current: {H.BCM4B.scalerCharge/H.1MHz.scalerTime:%.3f} uA
+BCM4C Current: {H.BCM4C.scalerCharge/H.1MHz.scalerTime:%.3f} uA
+Unser Current: {H.Unser.scalerCharge/H.1MHz.scalerTime:%.3f} uA
 
 BCM1  Charge: {H.BCM1.scalerCharge:%.3f} uC
-BCM2  Charge: {H.BCM2.scalerCharge:%.3f} uC	
-BCM4A Charge: {H.BCM4A.scalerCharge:%.3f} uC		  
-BCM4B Charge: {H.BCM4B.scalerCharge:%.3f} uC		 
-BCM4C Charge: {H.BCM4C.scalerCharge:%.3f} uC		 
+BCM2  Charge: {H.BCM2.scalerCharge:%.3f} uC
+BCM4A Charge: {H.BCM4A.scalerCharge:%.3f} uC
+BCM4B Charge: {H.BCM4B.scalerCharge:%.3f} uC
+BCM4C Charge: {H.BCM4C.scalerCharge:%.3f} uC
 Unser Charge: {H.Unser.scalerCharge:%.3f} uC
 
 Cut on BCM{gBCM_Current_threshold_index+1} current of {gBCM_Current_threshold} uA. Beam over threshold for {H.1MHz.scalerTimeCut:%.3f}s, or {((H.1MHz.scalerTimeCut/H.1MHz.scalerTime)*100.):%.3f}% of total run time.
-BCM1 Beam Cut Current: {H.BCM1.scalerChargeCut/H.1MHz.scalerTimeCut:%.3f} uA		  
-BCM2 Beam Cut Current: {H.BCM2.scalerChargeCut/H.1MHz.scalerTimeCut:%.3f} uA		 
-BCM4A Beam Cut Current: {H.BCM4A.scalerChargeCut/H.1MHz.scalerTimeCut:%.3f} uA		  
-BCM4B Beam Cut Current: {H.BCM4B.scalerChargeCut/H.1MHz.scalerTimeCut:%.3f} uA		 
-BCM4C Beam Cut Current: {H.BCM4C.scalerChargeCut/H.1MHz.scalerTimeCut:%.3f} uA		 
-Unser Beam Cut Current: {H.Unser.scalerChargeCut/H.1MHz.scalerTimeCut:%.3f} uA		  
+BCM1 Beam Cut Current: {H.BCM1.scalerChargeCut/H.1MHz.scalerTimeCut:%.3f} uA
+BCM2 Beam Cut Current: {H.BCM2.scalerChargeCut/H.1MHz.scalerTimeCut:%.3f} uA
+BCM4A Beam Cut Current: {H.BCM4A.scalerChargeCut/H.1MHz.scalerTimeCut:%.3f} uA
+BCM4B Beam Cut Current: {H.BCM4B.scalerChargeCut/H.1MHz.scalerTimeCut:%.3f} uA
+BCM4C Beam Cut Current: {H.BCM4C.scalerChargeCut/H.1MHz.scalerTimeCut:%.3f} uA
+Unser Beam Cut Current: {H.Unser.scalerChargeCut/H.1MHz.scalerTimeCut:%.3f} uA
 
 BCM1  Beam Cut Charge: {H.BCM1.scalerChargeCut:%.3f} uC
 BCM2  Beam Cut Charge: {H.BCM2.scalerChargeCut:%.3f} uC
-BCM4A Beam Cut Charge: {H.BCM4A.scalerChargeCut:%.3f} uC		  
-BCM4B Beam Cut Charge: {H.BCM4B.scalerChargeCut:%.3f} uC		 
-BCM4C Beam Cut Charge: {H.BCM4C.scalerChargeCut:%.3f} uC		 
+BCM4A Beam Cut Charge: {H.BCM4A.scalerChargeCut:%.3f} uC
+BCM4B Beam Cut Charge: {H.BCM4B.scalerChargeCut:%.3f} uC
+BCM4C Beam Cut Charge: {H.BCM4C.scalerChargeCut:%.3f} uC
 Unser Beam Cut Charge: {H.Unser.scalerChargeCut:%.3f} uC
 
 ********************
@@ -134,8 +134,8 @@ HMS TRIG1 Computer Live Time : {(hms_trigs.npassed / (H.hTRIG1.scaler/ghconfig_t
 HMS TRIG2 Computer Live Time : {(hms_trigs.npassed / (H.hTRIG2.scaler/ghconfig_ti_ps_factors[1]))*100.0:%3.2f} %
 HMS TRIG3 Computer Live Time : {(hms_trigs.npassed / (H.hTRIG3.scaler/ghconfig_ti_ps_factors[2]))*100.0:%3.2f} %
 
-HMS Computer Live Time : {(hcut_TRIG1.npassed / H.hTRIG1.scaler)*100.0:%3.4f} % 
-HMS Computer Dead Time : {100.0 - (hcut_TRIG1.npassed / H.hTRIG1.scaler)*100.0:%3.4f} % 
+HMS Computer Live Time : {(hcut_TRIG1.npassed / H.hTRIG1.scaler)*100.0:%3.4f} %
+HMS Computer Dead Time : {100.0 - (hcut_TRIG1.npassed / H.hTRIG1.scaler)*100.0:%3.4f} %
 
 Pre-Scaled Ps1 HMS Computer Live Time : {(hcut_TRIG1.npassed / (H.hTRIG1.scaler/ghconfig_ti_ps_factors[0]))*100.0:%3.4f} %
 Pre-Scaled Ps1 HMS Computer Dead Time : {100.0 - (hcut_TRIG1.npassed / (H.hTRIG1.scaler/ghconfig_ti_ps_factors[0]))*100.0:%3.4f} %
@@ -179,12 +179,12 @@ EL-CLEAN Pre-Trigger 50 ns Gate  : {H.hTRIG3.scalerCut/H.1MHz.scalerTimeCut/1000
 = Hodoscopes
 =:=:=:=:=:=:=:
 
-H1X : {H.S1X.scalerCut} [ {(H.S1X.scalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ] AND between + and - sides of H1X 
+H1X : {H.S1X.scalerCut} [ {(H.S1X.scalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ] AND between + and - sides of H1X
 H1Y : {H.S1Y.scalerCut} [ {(H.S1Y.scalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ] AND between + and - sides of H1Y
 H2X : {H.S2X.scalerCut} [ {(H.S2X.scalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ] AND between + and - sides of H2X
 H2Y : {H.S2Y.scalerCut} [ {(H.S2Y.scalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ] AND between + and - sides of H2Y
 
-H1XH1Y : {H.S1XS1Y.scalerCut} [ {(H.S1XS1Y.scalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f}  kHz ] AND between H1X and H1Y planes 
+H1XH1Y : {H.S1XS1Y.scalerCut} [ {(H.S1XS1Y.scalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f}  kHz ] AND between H1X and H1Y planes
 H2XH2Y : {H.S2XS2Y.scalerCut} [ {(H.S2XS2Y.scalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f}  kHz ] AND between H2X and H2Y planes
 
 =:=:=:=:=:=:
@@ -205,10 +205,10 @@ DSUM :	     {H.DSUM.scalerCut}  [ {(H.DSUM.scalerCut/H.1MHz.scalerTimeCut)/1000.
 ****************
 
 hmsDC1Planes_large  Counts:{hmsDC1Planes_large.npassed} /hms_trigs : {hmsDC1Planes_large.npassed/hms_trigs.npassed}
-hmsDC2Planes_large  Counts:{hmsDC2Planes_large.npassed}  /hms_trigs : {hmsDC2Planes_large.npassed/hms_trigs.npassed}  
+hmsDC2Planes_large  Counts:{hmsDC2Planes_large.npassed}  /hms_trigs : {hmsDC2Planes_large.npassed/hms_trigs.npassed}
 
 hmsDC1Planes6       Counts:  {hmsDC1Planes6hits.npassed} /hms_trigs : {hmsDC1Planes6hits.npassed/hms_trigs.npassed}
-hmsDC2Planes6  	    Counts:  {hmsDC2Planes6hits.npassed} /hms_trigs : {hmsDC2Planes6hits.npassed/hms_trigs.npassed}  
+hmsDC2Planes6  	    Counts:  {hmsDC2Planes6hits.npassed} /hms_trigs : {hmsDC2Planes6hits.npassed/hms_trigs.npassed}
 
 hmsDC1x1Planes5	    Counts:  {hmsDC1_5hits_x1.npassed} eff : {hmsDC1_6hits_x1.npassed/hmsDC1_5hits_x1.npassed}
 hmsDC1u1Planes5	    Counts:  {hmsDC1_5hits_u1.npassed} eff : {hmsDC1_6hits_u1.npassed/hmsDC1_5hits_u1.npassed}
@@ -225,19 +225,19 @@ hmsDC2v2Planes5	    Counts:  {hmsDC2_5hits_v2.npassed} eff : {hmsDC2_6hits_v2.np
 hmsDC2x2Planes5	    Counts:  {hmsDC2_5hits_x2.npassed} eff : {hmsDC2_6hits_x2.npassed/hmsDC2_5hits_x2.npassed}
 
 I'm pretty sure that these are the "raw" number of counts. "Raw" means one or more hits per dc plane.
-hmsDC1_1hit_x1:      {hmsDC1_1hit_x1.npassed} 		
-hmsDC1_1hit_u1:      {hmsDC1_1hit_u1.npassed}		
-hmsDC1_1hit_u2:      {hmsDC1_1hit_u2.npassed}		
-hmsDC1_1hit_v1:      {hmsDC1_1hit_v1.npassed}		
-hmsDC1_1hit_u2:      {hmsDC1_1hit_u2.npassed}		
-hmsDC1_1hit_x2:      {hmsDC1_1hit_x2.npassed}		
-
-hmsDC2_1hit_x1:      {hmsDC2_1hit_x1.npassed}		
-hmsDC2_1hit_u1:      {hmsDC2_1hit_u1.npassed}		
-hmsDC2_1hit_u2:      {hmsDC2_1hit_u2.npassed}		
-hmsDC2_1hit_v1:      {hmsDC2_1hit_v1.npassed}		
-hmsDC2_1hit_u2:      {hmsDC2_1hit_u2.npassed}		
-hmsDC2_1hit_x2:      {hmsDC2_1hit_x2.npassed}		
+hmsDC1_1hit_x1:      {hmsDC1_1hit_x1.npassed}
+hmsDC1_1hit_u1:      {hmsDC1_1hit_u1.npassed}
+hmsDC1_1hit_u2:      {hmsDC1_1hit_u2.npassed}
+hmsDC1_1hit_v1:      {hmsDC1_1hit_v1.npassed}
+hmsDC1_1hit_u2:      {hmsDC1_1hit_u2.npassed}
+hmsDC1_1hit_x2:      {hmsDC1_1hit_x2.npassed}
+
+hmsDC2_1hit_x1:      {hmsDC2_1hit_x1.npassed}
+hmsDC2_1hit_u1:      {hmsDC2_1hit_u1.npassed}
+hmsDC2_1hit_u2:      {hmsDC2_1hit_u2.npassed}
+hmsDC2_1hit_v1:      {hmsDC2_1hit_v1.npassed}
+hmsDC2_1hit_u2:      {hmsDC2_1hit_u2.npassed}
+hmsDC2_1hit_x2:      {hmsDC2_1hit_x2.npassed}
 
 "Good" means one or two hits per dc plane.
 hcut_goodHDC1x1:	     {hcut_goodHDC1x1.npassed}	eff : {hcut_goodHDC1x1.npassed/(hms_trigs.npassed+.0001):%5.3f}
@@ -271,13 +271,13 @@ hcut_realhdc2u1:	     {hcut_realhdc2u1.npassed}
 hcut_realhdc2v1:	     {hcut_realhdc2v1.npassed}
 hcut_realhdc2v2:	     {hcut_realhdc2v2.npassed}
 hcut_realhdc2x2:	     {hcut_realhdc2x2.npassed}
-    	   	       
+
 **HODOSCOPE**
 "Any" means one or more hits per scint plane.
 hcut_anys1x:    	     {hcut_anys1x.npassed}	eff: {hcut_anys1x.npassed/(hms_trigs.npassed+.0001):%5.3f}	BAD = ??
 hcut_anys1y: 	     	     {hcut_anys1y.npassed}	eff: {hcut_anys1y.npassed/(hms_trigs.npassed+.0001):%5.3f}
 hcut_anys2x:	     	     {hcut_anys2x.npassed}	eff: {hcut_anys2x.npassed/(hms_trigs.npassed+.0001):%5.3f}
-hcut_anys2y: 	     	     {hcut_anys2y.npassed}	eff: {hcut_anys2y.npassed/(hms_trigs.npassed+.0001):%5.3f} 
+hcut_anys2y: 	     	     {hcut_anys2y.npassed}	eff: {hcut_anys2y.npassed/(hms_trigs.npassed+.0001):%5.3f}
 
 "Good" means one or two hits per scint plane.
 hcut_goods1x:  	     {hcut_goods1x.npassed}	 eff: {hcut_goods1x.npassed/(hms_trigs.npassed+.0001):%5.3f}	BAD = ??
@@ -289,13 +289,13 @@ hcut_goods2:	     {hcut_goods2.npassed}	 eff: {hcut_goods2.npassed/(hms_trigs.np
 hcut_goods1s2: 	     {hcut_goods1s2.npassed}       eff: {hcut_goods1s2.npassed/(hms_trigs.npassed+.0001):%5.3f}
 
 hcut_FoundTrack:	     {hcut_FoundTrack.npassed}	 eff: {hcut_FoundTrack.npassed/(hms_trigs.npassed+.0001):%5.3f}	BAD = ??
-hcut_Found1Track:	     {hcut_Found1Track.npassed}	 eff: {hcut_Found1Track.npassed/(hms_trigs.npassed+.0001):%5.3f} 
-hcut_Found2Track:	     {hcut_Found2Track.npassed}	 eff: {hcut_Found2Track.npassed/(hms_trigs.npassed+.0001):%5.3f} 
-hcut_Found3Track:	     {hcut_Found3Track.npassed}	 eff: {hcut_Found3Track.npassed/(hms_trigs.npassed+.0001):%5.3f} 
-hcut_Found4Track:	     {hcut_Found4Track.npassed}	 eff: {hcut_Found4Track.npassed/(hms_trigs.npassed+.0001):%5.3f} 
+hcut_Found1Track:	     {hcut_Found1Track.npassed}	 eff: {hcut_Found1Track.npassed/(hms_trigs.npassed+.0001):%5.3f}
+hcut_Found2Track:	     {hcut_Found2Track.npassed}	 eff: {hcut_Found2Track.npassed/(hms_trigs.npassed+.0001):%5.3f}
+hcut_Found3Track:	     {hcut_Found3Track.npassed}	 eff: {hcut_Found3Track.npassed/(hms_trigs.npassed+.0001):%5.3f}
+hcut_Found4Track:	     {hcut_Found4Track.npassed}	 eff: {hcut_Found4Track.npassed/(hms_trigs.npassed+.0001):%5.3f}
 
 hcut_Clean1Track:	     {hcut_Clean1Track.npassed}	 eff: {hcut_Clean1Track.npassed/(hms_trigs.npassed+.0001):%5.3f}	 BAD = ??
-hcut_Clean2Track:	     {hcut_Clean2Track.npassed}	 eff: {hcut_Clean2Track.npassed/(hms_trigs.npassed+.0001):%5.3f} 
+hcut_Clean2Track:	     {hcut_Clean2Track.npassed}	 eff: {hcut_Clean2Track.npassed/(hms_trigs.npassed+.0001):%5.3f}
 hcut_Clean3Track:	     {hcut_Clean3Track.npassed}	 eff: {hcut_Clean3Track.npassed/(hms_trigs.npassed+.0001):%5.3f}
 hcut_Clean4Track:	     {hcut_Clean4Track.npassed}	 eff: {hcut_Clean4Track.npassed/(hms_trigs.npassed+.0001):%5.3f}
 hcut_CleanTrack:	     {hcut_CleanTrack.npassed}	 eff: {hcut_CleanTrack.npassed/(hms_trigs.npassed+.0001):%5.3f}
@@ -372,7 +372,7 @@ hC	     Counts: {H.cal.stat_trksum3} eff : {H.cal.stat_hitsum3 / H.cal.stat_trks
 hD	     Counts: {H.cal.stat_trksum4} eff : {H.cal.stat_hitsum4 / H.cal.stat_trksum4}
 
 **************************
-* Hodoscope Efficiencies * 
+* Hodoscope Efficiencies *
 **************************
 
 Efficiencies for hodoscopes is the fraction of times scin. was hit when track
@@ -473,7 +473,7 @@ H1X7+:  {H.hod.1x7.negScalerCut} [ {(H.hod.1x7.negScalerCut/H.1MHz.scalerTimeCut
 H1X8+:  {H.hod.1x8.negScalerCut} [ {(H.hod.1x8.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 H1X9+:  {H.hod.1x9.negScalerCut} [ {(H.hod.1x9.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 H1X10+: {H.hod.1x10.negScalerCut} [ {(H.hod.1x10.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
-H1X11+: {H.hod.1x11.negScalerCut} [ {(H.hod.1x11.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ] 
+H1X11+: {H.hod.1x11.negScalerCut} [ {(H.hod.1x11.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 H1X12+: {H.hod.1x12.negScalerCut} [ {(H.hod.1x12.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 H1X13+: {H.hod.1x13.negScalerCut} [ {(H.hod.1x13.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 H1X14+: {H.hod.1x14.negScalerCut} [ {(H.hod.1x14.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
@@ -496,7 +496,7 @@ H1X13-: {H.hod.1x13.negScalerCut} [ {(H.hod.1x13.negScalerCut/H.1MHz.scalerTimeC
 H1X14-: {H.hod.1x14.negScalerCut} [ {(H.hod.1x14.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 H1X15-: {H.hod.1x15.negScalerCut} [ {(H.hod.1x15.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 H1X16-: {H.hod.1x16.negScalerCut} [ {(H.hod.1x16.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
- 
+
 H1Y1+:  {H.hod.1y1.negScalerCut} [ {(H.hod.1y1.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 H1Y2+:  {H.hod.1y2.negScalerCut} [ {(H.hod.1y2.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 H1Y3+:  {H.hod.1y3.negScalerCut} [ {(H.hod.1y3.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
@@ -555,7 +555,7 @@ H2X16-: {H.hod.2x16.negScalerCut} [ {(H.hod.2x16.negScalerCut/H.1MHz.scalerTimeC
 
 H2Y1+:  {H.hod.2y1.negScalerCut} [ {(H.hod.2y1.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 H2Y2+:  {H.hod.2y2.negScalerCut} [ {(H.hod.2y2.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
-H2Y3+:  {H.hod.2y3.negScalerCut} [ {(H.hod.2y3.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ] 
+H2Y3+:  {H.hod.2y3.negScalerCut} [ {(H.hod.2y3.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 H2Y4+:  {H.hod.2y4.negScalerCut} [ {(H.hod.2y4.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 H2Y5+:  {H.hod.2y5.negScalerCut} [ {(H.hod.2y5.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 H2Y6+:  {H.hod.2y6.negScalerCut} [ {(H.hod.2y6.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
@@ -573,4 +573,15 @@ H2Y6-:  {H.hod.2y6.negScalerCut} [ {(H.hod.2y6.negScalerCut/H.1MHz.scalerTimeCut
 H2Y7-:  {H.hod.2y7.negScalerCut} [ {(H.hod.2y7.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 H2Y8-:  {H.hod.2y8.negScalerCut} [ {(H.hod.2y8.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 H2Y9-:  {H.hod.2y9.negScalerCut} [ {(H.hod.2y9.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
-H2Y10-: {H.hod.2y10.negScalerCut} [ {(H.hod.2y10.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
\ No newline at end of file
+H2Y10-: {H.hod.2y10.negScalerCut} [ {(H.hod.2y10.negScalerCut/H.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
+
+Scalers     Gated Charge    Charge Asymmetry (ppm)
+BCM1:       {gH_hscaler_charge[0]:%12.2f}   {gH_hscaler_charge_asy[0]*1e6:%12.2f}
+BCM2:       {gH_hscaler_charge[1]:%12.2f}   {gH_hscaler_charge_asy[1]*1e6:%12.2f}
+BCM4A:      {gH_hscaler_charge[3]:%12.2f}   {gH_hscaler_charge_asy[3]*1e6:%12.2f}
+BCM4B:      {gH_hscaler_charge[4]:%12.2f}   {gH_hscaler_charge_asy[4]*1e6:%12.2f}
+BCM4C:      {gH_hscaler_charge[5]:%12.2f}   {gH_hscaler_charge_asy[5]*1e6:%12.2f}
+Unser:      {gH_hscaler_charge[2]:%12.2f}   {gH_hscaler_charge_asy[2]*1e6:%12.2f}
+Time(s):    {gH_hscaler_time:%12.2f}    {gH_hscaler_time_asy*1e6:%12.2f}
+Gates:      {(gH_hscaler_triggers_plus+gH_hscaler_triggers_minus):%12.2f}   {gH_hscaler_trigger_asy*1e6:%12.2f}
+
diff --git a/TEMPLATES/HMS/SCALERS/hscalers.template b/TEMPLATES/HMS/SCALERS/hscalers.template
index 58a121868a66a6ba626e076bd58d48d298d53b54..6b113481b26917aee5f37e5259e6b9133cd077bb 100644
--- a/TEMPLATES/HMS/SCALERS/hscalers.template
+++ b/TEMPLATES/HMS/SCALERS/hscalers.template
@@ -10,36 +10,36 @@ Run Length   : {H.1MHz.scalerTime:%.3f} sec
 ***********
 * Beamline
 ***********
-  
+
 With no cuts on BCM{gBCM_Current_threshold_index+1}.
-  
-BCM1 Current: {H.BCM1.scalerCharge/H.1MHz.scalerTime:%.3f} uA		  
-BCM2 Current: {H.BCM2.scalerCharge/H.1MHz.scalerTime:%.3f} uA		 
-BCM4A Current: {H.BCM4A.scalerCharge/H.1MHz.scalerTime:%.3f} uA		  
-BCM4B Current: {H.BCM4B.scalerCharge/H.1MHz.scalerTime:%.3f} uA		 
-BCM4C Current: {H.BCM4C.scalerCharge/H.1MHz.scalerTime:%.3f} uA		 
-Unser Current: {H.Unser.scalerCharge/H.1MHz.scalerTime:%.3f} uA		  
+
+BCM1 Current: {H.BCM1.scalerCharge/H.1MHz.scalerTime:%.3f} uA
+BCM2 Current: {H.BCM2.scalerCharge/H.1MHz.scalerTime:%.3f} uA
+BCM4A Current: {H.BCM4A.scalerCharge/H.1MHz.scalerTime:%.3f} uA
+BCM4B Current: {H.BCM4B.scalerCharge/H.1MHz.scalerTime:%.3f} uA
+BCM4C Current: {H.BCM4C.scalerCharge/H.1MHz.scalerTime:%.3f} uA
+Unser Current: {H.Unser.scalerCharge/H.1MHz.scalerTime:%.3f} uA
 
 BCM1  Charge: {H.BCM1.scalerCharge:%.3f} uC
-BCM2  Charge: {H.BCM2.scalerCharge:%.3f} uC	
-BCM4A Charge: {H.BCM4A.scalerCharge:%.3f} uC		  
-BCM4B Charge: {H.BCM4B.scalerCharge:%.3f} uC		 
-BCM4C Charge: {H.BCM4C.scalerCharge:%.3f} uC		 
+BCM2  Charge: {H.BCM2.scalerCharge:%.3f} uC
+BCM4A Charge: {H.BCM4A.scalerCharge:%.3f} uC
+BCM4B Charge: {H.BCM4B.scalerCharge:%.3f} uC
+BCM4C Charge: {H.BCM4C.scalerCharge:%.3f} uC
 Unser Charge: {H.Unser.scalerCharge:%.3f} uC
 
 Cut on BCM{gBCM_Current_threshold_index+1} current of {gBCM_Current_threshold} uA. Beam over threshold for {H.1MHz.scalerTimeCut:%.3f}s, or {((H.1MHz.scalerTimeCut/H.1MHz.scalerTime)*100.):%.3f}% of total run time.
-BCM1 Beam Cut Current: {H.BCM1.scalerCharge/H.1MHz.scalerTime:%.3f} uA		  
-BCM2 Beam Cut Current: {H.BCM2.scalerCharge/H.1MHz.scalerTime:%.3f} uA		 
-BCM4A Beam Cut Current: {H.BCM4A.scalerCharge/H.1MHz.scalerTime:%.3f} uA		  
-BCM4B Beam Cut Current: {H.BCM4B.scalerCharge/H.1MHz.scalerTime:%.3f} uA		 
-BCM4C Beam Cut Current: {H.BCM4C.scalerCharge/H.1MHz.scalerTime:%.3f} uA		 
-Unser Beam Cut Current: {H.Unser.scalerCharge/H.1MHz.scalerTime:%.3f} uA		  
+BCM1 Beam Cut Current: {H.BCM1.scalerCharge/H.1MHz.scalerTime:%.3f} uA
+BCM2 Beam Cut Current: {H.BCM2.scalerCharge/H.1MHz.scalerTime:%.3f} uA
+BCM4A Beam Cut Current: {H.BCM4A.scalerCharge/H.1MHz.scalerTime:%.3f} uA
+BCM4B Beam Cut Current: {H.BCM4B.scalerCharge/H.1MHz.scalerTime:%.3f} uA
+BCM4C Beam Cut Current: {H.BCM4C.scalerCharge/H.1MHz.scalerTime:%.3f} uA
+Unser Beam Cut Current: {H.Unser.scalerCharge/H.1MHz.scalerTime:%.3f} uA
 
 BCM1  Beam Cut Charge: {H.BCM1.scalerChargeCut:%.3f} uC
 BCM2  Beam Cut Charge: {H.BCM2.scalerChargeCut:%.3f} uC
-BCM4A Beam Cut Charge: {H.BCM4A.scalerChargeCut:%.3f} uC		  
-BCM4B Beam Cut Charge: {H.BCM4B.scalerChargeCut:%.3f} uC		 
-BCM4C Beam Cut Charge: {H.BCM4C.scalerChargeCut:%.3f} uC		 
+BCM4A Beam Cut Charge: {H.BCM4A.scalerChargeCut:%.3f} uC
+BCM4B Beam Cut Charge: {H.BCM4B.scalerChargeCut:%.3f} uC
+BCM4C Beam Cut Charge: {H.BCM4C.scalerChargeCut:%.3f} uC
 Unser Beam Cut Charge: {H.Unser.scalerChargeCut:%.3f} uC
 
 
@@ -58,7 +58,7 @@ Ps6_factor = {ghconfig_ti_ps_factors[5]}
 * Triggers
 ***********
 
-=:=:=:=:=:=:=:  
+=:=:=:=:=:=:=:
 = 3/4 Trigger
 =:=:=:=:=:=:=:
 
@@ -111,9 +111,9 @@ Estimated Physics 3/4 Triggers : {(H.hTRIG1.scalerRate - H.EDTM.scalerRate)*H.1M
 Physics 3/4 Trigger Rate       : {(H.hTRIG1.scalerRate - H.EDTM.scalerRate)/1000.:%.3f} kHz
 Accepted Physics Triggers      : {physics_accepted.npassed}
 
-=:=:=:=:=:=:=:=:  
+=:=:=:=:=:=:=:=:
 = HMS Triggers
-=:=:=:=:=:=:=:=: 
+=:=:=:=:=:=:=:=:
 
 hEL_LO_LO :	{H.hEL_LO_LO.scaler}	[ {(H.hEL_LO_LO.scaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
 hEL_LO    :	{H.hEL_LO.scaler}	[ {(H.hEL_LO.scaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
@@ -129,9 +129,9 @@ hTRIG4 : 	{H.hTRIG4.scaler} 	[ {(H.hTRIG4.scaler/H.1MHz.scalerTime)/1000.:%.3f}
 hTRIG5 :  	{H.hTRIG5.scaler} 	[ {(H.hTRIG5.scaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
 hTRIG6 :  	{H.hTRIG6.scaler} 	[ {(H.hTRIG6.scaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
 
-=:=:=:=:=:=:=:=: 
+=:=:=:=:=:=:=:=:
 = HMS Triggers
-=:=:=:=:=:=:=:=: 
+=:=:=:=:=:=:=:=:
 
 hEL_LO_LO :	{H.hEL_LO_LO.scaler}	[ {(H.hEL_LO_LO.scaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
 hEL_LO    :	{H.hEL_LO.scaler}	[ {(H.hEL_LO.scaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
@@ -158,8 +158,8 @@ hTRIG6_cut :  	{H.hTRIG6.scalerCut} 	[ {(H.hTRIG6.scaler/H.1MHz.scalerTime)/1000
 = Live/Dead Time Calculations
 =:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
 
-HMS Computer Live Time : {(TRIG1.npassed / H.hTRIG1.scaler)*100.0:%3.4f} % 
-HMS Computer Dead Time : {100.0 - (TRIG1.npassed / H.hTRIG1.scaler)*100.0:%3.4f} % 
+HMS Computer Live Time : {(TRIG1.npassed / H.hTRIG1.scaler)*100.0:%3.4f} %
+HMS Computer Dead Time : {100.0 - (TRIG1.npassed / H.hTRIG1.scaler)*100.0:%3.4f} %
 
 Pre-Scaled Ps1 HMS Computer Live Time : {(TRIG1.npassed / (H.hTRIG1.scaler/ghconfig_ti_ps_factors[0]))*100.0:%3.4f} %
 Pre-Scaled Ps1 HMS Computer Dead Time : {100.0 - (TRIG1.npassed / (H.hTRIG1.scaler/ghconfig_ti_ps_factors[0]))*100.0:%3.4f} %
@@ -204,12 +204,12 @@ EL-CLEAN Pre-Trigger 50 ns Gate  : {H.hTRIG3.scalerRate/1000.:%.3f} kHz
 = Hodoscopes
 =:=:=:=:=:=:=:
 
-H1X : {H.S1X.scaler} [ {(H.S1X.scaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ] AND between + and - sides of H1X 
+H1X : {H.S1X.scaler} [ {(H.S1X.scaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ] AND between + and - sides of H1X
 H1Y : {H.S1Y.scaler} [ {(H.S1Y.scaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ] AND between + and - sides of H1Y
 H2X : {H.S2X.scaler} [ {(H.S2X.scaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ] AND between + and - sides of H2X
 H2Y : {H.S2Y.scaler} [ {(H.S2Y.scaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ] AND between + and - sides of H2Y
 
-H1XH1Y : {H.S1XS1Y.scaler} [ {(H.S1XS1Y.scaler/H.1MHz.scalerTime)/1000.:%.3f}  kHz ] AND between H1X and H1Y planes 
+H1XH1Y : {H.S1XS1Y.scaler} [ {(H.S1XS1Y.scaler/H.1MHz.scalerTime)/1000.:%.3f}  kHz ] AND between H1X and H1Y planes
 H2XH2Y : {H.S2XS2Y.scaler} [ {(H.S2XS2Y.scaler/H.1MHz.scalerTime)/1000.:%.3f}  kHz ] AND between H2X and H2Y planes
 
 =:=:=:=:=:=:
@@ -244,7 +244,7 @@ H1X7+:  {H.hod.1x7.posScaler} [ {(H.hod.1x7.posScaler/H.1MHz.scalerTime)/1000.:%
 H1X8+:  {H.hod.1x8.posScaler} [ {(H.hod.1x8.posScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
 H1X9+:  {H.hod.1x9.posScaler} [ {(H.hod.1x9.posScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
 H1X10+: {H.hod.1x10.posScaler} [ {(H.hod.1x10.posScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
-H1X11+: {H.hod.1x11.posScaler} [ {(H.hod.1x11.posScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ] 
+H1X11+: {H.hod.1x11.posScaler} [ {(H.hod.1x11.posScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
 H1X12+: {H.hod.1x12.posScaler} [ {(H.hod.1x12.posScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
 H1X13+: {H.hod.1x13.posScaler} [ {(H.hod.1x13.posScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
 H1X14+: {H.hod.1x14.posScaler} [ {(H.hod.1x14.posScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
@@ -267,7 +267,7 @@ H1X13-: {H.hod.1x13.negScaler} [ {(H.hod.1x13.negScaler/H.1MHz.scalerTime)/1000.
 H1X14-: {H.hod.1x14.negScaler} [ {(H.hod.1x14.negScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
 H1X15-: {H.hod.1x15.negScaler} [ {(H.hod.1x15.negScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
 H1X16-: {H.hod.1x16.negScaler} [ {(H.hod.1x16.negScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
- 
+
 H1Y1+:  {H.hod.1y1.posScaler} [ {(H.hod.1y1.posScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
 H1Y2+:  {H.hod.1y2.posScaler} [ {(H.hod.1y2.posScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
 H1Y3+:  {H.hod.1y3.posScaler} [ {(H.hod.1y3.posScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
@@ -326,7 +326,7 @@ H2X16-: {H.hod.2x16.negScaler} [ {(H.hod.2x16.negScaler/H.1MHz.scalerTime)/1000.
 
 H2Y1+:  {H.hod.2y1.posScaler} [ {(H.hod.2y1.posScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
 H2Y2+:  {H.hod.2y2.posScaler} [ {(H.hod.2y2.posScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
-H2Y3+:  {H.hod.2y3.posScaler} [ {(H.hod.2y3.posScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ] 
+H2Y3+:  {H.hod.2y3.posScaler} [ {(H.hod.2y3.posScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
 H2Y4+:  {H.hod.2y4.posScaler} [ {(H.hod.2y4.posScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
 H2Y5+:  {H.hod.2y5.posScaler} [ {(H.hod.2y5.posScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
 H2Y6+:  {H.hod.2y6.posScaler} [ {(H.hod.2y6.posScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
@@ -344,4 +344,5 @@ H2Y6-:  {H.hod.2y6.negScaler} [ {(H.hod.2y6.negScaler/H.1MHz.scalerTime)/1000.:%
 H2Y7-:  {H.hod.2y7.negScaler} [ {(H.hod.2y7.negScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
 H2Y8-:  {H.hod.2y8.negScaler} [ {(H.hod.2y8.negScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
 H2Y9-:  {H.hod.2y9.negScaler} [ {(H.hod.2y9.negScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
-H2Y10-: {H.hod.2y10.negScaler} [ {(H.hod.2y10.negScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
\ No newline at end of file
+H2Y10-: {H.hod.2y10.negScaler} [ {(H.hod.2y10.negScaler/H.1MHz.scalerTime)/1000.:%.3f} kHz ]
+
diff --git a/TEMPLATES/SHMS/PRODUCTION/pstackana_production.template b/TEMPLATES/SHMS/PRODUCTION/pstackana_production.template
index 8c0b23a1195e4761de98fba6601dbb3b79fa8481..5d15b76c728ea34cf24059d15f703521f03e5e3b 100644
--- a/TEMPLATES/SHMS/PRODUCTION/pstackana_production.template
+++ b/TEMPLATES/SHMS/PRODUCTION/pstackana_production.template
@@ -11,34 +11,34 @@ Run Length   : {P.1MHz.scalerTime:%.3f} sec
 * Beamline
 ***********
 With no cuts on BCM{gBCM_Current_threshold_index+1}.
-  
-BCM1 Current: {P.BCM1.scalerCharge/P.1MHz.scalerTime:%.3f} uA		  
-BCM2 Current: {P.BCM2.scalerCharge/P.1MHz.scalerTime:%.3f} uA		 
+
+BCM1 Current: {P.BCM1.scalerCharge/P.1MHz.scalerTime:%.3f} uA
+BCM2 Current: {P.BCM2.scalerCharge/P.1MHz.scalerTime:%.3f} uA
 BCM4A Current: {P.BCM4A.scalerCharge/P.1MHz.scalerTime:%.3f} uA
-BCM4B Current: {P.BCM4B.scalerCharge/P.1MHz.scalerTime:%.3f} uA		  
-BCM4C Current: {P.BCM4C.scalerCharge/P.1MHz.scalerTime:%.3f} uA		 	 
-Unser Current: {P.Unser.scalerCharge/P.1MHz.scalerTime:%.3f} uA		  
+BCM4B Current: {P.BCM4B.scalerCharge/P.1MHz.scalerTime:%.3f} uA
+BCM4C Current: {P.BCM4C.scalerCharge/P.1MHz.scalerTime:%.3f} uA
+Unser Current: {P.Unser.scalerCharge/P.1MHz.scalerTime:%.3f} uA
 
 BCM1  Charge: {P.BCM1.scalerCharge:%.3f} uC
-BCM2  Charge: {P.BCM2.scalerCharge:%.3f} uC	
-BCM4A Charge: {P.BCM4A.scalerCharge:%.3f} uC		  
-BCM4B Charge: {P.BCM4B.scalerCharge:%.3f} uC		 
-BCM4C Charge: {P.BCM4C.scalerCharge:%.3f} uC		 
+BCM2  Charge: {P.BCM2.scalerCharge:%.3f} uC
+BCM4A Charge: {P.BCM4A.scalerCharge:%.3f} uC
+BCM4B Charge: {P.BCM4B.scalerCharge:%.3f} uC
+BCM4C Charge: {P.BCM4C.scalerCharge:%.3f} uC
 Unser Charge: {P.Unser.scalerCharge:%.3f} uC
 
 Cut on BCM{gBCM_Current_threshold_index+1} current of {gBCM_Current_threshold} uA. Beam over threshold for {P.1MHz.scalerTimeCut:%.3f}s, or {((P.1MHz.scalerTimeCut/P.1MHz.scalerTime)*100.):%.3f}% of total run time.
-BCM1 Beam Cut Current: {P.BCM1.scalerChargeCut/P.1MHz.scalerTimeCut:%.3f} uA		  
-BCM2 Beam Cut Current: {P.BCM2.scalerChargeCut/P.1MHz.scalerTimeCut:%.3f} uA		 
-BCM4A Beam Cut Current: {P.BCM4A.scalerChargeCut/P.1MHz.scalerTimeCut:%.3f} uA		  
-BCM4B Beam Cut Current: {P.BCM4B.scalerChargeCut/P.1MHz.scalerTimeCut:%.3f} uA		 
-BCM4C Beam Cut Current: {P.BCM4C.scalerChargeCut/P.1MHz.scalerTimeCut:%.3f} uA		 
-Unser Beam Cut Current: {P.Unser.scalerChargeCut/P.1MHz.scalerTimeCut:%.3f} uA		  
+BCM1 Beam Cut Current: {P.BCM1.scalerChargeCut/P.1MHz.scalerTimeCut:%.3f} uA
+BCM2 Beam Cut Current: {P.BCM2.scalerChargeCut/P.1MHz.scalerTimeCut:%.3f} uA
+BCM4A Beam Cut Current: {P.BCM4A.scalerChargeCut/P.1MHz.scalerTimeCut:%.3f} uA
+BCM4B Beam Cut Current: {P.BCM4B.scalerChargeCut/P.1MHz.scalerTimeCut:%.3f} uA
+BCM4C Beam Cut Current: {P.BCM4C.scalerChargeCut/P.1MHz.scalerTimeCut:%.3f} uA
+Unser Beam Cut Current: {P.Unser.scalerChargeCut/P.1MHz.scalerTimeCut:%.3f} uA
 
 BCM1  Beam Cut Charge: {P.BCM1.scalerChargeCut:%.3f} uC
 BCM2  Beam Cut Charge: {P.BCM2.scalerChargeCut:%.3f} uC
-BCM4A Beam Cut Charge: {P.BCM4A.scalerChargeCut:%.3f} uC		  
-BCM4B Beam Cut Charge: {P.BCM4B.scalerChargeCut:%.3f} uC		 
-BCM4C Beam Cut Charge: {P.BCM4C.scalerChargeCut:%.3f} uC		 
+BCM4A Beam Cut Charge: {P.BCM4A.scalerChargeCut:%.3f} uC
+BCM4B Beam Cut Charge: {P.BCM4B.scalerChargeCut:%.3f} uC
+BCM4C Beam Cut Charge: {P.BCM4C.scalerChargeCut:%.3f} uC
 Unser Beam Cut Charge: {P.Unser.scalerChargeCut:%.3f} uC
 
 ********************
@@ -52,11 +52,11 @@ Ps4_factor = {gpconfig_ti_ps_factors[3]}
 Ps5_factor = {gpconfig_ti_ps_factors[4]}
 Ps6_factor = {gpconfig_ti_ps_factors[5]}
 
-***********	
-* Triggers 
+***********
+* Triggers
 ***********
 
-=:=:=:=:=:=:=:  
+=:=:=:=:=:=:=:
 = 3/4 Trigger
 =:=:=:=:=:=:=:
 
@@ -75,9 +75,9 @@ Physics 3/4 Triggers (current cut): {(P.pTRIG1.scalerCut - P.EDTM.scalerCut)}
 Physics 3/4 Trigger Rate       : {(P.pTRIG1.scalerCut- P.EDTM.scalerCut)/P.1MHz.scalerTimeCut/1000.:%.3f} kHz
 Accepted Physics Triggers      : {pcut_physics_accepted.npassed}
 
-=:=:=:=:=:=:=:=:  
+=:=:=:=:=:=:=:=:
 = HMS Triggers
-=:=:=:=:=:=:=:=: 
+=:=:=:=:=:=:=:=:
 
 hEL_LO_LO :	{P.hEL_LO_LO.scalerCut}	[ {(P.hEL_LO_LO.scalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 hEL_LO    :	{P.hEL_LO.scalerCut}	[ {(P.hEL_LO.scalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
@@ -93,9 +93,9 @@ hTRIG4 : 	{P.hTRIG4.scalerCut} 	[ {(P.hTRIG4.scalerCut/P.1MHz.scalerTimeCut)/100
 hTRIG5 :  	{P.hTRIG5.scalerCut} 	[ {(P.hTRIG5.scalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 hTRIG6 :  	{P.hTRIG6.scalerCut} 	[ {(P.hTRIG6.scalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 
-=:=:=:=:=:=:=:=: 
+=:=:=:=:=:=:=:=:
 = SHMS Triggers
-=:=:=:=:=:=:=:=: 
+=:=:=:=:=:=:=:=:
 
 pEL_LO_LO :	{P.pEL_LO_LO.scalerCut}	[ {(P.pEL_LO_LO.scalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 pEL_LO    :	{P.pEL_LO.scalerCut}	[ {(P.pEL_LO.scalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
@@ -131,8 +131,8 @@ SHMS TRIG1 Computer Live Time : {(shms_trigs.npassed / (P.pTRIG1.scaler/gpconfig
 SHMS TRIG2 Computer Live Time : {(shms_trigs.npassed / (P.pTRIG2.scaler/gpconfig_ti_ps_factors[1]))*100.0:%3.2f} %
 SHMS TRIG3 Computer Live Time : {(shms_trigs.npassed / (P.pTRIG3.scaler/gpconfig_ti_ps_factors[2]))*100.0:%3.2f} %
 
-SHMS Computer Live Time : {(pcut_TRIG1.npassed / P.pTRIG1.scaler)*100.0:%3.4f} % 
-SHMS Computer Dead Time : {100.0 - (pcut_TRIG1.npassed / P.pTRIG1.scaler)*100.0:%3.4f} % 
+SHMS Computer Live Time : {(pcut_TRIG1.npassed / P.pTRIG1.scaler)*100.0:%3.4f} %
+SHMS Computer Dead Time : {100.0 - (pcut_TRIG1.npassed / P.pTRIG1.scaler)*100.0:%3.4f} %
 
 Pre-Scaled Ps1 SHMS Computer Live Time : {((pcut_TRIG1.npassed-pcut_TRIG5.npassed) / (P.pTRIG1.scaler/gpconfig_ti_ps_factors[0]))*100.0:%3.4f} %
 Pre-Scaled Ps1 SHMS Computer Dead Time : {100.0 - ( (pcut_TRIG1.npassed-pcut_TRIG5.npassed) / (P.pTRIG1.scaler/gpconfig_ti_ps_factors[0]))*100.0:%3.4f} %
@@ -176,13 +176,13 @@ EL-CLEAN Pre-Trigger 50 ns Gate  : {P.pTRIG3.scalerCut/P.1MHz.scalerTimeCut/1000
 = Hodoscopes
 =:=:=:=:=:=:=:
 
-P1X : {P.S1X.scalerCut} [ {(P.S1X.scalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ] AND between + and - sides of P1X 
+P1X : {P.S1X.scalerCut} [ {(P.S1X.scalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ] AND between + and - sides of P1X
 P1Y : {P.S1Y.scalerCut} [ {(P.S1Y.scalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ] AND between + and - sides of P1Y
 P2X : {P.S2X.scalerCut} [ {(P.S2X.scalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ] AND between + and - sides of P2X
 P2Y : {P.S2Y.scalerCut} [ {(P.S2Y.scalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ] AND between + and - sides of P2Y
 
-P1XP1Y : {P.S1XS1Y.scalerCut} [ {(P.S1XS1Y.scalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ] AND between P1X and P1Y planes 
-P2XP2Y : {P.S2XS2Y.scalerCut} [ {(P.S2XS2Y.scalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ] AND between P2X and P2Y planes                                        
+P1XP1Y : {P.S1XS1Y.scalerCut} [ {(P.S1XS1Y.scalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ] AND between P1X and P1Y planes
+P2XP2Y : {P.S2XS2Y.scalerCut} [ {(P.S2XS2Y.scalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ] AND between P2X and P2Y planes
 =:=:=:=:=:=:=:=:=:=:=:=:=
 = Aerogel, HGC, NGC, CAL
 =:=:=:=:=:=:=:=:=:=:=:=:=
@@ -194,40 +194,40 @@ PRLO : {P.PRLO.scalerCut} [ {(P.PRLO.scalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f}
 PRHI : {P.PRHI.scalerCut} [ {(P.PRHI.scalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 
 ***********
-* Chambers 
+* Chambers
 ***********
 
-pcut_good_S1_time         Counts: {pcut_good_S1_time.npassed}     / shms_trigs.scaler : {pcut_good_S1_time.npassed / shms_trigs.npassed}       
-pcut_good_S2X_time        Counts: {pcut_good_S2X_time.npassed}    / shms_trigs.scaler : {pcut_good_S2X_time.npassed / shms_trigs.npassed}    
+pcut_good_S1_time         Counts: {pcut_good_S1_time.npassed}     / shms_trigs.scaler : {pcut_good_S1_time.npassed / shms_trigs.npassed}
+pcut_good_S2X_time        Counts: {pcut_good_S2X_time.npassed}    / shms_trigs.scaler : {pcut_good_S2X_time.npassed / shms_trigs.npassed}
 pcut_good_S1_S2X_time     Counts: {pcut_good_S1_S2X_time.npassed} / shms_trigs.scaler : {pcut_good_S1_S2X_time.npassed / shms_trigs.npassed}
 
-Chamber 1 hits > 0                        Counts: {shms_ch1_gt0.npassed} / shms_trigs : {shms_ch1_gt0.npassed / shms_trigs.npassed}         
-Chamber 2 hits > 0                   	  Counts: {shms_ch2_gt0.npassed} / shms_trigs : { shms_ch2_gt0.npassed / shms_trigs.npassed}        
-Chamber 2 hits > 0 & Ch 1 hits = 0    	  Counts: {shms_ch2_gt0_noch1.npassed} / shms_trigs : { shms_ch2_gt0_noch1.npassed / shms_trigs.npassed}  
-Chamber 1 hits > 0 & Ch 2 hits = 0    	  Counts: {shms_ch1_gt0_noch2.npassed} / shms_trigs : {shms_ch1_gt0_noch2.npassed / shms_trigs.npassed}  
-Chamber 1 hits = 0 & Ch 2 hits = 0    	  Counts: {shms_noch1_noch2.npassed} / shms_trigs : {shms_noch1_noch2.npassed / shms_trigs.npassed}  
-Chamber 1 > 0 & Ch 2 hits > 0             Counts: {shms_ch_gt0.npassed} / shms_trigs : { shms_ch_gt0.npassed / shms_trigs.npassed}        
+Chamber 1 hits > 0                        Counts: {shms_ch1_gt0.npassed} / shms_trigs : {shms_ch1_gt0.npassed / shms_trigs.npassed}
+Chamber 2 hits > 0                   	  Counts: {shms_ch2_gt0.npassed} / shms_trigs : { shms_ch2_gt0.npassed / shms_trigs.npassed}
+Chamber 2 hits > 0 & Ch 1 hits = 0    	  Counts: {shms_ch2_gt0_noch1.npassed} / shms_trigs : { shms_ch2_gt0_noch1.npassed / shms_trigs.npassed}
+Chamber 1 hits > 0 & Ch 2 hits = 0    	  Counts: {shms_ch1_gt0_noch2.npassed} / shms_trigs : {shms_ch1_gt0_noch2.npassed / shms_trigs.npassed}
+Chamber 1 hits = 0 & Ch 2 hits = 0    	  Counts: {shms_noch1_noch2.npassed} / shms_trigs : {shms_noch1_noch2.npassed / shms_trigs.npassed}
+Chamber 1 > 0 & Ch 2 hits > 0             Counts: {shms_ch_gt0.npassed} / shms_trigs : { shms_ch_gt0.npassed / shms_trigs.npassed}
 Ch 1 hits > 0 & Ch 2 hits > 0 & track     Counts: {shms_ch_gt0_track.npassed} / shms_trigs : { shms_ch_gt0_track.npassed / shms_trigs.npassed}
-Chamber 1 > 3 & Ch 2 hits > 3             Counts: {shms_ch_gt4.npassed} / shms_trigs : { shms_ch_gt4.npassed / shms_trigs.npassed}        
+Chamber 1 > 3 & Ch 2 hits > 3             Counts: {shms_ch_gt4.npassed} / shms_trigs : { shms_ch_gt4.npassed / shms_trigs.npassed}
 Ch 1 hits > 3 & Ch 2 hits > 3 & track     Counts: {shms_ch_gt4_track.npassed} / shms_trigs : { shms_ch_gt4_track.npassed / shms_trigs.npassed}
 
-Add cut on good_S1_S2X_time 
+Add cut on good_S1_S2X_time
 
-Chamber 1 hits > 0                        Counts: {shms_ch1_gt0_gtime.npassed} / shms_trigs.scaler : {shms_ch1_gt0_gtime.npassed / shms_trigs.npassed}         
-Chamber 2 hits > 0                   	  Counts: {shms_ch2_gt0_gtime.npassed} / shms_trigs.scaler : { shms_ch2_gt0_gtime.npassed / shms_trigs.npassed}        
-Chamber 2 hits > 0 & Ch 1 hits = 0    	  Counts: {shms_ch2_gt0_noch1_gtime.npassed} / shms_trigs.scaler : { shms_ch2_gt0_noch1_gtime.npassed / shms_trigs.npassed}  
-Chamber 1 hits > 0 & Ch 2 hits = 0    	  Counts: {shms_ch1_gt0_noch2_gtime.npassed} / shms_trigs.scaler : {shms_ch1_gt0_noch2_gtime.npassed / shms_trigs.npassed}  
-Chamber 1 hits = 0 & Ch 2 hits = 0    	  Counts: {shms_noch1_noch2_gtime.npassed} / shms_trigs.scaler : {shms_noch1_noch2_gtime.npassed / shms_trigs.npassed}  
-Chamber 1 > 0 & Ch 2 hits > 0             Counts: {shms_ch_gt0_gtime.npassed} / shms_trigs.scaler : { shms_ch_gt0_gtime.npassed / shms_trigs.npassed}        
+Chamber 1 hits > 0                        Counts: {shms_ch1_gt0_gtime.npassed} / shms_trigs.scaler : {shms_ch1_gt0_gtime.npassed / shms_trigs.npassed}
+Chamber 2 hits > 0                   	  Counts: {shms_ch2_gt0_gtime.npassed} / shms_trigs.scaler : { shms_ch2_gt0_gtime.npassed / shms_trigs.npassed}
+Chamber 2 hits > 0 & Ch 1 hits = 0    	  Counts: {shms_ch2_gt0_noch1_gtime.npassed} / shms_trigs.scaler : { shms_ch2_gt0_noch1_gtime.npassed / shms_trigs.npassed}
+Chamber 1 hits > 0 & Ch 2 hits = 0    	  Counts: {shms_ch1_gt0_noch2_gtime.npassed} / shms_trigs.scaler : {shms_ch1_gt0_noch2_gtime.npassed / shms_trigs.npassed}
+Chamber 1 hits = 0 & Ch 2 hits = 0    	  Counts: {shms_noch1_noch2_gtime.npassed} / shms_trigs.scaler : {shms_noch1_noch2_gtime.npassed / shms_trigs.npassed}
+Chamber 1 > 0 & Ch 2 hits > 0             Counts: {shms_ch_gt0_gtime.npassed} / shms_trigs.scaler : { shms_ch_gt0_gtime.npassed / shms_trigs.npassed}
 Ch 1 hits > 0 & Ch 2 hits > 0 & track     Counts: {shms_ch_gt0_track_gtime.npassed} / shms_trigs.scaler : { shms_ch_gt0_track_gtime.npassed / shms_trigs.npassed}
-Chamber 1 > 3 & Ch 2 hits > 3             Counts: {shms_ch_gt4_gtime.npassed} / shms_trigs.scaler : { shms_ch_gt4_gtime.npassed / shms_trigs.npassed}        
+Chamber 1 > 3 & Ch 2 hits > 3             Counts: {shms_ch_gt4_gtime.npassed} / shms_trigs.scaler : { shms_ch_gt4_gtime.npassed / shms_trigs.npassed}
 Ch 1 hits > 3 & Ch 2 hits > 3 & track     Counts: {shms_ch_gt4_track_gtime.npassed} / shms_trigs.scaler : { shms_ch_gt4_track_gtime.npassed / shms_trigs.npassed}
 
 shmsDC1Planes_large     Counts: {shmsDC1Planes_large.npassed} / shms_trigs.scaler : {shmsDC1Planes_large.npassed / shms_trigs.npassed}
-shmsDC2Planes_large     Counts: {shmsDC2Planes_large.npassed} / shms_trigs.scaler : {shmsDC2Planes_large.npassed / shms_trigs.npassed}  
+shmsDC2Planes_large     Counts: {shmsDC2Planes_large.npassed} / shms_trigs.scaler : {shmsDC2Planes_large.npassed / shms_trigs.npassed}
 
 shmsDC1Planes6     Counts: {shmsDC1Planes6hits.npassed} / shms_trigs.scaler : {shmsDC1Planes6hits.npassed / shms_trigs.npassed}
-shmsDC2Planes6     Counts: {shmsDC2Planes6hits.npassed} / shms_trigs.scaler : {shmsDC2Planes6hits.npassed / shms_trigs.npassed}  
+shmsDC2Planes6     Counts: {shmsDC2Planes6hits.npassed} / shms_trigs.scaler : {shmsDC2Planes6hits.npassed / shms_trigs.npassed}
 
 shmsDC1x1Planes5     Counts: {shmsDC1_5hits_x1.npassed} eff : {shmsDC1_6hits_x1.npassed / shmsDC1_5hits_x1.npassed}
 shmsDC1u1Planes5     Counts: {shmsDC1_5hits_u1.npassed} eff : {shmsDC1_6hits_u1.npassed / shmsDC1_5hits_u1.npassed}
@@ -244,19 +244,19 @@ shmsDC2v2Planes5     Counts: {shmsDC2_5hits_v2.npassed} eff : {shmsDC2_6hits_v2.
 shmsDC2x2Planes5     Counts: {shmsDC2_5hits_x2.npassed} eff : {shmsDC2_6hits_x2.npassed / shmsDC2_5hits_x2.npassed}
 
 I'm pretty sure that these are the "raw" number of counts. "Raw" means one or more hits per dc plane.
-shmsDC1_1hit_x1: {shmsDC1_1hit_x1.npassed} 		
-shmsDC1_1hit_u1: {shmsDC1_1hit_u1.npassed}		
-shmsDC1_1hit_u2: {shmsDC1_1hit_u2.npassed}		
-shmsDC1_1hit_v1: {shmsDC1_1hit_v1.npassed}		
-shmsDC1_1hit_v2: {shmsDC1_1hit_v2.npassed}		
-shmsDC1_1hit_x2: {shmsDC1_1hit_x2.npassed}		
-
-shmsDC2_1hit_x1: {shmsDC2_1hit_x1.npassed}		
-shmsDC2_1hit_u1: {shmsDC2_1hit_u1.npassed}		
-shmsDC2_1hit_u2: {shmsDC2_1hit_u2.npassed}		
-shmsDC2_1hit_v1: {shmsDC2_1hit_v1.npassed}		
-shmsDC2_1hit_v2: {shmsDC2_1hit_v2.npassed}		
-shmsDC2_1hit_x2: {shmsDC2_1hit_x2.npassed}		
+shmsDC1_1hit_x1: {shmsDC1_1hit_x1.npassed}
+shmsDC1_1hit_u1: {shmsDC1_1hit_u1.npassed}
+shmsDC1_1hit_u2: {shmsDC1_1hit_u2.npassed}
+shmsDC1_1hit_v1: {shmsDC1_1hit_v1.npassed}
+shmsDC1_1hit_v2: {shmsDC1_1hit_v2.npassed}
+shmsDC1_1hit_x2: {shmsDC1_1hit_x2.npassed}
+
+shmsDC2_1hit_x1: {shmsDC2_1hit_x1.npassed}
+shmsDC2_1hit_u1: {shmsDC2_1hit_u1.npassed}
+shmsDC2_1hit_u2: {shmsDC2_1hit_u2.npassed}
+shmsDC2_1hit_v1: {shmsDC2_1hit_v1.npassed}
+shmsDC2_1hit_v2: {shmsDC2_1hit_v2.npassed}
+shmsDC2_1hit_x2: {shmsDC2_1hit_x2.npassed}
 
 "Good" means one or two hits per dc plane.
 pcut_goodHDC1x1:	     {pcut_goodHDC1x1.npassed}	eff : {pcut_goodHDC1x1.npassed/(shms_trigs.npassed+.0001):%5.3f}
@@ -290,13 +290,13 @@ pcut_realhdc2u1:	     {pcut_realhdc2u1.npassed}
 pcut_realhdc2v1:	     {pcut_realhdc2v1.npassed}
 pcut_realhdc2v2:	     {pcut_realhdc2v2.npassed}
 pcut_realhdc2x2:	     {pcut_realhdc2x2.npassed}
-    	   	       
+
 **HODOSCOPE**
 "Any" means one or more hits per scint plane.
 pcut_anys1x : {pcut_anys1x.npassed}		 eff: {pcut_anys1x.npassed/(shms_trigs.npassed+.0001):%5.3f}	BAD = ??
 pcut_anys1y : {pcut_anys1y.npassed}		 eff: {pcut_anys1y.npassed/(shms_trigs.npassed+.0001):%5.3f}
 pcut_anys2x : {pcut_anys2x.npassed}		 eff: {pcut_anys2x.npassed/(shms_trigs.npassed+.0001):%5.3f}
-pcut_anys2y : {pcut_anys2y.npassed}		 eff: {pcut_anys2y.npassed/(shms_trigs.npassed+.0001):%5.3f} 
+pcut_anys2y : {pcut_anys2y.npassed}		 eff: {pcut_anys2y.npassed/(shms_trigs.npassed+.0001):%5.3f}
 
 "Good" means one or two hits per scint plane.
 pcut_goods1x : {pcut_goods1x.npassed}		 eff: {pcut_goods1x.npassed/(shms_trigs.npassed+.0001):%5.3f}	BAD = ??
@@ -309,13 +309,13 @@ pcut_goods1s2: {pcut_goods1s2.npassed}		 eff: {pcut_goods1s2.npassed/(shms_trigs
 
 **TRACKING**
 pcut_FoundTrack  :{pcut_FoundTrack.npassed}	 eff: {pcut_FoundTrack.npassed/(shms_trigs.npassed+.0001):%5.3f} BAD = ??
-pcut_Found1Track :{pcut_Found1Track.npassed}	 eff: {pcut_Found1Track.npassed/(shms_trigs.npassed+.0001):%5.3f} 
-pcut_Found2Track :{pcut_Found2Track.npassed}	 eff: {pcut_Found2Track.npassed/(shms_trigs.npassed+.0001):%5.3f} 
-pcut_Found3Track :{pcut_Found3Track.npassed}	 eff: {pcut_Found3Track.npassed/(shms_trigs.npassed+.0001):%5.3f} 
-pcut_Found4Track :{pcut_Found4Track.npassed}	 eff: {pcut_Found4Track.npassed/(shms_trigs.npassed+.0001):%5.3f} 
+pcut_Found1Track :{pcut_Found1Track.npassed}	 eff: {pcut_Found1Track.npassed/(shms_trigs.npassed+.0001):%5.3f}
+pcut_Found2Track :{pcut_Found2Track.npassed}	 eff: {pcut_Found2Track.npassed/(shms_trigs.npassed+.0001):%5.3f}
+pcut_Found3Track :{pcut_Found3Track.npassed}	 eff: {pcut_Found3Track.npassed/(shms_trigs.npassed+.0001):%5.3f}
+pcut_Found4Track :{pcut_Found4Track.npassed}	 eff: {pcut_Found4Track.npassed/(shms_trigs.npassed+.0001):%5.3f}
 
 pcut_CleanTrack :{pcut_CleanTrack.npassed}	 eff: {pcut_CleanTrack.npassed/(shms_trigs.npassed+.0001):%5.3f}	 BAD = ??
-pcut_Clean1Track:{pcut_Clean1Track.npassed}	 eff: {pcut_Clean1Track.npassed/(shms_trigs.npassed+.0001):%5.3f} 
+pcut_Clean1Track:{pcut_Clean1Track.npassed}	 eff: {pcut_Clean1Track.npassed/(shms_trigs.npassed+.0001):%5.3f}
 pcut_Clean2Track:{pcut_Clean2Track.npassed}	 eff: {pcut_Clean2Track.npassed/(shms_trigs.npassed+.0001):%5.3f}
 pcut_Clean3Track:{pcut_Clean3Track.npassed}	 eff: {pcut_Clean3Track.npassed/(shms_trigs.npassed+.0001):%5.3f}
 pcut_Clean4Track:{pcut_Clean4Track.npassed}	 eff: {pcut_Clean4Track.npassed/(shms_trigs.npassed+.0001):%5.3f}
@@ -330,11 +330,11 @@ pcut_cer_elec_both :   	  {pcut_cer_elec_both.npassed}
 pcut_cal_elec      :   	  {pcut_cal_elec.npassed}
 pcut_cal_pi        :   	  {pcut_cal_pi.npassed}
 pcut_elec_all      :	  {pcut_elec_all.npassed}
-pcut_pi_all        :   	  {pcut_pi_all.npassed} 
+pcut_pi_all        :   	  {pcut_pi_all.npassed}
 
-pcut_CleanTrack_cer_elec : {pcut_CleanTrack_cer_elec.npassed} 
+pcut_CleanTrack_cer_elec : {pcut_CleanTrack_cer_elec.npassed}
 pcut_p1hit1_cer_elec	 : {pcut_p1hit1_cer_elec.npassed}
-pcut_CleanTrack_cal_elec : {pcut_CleanTrack_cal_elec.npassed} 
+pcut_CleanTrack_cal_elec : {pcut_CleanTrack_cal_elec.npassed}
 pcut_p1hit1_cal_elec 	 : {pcut_p1hit1_cal_elec.npassed}
 
 ******************************
@@ -369,7 +369,7 @@ E SING FID TRACK EFFIC         : {shmsScinDide.npassed / (shmsScinShoulde.npasse
 HADRON SING FID TRACK EFFIC    : {shmsScinDidh.npassed / (shmsScinShouldh.npassed+0.0001):%8.4f} +- {(sqrt(shmsScinShouldh.npassed-shmsScinDidh.npassed) / (shmsScinShouldh.npassed+.0001)):%8.4f}
 
 ***************
-* HGC Cerenkov 
+* HGC Cerenkov
 ***************
 
 Good Track Requirements:
@@ -386,7 +386,7 @@ SHMS HGC Region 4 efficiency: {SHMS_hgcer_track_fired_region_4.npassed/SHMS_hgce
 Overall HGC Efficiency: {SHMS_hgcer_track_fired_tot.npassed/SHMS_hgcer_track_matched_tot.npassed} = {SHMS_hgcer_track_fired_tot.npassed} of {SHMS_hgcer_track_matched_tot.npassed} good tracks.
 
 ***************
-* NGC Cerenkov 
+* NGC Cerenkov
 ***************
 
 Good Track Requirements:
@@ -403,15 +403,15 @@ SHMS NGC Region 4 efficiency: {SHMS_ngcer_track_fired_region_4.npassed/SHMS_ngce
 Overall NGC Efficiency: {SHMS_ngcer_track_fired_tot.npassed/SHMS_ngcer_track_matched_tot.npassed} = {SHMS_ngcer_track_fired_tot.npassed} of {SHMS_ngcer_track_matched_tot.npassed} good tracks.
 
 **********
-* Aerogel  
+* Aerogel
 **********
 
 Good Track Requirements:
-   1. Only one track found in the focal plane 
+   1. Only one track found in the focal plane
    2. chisq/dof < {paero_red_chi2_max:%5.1f}
    3. {paero_beta_min:%5.3f} < beta < {paero_beta_max:%5.3f}
    4. {paero_enorm_min:%5.3f} < calorimeter energy < {paero_enorm_max:%5.3f}
-   5. {paero_dp_min:%5.3f} < delta p (dp) < {paero_dp_max:%5.3f} //added because paero_cuts.param has this as a cut 
+   5. {paero_dp_min:%5.3f} < delta p (dp) < {paero_dp_max:%5.3f} //added because paero_cuts.param has this as a cut
 Threshold set at {paero_npe_thresh:%4.1f}
 *AEROGEL EFF* 7 PMT pairs
 SHMS AERO Region 1 efficiency: {SHMS_aero_track_fired_region_1.npassed/SHMS_aero_track_matched_region_1.npassed} = {SHMS_aero_track_fired_region_1.npassed} of {SHMS_aero_track_matched_region_1.npassed} good tracks.
@@ -439,7 +439,7 @@ shmsPreShower	     Counts: {P.cal.stat_trksum1} eff : {P.cal.stat_hitsum1 / P.ca
 shmsShowerArray	     Counts: {P.cal.stat_trksum_array} eff : {P.cal.stat_hitsum_array / P.cal.stat_trksum_array}
 
 **************************
-* Hodoscope Efficiencies * 
+* Hodoscope Efficiencies *
 **************************
 
 Efficiencies for hodoscopes is the fraction of times scin. was hit when track
@@ -548,7 +548,7 @@ P1X7+:  {P.hod.1x7.posScalerCut} [ {(P.hod.1x7.posScalerCut/P.1MHz.scalerTimeCut
 P1X8+:  {P.hod.1x8.posScalerCut} [ {(P.hod.1x8.posScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 P1X9+:  {P.hod.1x9.posScalerCut} [ {(P.hod.1x9.posScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 P1X10+: {P.hod.1x10.posScalerCut} [ {(P.hod.1x10.posScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
-P1X11+: {P.hod.1x11.posScalerCut} [ {(P.hod.1x11.posScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ] 
+P1X11+: {P.hod.1x11.posScalerCut} [ {(P.hod.1x11.posScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 P1X12+: {P.hod.1x12.posScalerCut} [ {(P.hod.1x12.posScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 P1X13+: {P.hod.1x13.posScalerCut} [ {(P.hod.1x13.posScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 
@@ -565,7 +565,7 @@ P1X10-: {P.hod.1x10.negScalerCut} [ {(P.hod.1x10.negScalerCut/P.1MHz.scalerTimeC
 P1X11-: {P.hod.1x11.negScalerCut} [ {(P.hod.1x11.negScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 P1X12-: {P.hod.1x12.negScalerCut} [ {(P.hod.1x12.negScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 P1X13-: {P.hod.1x13.negScalerCut} [ {(P.hod.1x13.negScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
- 
+
 P1Y1+:  {P.hod.1y1.posScalerCut} [ {(P.hod.1y1.posScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 P1Y2+:  {P.hod.1y2.posScalerCut} [ {(P.hod.1y2.posScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 P1Y3+:  {P.hod.1y3.posScalerCut} [ {(P.hod.1y3.posScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
@@ -626,7 +626,7 @@ P2X14-: {P.hod.2x14.negScalerCut} [ {(P.hod.2x14.negScalerCut/P.1MHz.scalerTimeC
 
 P2Y1+:  {P.hod.2y1.posScalerCut} [ {(P.hod.2y1.posScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 P2Y2+:  {P.hod.2y2.posScalerCut} [ {(P.hod.2y2.posScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
-P2Y3+:  {P.hod.2y3.posScalerCut} [ {(P.hod.2y3.posScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ] 
+P2Y3+:  {P.hod.2y3.posScalerCut} [ {(P.hod.2y3.posScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 P2Y4+:  {P.hod.2y4.posScalerCut} [ {(P.hod.2y4.posScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 P2Y5+:  {P.hod.2y5.posScalerCut} [ {(P.hod.2y5.posScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 P2Y6+:  {P.hod.2y6.posScalerCut} [ {(P.hod.2y6.posScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
@@ -666,4 +666,15 @@ P2Y17-: {P.hod.2y17.negScalerCut} [ {(P.hod.2y17.negScalerCut/P.1MHz.scalerTimeC
 P2Y18-: {P.hod.2y18.negScalerCut} [ {(P.hod.2y18.negScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 P2Y19-: {P.hod.2y19.negScalerCut} [ {(P.hod.2y19.negScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
 P2Y20-: {P.hod.2y20.negScalerCut} [ {(P.hod.2y20.negScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
-P2Y21-: {P.hod.2y21.negScalerCut} [ {(P.hod.2y21.negScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
\ No newline at end of file
+P2Y21-: {P.hod.2y21.negScalerCut} [ {(P.hod.2y21.negScalerCut/P.1MHz.scalerTimeCut)/1000.:%.3f} kHz ]
+
+Scalers     Gated Charge    Charge Asymmetry
+BCM1:       {gP_hscaler_charge[0]:%12.2f}   {gP_hscaler_charge_asy[0]*1e6:%12.2f}
+BCM2:       {gP_hscaler_charge[1]:%12.2f}   {gP_hscaler_charge_asy[1]*1e6:%12.2f}
+BCM4A:      {gP_hscaler_charge[3]:%12.2f}   {gP_hscaler_charge_asy[3]*1e6:%12.2f}
+BCM4B:      {gP_hscaler_charge[4]:%12.2f}   {gP_hscaler_charge_asy[4]*1e6:%12.2f}
+BCM4C:      {gP_hscaler_charge[5]:%12.2f}   {gP_hscaler_charge_asy[5]*1e6:%12.2f}
+Unser:      {gP_hscaler_charge[2]:%12.2f}   {gP_hscaler_charge_asy[2]*1e6:%12.2f}
+Time(s):    {gP_hscaler_time:%12.2f}    {gP_hscaler_time_asy*1e6:%12.2f}
+Gates:      {(gP_hscaler_triggers_plus+gP_hscaler_triggers_minus):%12.2f}   {gP_hscaler_trigger_asy*1e6:%12.2f}
+