Skip to content
Snippets Groups Projects
Commit 93693dfd authored by Stephen A. Wood's avatar Stephen A. Wood
Browse files

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
parent aa508c40
No related branches found
No related tags found
No related merge requests found
...@@ -61,19 +61,16 @@ using namespace Decoder; ...@@ -61,19 +61,16 @@ using namespace Decoder;
static const UInt_t ICOUNT = 1; static const UInt_t ICOUNT = 1;
static const UInt_t IRATE = 2; static const UInt_t IRATE = 2;
static const UInt_t MAXCHAN = 32; static const UInt_t MAXCHAN = 32;
static const UInt_t MAXTEVT = 5000;
static const UInt_t defaultDT = 4; static const UInt_t defaultDT = 4;
THcScalerEvtHandler::THcScalerEvtHandler(const char *name, const char* description) THcScalerEvtHandler::THcScalerEvtHandler(const char *name, const char* description)
: THaEvtTypeHandler(name,description), evcount(0), ifound(0), fNormIdx(-1), : THaEvtTypeHandler(name,description), evcount(0), ifound(0), fNormIdx(-1),
dvars(0), dvarsFirst(0), fScalerTree(0), fUseFirstEvent(kFALSE) dvars(0), dvarsFirst(0), fScalerTree(0), fUseFirstEvent(kFALSE)
{ {
rdata = new UInt_t[MAXTEVT];
} }
THcScalerEvtHandler::~THcScalerEvtHandler() THcScalerEvtHandler::~THcScalerEvtHandler()
{ {
delete [] rdata;
if (fScalerTree) { if (fScalerTree) {
delete fScalerTree; delete fScalerTree;
} }
...@@ -130,19 +127,11 @@ Int_t THcScalerEvtHandler::Analyze(THaEvData *evdata) ...@@ -130,19 +127,11 @@ Int_t THcScalerEvtHandler::Analyze(THaEvData *evdata)
// Parse the data, load local data arrays. // Parse the data, load local data arrays.
Int_t ndata = evdata->GetEvLength(); UInt_t *rdata = (UInt_t*) evdata->GetRawDataBuffer();
if (ndata >= static_cast<Int_t>(MAXTEVT)) {
cout << "THcScalerEvtHandler:: ERROR: Event length crazy "<<endl;
ndata = MAXTEVT-1;
}
if (fDebugFile) *fDebugFile<<"\n\nTHcScalerEvtHandler :: Debugging event type "<<dec<<evdata->GetEvType()<<endl<<endl; if (fDebugFile) *fDebugFile<<"\n\nTHcScalerEvtHandler :: Debugging event type "<<dec<<evdata->GetEvType()<<endl<<endl;
// local copy of data UInt_t *p = (UInt_t*) rdata;
// 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 *plast = p+*p; // Index to last word in the bank UInt_t *plast = p+*p; // Index to last word in the bank
......
...@@ -47,7 +47,6 @@ private: ...@@ -47,7 +47,6 @@ private:
std::vector<Decoder::GenScaler*> scalers; std::vector<Decoder::GenScaler*> scalers;
std::vector<HCScalerLoc*> scalerloc; std::vector<HCScalerLoc*> scalerloc;
Double_t evcount; Double_t evcount;
UInt_t *rdata;
std::vector<Int_t> index; std::vector<Int_t> index;
Int_t Nvars, ifound, fNormIdx, nscalers; Int_t Nvars, ifound, fNormIdx, nscalers;
Double_t *dvars; Double_t *dvars;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment