From 93693dfd81c3ad69b8f4da2c512deb7b51e72d19 Mon Sep 17 00:00:00 2001
From: "Stephen A. Wood" <saw@jlab.org>
Date: Thu, 27 Jul 2017 14:37:21 -0400
Subject: [PATCH] Remove 5000 word event size limit in THcScalerEvtHandler  
 Use pointer to event from evdata->GetRawDataBuffer() instead   of making a
 local copy of the event before scanning it for   scaler data

---
 src/THcScalerEvtHandler.cxx | 15 ++-------------
 src/THcScalerEvtHandler.h   |  1 -
 2 files changed, 2 insertions(+), 14 deletions(-)

diff --git a/src/THcScalerEvtHandler.cxx b/src/THcScalerEvtHandler.cxx
index 91d6ca5..a84380c 100644
--- a/src/THcScalerEvtHandler.cxx
+++ b/src/THcScalerEvtHandler.cxx
@@ -61,19 +61,16 @@ using namespace Decoder;
 static const UInt_t ICOUNT    = 1;
 static const UInt_t IRATE     = 2;
 static const UInt_t MAXCHAN   = 32;
-static const UInt_t MAXTEVT   = 5000;
 static const UInt_t defaultDT = 4;
 
 THcScalerEvtHandler::THcScalerEvtHandler(const char *name, const char* description)
   : THaEvtTypeHandler(name,description), evcount(0), ifound(0), fNormIdx(-1),
     dvars(0), dvarsFirst(0), fScalerTree(0), fUseFirstEvent(kFALSE)
 {
-  rdata = new UInt_t[MAXTEVT];
 }
 
 THcScalerEvtHandler::~THcScalerEvtHandler()
 {
-  delete [] rdata;
   if (fScalerTree) {
     delete fScalerTree;
   }
@@ -130,19 +127,11 @@ Int_t THcScalerEvtHandler::Analyze(THaEvData *evdata)
 
   // Parse the data, load local data arrays.
 
-  Int_t ndata = evdata->GetEvLength();
-  if (ndata >= static_cast<Int_t>(MAXTEVT)) {
-    cout << "THcScalerEvtHandler:: ERROR: Event length crazy "<<endl;
-    ndata = MAXTEVT-1;
-  }
+  UInt_t *rdata = (UInt_t*) evdata->GetRawDataBuffer();
 
   if (fDebugFile) *fDebugFile<<"\n\nTHcScalerEvtHandler :: Debugging event type "<<dec<<evdata->GetEvType()<<endl<<endl;
 
-  // local copy of data
-  // Why do we need a local copy of the data?
-  for (Int_t i=0; i<ndata; i++) rdata[i] = evdata->GetRawData(i);
-
-  UInt_t *p = rdata;
+  UInt_t *p = (UInt_t*) rdata;
 
   UInt_t *plast = p+*p;		// Index to last word in the bank
 
diff --git a/src/THcScalerEvtHandler.h b/src/THcScalerEvtHandler.h
index 41078c6..c4c0c44 100644
--- a/src/THcScalerEvtHandler.h
+++ b/src/THcScalerEvtHandler.h
@@ -47,7 +47,6 @@ private:
    std::vector<Decoder::GenScaler*> scalers;
    std::vector<HCScalerLoc*> scalerloc;
    Double_t evcount;
-   UInt_t *rdata;
    std::vector<Int_t> index;
    Int_t Nvars, ifound, fNormIdx, nscalers;
    Double_t *dvars;
-- 
GitLab