From f92e222a974ced5bb7404fcb54b66b20724828c4 Mon Sep 17 00:00:00 2001
From: Jure Bericic <bericic@jlab.org>
Date: Mon, 27 Feb 2017 16:43:11 -0500
Subject: [PATCH] Added some checks on PSE125.

---
 src/THcConfigEvtHandler.cxx | 8 ++++++++
 src/THcConfigEvtHandler.h   | 1 +
 src/THcHitList.cxx          | 2 +-
 src/THcRawAdcHit.cxx        | 7 +++++++
 4 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/THcConfigEvtHandler.cxx b/src/THcConfigEvtHandler.cxx
index c75b7db..6e7ae61 100644
--- a/src/THcConfigEvtHandler.cxx
+++ b/src/THcConfigEvtHandler.cxx
@@ -193,6 +193,14 @@ void THcConfigEvtHandler::PrintConfig()
     it++;
   }
 }
+
+Int_t THcConfigEvtHandler::IsPresent(Int_t crate) {
+  if(CrateInfoMap.find(crate)!=CrateInfoMap.end()) {
+    CrateInfo_t *cinfo = CrateInfoMap[crate];
+    return cinfo->FADC250.present;
+  }
+  return(0);
+}
 Int_t THcConfigEvtHandler::GetNSA(Int_t crate) {
   if(CrateInfoMap.find(crate)!=CrateInfoMap.end()) {
     CrateInfo_t *cinfo = CrateInfoMap[crate];
diff --git a/src/THcConfigEvtHandler.h b/src/THcConfigEvtHandler.h
index 07007fd..dd2727c 100644
--- a/src/THcConfigEvtHandler.h
+++ b/src/THcConfigEvtHandler.h
@@ -25,6 +25,7 @@ public:
   virtual Int_t Analyze(THaEvData *evdata);
   virtual void AddEventType(Int_t evtype);
   virtual void PrintConfig();
+  virtual Int_t IsPresent(Int_t crate);
   virtual Int_t GetNSA(Int_t crate);
   virtual Int_t GetNSB(Int_t crate);
   virtual Int_t GetNPED(Int_t crate);
diff --git a/src/THcHitList.cxx b/src/THcHitList.cxx
index 4569782..eafad16 100644
--- a/src/THcHitList.cxx
+++ b/src/THcHitList.cxx
@@ -223,7 +223,7 @@ Int_t THcHitList::DecodeToHitList( const THaEvData& evdata ) {
 	}
       } else {			// This is a Flash ADC
 
-        if (fPSE125) {  // Set F250 parameters.
+        if (fPSE125 && fPSE125->IsPresent(d->crate)) {  // Set F250 parameters.
           rawhit->SetF250Params(
             fPSE125->GetNSA(d->crate),
             fPSE125->GetNSB(d->crate),
diff --git a/src/THcRawAdcHit.cxx b/src/THcRawAdcHit.cxx
index 508b39b..60dd6ed 100644
--- a/src/THcRawAdcHit.cxx
+++ b/src/THcRawAdcHit.cxx
@@ -459,6 +459,13 @@ Double_t THcRawAdcHit::GetSampleInt() const {
 
 
 void THcRawAdcHit::SetF250Params(Int_t NSA, Int_t NSB, Int_t NPED) {
+  if (NSA < 0 || NSB < 0 || NPED < 0) {
+    TString msg = TString::Format(
+      "`THcRawAdcHit::SetF250Params`: One of the params is negative!  NSA = %d  NSB = %d  NPED = %d",
+      NSA, NSB, NPED
+    );
+    throw std::invalid_argument(msg.Data());
+  }
   fNPedestalSamples = NPED;
   fNPeakSamples = NSA + NSB;
   fPeakPedestalRatio = 1.0*fNPeakSamples/fNPedestalSamples;
-- 
GitLab