From eb13585c7896e1bc99ef422ae5f2de771c786059 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Tue, 13 Jan 2026 15:37:21 -0500 Subject: [PATCH] reduce string comparisons, cleanup --- .../detector/decode/DetectorEventDecoder.java | 83 +++++++++---------- 1 file changed, 40 insertions(+), 43 deletions(-) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/DetectorEventDecoder.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/DetectorEventDecoder.java index 4f726283a8..0fc6fdfbaf 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/DetectorEventDecoder.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/DetectorEventDecoder.java @@ -28,6 +28,7 @@ public class DetectorEventDecoder { List keysTrans = null; List keysFitter = null; List keysFilter = null; + List keysMicromega= null; private int runNumber = 10; @@ -121,7 +122,9 @@ public final void initDecoder(){ scalerManager.init(Arrays.asList(new String[]{"/runcontrol/fcup","/runcontrol/slm","/runcontrol/hwp", "/runcontrol/helicity","/daq/config/scalers/dsc1"})); - + + keysMicromega = Arrays.asList(new DetectorType[]{DetectorType.BMT,DetectorType.FMT,DetectorType.FTTRK}); + checkTables(); } @@ -191,70 +194,64 @@ public void fitPulses(List detectorData){ } for(DetectorDataDgtz data : detectorData){ + if (data.getADCSize() == 0) continue; int crate = data.getDescriptor().getCrate(); int slot = data.getDescriptor().getSlot(); int channel = data.getDescriptor().getChannel(); long hash = IndexedTable.DEFAULT_GENERATOR.hashCode(crate,slot,channel); long hash0 = IndexedTable.DEFAULT_GENERATOR.hashCode(0,0,0); + boolean ismm = keysMicromega.contains(data.getDescriptor().getType()); + for (int j=0; j 0) { - ADCData adc = data.getADCData(0); - mvtFitter.fit(adcOffset, fineTimeStampResolution, samplingTime, adc.getPulseArray(), adc.getTimeStamp(), sparseSample); - adc.setHeight((short) (mvtFitter.adcMax)); - adc.setTime((int) (mvtFitter.timeMax)); - adc.setIntegral((int) (mvtFitter.integral)); - adc.setTimeStamp(mvtFitter.timestamp); + ADCData adc = data.getADCData(0); + mvtFitter.fit(adcOffset, fineTimeStampResolution, samplingTime, adc.getPulseArray(), adc.getTimeStamp(), sparseSample); + adc.setHeight((short) (mvtFitter.adcMax)); + adc.setTime((int) (mvtFitter.timeMax)); + adc.setIntegral((int) (mvtFitter.integral)); + adc.setTimeStamp(mvtFitter.timestamp); + // first one wins: + break; + } + else if(daq.hasEntryByHash(hash)==true){ + int nsa = daq.getIntValueByHash("nsa", hash); + int nsb = daq.getIntValueByHash("nsb", hash); + int tet = daq.getIntValueByHash("tet", hash); + int ped = 0; + if(data.getDescriptor().getType() == DetectorType.RF && type == DetectorType.RF) { + ped = daq.getIntValueByHash("pedestal", hash); } - } else { - if(daq.hasEntryByHash(hash)==true){ - int nsa = daq.getIntValueByHash("nsa", hash); - int nsb = daq.getIntValueByHash("nsb", hash); - int tet = daq.getIntValueByHash("tet", hash); - int ped = 0; - if(type == DetectorType.RF&&data.getDescriptor().getType().getName().equals("RF")) { - ped = daq.getIntValueByHash("pedestal", hash); - } - if(data.getADCSize()>0){ - for(int i = 0; i < data.getADCSize(); i++){ - ADCData adc = data.getADCData(i); - if(adc.getPulseSize()>0){ - try { - extendedFitter.fit(nsa, nsb, tet, ped, adc.getPulseArray()); - } catch (Exception e) { - System.out.println(">>>> error : fitting pulse " - + crate + " / " + slot + " / " + channel); - } - int adc_corrected = extendedFitter.adc + extendedFitter.ped*(nsa+nsb); - adc.setHeight((short) this.extendedFitter.pulsePeakValue); - adc.setIntegral(adc_corrected); - adc.setTimeWord(this.extendedFitter.t0); - adc.setPedestal((short) this.extendedFitter.ped); - } - } - } - if(data.getADCSize()>0){ - for(int i = 0; i < data.getADCSize(); i++){ - data.getADCData(i).setADC(nsa, nsb); + for(int i = 0; i < data.getADCSize(); i++){ + ADCData adc = data.getADCData(i); + if(adc.getPulseSize()>0){ + try { + extendedFitter.fit(nsa, nsb, tet, ped, adc.getPulseArray()); + } catch (Exception e) { + System.out.println(">>>> error : fitting pulse " + + crate + " / " + slot + " / " + channel); } + int adc_corrected = extendedFitter.adc + extendedFitter.ped*(nsa+nsb); + adc.setHeight((short) this.extendedFitter.pulsePeakValue); + adc.setIntegral(adc_corrected); + adc.setTimeWord(this.extendedFitter.t0); + adc.setPedestal((short) this.extendedFitter.ped); } + data.getADCData(i).setADC(nsa, nsb); } + // first one wins: + break; } } } } - public void filterTDCs(List detectorData){ int maxMultiplicity = 1; for(DetectorType type : keysFilter){