From e4d6acb032589a208548ce35c1000c503d91ffb3 Mon Sep 17 00:00:00 2001 From: "Stephen A. Wood" <saw@jlab.org> Date: Thu, 14 Dec 2017 12:25:59 -0500 Subject: [PATCH] THcHitlist finds THcConfigEvtHandler (Event 125) by type instead of name. The Event handler can now be given any name. (Only one THcConfigEvtHandler should be instatiated.) Also: THcConfigEventHandler clears CrateInfoMap on Init. THcHitList caches FADC config on first event --- src/THcConfigEvtHandler.cxx | 2 ++ src/THcHitList.cxx | 30 ++++++++++++++++++++++-------- src/THcHitList.h | 4 ++++ 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/THcConfigEvtHandler.cxx b/src/THcConfigEvtHandler.cxx index e4607cb..e19d1be 100644 --- a/src/THcConfigEvtHandler.cxx +++ b/src/THcConfigEvtHandler.cxx @@ -354,6 +354,8 @@ THaAnalysisObject::EStatus THcConfigEvtHandler::Init(const TDatime& date) eventtypes.push_back(125); // what events to look for } + CrateInfoMap.clear(); + fStatus = kOK; return kOK; } diff --git a/src/THcHitList.cxx b/src/THcHitList.cxx index a62908c..69f4079 100644 --- a/src/THcHitList.cxx +++ b/src/THcHitList.cxx @@ -118,10 +118,21 @@ void THcHitList::InitHitList(THaDetMap* detmap, } } - fPSE125 = static_cast<THcConfigEvtHandler*>(gHaEvtHandlers->FindObject("HC")); - if (!fPSE125) { + // Find the Event 125 handler + TObjLink *lnk = gHaEvtHandlers->FirstLink(); + while (lnk) { + if(strcmp(lnk->GetObject()->ClassName(),"THcConfigEvtHandler")==0) { + break; + } + lnk = lnk->Next(); + } + if(lnk) { + fPSE125 = static_cast<THcConfigEvtHandler*>(lnk->GetObject()); + } else { cout << "THcHitList::InitHitList : Prestart event 125 not found." << endl; + fPSE125 = 0; } + fHaveFADCInfo = kFALSE; } /** @@ -259,12 +270,15 @@ Int_t THcHitList::DecodeToHitList( const THaEvData& evdata, Bool_t suppresswarni } } else { // This is a Flash ADC - if (fPSE125) { // Set F250 parameters. - rawhit->SetF250Params( - fPSE125->GetNSA(d->crate), - fPSE125->GetNSB(d->crate), - fPSE125->GetNPED(d->crate) - ); + if (fPSE125) { + if(!fHaveFADCInfo) { + fNSA = fPSE125->GetNSA(d->crate); + fNSB = fPSE125->GetNSB(d->crate); + fNPED = fPSE125->GetNPED(d->crate); + fHaveFADCInfo = kTRUE; + } +// Set F250 parameters. + rawhit->SetF250Params(fNSA, fNSB, fNPED); } // Copy the samples diff --git a/src/THcHitList.h b/src/THcHitList.h index 7611e14..eb576f2 100644 --- a/src/THcHitList.h +++ b/src/THcHitList.h @@ -60,6 +60,10 @@ protected: THcRawHit::ESignalType *fSignalTypes; THcConfigEvtHandler* fPSE125; + Bool_t fHaveFADCInfo; + Int_t fNSA; + Int_t fNSB; + Int_t fNPED; ClassDef(THcHitList,0); // List of raw hits sorted by plane, counter }; -- GitLab