From 3887b5d22f80f7efe58569554c5fa82cf8c08cda Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Tue, 28 Apr 2026 19:55:45 -0400 Subject: [PATCH 1/5] switch to row/hash based lookup --- .../dc/src/main/java/org/jlab/rec/dc/Constants.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java index e11d0ac1b6..2c00d90afe 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java @@ -519,10 +519,10 @@ private void addReverseTT(int run, IndexedTable tt) { int crate = tt.getList().getIndexGenerator().getIndex((long)key, 0); int slot = tt.getList().getIndexGenerator().getIndex((long)key, 1); int channel = tt.getList().getIndexGenerator().getIndex((long)key, 2); - int sector = tt.getIntValue("sector", crate,slot,channel); - int layer = tt.getIntValue("layer", crate,slot,channel); - int comp = tt.getIntValue("component", crate,slot,channel); - int order = tt.getIntValue("order", crate,slot,channel); + int sector = tt.getIntValueByHash(0, (long)key); + int layer = tt.getIntValueByHash(1, (long)key); + int comp = tt.getIntValueByHash(2, (long)key); + int order = tt.getIntValueByHash(3, (long)key); reverse.addEntry(sector, layer, comp, order); reverse.setIntValue(crate, "crate", sector, layer, comp, order); reverse.setIntValue(slot, "slot", sector, layer, comp, order); From 9f2a41c2e582ed73e347c0eeada0031d2da4f635 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Tue, 28 Apr 2026 19:58:37 -0400 Subject: [PATCH 2/5] reduce hashing --- .../dc/src/main/java/org/jlab/rec/dc/Constants.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java index 2c00d90afe..e059e115ca 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java @@ -524,9 +524,11 @@ private void addReverseTT(int run, IndexedTable tt) { int comp = tt.getIntValueByHash(2, (long)key); int order = tt.getIntValueByHash(3, (long)key); reverse.addEntry(sector, layer, comp, order); - reverse.setIntValue(crate, "crate", sector, layer, comp, order); - reverse.setIntValue(slot, "slot", sector, layer, comp, order); - reverse.setIntValue(channel, "channel", sector, layer, comp, order); + long hash = IndexedTable.DEFAULT_GENERATOR.hashCode(sector,layer,comp,order); + reverse.setIntValueByHash(crate, 0, hash); + reverse.setIntValueByHash(crate, 1, hash); + reverse.setIntValueByHash(slot, 2, hash); + reverse.setIntValueByHash(channel, 3, hash); } reverseTTs.put(run, reverse); } From 40553ff1bd898f75cbd6793e590b96cc05b38f06 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Thu, 30 Apr 2026 18:10:12 -0400 Subject: [PATCH 3/5] add integer-based accessors --- .../org/jlab/detector/banks/FilteredBank.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/banks/FilteredBank.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/banks/FilteredBank.java index 436d49fedb..8b17f3b6b9 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/banks/FilteredBank.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/banks/FilteredBank.java @@ -135,6 +135,51 @@ public float getFloat(String varName, int index ){ return bank.getFloat(varName, indexList.get(index)); } + /** + * @param element + * @param index + * @return value for the filtered index + */ + public int getByte(int element, int index) { + return bank.getByte(element, indexList.get(index)); + } + + /** + * @param element + * @param index + * @return value for the filtered index + */ + public int getShort(int element, int index) { + return bank.getShort(element, indexList.get(index)); + } + + /** + * @param element + * @param index + * @return value for the filtered index + */ + public int getInt(int element, int index) { + return bank.getInt(element, indexList.get(index)); + } + + /** + * @param element + * @param index + * @return value for the filtered index + */ + public long getLong(int element, int index) { + return bank.getLong(element, indexList.get(index)); + } + + /** + * @param element + * @param index + * @return value for the filtered index + */ + public float getFloat(int element, int index) { + return bank.getFloat(element, indexList.get(index)); + } + /** * @param index filtered index to retrieve * @return true bank row index corresponding to the filtered index From d5e1ed5037df68f9c95b66bd9f250f1978081472 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Thu, 30 Apr 2026 18:11:00 -0400 Subject: [PATCH 4/5] use integer access for jitter bank --- .../dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java index eaa35990c4..5f779b562b 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java @@ -128,9 +128,9 @@ private void getDCRBJitters(boolean swapBits) { DataBank bankTS = event.getBank(bankNames.getTimeStampBank()); for(int i=0; i>24)|((timestamp&0x0000000000ffffffL)<<24)); } From 64fd1ae6e3d7acef1fd13baf59396112f3d163ce Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Thu, 30 Apr 2026 18:11:55 -0400 Subject: [PATCH 5/5] use integer-based access for read DC::tdc banks --- .../src/main/java/org/jlab/rec/dc/banks/HitReader.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java index 5f779b562b..b05d424d60 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/HitReader.java @@ -186,12 +186,12 @@ public void fetch_DCHits(DataEvent event) { this.set_NumTDCBankRows(bankFiltered.rows()); for (int i = 0; i < bankFiltered.rows(); i++) { - int sector = bankFiltered.getByte("sector", i); - int layer = (bankFiltered.getByte("layer", i)-1)%6 + 1; - int superlayer = (bankFiltered.getByte("layer", i)-1)/6 + 1; - int wire = bankFiltered.getShort("component", i); + int sector = bankFiltered.getByte(0, i); + int layer = (bankFiltered.getByte(1, i)-1)%6 + 1; + int superlayer = (bankFiltered.getByte(1, i)-1)/6 + 1; + int wire = bankFiltered.getShort(2, i); int order = bankFiltered.trueOrder(i); - int jitter = this.getJitter(sector, bankFiltered.getByte("layer", i), wire, order); + int jitter = this.getJitter(sector, bankFiltered.getByte(1, i), wire, order); int tdc = bankFiltered.getInt("TDC", i) - jitter; int index = bankFiltered.trueIndex(i);