diff --git a/.clang-format b/.clang-format
index 80b570ad469789f4b331d2aedcb92659e240b162..0326621c924c5a5ed5b0b225618753a09e67a74f 100644
--- a/.clang-format
+++ b/.clang-format
@@ -95,5 +95,6 @@ SpacesInSquareBrackets: false
 Standard:        Cpp11
 TabWidth:        8
 UseTab:          Never
+ConstructorInitializerAllOnOneLineOrOnePerLine: true
 ...
 
diff --git a/.containers/Dockerfile.in b/.containers/Dockerfile.in
index 06567d32b0985cde7c1d20a331ba75bda4ab6522..d7c6eacd2a247127b8137bff4ba08bab9ad180ee 100644
--- a/.containers/Dockerfile.in
+++ b/.containers/Dockerfile.in
@@ -3,20 +3,21 @@ FROM eicweb.phy.anl.gov:4567/containers/image_recipes/root_spack:@CONTAINER_TAG@
 LABEL maintainer "Sylvester Joosten <sjoosten@anl.gov>"
 
 RUN  cd /tmp \
+  && export CLICOLOR_FORCE=1 \ 
   && git clone https://eicweb.phy.anl.gov/jlab/hallc/analyzer_software/hallac_evio.git \
   && mkdir hallac_evio/build && cd hallac_evio/build  \
   && cmake ../.  && make -j20 && make install \
   && cd /tmp && rm -rf hallac_evio \
   && git clone https://eicweb.phy.anl.gov/jlab/hallc/analyzer_software/analyzer.git \
   && mkdir analyzer/build && cd analyzer/build   && git pull && git checkout v1.8.3 \
-  && cmake ../.  && make -j20 VERBOSE=1 && make install \
+  && cmake ../.  && make -j20 && make -j4 install \
   && cd /tmp  && rm -rf analyzer
 
 ## 2 layers so we can isolate hcana from the rest of the stack
 
 RUN cd /tmp \
-  && git clone https://eicweb.phy.anl.gov/jlab/hallc/analyzer_software/hcana.git \
+  && export CLICOLOR_FORCE=1 \ 
+  && git clone -b @HCANA_BRANCH@ https://eicweb.phy.anl.gov/jlab/hallc/analyzer_software/hcana.git \
   && mkdir hcana/build && cd hcana/build  \
-  && git pull \
-  && cmake ../.  && make -j20 VERBOSE=1 && make install \
-  && cd /tmp && rm -rf hcana 
+  && cmake ../.  && make -j20 && make -j4 install \
+  && cd /tmp && rm -rf hcana
diff --git a/.containers/docker/Makefile b/.containers/docker/Makefile
deleted file mode 100644
index 9e94fa8d988907fbc7e569fde0270b6717810549..0000000000000000000000000000000000000000
--- a/.containers/docker/Makefile
+++ /dev/null
@@ -1,208 +0,0 @@
-# import config.
-# You can change the default config with `make cnf="config_special.env" build`
-cnf ?= config.env
-include $(cnf)
-# exports variables in config.env as environment variables
-export $(shell sed 's/=.*//' $(cnf))
-
-
-# import deploy config
-# You can change the default deploy config with `make cnf="deploy_special.env" release`
-dpl ?= deploy.env
-include $(dpl)
-export $(shell sed 's/=.*//' $(dpl))
-
-# grep the version from the mix file
-VERSION=$(shell bash version.sh)
-
-# help will output the help for each task
-# thanks to https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
-.PHONY: help
-
-help: ## This help.
-	@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
-
-.DEFAULT_GOAL := help
-
-# ==========================================================================
-#
-build: ## build the image
-	docker build -t $(APP_NAME) .
-
-build-nc: ## Build the container without caching (from scratch)
-	docker build --no-cache -t $(APP_NAME) .
-
-build-alt: ## build the container for various machine architectures (broadwell, haswell, knl)
-	@echo 'building for architecture: $(ALT_NAME)'
-	docker build -t $(APP_NAME)_$(ALT_NAME) -f Dockerfile.$(ALT_NAME) .
-
-build-alt-nc: ## build the container for various machine architectures (broadwell, haswell, knl)
-	@echo 'build-alt-nc: building for architecture: $(ALT_NAME)'
-	docker build --no-cache -t $(APP_NAME)_$(ALT_NAME) -f Dockerfile.$(ALT_NAME) .
-
-# ==========================================================================
-#
-run: ## Run container on port configured in `config.env`
-	docker run -i -t --rm --env-file=./config.env -p=$(PORT):$(PORT) --name="$(APP_NAME)" $(REPO)/$(APP_NAME):$(TAG_VERSION)
-
-up: build run ## Run container on port configured in `config.env` (Alias to run)
-
-stop: ## Stop and remove a running container
-	docker stop $(APP_NAME); docker rm $(APP_NAME)
-
-# ==========================================================================
-# Docker tagging
-tag: tag-latest #tag-version ## Generate container tags for the `{version}` ans `latest` tags
-
-tag-latest: ## Generate container `{version}` tag
-	@echo 'create tag latest'
-	#docker tag $(APP_NAME)   $(REPO)/$(APP_NAME):latest
-	#docker tag $(APP_NAME)   $(GL_GROUP)/$(APP_NAME):latest
-	#docker tag $(APP_NAME)   $(GL_REG_GROUP)/$(APP_NAME):latest
-	#docker tag $(APP_NAME)   $(REG_NAME)/$(REPO)/$(APP_NAME):latest  
-	#docker tag $(APP_NAME)   $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):latest
-	#docker tag $(APP_NAME) $(REPO)/$(APP_NAME):$(VERSION)
-	#docker tag $(APP_NAME) $(GL_GROUP)/$(APP_NAME):$(VERSION)
-
-tag-version: ## Generate container `latest` tag
-	@echo 'create tag $(VERSION)'
-	docker tag $(REPO)/$(APP_NAME):$(VERSION) $(REG_NAME)/$(REPO)/$(APP_NAME):$(VERSION)
-
-tag-alt: tag-alt-latest # tag-alt-version ## Generate container tags for the `{version}` ans `latest` tags
-
-tag-alt-latest: ## Generate container `{version}` tag
-	@echo 'create tag latest'
-	#docker tag $(APP_NAME)_$(ALT_NAME) $(REPO)/$(APP_NAME)_$(ALT_NAME):latest
-	#docker tag $(APP_NAME)_$(ALT_NAME) $(REG_NAME)/$(REPO)/$(APP_NAME)_$(ALT_NAME):latest
-	#docker tag $(APP_NAME)_$(ALT_NAME)   $(REPO)/$(APP_NAME)_$(ALT_NAME):latest
-	#docker tag $(APP_NAME)_$(ALT_NAME)   $(GL_GROUP)/$(APP_NAME)_$(ALT_NAME):latest
-	#docker tag $(APP_NAME)_$(ALT_NAME)   $(GL_REG_GROUP)/$(APP_NAME)_$(ALT_NAME):latest
-	#docker tag $(APP_NAME)_$(ALT_NAME)   $(REG_NAME)/$(REPO)/$(APP_NAME)_$(ALT_NAME):latest  
-	#docker tag $(APP_NAME)_$(ALT_NAME)   $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME)_$(ALT_NAME):latest
-
-tag-alt-version: ## Generate container `{version}` tag
-	@echo 'create tag latest'
-	docker tag $(APP_NAME)_$(ALT_NAME) $(REG_NAME)/$(REPO)/$(APP_NAME)_$(ALT_NAME):$(VERSION)
-
-# ==========================================================================
-#
-login: ## Auto login to AWS-ECR unsing aws-cli
-	docker login $(REG_NAME) -u $(REG_USER) -p $(REG_TOKEN)
-
-release: build-nc publish ## Make a release by building and publishing the `{version}` ans `latest` tagged containers to ECR
-
-publish: publish-latest #publish-version ## Publish the `{version}` ans `latest` tagged containers to ECR
-
-push: login ## push after login @echo 'push latest to $(REG_NAME)/$(REPO)/$(APP_NAME):latest'
-	docker tag  $(APP_NAME):latest $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):latest
-	docker push $(REG_HOST)/$(GL_REG_GROUP)/$(APP_NAME):latest
-
-publish-latest: ## Publish the `latest` taged container to ECR
-	@echo 'publish latest to $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME)'
-	docker tag $(APP_NAME):latest $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):latest
-	docker push $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):latest
-	docker rmi  $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):latest
-
-publish-version: tag-version ## Publish the `{version}` taged container to ECR
-	@echo 'publish $(VERSION) to $(REPO)'
-	docker push $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):$(VERSION)
-
-# ==========================================================================
-#
-release-alt: build-alt publish-alt ## Make a release by building and publishing the `{version}` ans `latest` tagged containers to ECR
-
-publish-alt: login publish-alt-latest #publish-alt-version ## Publish the `{version}` ans `latest` tagged containers to ECR
-
-push-alt: login tag-alt-latest ## push after login 
-	#docker push $(REG_NAME)/$(REPO)/$(APP_NAME)_$(ALT_NAME):latest
-	docker push $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME)_$(ALT_NAME):latest
-
-publish-alt-latest: #tag-alt-latest ## Publish the `latest` taged container to ECR
-	#docker push $(REG_NAME)/$(REPO)/$(APP_NAME)_$(ALT_NAME):latest
-	docker tag $(APP_NAME)_$(ALT_NAME):latest $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME)_$(ALT_NAME):latest
-	docker push $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME)_$(ALT_NAME):latest
-	docker rmi $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME)_$(ALT_NAME):latest
-
-publish-alt-version: tag-alt-version ## Publish the `latest` taged container to ECR
-	#docker push $(REG_NAME)/$(REPO)/$(APP_NAME)_$(ALT_NAME):$(VERSION)
-	docker push $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME)_$(ALT_NAME):$(VERSION)
-
-# ==========================================================================
-#
-
-login-dockerhub: ## login to hub.docker.com
-	@echo 'docker hub login :'
-	docker login 
-
-push-dockerhub: build #publish-version ## Publish the `{version}` ans `latest` tagged containers to ECR
-	@echo '$(DH_ORG)/$(APP_NAME):$(TAG_VERSION)'
-	docker push $(DH_ORG)/$(APP_NAME):latest
-	#docker push $(DH_ORG)/$(APP_NAME):$(VERSION)
-
-publish-dockerhub: build tag #publish-version ## Publish the `{version}` ans `latest` tagged containers to ECR
-	@echo '$(DH_ORG)/$(APP_NAME):$(TAG_VERSION)'
-	docker push $(DH_ORG)/$(APP_NAME):latest
-	#docker push $(DH_ORG)/$(APP_NAME):$(VERSION)
-
-# ==========================================================================
-#
-clean-tags:
-	docker rmi  $(REPO)/$(APP_NAME):latest || true
-	docker rmi  $(GL_GROUP)/$(APP_NAME):latest || true
-	docker rmi  $(GL_REG_GROUP)/$(APP_NAME):latest || true
-	docker rmi  $(REG_NAME)/$(REPO)/$(APP_NAME):latest   || true
-	docker rmi  $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):latest || true
-	docker rmi  $(REPO)/$(APP_NAME)_$(ALT_NAME):latest || true
-	docker rmi  $(GL_GROUP)/$(APP_NAME)_$(ALT_NAME):latest || true
-	docker rmi  $(GL_REG_GROUP)/$(APP_NAME)_$(ALT_NAME):latest || true
-	docker rmi  $(REG_NAME)/$(REPO)/$(APP_NAME)_$(ALT_NAME):latest   || true
-	docker rmi  $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME)_$(ALT_NAME):latest || true
-
-clean:
-	docker rmi $(REPO_NAME)/$(APP_NAME) || true
-	docker rmi $(REPO_NAME)/$(APP_NAME):$(TAG_VERSION) || true
-	docker rmi $(REPO_NAME)/$(APP_NAME):$(VERSION) || true
-	docker rmi $(REPO)/$(APP_NAME) || true
-	docker rmi $(REPO)/$(APP_NAME):$(TAG_VERSION) || true
-	docker rmi $(REPO)/$(APP_NAME):$(VERSION) || true
-	docker rmi $(REG_NAME)/$(REPO)/$(APP_NAME):latest || true  
-	docker rmi $(REG_NAME)/$(REPO)/$(APP_NAME):$(TAG_VERSION) || true  
-	docker rmi $(REG_NAME)/$(REPO)/$(APP_NAME) || true  
-	docker rmi $(DH_ORG)/$(APP_NAME) || true
-	docker rmi $(DH_ORG)/$(APP_NAME):$(TAG_VERSION) || true
-	docker rmi $(DH_ORG)/$(APP_NAME):$(VERSION) || true
-	docker rmi $(GL_REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):latest || true  
-	docker rmi $(GL_REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):$(VERSION) || true  
-	docker rmi $(GL_REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME) || true  
-	docker rmi $(GL_REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME)_$(ALT_NAME):latest || true  
-	docker rmi $(GL_REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME)_$(ALT_NAME):$(VERSION) || true  
-	docker rmi $(GL_REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME)_$(ALT_NAME) || true  
-	docker rmi $(GL_REG_GROUP)/$(APP_NAME) || true  
-	docker rmi $(GL_REG_GROUP)/$(APP_NAME):$(VERSION) || true  
-	docker rmi $(GL_REG_GROUP)/$(APP_NAME)_$(ALT_NAME) || true  
-	docker rmi $(GL_REG_GROUP)/$(APP_NAME)_$(ALT_NAME):$(VERSION) || true  
-	docker rmi $(GL_REG_NAME)/$(REG_USER)/$(APP_NAME) || true  
-	docker rmi $(GL_REG_NAME)/$(REG_USER)/$(APP_NAME):$(VERSION) || true  
-	#docker rmi $(APP_NAME) || true
-
-version: ## Output the current version
-	@echo $(VERSION)
-
-# ==========================================================================
-#
-info: ## Output the current version
-	@echo 'VERSION      = $(VERSION)     '
-	@echo 'REG_USER     = $(REG_USER)    '
-	@echo 'REG_NAME     = $(REG_NAME)    '
-	@echo 'ALT_NAME     = $(ALT_NAME)    '
-	@echo 'APP_NAME     = $(APP_NAME)    '
-	@echo 'REPO_NAME    = $(REPO_NAME)   '
-	@echo 'DH_ORG       = $(DH_ORG)      '
-	@echo 'GL_GROUP     = $(GL_GROUP)    '
-	@echo 'GL_REG_GROUP = $(GL_REG_GROUP)'
-	@echo 'GL_REG_NAME  = $(GL_REG_NAME) '
-	@echo 'REPO         = $(REPO)        '
-	@echo 'TAG_VERSION  = $(TAG_VERSION) '
-
-ls: ## list all docker images 
-	docker images 
diff --git a/.gitignore b/.gitignore
index fc73207f3317605a0fe800ba377eb6d81b65ecc0..3bbd3ea165610c6ec7fb3b0b5393235b3ae50171 100644
--- a/.gitignore
+++ b/.gitignore
@@ -60,6 +60,7 @@ examples/cache
 work
 build*
 build/
+BUILD/
 
 *.swp
 *.swo
diff --git a/.gitlabci/configure.sh b/.gitlabci/configure.sh
index c59d8a41a734e19c5ba32cc1217f12e281e5a56a..17d03176be86a7b7a9a78f76e71cff723352fd90 100755
--- a/.gitlabci/configure.sh
+++ b/.gitlabci/configure.sh
@@ -14,6 +14,8 @@ HCANA_BRANCH="master"
 
 if [ -n "${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}" ] ; then
     HCANA_BRANCH=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
+elif [ "x$CI_COMMIT_TAG" != "x" ]; then
+    HCANA_BRANCH=$CI_COMMIT_TAG
 fi
 
 echo "Configuring CI file: ${TEMPLATE_FILE}"
diff --git a/src/THcHelicity.h b/src/THcHelicity.h
index 0856055b0ba0e2a0604075dd8fd6ce2504fbb822..0546937017719c48e25ae5de150b898f8d492554 100644
--- a/src/THcHelicity.h
+++ b/src/THcHelicity.h
@@ -9,9 +9,10 @@
 //
 ////////////////////////////////////////////////////////////////////////
 
+#include "hcana/Logger.h"
+
 #include "THaHelicityDet.h"
 #include "THcHelicityReader.h"
-#include "hcana/Logger.h"
 
 class TH1F;
 class THcHelicityScaler;
diff --git a/src/THcHelicityScaler.cxx b/src/THcHelicityScaler.cxx
index 8b6ff54ec2003422908f742b0d20fcdf9c35c47a..0c4c13fa3e85450c6b1921a67b1a4e736fae0dbc 100644
--- a/src/THcHelicityScaler.cxx
+++ b/src/THcHelicityScaler.cxx
@@ -20,6 +20,7 @@
 #include <cstdio>
 #include <cstdlib>
 #include <cstring>
+#include <iomanip>
 #include <iostream>
 #include <iterator>
 #include <map>
@@ -29,14 +30,14 @@
 #include "TNamed.h"
 #include "TROOT.h"
 #include "TString.h"
-#include "fmt/core.h"
+//#include "fmt/core.h"
 #include "nlohmann/json.hpp"
 
-//#include "THaEvtTypeHandler.h"
 #include "GenScaler.h"
 #include "Scaler3801.h"
 #include "THaCodaData.h"
 #include "THaEvData.h"
+#include "THaEvtTypeHandler.h"
 #include "THaGlobals.h"
 #include "THcGlobals.h"
 #include "THcHelicity.h"
@@ -60,11 +61,26 @@ static const UInt_t MAXCHAN   = 32;
 static const UInt_t defaultDT = 4;
 
 THcHelicityScaler::THcHelicityScaler(const char* name, const char* description)
-    : hcana::ConfigLogging<THaEvtTypeHandler>(name, description), fBankID(9801),
-      fUseFirstEvent(kTRUE), fDelayedType(-1), fBCM_Gain(0), fBCM_Offset(0), fBCM_SatOffset(0),
-      fBCM_SatQuadratic(0), fBCM_delta_charge(0), evcount(0), evcountR(0.0), ifound(0),
-      fNormIdx(-1), fNormSlot(-1), dvars(0), dvarsFirst(0), fScalerTree(0), fOnlyBanks(kFALSE),
-      fClockChan(-1), fLastClock(0) {
+    : hcana::ConfigLogging<THaEvtTypeHandler>(name, description),
+      fBankID(9801),
+      fUseFirstEvent(kTRUE),
+      fDelayedType(-1),
+      fBCM_Gain(0),
+      fBCM_Offset(0),
+      fBCM_SatOffset(0),
+      fBCM_SatQuadratic(0),
+      fBCM_delta_charge(0),
+      evcount(0),
+      evcountR(0.0),
+      ifound(0),
+      fNormIdx(-1),
+      fNormSlot(-1),
+      dvars(0),
+      dvarsFirst(0),
+      fScalerTree(0),
+      fOnlyBanks(kFALSE),
+      fClockChan(-1),
+      fLastClock(0) {
 
   fRocSet.clear();
   fModuleSet.clear();
@@ -217,7 +233,7 @@ Int_t THcHelicityScaler::End(THaRunBase* runbase) {
     }
     j_helicity[fBCM_Name[i]] = {{"charge", fChargeSum[i]},
                                 {"charge_asymmetry", fChargeAsymmetry[i]},
-                                {"charge_asymmetry_error", fChargeAsymmetryError}};
+                                {"charge_asymmetry_error", fChargeAsymmetryError[i]}};
 
     // printf("%6s %12.2f %12.8f %12.2f %12.8f %12.8f\n",fBCM_Name[i].c_str(),fCharge[i],
     //	   fChargeAsymmetry[i],fChargeSum[i],asy,asyerr);
@@ -1312,10 +1328,10 @@ void THcHelicityScaler::MakeParms() {
 
   // no bcm cut required
   gHcParms->Define(Form("g%s_hscaler_plus[%d]", fName.Data(), fNScalerChannels),
-                   "Plus Helcity Scalers", *(fHScalers[0]));
+                   "Plus Helcity Scalers", fHScalers[0].front());
 
   gHcParms->Define(Form("g%s_hscaler_minus[%d]", fName.Data(), fNScalerChannels),
-                   "Minus Helcity Scalers", *(fHScalers[1]));
+                   "Minus Helcity Scalers", fHScalers[1].front());
 
   // gHcParms->Define(Form("g%s_hscaler_sum[%d]",fName.Data(),fNScalerChannels),
   //		   "Helcity Scalers Sum",*fScalerSums);
@@ -1340,22 +1356,22 @@ void THcHelicityScaler::MakeParms() {
 
   // bcm cut
   gHcParms->Define(Form("g%s_hscaler_sum[%d]", fName.Data(), fNScalerChannels),
-                   "Helcity Scalers Sum", *fScalSum);
+                   "Helcity Scalers Sum", fScalSum[0]);
 
   gHcParms->Define(Form("g%s_hscaler_asy[%d]", fName.Data(), fNScalerChannels),
-                   "Helicity Scaler Asymmetry[%d]", *fScalAsymmetry);
+                   "Helicity Scaler Asymmetry[%d]", fScalAsymmetry[0]);
 
   gHcParms->Define(Form("g%s_hscaler_asyerr[%d]", fName.Data(), fNScalerChannels),
-                   "Helicity Scaler Asymmetry Error[%d]", *fScalAsymmetryError);
+                   "Helicity Scaler Asymmetry Error[%d]", fScalAsymmetryError[0]);
 
   gHcParms->Define(Form("g%s_hscaler_charge[%d]", fName.Data(), fNumBCMs), "Helicity Gated Charge",
-                   *fChargeSum);
+                   fChargeSum[0]);
 
   gHcParms->Define(Form("g%s_hscaler_charge_asy[%d]", fName.Data(), fNumBCMs),
-                   "Helicity Gated Charge Asymmetry", *fChargeAsymmetry);
+                   "Helicity Gated Charge Asymmetry", fChargeAsymmetry[0]);
 
   gHcParms->Define(Form("g%s_hscaler_charge_asyerr[%d]", fName.Data(), fNumBCMs),
-                   "Helicity Gated Charge Asymmetry Error", *fChargeAsymmetryError);
+                   "Helicity Gated Charge Asymmetry Error", fChargeAsymmetryError[0]);
 
   gHcParms->Define(Form("g%s_hscaler_time", fName.Data()), "Helicity Gated Time (sec)", fTimeSum);
 
@@ -1424,8 +1440,9 @@ size_t THcHelicityScaler::FindNoCase(const string& sdata, const string& skey) {
   return sdatalc.find(skeylc, 0);
 };
 
-void WriteJson(const std::string& path) {
-  std::ofstream ofile{fmt::format("{}/hel_scalers_{}.json", path, j_helicity["run_number"]};
+void THcHelicityScaler::WriteJson(const std::string& path) const {
+  std::ofstream ofile{
+      fmt::format("{}/hel_scalers_{}.json", path, j_helicity["run_number"].get<int>())};
   ofile << std::setw(4) << j_helicity << "\n";
 }
 
diff --git a/src/THcHelicityScaler.h b/src/THcHelicityScaler.h
index 461c2ce5fa2b4f34bd3e37b2d36047c23f3c9128..008c6fb561e2bdff0093813d46471ed617496bbe 100644
--- a/src/THcHelicityScaler.h
+++ b/src/THcHelicityScaler.h
@@ -8,15 +8,17 @@
 //
 /////////////////////////////////////////////////////////////////////
 
-#include "Decoder.h"
 #include "THaEvtTypeHandler.h"
-#include "THaRunBase.h"
 #include "THcScalerEvtHandler.h"
+
+#include "Decoder.h"
+#include "THaRunBase.h"
 #include "TString.h"
 #include "TTree.h"
 #include "hcana/Logger.h"
 #include <algorithm>
 #include <cstring>
+#include <nlohmann/json.hpp>
 #include <set>
 #include <string>
 #include <vector>
@@ -54,7 +56,7 @@ public:
   Double_t GetMinusCharge(const std::string& name);
 
   // utility function to write out json helicity file
-  void WriteJson(const std::string& path);
+  void WriteJson(const std::string& path) const;
 
 private:
   //------------C.Y. Sep 20, 2020 :: Added Utility Function Prototypes----------------
@@ -87,7 +89,7 @@ private:
   std::vector<Double_t> fHScalers[2];
   Int_t                 fGateCount[2];
   std::vector<Double_t> fScalerSums, fAsymmetry, fAsymmetryError;
-  std::vector<Double_t> fCharge, fChargeAsymmetry;
+  std::vector<Double_t> fCharge;
   Double_t              fTime;
   Double_t              fTimePlus;
   Double_t              fTimeMinus;
@@ -166,7 +168,7 @@ private:
   //--------------------------------------------------------
 
   // json file with helicity info
-  json j_helicity;
+  nlohmann::json j_helicity;
 
   THcHelicityScaler(const THcHelicityScaler& fh);
   THcHelicityScaler& operator=(const THcHelicityScaler& fh);
diff --git a/src/THcScalerEvtHandler.cxx b/src/THcScalerEvtHandler.cxx
index 19a4a6dd4ee2f31d77aed31a381690e428caa499..63799c3b2a8fee22f7f565c6ab4403ffa749613c 100644
--- a/src/THcScalerEvtHandler.cxx
+++ b/src/THcScalerEvtHandler.cxx
@@ -75,11 +75,28 @@ static const UInt_t MAXCHAN   = 32;
 static const UInt_t defaultDT = 4;
 
 THcScalerEvtHandler::THcScalerEvtHandler(const char* name, const char* description)
-    : hcana::ConfigLogging<THaEvtTypeHandler>(name, description), fBCM_Gain(0), fBCM_Offset(0),
-      fBCM_SatOffset(0), fBCM_SatQuadratic(0), fBCM_delta_charge(0), evcount(0), evcountR(0.0),
-      ifound(0), fNormIdx(-1), fNormSlot(-1), dvars(0), dvars_prev_read(0), dvarsFirst(0),
-      fScalerTree(0), fUseFirstEvent(kTRUE), fOnlySyncEvents(kFALSE), fOnlyBanks(kFALSE),
-      fDelayedType(-1), fClockChan(-1), fLastClock(0), fClockOverflows(0) {
+    : hcana::ConfigLogging<THaEvtTypeHandler>(name, description),
+      fBCM_Gain(0),
+      fBCM_Offset(0),
+      fBCM_SatOffset(0),
+      fBCM_SatQuadratic(0),
+      fBCM_delta_charge(0),
+      evcount(0),
+      evcountR(0.0),
+      ifound(0),
+      fNormIdx(-1),
+      fNormSlot(-1),
+      dvars(0),
+      dvars_prev_read(0),
+      dvarsFirst(0),
+      fScalerTree(0),
+      fUseFirstEvent(kTRUE),
+      fOnlySyncEvents(kFALSE),
+      fOnlyBanks(kFALSE),
+      fDelayedType(-1),
+      fClockChan(-1),
+      fLastClock(0),
+      fClockOverflows(0) {
   fRocSet.clear();
   fModuleSet.clear();
   scal_prev_read.clear();
@@ -442,8 +459,8 @@ Int_t THcScalerEvtHandler::AnalyzeBuffer(UInt_t* rdata, Bool_t onlysync) {
               }
             }
             //	    printf("1st event %i index %i fBCMname %s scalerloc %s offset %f gain %f
-            //computed %f\n",evcount, bcm_ind,
-            //fBCM_Name[bcm_ind],scalerloc[ivar]->name.Data(),fBCM_Offset[bcm_ind],fBCM_Gain[bcm_ind],dvars[ivar]);
+            // computed %f\n",evcount, bcm_ind,
+            // fBCM_Name[bcm_ind],scalerloc[ivar]->name.Data(),fBCM_Offset[bcm_ind],fBCM_Gain[bcm_ind],dvars[ivar]);
           }
 
           if (fDebugFile)
@@ -506,7 +523,6 @@ Int_t THcScalerEvtHandler::AnalyzeBuffer(UInt_t* rdata, Bool_t onlysync) {
       } else {
         cout << "THcScalerEvtHandler:: ERROR:: incorrect index " << ivar << "  " << idx << "  "
              << ichan << endl;
->>>>>>> c420edd53c56a5a9d8db08d317c7f15c82de6d17
       }
     } else { // evcount != 0
       if (fDebugFile)