From 43e8ba6817330e1df1aa06d7cf773841ede0be93 Mon Sep 17 00:00:00 2001
From: Hall C Online Analyzer User <brad.hallc-online@swatter.net>
Date: Mon, 29 Jan 2018 18:55:41 -0500
Subject: [PATCH] Spring 2018 ver9 (#380)

* Update standard kinematic

* Update coin monitoring scripts

* Update kinematics files

* Add more scaler event types

* Updates to CT monitoring

* Update to BCM gains and offsets
---
 DBASE/COIN/STD/standard.kinematics            |  26 +-
 DBASE/HMS/STD/standard.kinematics             |  14 ++
 DBASE/SHMS/STD/standard.kinematics            |  14 ++
 PARAM/GEN/gscalers.param                      |   8 +-
 SCRIPTS/COIN/MONITOR/Bean_counter.C           |  26 +-
 SCRIPTS/COIN/MONITOR/coin_monitor.README      |  35 +++
 SCRIPTS/COIN/MONITOR/coin_monitor.root        | Bin 0 -> 10727 bytes
 SCRIPTS/COIN/MONITOR/coin_monitor_calc.C      | 223 ++++++++++++++++++
 .../COIN/MONITOR/coin_monitor_calc_batch.sh   |  23 ++
 SCRIPTS/COIN/MONITOR/coin_monitor_graph.C     | 149 ++++++++++++
 SCRIPTS/COIN/MONITOR/coin_monitor_init.C      |  26 ++
 SCRIPTS/COIN/MONITOR/coin_yield.root          | Bin 6904 -> 0 bytes
 SCRIPTS/COIN/MONITOR/temp.sh                  |  13 -
 SCRIPTS/COIN/MONITOR/yield.README             |  11 -
 SCRIPTS/COIN/MONITOR/yield_calc.C             | 125 ----------
 SCRIPTS/COIN/MONITOR/yield_graph.C            |  50 ----
 .../PRODUCTION/replay_production_hms_coin.C   |   4 +
 .../PRODUCTION/replay_production_shms_coin.C  |   4 +
 18 files changed, 537 insertions(+), 214 deletions(-)
 create mode 100644 SCRIPTS/COIN/MONITOR/coin_monitor.README
 create mode 100644 SCRIPTS/COIN/MONITOR/coin_monitor.root
 create mode 100644 SCRIPTS/COIN/MONITOR/coin_monitor_calc.C
 create mode 100755 SCRIPTS/COIN/MONITOR/coin_monitor_calc_batch.sh
 create mode 100644 SCRIPTS/COIN/MONITOR/coin_monitor_graph.C
 create mode 100644 SCRIPTS/COIN/MONITOR/coin_monitor_init.C
 delete mode 100644 SCRIPTS/COIN/MONITOR/coin_yield.root
 delete mode 100755 SCRIPTS/COIN/MONITOR/temp.sh
 delete mode 100644 SCRIPTS/COIN/MONITOR/yield.README
 delete mode 100644 SCRIPTS/COIN/MONITOR/yield_calc.C
 delete mode 100644 SCRIPTS/COIN/MONITOR/yield_graph.C

diff --git a/DBASE/COIN/STD/standard.kinematics b/DBASE/COIN/STD/standard.kinematics
index b8344892..8d3f6164 100644
--- a/DBASE/COIN/STD/standard.kinematics
+++ b/DBASE/COIN/STD/standard.kinematics
@@ -326,7 +326,7 @@ ppcentral = 5.122*0.985
 ppartmass = 0.93827231
 hpartmass = 0.00051099
 
-2067-9999
+2067-2068
 gpbeam = 6.405
 gtargmass_amu = 26.98
 htheta_lab = -45.11
@@ -334,4 +334,26 @@ ptheta_lab = 17.12
 hpcentral = 2.131
 ppcentral = 5.122*0.985
 ppartmass = 0.93827231
-hpartmass = 0.0005109
\ No newline at end of file
+hpartmass = 0.0005109
+
+#Carbon Hole, Jan 26 2018
+2081-2185
+gpbeam = 6.405
+gtargmass_amu =  12.0107
+htheta_lab = -45.11
+ptheta_lab = 17.12
+hpcentral = 2.131
+ppcentral = 5.122*0.985
+ppartmass = 0.93827231
+hpartmass = 0.0005109
+
+#CT Experiment (E12-06-107)
+2186-9999
+gpbeam = 6.405
+gtargmass_amu =  12.0107
+htheta_lab = -45.145
+ptheta_lab = 17.11
+hpcentral = 2.131
+ppcentral = 5.122*0.985
+ppartmass = 0.93827231
+hpartmass = 0.0005109
diff --git a/DBASE/HMS/STD/standard.kinematics b/DBASE/HMS/STD/standard.kinematics
index 52b28456..c34f08d2 100644
--- a/DBASE/HMS/STD/standard.kinematics
+++ b/DBASE/HMS/STD/standard.kinematics
@@ -433,3 +433,17 @@ gtargmass_amu= 1.00794
 hpartmass = 0.00051099
 htheta_lab = -65.0
 hpcentral = 1.0
+
+1481-1492
+gpbeam = 6.404 
+gtargmass_amu= 26.98
+hpartmass = 0.00051099
+htheta_lab = -64.99
+hpcentral = 1.0
+
+1493-1497
+gpbeam = 6.404 
+gtargmass_amu= 1.00794
+hpartmass = 0.00051099
+htheta_lab = -65.0
+hpcentral = 1.0
\ No newline at end of file
diff --git a/DBASE/SHMS/STD/standard.kinematics b/DBASE/SHMS/STD/standard.kinematics
index a2b52b38..9e8a6fd5 100644
--- a/DBASE/SHMS/STD/standard.kinematics
+++ b/DBASE/SHMS/STD/standard.kinematics
@@ -322,3 +322,17 @@ gtargmass_amu= 1.00794
 ppartmass =  0.00051099
 ptheta_lab =35.06
 ppcentral = 2.869
+
+2214-2220
+gpbeam = 6.404
+gtargmass_amu= 26.98
+ppartmass =  0.00051099
+ptheta_lab =25.0
+ppcentral = 3.911
+
+2221-2225
+gpbeam = 6.404
+gtargmass_amu= 1.00794
+ppartmass =  0.00051099
+ptheta_lab =25.0
+ppcentral = 3.911
\ No newline at end of file
diff --git a/PARAM/GEN/gscalers.param b/PARAM/GEN/gscalers.param
index 53b5ed81..d7df94dd 100644
--- a/PARAM/GEN/gscalers.param
+++ b/PARAM/GEN/gscalers.param
@@ -1,7 +1,9 @@
+# Please keep the order of BCM1 BCM2 BCM4A BCM4B BCM17 Unser
+# Some code in hcana depends on the order.
 gNumBCMs=6
-gBCM_Gain = 4574,3847,4166,13560,6456.,2154.
-gBCM_Offset = 250200,250100,393000,-2994.0,-1148.0,-154.3
+gBCM_Gain = 4574,3847,13560,6456.,2154.,4166
+gBCM_Offset = 250200,250100,-2994.0,-1148.0,-154.3,393000
 gBCM_Names="BCM1 BCM2 Unser BCM4A BCM4B BCM17"
-gBCM_Current_threshold=0.5
+gBCM_Current_threshold=20
 ; index = 0 to gNumBCMs-1
 gBCM_Current_threshold_index=3
diff --git a/SCRIPTS/COIN/MONITOR/Bean_counter.C b/SCRIPTS/COIN/MONITOR/Bean_counter.C
index d95bb962..f0e9f8f4 100644
--- a/SCRIPTS/COIN/MONITOR/Bean_counter.C
+++ b/SCRIPTS/COIN/MONITOR/Bean_counter.C
@@ -31,14 +31,14 @@ void Bean_counter(Int_t runNumber, Int_t targ){
   TH1D *h_hyptar = new TH1D("h_hyptar","HMS YPTAR (rad)",100,-0.08,0.08);
   TH1D *h_hytar = new TH1D("h_hytar","HMS YTAR (cm)",100,-12.0,12.0);
 
-  TH1D *h_pdelta = new TH1D("h_pdelta","SHMS DELTA (%)",100,-12,12);
+  TH1D *h_pdelta = new TH1D("h_pdelta","SHMS DELTA (%)",100,-15,15);
   TH1D *h_pxptar = new TH1D("h_pxptar","SHMS XPTAR (rad)",100,-0.06,0.06);
   TH1D *h_pyptar = new TH1D("h_pyptar","SHMS YPTAR (rad)",100,-0.06,0.06);
   TH1D *h_pytar = new TH1D("h_pytar","SHMS YTAR (cm)",100,-12.0,12.0);
 
-  TH1D *h_Emd = new TH1D("h_Emd","Missing Energy (GeV)",200,-0.2,0.2);
-  TH1D *h_Wd = new TH1D("h_Wd","W (GeV)", 150, 0, 2);
-  TH1D *h_pmd = new TH1D("h_pmd","Pm (GeV/c)", 100, -0.2, 0.2);
+  TH1D *h_Emd = new TH1D("h_Emd",Form("Missing Energy (GeV) Run:%d",runNumber),200,-0.15,0.25);
+  TH1D *h_Wd = new TH1D("h_Wd",Form("W (GeV) Run:%d",runNumber), 150, 0., 2.);
+  TH1D *h_pmd = new TH1D("h_pmd","Pm (GeV/c)", 100, -0.02, 0.35);
   TH1D *h1PcointimeROC1 = new TH1D("SHMS ROC1 Corrected Coin Time","SHMS ROC1 Corrected Coin Time; cointime [ns]", 200, -10, 10);    
   TH1D *h1PcointimeROC2 = new TH1D("SHMS ROC2 Corrected Coin Time","SHMS ROC2 Corrected Coin Time; cointime [ns]", 200, -10, 10); 
 
@@ -46,7 +46,7 @@ void Bean_counter(Int_t runNumber, Int_t targ){
   Double_t HgtrX, HgtrTh, HgtrY, HgtrPh, hdelta, PgtrX, PgtrTh, PgtrY, PgtrPh, pdelta;
   Double_t HgtrBetaCalc, PgtrBetaCalc, evtType, PgtrP, HgtrP, PhodStatus, PhodStartTime, PhodfpHitsTime;
   Double_t cointime, HhodStatus, HhodStartTime, HhodfpHitsTime, SHMSpartMass, HMSpartMass;
-  Double_t pkinW, pEm, pPm, pbeta, hbeta, hcalepr, hcaletot, hcernpe, pcaletot, pcalepr, pcernpe;
+  Double_t pkinW, pEm, pPm, modPm, pbeta, hbeta, hcalepr, hcaletot, hcernpe, pcaletot, pcalepr, pcernpe;
   Double_t TcoinpTRIG1_ROC1_tdcTimeRaw, TcoinpTRIG4_ROC1_tdcTimeRaw, TcoinpTRIG1_ROC2_tdcTimeRaw;
   Double_t TcoinhTRIG1_ROC1_tdcTimeRaw, TcoinhTRIG1_ROC2_tdcTimeRaw, TcoinhTRIG4_ROC1_tdcTimeRaw;
   Double_t TcoinhTRIG4_ROC2_tdcTimeRaw, TcoinpTRIG4_ROC2_tdcTimeRaw;
@@ -156,7 +156,7 @@ void Bean_counter(Int_t runNumber, Int_t targ){
     tt->GetEntry(kk);
     if (kk % 50000 == 0) cout << kk*100/nentriesD << "   % of data done" << endl;
       evtType = tt->GetLeaf("fEvtHdr.fEvtType")->GetValue(); 
-    if (pbeta>0.8 && pbeta<1.3 && hbeta>0.8 && hbeta<1.2 && hcernpe>0.1 && hcaletot >0.8 && hcaletot<1.2 && PhodStatus == 1 && HhodStatus ==1 && hdelta > -10 && hdelta < 10 && pdelta > -12 && pdelta < 12 && pcernpe < 0.1) 
+    if (pbeta>0.6 && pbeta<1.4 && hbeta>0.8 && hbeta<1.2 && hcernpe>0. && hcaletot >0.6 && hcaletot<2.0 && PhodStatus == 1 && HhodStatus ==1 && hdelta > -10 && hdelta < 10 && pdelta > -15 && pdelta < 15 && pcernpe < 0.1) 
     { 
 	DeltaHMSpathLength = 12.462*HgtrTh + 0.1138*HgtrTh*HgtrX - 0.0154*HgtrX - 72.292*HgtrTh*HgtrTh - 0.0000544*HgtrX*HgtrX - 116.52*HgtrPh*HgtrPh;               
       PgtrBetaCalc = PgtrP/sqrt(PgtrP*PgtrP + SHMSpartMass*SHMSpartMass);        
@@ -187,7 +187,7 @@ void Bean_counter(Int_t runNumber, Int_t targ){
       }
       else if (targ == 2)
       {
-       if (pkinW > 0.5 && pkinW < 1.5)
+	if (sqrt(pPm*pPm) < 0.4)
         {
         h_hdelta->Fill(hdelta);
         h_hxptar->Fill(HgtrPh);
@@ -197,9 +197,10 @@ void Bean_counter(Int_t runNumber, Int_t targ){
         h_pxptar->Fill(PgtrPh);
         h_pyptar->Fill(PgtrTh);
         h_pytar->Fill(PgtrY);
-        h_Emd->Fill(pEm+0.025);
+        h_Emd->Fill(pEm);
         h_Wd->Fill(pkinW);
-        h_pmd->Fill(pPm-0.04);
+        modPm = sqrt(pPm*pPm);
+        h_pmd->Fill(modPm);
         cnts++;
         }
       }
@@ -232,15 +233,20 @@ void Bean_counter(Int_t runNumber, Int_t targ){
   h_pytar->Draw();  
   //  can1->SaveAs("tmp1.pdf");
 
-  TCanvas *can2 = new TCanvas ("can2","can2");
+  TCanvas *can2 = new TCanvas ("can2",Form("can2 Run: %d",runNumber));
   can2->Divide(2,2);
   can2->cd(1);
+  h_Wd->SetFillColor(kBlue);
   h_Wd->Draw();
   can2->cd(2); 
+  h_Emd->SetFillColor(kBlue);
   h_Emd->Draw(); 
   can2->cd(3); 
+  h_pmd->SetFillColor(kBlue);
   h_pmd->Draw(); 
   can2->cd(4); 
+  h1PcointimeROC1->SetLineColor(kBlue);
+  h1PcointimeROC1->SetLineWidth(3);
   h1PcointimeROC1->Draw();
 
   // can2->SaveAs("tmp.pdf");
diff --git a/SCRIPTS/COIN/MONITOR/coin_monitor.README b/SCRIPTS/COIN/MONITOR/coin_monitor.README
new file mode 100644
index 00000000..9b7553a4
--- /dev/null
+++ b/SCRIPTS/COIN/MONITOR/coin_monitor.README
@@ -0,0 +1,35 @@
+These two scripts calculate and plot (vs run number) various quantities
+including yield per mC, live time, and efficiencies. These are all
+grabbed from report files using awk. This obviously makes STRONG assumptions
+about the structure of the template report file, so be careful.
+
+1) Grab monitored quantities
+        1) Run `./hcana SCRIPTS/COIN/MONITOR/coin_monitor_calc.C` 
+           in your hallc_replay directory
+        2) Enter run number
+        3) Enter index specifying target
+
+        It will warn you if you're overwriting a run already in coin_monitor.root,
+        but this might be what you want to do! For example, you might have added
+        something to the macro and need to add the new quantities for old runs.
+
+2) Plot monitored quantities vs run
+        1) Run `./hcana SCRIPTS/COIN/MONITOR/coin_monitor_graph.C` 
+           in your hallc_replay directory
+        2) Make sure nothing has fluctuated
+
+	*) If you prefer, you can specify a range of runs to graph
+	   e.g. `.x SCRIPTS/COIN/MONITOR/coin_monitor_graph.C(2185,2191)`
+
+TROUBLESHOOTING:
+If coin_monitor.root gets deleted, you can run coin_monitor_init.C to create an
+empty coin_monitor.root. Running this will also overwrite any existing data in
+a non-empty coin_monitor.root
+
+TO-DO:
+- Macro to delete a run's data from coin_monitor.root
+- Implement kinematic settings (different markers?)
+- Save as PDF 
+
+QUESTIONS/CONCERNS:
+Email matter@virginia.edu
diff --git a/SCRIPTS/COIN/MONITOR/coin_monitor.root b/SCRIPTS/COIN/MONITOR/coin_monitor.root
new file mode 100644
index 0000000000000000000000000000000000000000..53529423655263fbbc212491eb28adb57add778a
GIT binary patch
literal 10727
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
X@d1sufR|*ZkiJ+FtoM1j=@bS4`{p{}

literal 0
HcmV?d00001

diff --git a/SCRIPTS/COIN/MONITOR/coin_monitor_calc.C b/SCRIPTS/COIN/MONITOR/coin_monitor_calc.C
new file mode 100644
index 00000000..e74d818e
--- /dev/null
+++ b/SCRIPTS/COIN/MONITOR/coin_monitor_calc.C
@@ -0,0 +1,223 @@
+void coin_monitor_calc(Int_t RunNumber = 0, Int_t TargetType = 0, Int_t KinematicsType = 0)
+{
+
+	// Get RunNumber if not provided.
+	if(RunNumber == 0) {
+		cout << "Enter a Run Number (-1 to exit): ";
+		cin >> RunNumber;
+		if( RunNumber<=0 ) return;
+	}
+
+	// Get if not provided.
+	if(TargetType == 0) {
+		cout << "Enter a target (1=LH2, 2=6% Carbon, 3=dummy, -1 to exit): ";
+		cin >> TargetType;
+		if( TargetType<=0 ) return;
+	}
+
+	// Get KinematicsType if not provided.
+	//if(KinematicsType == 0) {
+	//	cout << "Enter a kinematics index (see coin_monitor.README; -1 to exit): ";
+	//	cin >> KinematicsType;
+	//	if( KinematicsType<=0 ) return;
+	//}
+
+
+	// ========================================================================
+	// A cheat to grab some efficiencies from the report output.
+	// I'm doing this because I don't know how to access this from the root file
+	// Note that this makes BIG assumptions about the structure of the template!
+	//
+	TString sysOutput;	// awk output
+	TString field;          // description in report
+	TObjArray* stringsPtr;  // used in tokenizing
+
+	// report filename
+	TString reportFile = Form("REPORT_OUTPUT/COIN/PRODUCTION/replay_coin_production_%d_-1.report", RunNumber);
+
+	// awk template for getting value form report
+	// Assumes value is separated from description by a colon.
+	// You need to be careful if there are multiple matches in the file.
+	TString awk_template = "awk -F':' '/%s/{print $2}' %s";
+	
+	// SHMS charge1 -------------------------------------------------------
+	field = "SHMS BCM1  Beam Cut Charge";
+	sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data()));
+	stringsPtr = sysOutput.Tokenize("\n");
+	double pQ_BCM1 = ((TObjString *)(stringsPtr->At(0)))->String().Atof();
+
+	// SHMS charge2 -------------------------------------------------------
+	field = "SHMS BCM2  Beam Cut Charge";
+	sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data()));
+	stringsPtr = sysOutput.Tokenize("\n");
+	double pQ_BCM2 = ((TObjString *)(stringsPtr->At(0)))->String().Atof();
+
+	// HMS charge1 --------------------------------------------------------
+	field = "HMS BCM1  Beam Cut Charge";
+	sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data()));
+	stringsPtr = sysOutput.Tokenize("\n");
+	double hQ_BCM1 = ((TObjString *)(stringsPtr->At(0)))->String().Atof();
+
+	// HMS charge2 --------------------------------------------------------
+	field = "HMS BCM1  Beam Cut Charge";
+	sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data()));
+	stringsPtr = sysOutput.Tokenize("\n");
+	double hQ_BCM2 = ((TObjString *)(stringsPtr->At(0)))->String().Atof();
+
+	// SHMS N TRIG --------------------------------------------------------
+	field = "SHMS Accepted Physics Triggers";
+	sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data()));
+	stringsPtr = sysOutput.Tokenize("\n");
+	double pN_trig = ((TObjString *)(stringsPtr->At(0)))->String().Atof();
+
+	// HMS N TRIG ---------------------------------------------------------
+	field = "HMS Accepted Physics Triggers";
+	sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data()));
+	stringsPtr = sysOutput.Tokenize("\n");
+	double hN_trig = ((TObjString *)(stringsPtr->At(0)))->String().Atof();
+
+
+	// Yield per mC
+	double pYield = 1000 * pN_trig / ((pQ_BCM1 + pQ_BCM2)/2.0);
+	double hYield = 1000 * hN_trig / ((hQ_BCM1 + hQ_BCM2)/2.0);
+
+	// SHMS hadron track efficiency ---------------------------------------
+	// Assume SHMS is the first match, HMS is the second
+	field = "HADRON SING FID TRACK EFF";
+	sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data()));
+	stringsPtr = sysOutput.Tokenize("\n");
+	sysOutput = ((TObjString *)(stringsPtr->At(0)))->String(); // first match
+	stringsPtr = sysOutput.Tokenize("+-"); // this line has erorr printed as well
+	double pHadTrackEff    = ((TObjString *)(stringsPtr->At(0)))->String().Atof();
+	double pHadTrackEffErr = ((TObjString *)(stringsPtr->At(1)))->String().Atof();
+
+	// HMS electron track efficiency ---------------------------------------
+	// Assume SHMS is the first match, HMS is the second
+	field = "E SING FID TRACK EFFIC";
+	sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data()));
+	stringsPtr = sysOutput.Tokenize("\n");
+	sysOutput = ((TObjString *)(stringsPtr->At(1)))->String(); // second match
+	stringsPtr = sysOutput.Tokenize("+-"); // this line has erorr printed as well
+	double hElecTrackEff    = ((TObjString *)(stringsPtr->At(0)))->String().Atof();
+	double hElecTrackEffErr = ((TObjString *)(stringsPtr->At(1)))->String().Atof();
+
+	// SHMS and HMS 3/4 trigger efficiency ---------------------------------
+	// Assume SHMS is the first match, HMS is the second
+	field = "3_of_4 EFF";
+	sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data()));
+	stringsPtr = sysOutput.Tokenize("\n");
+	double p3of4Eff         = ((TObjString *)(stringsPtr->At(0)))->String().Atof();
+	double h3of4Eff         = ((TObjString *)(stringsPtr->At(1)))->String().Atof();
+
+	// Live Time ----------------------------------------------------------
+	field = "ROC2 Pre-Scaled Ps6 ROC2 Computer Live Time";
+	sysOutput = gSystem->GetFromPipe(Form(awk_template.Data(), field.Data(), reportFile.Data()));
+	stringsPtr = sysOutput.Tokenize("\n");
+	double roc2PS6liveTime  = ((TObjString *)(stringsPtr->At(0)))->String().Atof();
+
+	// ========================================================================
+	// Bookkeeping
+
+	// Open old data, copy to new tree.
+	// We skip if an old datum's run number matches the one the user specified.
+	TFile* newYieldF = new TFile("SCRIPTS/COIN/MONITOR/coin_monitor_new.root", "RECREATE");
+	TTree* TY_new = new TTree("Y","coin_monitor tree");
+	int run_new, tgt_new, kin_new, pN_trig_new, hN_trig_new;
+	double pYpc_new, hYpc_new, pQ_new, hQ_new;
+	double pHadTrackEff_new, pHadTrackEffErr_new, hElecTrackEff_new, hElecTrackEffErr_new;
+	double p3of4Eff_new, h3of4Eff_new, roc2PS6liveTime_new;
+	TY_new->Branch("run",&run_new);
+	TY_new->Branch("tgt",&tgt_new);
+	TY_new->Branch("kin",&kin_new);
+	TY_new->Branch("pYpc",&pYpc_new);
+	TY_new->Branch("hYpc",&hYpc_new);
+	TY_new->Branch("pN_trig",&pN_trig_new);
+	TY_new->Branch("hN_trig",&hN_trig_new);
+	TY_new->Branch("pQ",&pQ_new);
+	TY_new->Branch("hQ",&hQ_new);
+	TY_new->Branch("pHadTrackEff",&pHadTrackEff_new);
+	TY_new->Branch("pHadTrackEffErr",&pHadTrackEffErr_new);
+	TY_new->Branch("hElecTrackEff",&hElecTrackEff_new);
+	TY_new->Branch("hElecTrackEffErr",&hElecTrackEffErr_new);
+	TY_new->Branch("p3of4Eff",&p3of4Eff_new);
+	TY_new->Branch("h3of4Eff",&h3of4Eff_new);
+	TY_new->Branch("roc2PS6liveTime",&roc2PS6liveTime_new);
+
+	TFile* yieldF = new TFile("SCRIPTS/COIN/MONITOR/coin_monitor.root","READ");
+	TTree* TY_old = (TTree*)yieldF->Get("Y");
+
+	int run_old, tgt_old, kin_old, pN_trig_old, hN_trig_old;
+	double pYpc_old, hYpc_old, pQ_old, hQ_old;
+	double pHadTrackEff_old, pHadTrackEffErr_old, hElecTrackEff_old, hElecTrackEffErr_old;
+	double p3of4Eff_old, h3of4Eff_old, roc2PS6liveTime_old;
+	TY_old->SetBranchAddress("run",&run_old);
+	TY_old->SetBranchAddress("tgt",&tgt_old);
+	TY_old->SetBranchAddress("kin",&kin_old);
+	TY_old->SetBranchAddress("pYpc",&pYpc_old);
+	TY_old->SetBranchAddress("hYpc",&hYpc_old);
+	TY_old->SetBranchAddress("pN_trig",&pN_trig_old);
+	TY_old->SetBranchAddress("hN_trig",&hN_trig_old);
+	TY_old->SetBranchAddress("pQ",&pQ_old);
+	TY_old->SetBranchAddress("hQ",&hQ_old);
+	TY_old->SetBranchAddress("pHadTrackEff",&pHadTrackEff_old);
+	TY_old->SetBranchAddress("pHadTrackEffErr",&pHadTrackEffErr_old);
+	TY_old->SetBranchAddress("hElecTrackEff",&hElecTrackEff_old);
+	TY_old->SetBranchAddress("hElecTrackEffErr",&hElecTrackEffErr_old);
+	TY_old->SetBranchAddress("p3of4Eff",&p3of4Eff_old);
+	TY_old->SetBranchAddress("h3of4Eff",&h3of4Eff_old);
+	TY_old->SetBranchAddress("roc2PS6liveTime",&roc2PS6liveTime_old);
+
+	newYieldF->cd();
+	for (int i=0; i<TY_old->GetEntries(); i++) {
+		TY_old->GetEntry(i);
+
+		// Skip if matches user specified run
+		if (run_old == RunNumber) {
+			cout << "WARNING: Overwriting run " << RunNumber << endl;
+			continue;
+		}
+
+		run_new     = run_old;
+		tgt_new     = tgt_old;
+		kin_new     = kin_old;
+		pYpc_new    = pYpc_old;
+		hYpc_new    = hYpc_old;
+		pN_trig_new = pN_trig_old;
+		hN_trig_new = pN_trig_old;
+		pQ_new      = pQ_old;
+		hQ_new      = hQ_old;
+		pHadTrackEff_new     = pHadTrackEff_old;
+		pHadTrackEffErr_new  = pHadTrackEffErr_old;
+		hElecTrackEff_new    = hElecTrackEff_old;
+		hElecTrackEffErr_new = hElecTrackEffErr_old;
+		p3of4Eff_new         = p3of4Eff_old;
+		h3of4Eff_new         = h3of4Eff_old;
+		roc2PS6liveTime_new  = roc2PS6liveTime_old;
+
+		TY_new->Fill();
+	}
+
+	// Add user specified run
+	run_new     = RunNumber;
+	tgt_new     = TargetType;
+	kin_new     = KinematicsType;
+	pYpc_new    = pYield;
+	hYpc_new    = hYield;
+	pN_trig_new = pN_trig;
+	hN_trig_new = hN_trig;
+	pQ_new      = ((pQ_BCM1 + pQ_BCM2)/2.0) / 1000.0;
+	hQ_new      = ((hQ_BCM1 + hQ_BCM2)/2.0) / 1000.0;
+	pHadTrackEff_new     = pHadTrackEff;
+	pHadTrackEffErr_new  = pHadTrackEffErr;
+	hElecTrackEff_new    = hElecTrackEff;
+	hElecTrackEffErr_new = hElecTrackEffErr;
+	p3of4Eff_new         = p3of4Eff;
+	h3of4Eff_new         = h3of4Eff;
+	roc2PS6liveTime_new  = roc2PS6liveTime;
+	TY_new->Fill();
+
+	// Rename new root file to old one
+	newYieldF->Write();
+	newYieldF->Close();
+	gSystem->Exec("mv SCRIPTS/COIN/MONITOR/coin_monitor_new.root SCRIPTS/COIN/MONITOR/coin_monitor.root");
+}
diff --git a/SCRIPTS/COIN/MONITOR/coin_monitor_calc_batch.sh b/SCRIPTS/COIN/MONITOR/coin_monitor_calc_batch.sh
new file mode 100755
index 00000000..e3b1f829
--- /dev/null
+++ b/SCRIPTS/COIN/MONITOR/coin_monitor_calc_batch.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_init.C"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2023,1,1)"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2046,1,1)"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2047,1,1)"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2048,1,1)"
+#./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2049,1,1)"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2050,1,1)"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2051,1,1)"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2052,1,1)"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2054,1,1)"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2055,3,1)"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2056,2,1)"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2062,2,1)"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2064,2,1)"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2065,2,1)"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2066,1,1)"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2067,3,1)"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2068,3,1)"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2187,2,1)"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2188,2,1)"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2189,2,1)"
+./hcana -q "SCRIPTS/COIN/MONITOR/coin_monitor_calc.C(2190,2,1)"
diff --git a/SCRIPTS/COIN/MONITOR/coin_monitor_graph.C b/SCRIPTS/COIN/MONITOR/coin_monitor_graph.C
new file mode 100644
index 00000000..cae6103d
--- /dev/null
+++ b/SCRIPTS/COIN/MONITOR/coin_monitor_graph.C
@@ -0,0 +1,149 @@
+void coin_monitor_graph(int runMin = -1, int runMax = -1) {
+	TFile* yieldF = new TFile("SCRIPTS/COIN/MONITOR/coin_monitor.root","READ");
+	TTree* TY=(TTree*)yieldF->Get("Y");
+
+	//gStyle->SetOptTitle(kFALSE);
+	gStyle->SetPalette(1);
+	TVirtualPad *pad;
+
+	TCanvas* c = new TCanvas("c", "Coincidence monitoring", 1024, 640);
+	c->Divide(2,2);
+
+	// Get min and max run number
+	// If user specifies -1 for min||max, we use the min||max in coin_monitor.root
+	// These are also the defaults
+	Y->Draw("run>>htemp","","goff");
+	if (runMin==-1) {
+		runMin = htemp->GetXaxis()->GetXmin() - 5;
+	}
+	if (runMax==-1) {
+		runMax = htemp->GetXaxis()->GetXmax() + 5;
+	}
+
+	// =============================================
+	// YIELD
+	pad = c->cd(1);
+
+	TCut hCut = "tgt==1";
+	Y->Draw("run:pYpc:(sqrt(pN_trig)/pQ)",hCut,"goff");
+	TGraphErrors* gHydrogen = new TGraphErrors(Y->GetEntries(),Y->GetV1(),Y->GetV2(),0,Y->GetV3());
+
+	TCut cCut = "tgt==2";
+	Y->Draw("run:pYpc:(sqrt(pN_trig)/pQ)",cCut,"goff");
+	TGraphErrors* gCarbon = new TGraphErrors(Y->GetEntries(),Y->GetV1(),Y->GetV2(),0,Y->GetV3());
+
+	//TCut dCut = "tgt==3";
+	//Y->Draw("run:pYpc:(sqrt(pN_trig)/pQ)",dCut,"goff");
+	//TGraphErrors* gDummy = new TGraphErrors(Y->GetEntries(),Y->GetV1(),Y->GetV2(),0,Y->GetV3());
+
+	gHydrogen->SetLineColor(46);
+	gCarbon->SetLineColor(38);
+	//gDummy->SetLineColor(41);
+
+
+	TMultiGraph *mgYield = new TMultiGraph("mgYield", "Coincidence yield per run");
+
+	mgYield->Add(gHydrogen);
+	mgYield->Add(gCarbon);
+	//mgYield->Add(gDummy);
+
+	mgYield->Draw("AP");
+	mgYield->GetXaxis()->SetLimits(runMin, runMax);
+	mgYield->GetXaxis()->SetTitle("Run Number");
+	mgYield->GetYaxis()->SetTitle("Yield per mC");
+
+	TLegend *legYield = new TLegend(0.15, 0.3, 0.35, 0.2); 
+	legYield->SetFillColor(0); 
+	legYield->AddEntry(gHydrogen, "Hydrogen", "lp"); 
+	legYield->AddEntry(gCarbon, "Carbon", "lp"); 
+	//legYield->AddEntry(gDummy, "Dummy", "lp");
+	legYield->Draw();
+
+	
+	// =============================================
+	// LIVE TIME
+	pad = c->cd(2);
+
+	Y->Draw("run:roc2PS6liveTime","","goff");
+	TGraph* gPLive = new TGraph(Y->GetEntries(), Y->GetV1(), Y->GetV2());
+
+	gPLive->SetTitle("ROC2 PS6 Live Time");
+
+	gPLive->SetMarkerStyle(22);
+	gPLive->SetMarkerColor(30);
+	gPLive->SetMinimum(48);
+	gPLive->SetMaximum(102);
+	gPLive->Draw("AP");
+
+	gPLive->GetXaxis()->SetLimits(runMin, runMax);
+	gPLive->GetXaxis()->SetTitle("Run Number");
+	gPLive->GetYaxis()->SetTitle("Live time");
+
+	// =============================================
+	// 3 of 4 efficiency
+	pad = c->cd(3);
+
+	Y->Draw("run:p3of4Eff","","goff");
+	TGraph* gP3of4 = new TGraph(Y->GetEntries(), Y->GetV1(), Y->GetV2());
+	
+	Y->Draw("run:h3of4Eff","","goff");
+	TGraph* gH3of4 = new TGraph(Y->GetEntries(), Y->GetV1(), Y->GetV2());
+
+	gP3of4->SetMarkerColor(46);
+	gP3of4->SetMarkerStyle(26);
+	gH3of4->SetMarkerColor(30);
+	gH3of4->SetMarkerStyle(32);
+
+	TMultiGraph *mg3of4 = new TMultiGraph("mg3of4", "3 of 4 Efficiency");
+
+	mg3of4->Add(gP3of4);
+	mg3of4->Add(gH3of4);
+
+	mg3of4->Draw("AP");
+	mg3of4->SetMinimum(0.48);
+	mg3of4->SetMaximum(1.02);
+	mg3of4->GetXaxis()->SetLimits(runMin, runMax);
+	mg3of4->GetXaxis()->SetTitle("Run Number");
+	mg3of4->GetYaxis()->SetTitle("3/4 Efficiency");
+
+	TLegend *leg3of4 = new TLegend(0.15, 0.3, 0.35, 0.2);
+        leg3of4->SetFillColor(0);
+        leg3of4->AddEntry(gP3of4, "SHMS 3/4", "p");
+        leg3of4->AddEntry(gH3of4, "HMS 3/4", "p");
+        leg3of4->Draw();
+
+	// =============================================
+	// PID track efficiency
+	pad = c->cd(4);
+
+	Y->Draw("run:pHadTrackEff:pHadTrackEffErr","","goff");
+	TGraphErrors* gPTrack = new TGraphErrors(Y->GetEntries(),Y->GetV1(),Y->GetV2(),0,Y->GetV3());
+
+	Y->Draw("run:hElecTrackEff:hElecTrackEffErr","","goff");
+	TGraphErrors* gHTrack = new TGraphErrors(Y->GetEntries(),Y->GetV1(),Y->GetV2(),0,Y->GetV3());
+
+	gPTrack->SetMarkerColor(46);
+	gPTrack->SetLineColor(46);
+	gPTrack->SetMarkerStyle(26);
+	gHTrack->SetMarkerColor(30);
+	gHTrack->SetLineColor(30);
+	gHTrack->SetMarkerStyle(32);
+
+	TMultiGraph *mgTrack = new TMultiGraph("mgTrack", "PID Tracking Efficiency");
+	mgTrack->Add(gPTrack);
+	mgTrack->Add(gHTrack);
+
+	mgTrack->Draw("AP");
+	mgTrack->SetMinimum(0.48);
+	mgTrack->SetMaximum(1.02);
+	mgTrack->GetXaxis()->SetLimits(runMin, runMax);
+	mgTrack->GetXaxis()->SetTitle("Run Number");
+	mgTrack->GetYaxis()->SetTitle("PID Tracking Efficiency");
+
+	TLegend *legTrack = new TLegend(0.15, 0.3, 0.35, 0.2);
+        legTrack->SetFillColor(0);
+        legTrack->AddEntry(gPTrack, "SHMS Hadron", "p");
+        legTrack->AddEntry(gHTrack, "HMS Electron", "p");
+        legTrack->Draw();
+
+}	
diff --git a/SCRIPTS/COIN/MONITOR/coin_monitor_init.C b/SCRIPTS/COIN/MONITOR/coin_monitor_init.C
new file mode 100644
index 00000000..5c84adff
--- /dev/null
+++ b/SCRIPTS/COIN/MONITOR/coin_monitor_init.C
@@ -0,0 +1,26 @@
+{
+    TFile* newYieldF = new TFile("SCRIPTS/COIN/MONITOR/coin_monitor.root", "RECREATE");
+    TTree* TY_new = new TTree("Y","SCRIPTS/COIN/MONITOR/coin_monitor tree");
+    int run_new, tgt_new, kin_new, pN_trig_new, hN_trig_new;
+    double pYpc_new, hYpc_new, pQ_new, hQ_new;
+    double pHadTrackEff_new, pHadTrackEffErr_new, hElecTrackEff_new, hElecTrackEffErr_new;
+    double p3of4Eff_new, h3of4Eff_new, roc2PS6liveTime_new;
+    TY_new->Branch("run",&run_new);
+    TY_new->Branch("tgt",&tgt_new);
+    TY_new->Branch("kin",&kin_new);
+    TY_new->Branch("pYpc",&pYpc_new);
+    TY_new->Branch("hYpc",&hYpc_new);
+    TY_new->Branch("pN_trig",&pN_trig_new);
+    TY_new->Branch("hN_trig",&hN_trig_new);
+    TY_new->Branch("pQ",&pQ_new);
+    TY_new->Branch("hQ",&hQ_new);
+    TY_new->Branch("pHadTrackEff",&pHadTrackEff_new);
+    TY_new->Branch("pHadTrackEffErr",&pHadTrackEffErr_new);
+    TY_new->Branch("hElecTrackEff",&hElecTrackEff_new);
+    TY_new->Branch("hElecTrackEffErr",&hElecTrackEffErr_new);
+    TY_new->Branch("p3of4Eff",&p3of4Eff_new);
+    TY_new->Branch("h3of4Eff",&h3of4Eff_new);
+    TY_new->Branch("roc2PS6liveTime",&roc2PS6liveTime_new);
+    newYieldF->Write();
+    newYieldF->Close();
+}
diff --git a/SCRIPTS/COIN/MONITOR/coin_yield.root b/SCRIPTS/COIN/MONITOR/coin_yield.root
deleted file mode 100644
index a95e65fcc1d0ca6cfb100fe174b6ab654dfa0dd7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6904
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

diff --git a/SCRIPTS/COIN/MONITOR/temp.sh b/SCRIPTS/COIN/MONITOR/temp.sh
deleted file mode 100755
index d0e2c2ef..00000000
--- a/SCRIPTS/COIN/MONITOR/temp.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-../../../hcana -q "yield_calc.C(2023,1,1)"
-../../../hcana -q "yield_calc.C(2046,1,1)"
-../../../hcana -q "yield_calc.C(2047,1,1)"
-../../../hcana -q "yield_calc.C(2048,1,1)"
-../../../hcana -q "yield_calc.C(2049,1,1)"
-../../../hcana -q "yield_calc.C(2050,1,1)"
-../../../hcana -q "yield_calc.C(2051,1,1)"
-../../../hcana -q "yield_calc.C(2052,1,1)"
-../../../hcana -q "yield_calc.C(2053,1,1)"
-../../../hcana -q "yield_calc.C(2054,1,1)"
-../../../hcana -q "yield_calc.C(2055,3,1)"
-../../../hcana -q "yield_calc.C(2056,2,1)"
diff --git a/SCRIPTS/COIN/MONITOR/yield.README b/SCRIPTS/COIN/MONITOR/yield.README
deleted file mode 100644
index 530f1cd0..00000000
--- a/SCRIPTS/COIN/MONITOR/yield.README
+++ /dev/null
@@ -1,11 +0,0 @@
-1) Calculate yield
-	1) ../hcana yield_calc.C
-	2) Enter run number
-	3) Enter index specifying target
-
-	It will warn you if you're overwriting a run already in coin_yield.root,
-	but this might be what you want to do!
-
-2) Plot yield per run
-	1) ../hcana yield_graph.C
-	2) Make sure yield hasn't fluctuated
diff --git a/SCRIPTS/COIN/MONITOR/yield_calc.C b/SCRIPTS/COIN/MONITOR/yield_calc.C
deleted file mode 100644
index adf9043d..00000000
--- a/SCRIPTS/COIN/MONITOR/yield_calc.C
+++ /dev/null
@@ -1,125 +0,0 @@
-void yield_calc(Int_t RunNumber = 0, Int_t TargetType = 0, Int_t KinematicsType = 0)
-{
-
-	// Get RunNumber if not provided.
-	if(RunNumber == 0) {
-		cout << "Enter a Run Number (-1 to exit): ";
-		cin >> RunNumber;
-		if( RunNumber<=0 ) return;
-	}
-
-	// Get if not provided.
-	if(TargetType == 0) {
-		cout << "Enter a target (1=LH2, 2=6% Carbon, 3=dummy, -1 to exit): ";
-		cin >> TargetType;
-		if( TargetType<=0 ) return;
-	}
-
-	// Get KinematicsType if not provided.
-	//if(KinematicsType == 0) {
-	//	cout << "Enter a kinematics index (see yield.README; -1 to exit): ";
-	//	cin >> KinematicsType;
-	//	if( KinematicsType<=0 ) return;
-	//}
-
-	// Open root file
-	char* ROOTFileNamePattern = "../../../ROOTfiles/coin_replay_production_%d_-1.root";
-	TString ROOTFileName = Form(ROOTFileNamePattern, RunNumber);
-	TFile* hcanaF  = new TFile(ROOTFileName);
-	TTree* tsp = (TTree*)hcanaF->Get("TSP");
-	TTree* tsh = (TTree*)hcanaF->Get("TSH");
-
-	// Set up tree variables
-	double pQ_BCM1, pQ_BCM2, pN_trig, pQ_avg;
-	tsp->SetBranchAddress("P.BCM1.scalerChargeCut",&pQ_BCM1);
-	tsp->SetBranchAddress("P.BCM2.scalerChargeCut",&pQ_BCM2);
-	tsp->SetBranchAddress("P.pTRIG6.scalerCut",&pN_trig);
-
-	double hQ_BCM1, hQ_BCM2, hN_trig, hQ_avg;
-	tsh->SetBranchAddress("H.BCM1.scalerChargeCut",&hQ_BCM1);
-	tsh->SetBranchAddress("H.BCM2.scalerChargeCut",&hQ_BCM2);
-	tsh->SetBranchAddress("H.hTRIG6.scalerCut",&hN_trig);
-
-	// correct value is last in the scaler tree?
-	int pN=tsp->GetEntries()-1; 
-	int hN=tsp->GetEntries()-1; 
-	tsp->GetEntry(pN);
-	tsh->GetEntry(hN);
-
-	// Yield per mC
-	double pYield = 1000 * pN_trig / ((pQ_BCM1 + pQ_BCM2)/2.0);
-	double hYield = 1000 * hN_trig / ((hQ_BCM1 + hQ_BCM2)/2.0);
-
-	delete hcanaF;
-
-	// Open old data, copy to new tree.
-	// We skip if an old datum's run number matches the one the user specified.
-	TFile* newYieldF = new TFile("coin_yield_new.root", "RECREATE");
-	TTree* TY_new = new TTree("Y","coin_yield tree");
-	int run_new, tgt_new, kin_new, pN_trig_new, hN_trig_new;
-	double pYpc_new, hYpc_new, pQ_new, hQ_new;
-	TY_new->Branch("run",&run_new);
-	TY_new->Branch("tgt",&tgt_new);
-	TY_new->Branch("kin",&kin_new);
-	TY_new->Branch("pYpc",&pYpc_new);
-	TY_new->Branch("hYpc",&hYpc_new);
-	TY_new->Branch("pN_trig",&pN_trig_new);
-	TY_new->Branch("hN_trig",&hN_trig_new);
-	TY_new->Branch("pQ",&pQ_new);
-	TY_new->Branch("hQ",&hQ_new);
-
-	TFile* yieldF = new TFile("coin_yield.root","READ");
-	TTree* TY_old = (TTree*)yieldF->Get("Y");
-
-	int run_old, tgt_old, kin_old, pN_trig_old, hN_trig_old;
-	double pYpc_old, hYpc_old, pQ_old, hQ_old;
-	TY_old->SetBranchAddress("run",&run_old);
-	TY_old->SetBranchAddress("tgt",&tgt_old);
-	TY_old->SetBranchAddress("kin",&kin_old);
-	TY_old->SetBranchAddress("pYpc",&pYpc_old);
-	TY_old->SetBranchAddress("hYpc",&hYpc_old);
-	TY_old->SetBranchAddress("pN_trig",&pN_trig_old);
-	TY_old->SetBranchAddress("hN_trig",&hN_trig_old);
-	TY_old->SetBranchAddress("pQ",&pQ_old);
-	TY_old->SetBranchAddress("hQ",&hQ_old);
-
-	newYieldF->cd();
-	for (int i=0; i<TY_old->GetEntries(); i++) {
-		TY_old->GetEntry(i);
-
-		// Skip if matches user specified run
-		if (run_old == RunNumber) {
-			cout << "WARNING: Overwriting run " << RunNumber << endl;
-			continue;
-		}
-
-		run_new     = run_old;
-		tgt_new     = tgt_old;
-		kin_new     = kin_old;
-		pYpc_new    = pYpc_old;
-		hYpc_new    = hYpc_old;
-		pN_trig_new = pN_trig_old;
-		hN_trig_new = pN_trig_old;
-		pQ_new      = pQ_old;
-		hQ_new      = hQ_old;
-
-		TY_new->Fill();
-	}
-
-	// Add user specified run
-	run_new     = RunNumber;
-	tgt_new     = TargetType;
-	kin_new     = KinematicsType;
-	pYpc_new    = pYield;
-	hYpc_new    = hYield;
-	pN_trig_new = pN_trig;
-	hN_trig_new = hN_trig;
-	pQ_new      = ((pQ_BCM1 + pQ_BCM2)/2.0) / 1000.0;
-	hQ_new      = ((hQ_BCM1 + hQ_BCM2)/2.0) / 1000.0;
-	TY_new->Fill();
-
-	// Rename new root file to old one
-	newYieldF->Write();
-	newYieldF->Close();
-	gSystem->Exec("mv coin_yield_new.root coin_yield.root");
-}
diff --git a/SCRIPTS/COIN/MONITOR/yield_graph.C b/SCRIPTS/COIN/MONITOR/yield_graph.C
deleted file mode 100644
index 9024e411..00000000
--- a/SCRIPTS/COIN/MONITOR/yield_graph.C
+++ /dev/null
@@ -1,50 +0,0 @@
-void yield_graph() {
-	TFile* yieldF = new TFile("coin_yield.root","READ");
-	TTree* TY=(TTree*)yieldF->Get("Y");
-
-	gStyle->SetOptTitle(kFALSE);
-	gStyle->SetPalette(1);
-
-	TCut hCut = "tgt==1";
-	Y->Draw("run:pYpc:(sqrt(pN_trig)/pQ)",hCut,"goff");
-	TGraphErrors* gHydrogen = new TGraphErrors(Y->GetEntries(),Y->GetV1(),Y->GetV2(),0,Y->GetV3());
-
-	TCut cCut = "tgt==2";
-	Y->Draw("run:pYpc:(sqrt(pN_trig)/pQ)",cCut,"goff");
-	TGraphErrors* gCarbon = new TGraphErrors(Y->GetEntries(),Y->GetV1(),Y->GetV2(),0,Y->GetV3());
-
-	TCut dCut = "tgt==3";
-	Y->Draw("run:pYpc:(sqrt(pN_trig)/pQ)",dCut,"goff");
-	TGraphErrors* gDummy = new TGraphErrors(Y->GetEntries(),Y->GetV1(),Y->GetV2(),0,Y->GetV3());
-
-	gHydrogen->SetLineColor(kRed);
-	gCarbon->SetLineColor(kGreen);
-	gDummy->SetLineColor(kBlack);
-
-	// Get min and max run number
-	Y->Draw("run>>htemp","","goff");
-	int runMin = htemp->GetXaxis()->GetXmin() - 5;
-	int runMax = htemp->GetXaxis()->GetXmax() + 5;
-
-	TCanvas* c = new TCanvas("c", "Coincidence yield per run", 800, 600);
-	int maxYield = 20;
-	c->DrawFrame(runMin,0,runMax,maxYield);
-
-	TMultiGraph *mg = new TMultiGraph("mg", "Coincidence yield per run");
-	mg->Add(gHydrogen);
-	mg->Add(gCarbon);
-	//mg->Add(gDummy);
-	mg->SetTitle("Coincidence yield per run"); //doesn't work??
-	mg->GetXaxis()->SetTitle("Run Number");
-	mg->GetYaxis()->SetTitle("Yield per mC");
-
-	mg->Draw("P");
-	
-	TLegend *leg = new TLegend(0.15, 0.7, 0.25, 0.8); 
-	leg->SetFillColor(0); 
-	leg->AddEntry(gHydrogen, "Hydrogen", "lp"); 
-	leg->AddEntry(gCarbon, "Carbon", "lp"); 
-	//leg->AddEntry(gDummy, "Dummy", "lp");
-	leg->Draw();
-
-}
diff --git a/SCRIPTS/HMS/PRODUCTION/replay_production_hms_coin.C b/SCRIPTS/HMS/PRODUCTION/replay_production_hms_coin.C
index b3e0d622..d13be663 100644
--- a/SCRIPTS/HMS/PRODUCTION/replay_production_hms_coin.C
+++ b/SCRIPTS/HMS/PRODUCTION/replay_production_hms_coin.C
@@ -103,6 +103,10 @@ void replay_production_hms_coin(Int_t RunNumber=0, Int_t MaxEvent=0) {
   // Add handler for scaler events
   THcScalerEvtHandler *hscaler = new THcScalerEvtHandler("H", "Hall C scaler event type 2");  
   hscaler->AddEvtType(2);
+  hscaler->AddEvtType(4);
+  hscaler->AddEvtType(5);
+  hscaler->AddEvtType(6);
+  hscaler->AddEvtType(7);
   hscaler->AddEvtType(129);
   hscaler->SetDelayedType(129);
   hscaler->SetUseFirstEvent(kTRUE);
diff --git a/SCRIPTS/SHMS/PRODUCTION/replay_production_shms_coin.C b/SCRIPTS/SHMS/PRODUCTION/replay_production_shms_coin.C
index 93b7a2ee..c2b6275b 100644
--- a/SCRIPTS/SHMS/PRODUCTION/replay_production_shms_coin.C
+++ b/SCRIPTS/SHMS/PRODUCTION/replay_production_shms_coin.C
@@ -107,6 +107,10 @@ void replay_production_shms_coin (Int_t RunNumber = 0, Int_t MaxEvent = 0) {
   // Add event handler for scaler events
   THcScalerEvtHandler* pscaler = new THcScalerEvtHandler("P", "Hall C scaler event type 1");
   pscaler->AddEvtType(1);
+  pscaler->AddEvtType(4);
+  pscaler->AddEvtType(5);
+  pscaler->AddEvtType(6);
+ pscaler->AddEvtType(7);
   pscaler->AddEvtType(129);
   pscaler->SetDelayedType(129);
   pscaler->SetUseFirstEvent(kTRUE);
-- 
GitLab