diff --git a/src/THcConfigEvtHandler.cxx b/src/THcConfigEvtHandler.cxx index c75b7db7b0ae80329001b9b7bafea1a3ecdb99b3..6e7ae611313aea5565c9bfb782beeba4866da656 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 07007fd21f40bdc81d67ab6efc4b9bb1bb7ef613..dd2727ce0593c943d52ffbb9eccd022b17c55afe 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 45697822e41dc26aa122f220ae1388b8a1ce353a..eafad160db1562747325c21badb75d12f4f91083 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 508b39bb0fc75944940ea18cdd2c5896574588bf..60dd6eda5cb9016b32ee0e9aa6a90c300d570408 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;