From 226a95976caa492dc32bbef3a0036041c60df57f Mon Sep 17 00:00:00 2001
From: Eric Pooser <pooser@jlab.org>
Date: Mon, 20 Feb 2017 09:48:56 -0500
Subject: [PATCH] Added more histos

---
 DEF-files/SHMS/GEN/pstackana.def |  28 ++++---
 onlineGUI/Config/kpp.cfg         |  55 +++++++++++-
 onlineGUI/Macros/kpp_analysis.C  | 139 ++++++++++++++++++++++++-------
 3 files changed, 177 insertions(+), 45 deletions(-)

diff --git a/DEF-files/SHMS/GEN/pstackana.def b/DEF-files/SHMS/GEN/pstackana.def
index 9a7fff84..5c748460 100644
--- a/DEF-files/SHMS/GEN/pstackana.def
+++ b/DEF-files/SHMS/GEN/pstackana.def
@@ -4,22 +4,24 @@ block T.shms.*
 #block P.ngcer.*
 #block P.dc.*
 #block P.tr.*
-#block P.hod.*
+block P.hod.*
 #block P.hgcer.*
 #block P.aero.*
 #block P.cal.*
 #block P.gtr.*
 
-#TH1F hptrig2_minus_p1x 'SHMS Trigger 2 - p1X TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p1X_tdcTime[0])*0.1 150 0 150 T.shms.pT2_tdcMultiplicity==1
-#TH1F hptrig2_minus_p1y 'SHMS Trigger 2 - p1Y TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p1Y_tdcTime[0])*0.1 150 0 150 T.shms.pT2_tdcMultiplicity==1
-#TH1F hptrig2_minus_p2x 'SHMS Trigger 2 - p2X TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p2X_tdcTime[0])*0.1 150 0 150 T.shms.pT2_tdcMultiplicity==1
-#TH1F hptrig2_minus_p2y 'SHMS Trigger 2 - p2Y TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p2Y_tdcTime[0])*0.1 150 0 150 T.shms.pT2_tdcMultiplicity==1
-#TH1F hptrig2_minus_ps1 'SHMS Trigger 2 - pS1 TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p1T_tdcTime[0])*0.1 150 0 150 T.shms.pT2_tdcMultiplicity==1
-#TH1F hptrig2_minus_ps2 'SHMS Trigger 2 - pS2 TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p2T_tdcTime[0])*0.1 150 0 150 T.shms.pT2_tdcMultiplicity==1
+TH1F hptrig2_minus_p1x 'SHMS Trigger 2 - p1X TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p1X_tdcTime)*0.1 150 0 150
+TH1F hptrig2_minus_p1y 'SHMS Trigger 2 - p1Y TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p1Y_tdcTime)*0.1 150 0 150 
+TH1F hptrig2_minus_p2x 'SHMS Trigger 2 - p2X TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p2X_tdcTime)*0.1 150 0 150 
+TH1F hptrig2_minus_p2y 'SHMS Trigger 2 - p2Y TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p2Y_tdcTime)*0.1 150 0 150 
+TH1F hptrig2_minus_ps1 'SHMS Trigger 2 - pS1 TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p1T_tdcTime)*0.1 150 0 150 
+TH1F hptrig2_minus_ps2 'SHMS Trigger 2 - pS2 TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT2_tdcTime-T.shms.p2T_tdcTime)*0.1 150 0 150 
 
-#TH1F hptrig3_minus_p1x 'SHMS Trigger 3 - p1X TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p1X_tdcTime[0])*0.1 150 0 150 T.shms.pT3_tdcMultiplicity==1
-#TH1F hptrig3_minus_p1y 'SHMS Trigger 3 - p1Y TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p1Y_tdcTime[0])*0.1 150 0 150 T.shms.pT3_tdcMultiplicity==1
-#TH1F hptrig3_minus_p2x 'SHMS Trigger 3 - p2X TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p2X_tdcTime[0])*0.1 150 0 150 T.shms.pT3_tdcMultiplicity==1
-#TH1F hptrig3_minus_p2y 'SHMS Trigger 3 - p2Y TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p2Y_tdcTime[0])*0.1 150 0 150 T.shms.pT3_tdcMultiplicity==1
-#TH1F hptrig2_minus_ps1 'SHMS Trigger 3 - pS1 TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p1T_tdcTime[0])*0.1 150 0 150 T.shms.pT3_tdcMultiplicity==1
-#TH1F hptrig2_minus_ps2 'SHMS Trigger 3 - pS2 TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p2T_tdcTime[0])*0.1 150 0 150 T.shms.pT3_tdcMultiplicity==1
\ No newline at end of file
+TH1F hptrig3_minus_p1x 'SHMS Trigger 3 - p1X TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p1X_tdcTime)*0.1 150 0 150 
+TH1F hptrig3_minus_p1y 'SHMS Trigger 3 - p1Y TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p1Y_tdcTime)*0.1 150 0 150 
+TH1F hptrig3_minus_p2x 'SHMS Trigger 3 - p2X TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p2X_tdcTime)*0.1 150 0 150 
+TH1F hptrig3_minus_p2y 'SHMS Trigger 3 - p2Y TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p2Y_tdcTime)*0.1 150 0 150 
+TH1F hptrig3_minus_ps1 'SHMS Trigger 3 - pS1 TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p1T_tdcTime)*0.1 150 0 150 
+TH1F hptrig3_minus_ps2 'SHMS Trigger 3 - pS2 TDC; TDC Time (ns); Counts / 1 ns' (T.shms.pT3_tdcTime-T.shms.p2T_tdcTime)*0.1 150 0 150
+
+TH1F hptrig3_minus_ptrig2 'test' (T.shms.pT3_tdcTime-T.shms.pT2_tdcTime)*0.1 2000 -1000 1000
\ No newline at end of file
diff --git a/onlineGUI/Config/kpp.cfg b/onlineGUI/Config/kpp.cfg
index 4f678f32..c461f868 100755
--- a/onlineGUI/Config/kpp.cfg
+++ b/onlineGUI/Config/kpp.cfg
@@ -1,7 +1,56 @@
 protorootfile ../ROOTfiles/shms_replay_XXXXX.root
 guicolor lightblue
-canvassize 1600 800
-newpage 4 4
-title poop
+canvassize 800 800
+
+definecut 1x_goodHitCut P.hod.1x.ngoodhits>1
+definecut 1y_goodHitCut P.hod.1y.ngoodhits>1
+definecut 2x_goodHitCut P.hod.2x.ngoodhits>1
+definecut 2y_goodHitCut P.hod.2y.ngoodhits>1
+
+newpage 3 3 logy
+title Trigger Times
+macro Macros/kpp_analysis.C("h_p1X_tdc")
+macro Macros/kpp_analysis.C("h_p1Y_tdc")
+macro Macros/kpp_analysis.C("h_p2X_tdc")
+macro Macros/kpp_analysis.C("h_p2Y_tdc")
 macro Macros/kpp_analysis.C("h_p1T_tdc")
+macro Macros/kpp_analysis.C("h_p2T_tdc")
+macro Macros/kpp_analysis.C("h_pT1_tdc")
+macro Macros/kpp_analysis.C("h_pT2_tdc")
+macro Macros/kpp_analysis.C("h_pT3_tdc")
+newpage 4 3 logy
+title DC Reference Times
+macro Macros/kpp_analysis.C("h_pDCREF1_tdc")
+macro Macros/kpp_analysis.C("h_pDCREF2_tdc")
+macro Macros/kpp_analysis.C("h_pDCREF3_tdc")
+macro Macros/kpp_analysis.C("h_pDCREF4_tdc")
+macro Macros/kpp_analysis.C("h_pDCREF5_tdc")
+macro Macros/kpp_analysis.C("h_pDCREF6_tdc")
+macro Macros/kpp_analysis.C("h_pDCREF7_tdc")
+macro Macros/kpp_analysis.C("h_pDCREF8_tdc")
+macro Macros/kpp_analysis.C("h_pDCREF9_tdc")
+macro Macros/kpp_analysis.C("h_pDCREF10_tdc")
+newpage 4 3 logy
+title Hodoscope Plane Reference Times
+macro Macros/kpp_analysis.C("h_p1XmpT2_tdc")
+macro Macros/kpp_analysis.C("h_p1YmpT2_tdc")
+macro Macros/kpp_analysis.C("h_p2XmpT2_tdc")
+macro Macros/kpp_analysis.C("h_p2YmpT2_tdc")
+macro Macros/kpp_analysis.C("h_p1XmpT3_tdc")
+macro Macros/kpp_analysis.C("h_p1YmpT3_tdc")
+macro Macros/kpp_analysis.C("h_p2XmpT3_tdc")
+macro Macros/kpp_analysis.C("h_p2YmpT3_tdc")
+macro Macros/kpp_analysis.C("h_p1TmpT2_tdc")
+macro Macros/kpp_analysis.C("h_p1TmpT3_tdc")
+macro Macros/kpp_analysis.C("h_p2TmpT2_tdc")
+macro Macros/kpp_analysis.C("h_p2TmpT3_tdc")
+newpage 2 2 logy
+title Pulse Time - TDC Time
+macro Macros/kpp_analysis.C("h_p1Xneg_pt_tt_diff")
+macro Macros/kpp_analysis.C("h_p1Yneg_pt_tt_diff")
+macro Macros/kpp_analysis.C("h_p2Xneg_pt_tt_diff")
+macro Macros/kpp_analysis.C("h_p2Yneg_pt_tt_diff")
+
+
+
 
diff --git a/onlineGUI/Macros/kpp_analysis.C b/onlineGUI/Macros/kpp_analysis.C
index e4ae48a2..7c6eb4f6 100644
--- a/onlineGUI/Macros/kpp_analysis.C
+++ b/onlineGUI/Macros/kpp_analysis.C
@@ -1,51 +1,132 @@
 
 void UserScript() {
 
-  Double_t num_p1T;
-
-  Double_t p1T_tdc[128];
-
+  // Declare constants
+  static const Double_t clk2tdc     = 0.100;
+  static const UInt_t   ndcRefTimes = 10;
+
+  // Declare variables
+  Double_t p1X_tdcTime, p1Y_tdcTime, p2X_tdcTime, p2Y_tdcTime;
+  Double_t p1T_tdcTime, p2T_tdcTime;
+  Double_t pT1_tdcTime, pT2_tdcTime, pT3_tdcTime;
+  Double_t pDCREF_tdcTime[ndcRefTimes];
+  Double_t p1X_nGoodHodoHits, p1Y_nGoodHodoHits, p2X_nGoodHodoHits, p2Y_nGoodHodoHits;
+  Double_t p1X_negAdcHits, p1Y_negAdcHits, p2X_negAdcHits, p2Y_negAdcHits;
+  Double_t p1X_negTdcHits, p1Y_negTdcHits, p2X_negTdcHits, p2Y_negTdcHits;
+  Double_t p1X_negAdcPulseTime, p1Y_negAdcPulseTime, p2X_negAdcPulseTime, p2Y_negAdcPulseTime;
+  Double_t p1X_negTdcTime, p1Y_negTdcTime, p2X_negTdcTime, p2Y_negTdcTime;
   Long64_t nentries;
 
-  TH1F *h_p1T_tdc;
-
+  // Declare Histos
+  TH1F *h_p1X_tdc, *h_p1Y_tdc, *h_p2X_tdc, *h_p2Y_tdc;
+  TH1F *h_p1T_tdc, *h_p2T_tdc;
+  TH1F *h_pT1_tdc, *h_pT2_tdc, *h_pT3_tdc;
+  TH1F *h_p1XmpT2_tdc, *h_p1YmpT2_tdc, *h_p2XmpT2_tdc, *h_p2YmpT2_tdc;
+  TH1F *h_p1XmpT3_tdc, *h_p1YmpT3_tdc, *h_p2XmpT3_tdc, *h_p2YmpT3_tdc;
+  TH1F *h_p1TmpT2_tdc, *h_p2TmpT2_tdc, *h_p1TmpT3_tdc, *h_p2TmpT3_tdc;
+  TH1F *h_pDCREF_tdc[ndcRefTimes];
+  TH1F *h_p1Xneg_pt_tt_diff, *h_p1Yneg_pt_tt_diff, *h_p2Xneg_pt_tt_diff, *h_p2Yneg_pt_tt_diff;
+
+  // Declare trees
   TTree *T = (TTree*) gDirectory->Get("T");
 
+  // Acquire the number of entries
   nentries = T->GetEntries();
 
-  T->SetBranchAddress("T.shms.p1T_tdcMultiplicity", &num_p1T);
-  T->SetBranchAddress("T.shms.p1T_tdcTime", &p1T_tdc);
-
-  h_p1T_tdc = new TH1F("h_p1T_tdc", "p1T; TDC Time (ns); Counts / 1 ns", 2000, 0, 2000);
-
+  // Acquire the branches
+  T->SetBranchAddress("T.shms.p1X_tdcTime", &p1X_tdcTime);
+  T->SetBranchAddress("T.shms.p1Y_tdcTime", &p1Y_tdcTime);
+  T->SetBranchAddress("T.shms.p2X_tdcTime", &p2X_tdcTime);
+  T->SetBranchAddress("T.shms.p2Y_tdcTime", &p2Y_tdcTime);
+  T->SetBranchAddress("T.shms.p1T_tdcTime", &p1T_tdcTime);
+  T->SetBranchAddress("T.shms.p2T_tdcTime", &p2T_tdcTime);
+  T->SetBranchAddress("T.shms.pT1_tdcTime", &pT1_tdcTime);
+  T->SetBranchAddress("T.shms.pT2_tdcTime", &pT2_tdcTime);
+  T->SetBranchAddress("T.shms.pT3_tdcTime", &pT3_tdcTime);
+  for (UInt_t iref = 0; iref < ndcRefTimes; iref++)
+    T->SetBranchAddress(Form("T.shms.pDCREF%d_tdcTime", iref+1), &pDCREF_tdcTime[iref]);
+  T->SetBranchAddress("P.hod.1x.ngoodhits", &p1X_nGoodHodoHits);
+  T->SetBranchAddress("P.hod.1y.ngoodhits", &p1Y_nGoodHodoHits);
+  T->SetBranchAddress("P.hod.2x.ngoodhits", &p2X_nGoodHodoHits);
+  T->SetBranchAddress("P.hod.2y.ngoodhits", &p2Y_nGoodHodoHits);
+  T->SetBranchAddress("P.hod.1x.negAdcPulseTimeRaw", &p1X_negAdcPulseTime);
+  T->SetBranchAddress("P.hod.1y.negAdcPulseTimeRaw", &p1Y_negAdcPulseTime);
+  T->SetBranchAddress("P.hod.2x.negAdcPulseTimeRaw", &p2X_negAdcPulseTime);
+  T->SetBranchAddress("P.hod.2y.negAdcPulseTimeRaw", &p2Y_negAdcPulseTime);
+  T->SetBranchAddress("P.hod.1x.negTdcTime", &p1X_negTdcTime);
+  T->SetBranchAddress("P.hod.1y.negTdcTime", &p1Y_negTdcTime);
+  T->SetBranchAddress("P.hod.2x.negTdcTime", &p2X_negTdcTime);
+  T->SetBranchAddress("P.hod.2y.negTdcTime", &p2Y_negTdcTime);
+          
+  // Create histos
+  h_p1X_tdc = new TH1F("h_p1X_tdc", "S1X Coincidence Time; TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_p1Y_tdc = new TH1F("h_p1Y_tdc", "S1Y Coincidence Time; TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_p2X_tdc = new TH1F("h_p2X_tdc", "S2X Coincidence Time; TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_p2Y_tdc = new TH1F("h_p2Y_tdc", "S2Y Coincidence Time; TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_p1T_tdc = new TH1F("h_p1T_tdc", "S1X/S1Y Coincidence Time; TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_p2T_tdc = new TH1F("h_p2T_tdc", "S2X/S2Y Coincidence Time; TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_pT1_tdc = new TH1F("h_pT1_tdc", "Hodoscope Trigger (Slot 20 Channel 15); TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_pT2_tdc = new TH1F("h_pT2_tdc", "Hodoscope Trigger (Slot 19 Channel 31); TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_pT3_tdc = new TH1F("h_pT3_tdc", "Hodoscope Trigger (Slot 19 Channel 38); TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  for (UInt_t iref = 0; iref < ndcRefTimes; iref++)
+    h_pDCREF_tdc[iref] = new TH1F(Form("h_pDCREF%d_tdc", iref+1), Form("DC Reference Time %d; TDC Time (ns); Counts / 1 ns", iref+1), 100, 500, 600);
+  h_p1XmpT2_tdc = new TH1F("h_p1XmpT2_tdc", "Hodoscope Trigger (Slot 19 Channel 31) - S1X; TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_p1YmpT2_tdc = new TH1F("h_p1YmpT2_tdc", "Hodoscope Trigger (Slot 19 Channel 31) - S1Y; TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_p2XmpT2_tdc = new TH1F("h_p2XmpT2_tdc", "Hodoscope Trigger (Slot 19 Channel 31) - S2X; TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_p2YmpT2_tdc = new TH1F("h_p2YmpT2_tdc", "Hodoscope Trigger (Slot 19 Channel 31) - S2Y; TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_p1TmpT2_tdc = new TH1F("h_p1TmpT2_tdc", "Hodoscope Trigger (Slot 19 Channel 31) - S1; TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_p2TmpT2_tdc = new TH1F("h_p2TmpT2_tdc", "Hodoscope Trigger (Slot 19 Channel 31) - S2; TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_p1XmpT3_tdc = new TH1F("h_p1XmpT3_tdc", "Hodoscope Trigger (Slot 19 Channel 38) - S1X; TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_p1YmpT3_tdc = new TH1F("h_p1YmpT3_tdc", "Hodoscope Trigger (Slot 19 Channel 38) - S1Y; TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_p2XmpT3_tdc = new TH1F("h_p2XmpT3_tdc", "Hodoscope Trigger (Slot 19 Channel 38) - S2X; TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_p2YmpT3_tdc = new TH1F("h_p2YmpT3_tdc", "Hodoscope Trigger (Slot 19 Channel 38) - S2Y; TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_p1TmpT3_tdc = new TH1F("h_p1TmpT3_tdc", "Hodoscope Trigger (Slot 19 Channel 38) - S1; TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_p2TmpT3_tdc = new TH1F("h_p2TmpT3_tdc", "Hodoscope Trigger (Slot 19 Channel 38) - S2; TDC Time (ns); Counts / 1 ns", 200, 0, 200);
+  h_p1Xneg_pt_tt_diff = new TH1F("h_p1Xneg_pt_tt_diff", "S1X- Pulse Time - TDC Time; Pulse Time - TDC Time (ns); Counts / 1 ns", 500, -250, 250);
+  h_p1Yneg_pt_tt_diff = new TH1F("h_p1Yneg_pt_tt_diff", "S1Y- Pulse Time - TDC Time; Pulse Time - TDC Time (ns); Counts / 1 ns", 500, -250, 250);
+  h_p2Xneg_pt_tt_diff = new TH1F("h_p2Xneg_pt_tt_diff", "S2X- Pulse Time - TDC Time; Pulse Time - TDC Time (ns); Counts / 1 ns", 500, -250, 250);
+  h_p2Yneg_pt_tt_diff = new TH1F("h_p2Yneg_pt_tt_diff", "S2Y- Pulse Time - TDC Time; Pulse Time - TDC Time (ns); Counts / 1 ns", 500, -250, 250);
+  
+  // Loop of entries in tree
   for(UInt_t ievent = 0; ievent < nentries; ievent++) {
     
     T->GetEntry(ievent);
 
-    for (UInt_t ihit = 0; ihit < num_p1T; ihit++) {
-
-      Double_t p1T_tdc_data = p1T_tdc[ihit];
-
-      cout << ihit << "\t" << p1T_tdc_data << endl;
-
-      h_p1T_tdc->Fill(p1T_tdc_data);
-
-      }
+    if (p1X_nGoodHodoHits < 1 || p1Y_nGoodHodoHits < 1 || p2X_nGoodHodoHits < 1  || p2Y_nGoodHodoHits < 1) continue;
+        
+    // Fill histos
+    h_p1X_tdc->Fill(p1X_tdcTime*clk2tdc); h_p1Y_tdc->Fill(p1Y_tdcTime*clk2tdc);
+    h_p2X_tdc->Fill(p2X_tdcTime*clk2tdc); h_p2Y_tdc->Fill(p2Y_tdcTime*clk2tdc);
+    h_p1T_tdc->Fill(p1T_tdcTime*clk2tdc); h_p2T_tdc->Fill(p2T_tdcTime*clk2tdc);
+    h_pT1_tdc->Fill(pT1_tdcTime*clk2tdc); h_pT2_tdc->Fill(pT2_tdcTime*clk2tdc); h_pT3_tdc->Fill(pT3_tdcTime*clk2tdc);
+    for (UInt_t iref = 0; iref < ndcRefTimes; iref++)
+      h_pDCREF_tdc[iref]->Fill(pDCREF_tdcTime[iref]*clk2tdc);
+    h_p1XmpT2_tdc->Fill((pT2_tdcTime - p1X_tdcTime)*clk2tdc); h_p1YmpT2_tdc->Fill((pT2_tdcTime - p1Y_tdcTime)*clk2tdc);
+    h_p2XmpT2_tdc->Fill((pT2_tdcTime - p2X_tdcTime)*clk2tdc); h_p2YmpT2_tdc->Fill((pT2_tdcTime - p2Y_tdcTime)*clk2tdc);
+    h_p1TmpT2_tdc->Fill((pT2_tdcTime - p1T_tdcTime)*clk2tdc); h_p2TmpT2_tdc->Fill((pT2_tdcTime - p2T_tdcTime)*clk2tdc);
+    h_p1XmpT3_tdc->Fill((pT3_tdcTime - p1X_tdcTime)*clk2tdc); h_p1YmpT3_tdc->Fill((pT3_tdcTime - p1Y_tdcTime)*clk2tdc);
+    h_p2XmpT3_tdc->Fill((pT3_tdcTime - p2X_tdcTime)*clk2tdc); h_p2YmpT3_tdc->Fill((pT3_tdcTime - p2Y_tdcTime)*clk2tdc);
+    h_p1TmpT3_tdc->Fill((pT3_tdcTime - p1T_tdcTime)*clk2tdc); h_p2TmpT3_tdc->Fill((pT3_tdcTime - p2T_tdcTime)*clk2tdc);
+    h_p1Xneg_pt_tt_diff->Fill(p1X_negAdcPulseTime - p1X_negTdcTime); h_p1Yneg_pt_tt_diff->Fill(p1Y_negAdcPulseTime - p1Y_negTdcTime);
+    h_p2Xneg_pt_tt_diff->Fill(p2X_negAdcPulseTime - p2X_negTdcTime); h_p2Yneg_pt_tt_diff->Fill(p2Y_negAdcPulseTime - p2Y_negTdcTime);
 
   }  // Entries loop
-
-}
+}  // UserScript function
 
 void kpp_analysis(TString histname) {
 
-  TH1F* h; h = (TH1F*) gDirectory->Get(histname);
+  // Grab the histo
+  TH1F *h; h = dynamic_cast <TH1F*> gDirectory->Get(histname);
+
+  // Grab histo directly if it does not already exist
   if(!h) {
+    
     UserScript();
     h = (TH1F*) gDirectory->Get(histname);
-    if(!h) {
-      cout << "User histogram " << histname << " not found" << endl;
-      exit(1);
-    }
-  }
+
+    // Throw error
+    if(!h) { cout << "User histogram " << histname << " not found" << endl; exit(1);}
+  }  // Histo existing condition
   h->Draw();
-}
+  
+}  // kpp_analysis function
-- 
GitLab