From f843eb0c8d202d9dbec6ac9a72f26870f5d0d5b0 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 22 Dec 2025 17:22:46 -0500 Subject: [PATCH 1/8] relax permissions --- .../src/main/java/org/jlab/utils/groups/IndexedTable.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/common-tools/clas-utils/src/main/java/org/jlab/utils/groups/IndexedTable.java b/common-tools/clas-utils/src/main/java/org/jlab/utils/groups/IndexedTable.java index e01daaef59..c6a6b0571c 100644 --- a/common-tools/clas-utils/src/main/java/org/jlab/utils/groups/IndexedTable.java +++ b/common-tools/clas-utils/src/main/java/org/jlab/utils/groups/IndexedTable.java @@ -22,9 +22,10 @@ public class IndexedTable extends DefaultTableModel { public static final IndexGenerator DEFAULT_GENERATOR = new IndexGenerator(); + protected Map entryMap = new LinkedHashMap<>(); + protected Map entryTypes = new LinkedHashMap<>(); + private IndexedList entries = null; - private Map entryMap = new LinkedHashMap<>(); - private Map entryTypes = new LinkedHashMap<>(); private List entryNames = new ArrayList<>(); private List indexNames = new ArrayList<>(); private String precisionFormat = "%.6f"; From f312e8febfc175d7f9bb7f0d1bbeb95f59a3ae05 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 22 Dec 2025 17:26:15 -0500 Subject: [PATCH 2/8] provide more access --- .../src/main/java/org/jlab/utils/groups/IndexedTable.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/common-tools/clas-utils/src/main/java/org/jlab/utils/groups/IndexedTable.java b/common-tools/clas-utils/src/main/java/org/jlab/utils/groups/IndexedTable.java index c6a6b0571c..ac7f3a37aa 100644 --- a/common-tools/clas-utils/src/main/java/org/jlab/utils/groups/IndexedTable.java +++ b/common-tools/clas-utils/src/main/java/org/jlab/utils/groups/IndexedTable.java @@ -201,7 +201,11 @@ public NamedEntry getNamedEntry(int... index) { public IndexedList getList(){ return this.entries; } - + + public Map getEntryMap(){ + return this.entryMap; + } + private void parseFormat(String format){ String[] tokens = format.split(":"); entryMap.clear(); From 5226733aabc6d72716241c72b4c78158695b2d07 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 22 Dec 2025 17:28:15 -0500 Subject: [PATCH 3/8] add more hash-based accessors --- .../org/jlab/utils/groups/IndexedTable.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/common-tools/clas-utils/src/main/java/org/jlab/utils/groups/IndexedTable.java b/common-tools/clas-utils/src/main/java/org/jlab/utils/groups/IndexedTable.java index ac7f3a37aa..fbd72aca29 100644 --- a/common-tools/clas-utils/src/main/java/org/jlab/utils/groups/IndexedTable.java +++ b/common-tools/clas-utils/src/main/java/org/jlab/utils/groups/IndexedTable.java @@ -9,6 +9,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; @@ -120,7 +121,11 @@ public void setIntValue(Integer value, String item, int... index){ } } } - + + public void setIntValueByHash(Integer value, int column, long hash) { + this.entries.getItemByHash(hash).setValue(column, value); + } + public void setDoubleValue(Double value, String item, int... index){ if(this.entries.hasItem(index)==false){ if(DEBUG_MODE>0) System.out.println( "[IndexedTable] ---> error.. entry does not exist"); @@ -166,6 +171,18 @@ public double getDoubleValueByHash(String item, long hash) { return 0; } + public List getValuesByHash(long hash) { + return this.entries.getItemByHash(hash).entryValues; + } + + public List getIntegersByHash(long hash) { + return getValuesByHash(hash).stream().map(x -> x.intValue()).collect(Collectors.toList()); + } + + public List getDoublesByHash(long hash) { + return getValuesByHash(hash).stream().map(x -> x.doubleValue()).collect(Collectors.toList()); + } + public int getIntValue(String item, int... index){ if(this.entries.hasItem(index)==false){ if(DEBUG_MODE>0) System.out.println( "[IndexedTable] ---> error.. entry does not exist"); From 46983a1912096294ac3b32600663334888cf7b18 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 22 Dec 2025 17:31:54 -0500 Subject: [PATCH 4/8] remove checks from hash-based accessors, cleanup --- .../org/jlab/utils/groups/IndexedTable.java | 80 ++++++++----------- 1 file changed, 32 insertions(+), 48 deletions(-) diff --git a/common-tools/clas-utils/src/main/java/org/jlab/utils/groups/IndexedTable.java b/common-tools/clas-utils/src/main/java/org/jlab/utils/groups/IndexedTable.java index fbd72aca29..28dcdf629d 100644 --- a/common-tools/clas-utils/src/main/java/org/jlab/utils/groups/IndexedTable.java +++ b/common-tools/clas-utils/src/main/java/org/jlab/utils/groups/IndexedTable.java @@ -122,10 +122,6 @@ public void setIntValue(Integer value, String item, int... index){ } } - public void setIntValueByHash(Integer value, int column, long hash) { - this.entries.getItemByHash(hash).setValue(column, value); - } - public void setDoubleValue(Double value, String item, int... index){ if(this.entries.hasItem(index)==false){ if(DEBUG_MODE>0) System.out.println( "[IndexedTable] ---> error.. entry does not exist"); @@ -139,50 +135,6 @@ public void setDoubleValue(Double value, String item, int... index){ } } - public int getIntValueByHash(int index, long hash) { - if (this.entries.hasItemByHash(hash)) - return this.entries.getItemByHash(hash).getValue(index).intValue(); - return 0; - } - - public double getDoubleValueByHash(int index, long hash) { - if (this.entries.hasItemByHash(hash)) - return this.entries.getItemByHash(hash).getValue(index).doubleValue(); - return 0; - } - - public int getIntValueByHash(String item, long hash) { - if (this.entries.hasItemByHash(hash)) { - if (this.entryMap.containsKey(item)) { - int index = this.entryMap.get(item); - return this.entries.getItemByHash(hash).getValue(index).intValue(); - } - } - return 0; - } - - public double getDoubleValueByHash(String item, long hash) { - if (this.entries.hasItemByHash(hash)) { - if (this.entryMap.containsKey(item)) { - int index = this.entryMap.get(item); - return this.entries.getItemByHash(hash).getValue(index).doubleValue(); - } - } - return 0; - } - - public List getValuesByHash(long hash) { - return this.entries.getItemByHash(hash).entryValues; - } - - public List getIntegersByHash(long hash) { - return getValuesByHash(hash).stream().map(x -> x.intValue()).collect(Collectors.toList()); - } - - public List getDoublesByHash(long hash) { - return getValuesByHash(hash).stream().map(x -> x.doubleValue()).collect(Collectors.toList()); - } - public int getIntValue(String item, int... index){ if(this.entries.hasItem(index)==false){ if(DEBUG_MODE>0) System.out.println( "[IndexedTable] ---> error.. entry does not exist"); @@ -211,6 +163,38 @@ public double getDoubleValue(String item, int... index){ return 0; } + public void setIntValueByHash(Integer value, int column, long hash) { + this.entries.getItemByHash(hash).setValue(column, value); + } + + public int getIntValueByHash(int index, long hash) { + return entries.getItemByHash(hash).getValue(index).intValue(); + } + + public double getDoubleValueByHash(int index, long hash) { + return entries.getItemByHash(hash).getValue(index).doubleValue(); + } + + public int getIntValueByHash(String item, long hash) { + return entries.getItemByHash(hash).getValue(entryMap.get(item)).intValue(); + } + + public double getDoubleValueByHash(String item, long hash) { + return entries.getItemByHash(hash).getValue(entryMap.get(item)).doubleValue(); + } + + public List getValuesByHash(long hash) { + return this.entries.getItemByHash(hash).entryValues; + } + + public List getIntegersByHash(long hash) { + return getValuesByHash(hash).stream().map(x -> x.intValue()).collect(Collectors.toList()); + } + + public List getDoublesByHash(long hash) { + return getValuesByHash(hash).stream().map(x -> x.doubleValue()).collect(Collectors.toList()); + } + public NamedEntry getNamedEntry(int... index) { return NamedEntry.create(entries.getItem(index), entryNames, index); } From 81483321206642a35e78eecf47bc25e6094d6a88 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 22 Dec 2025 17:34:13 -0500 Subject: [PATCH 5/8] add "translation table", with additional DetectorType index --- .../detector/decode/TranslationTable.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 common-tools/clas-detector/src/main/java/org/jlab/detector/decode/TranslationTable.java diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/TranslationTable.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/TranslationTable.java new file mode 100644 index 0000000000..ae89dfa9a2 --- /dev/null +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/TranslationTable.java @@ -0,0 +1,34 @@ +package org.jlab.detector.decode; + +import org.jlab.detector.base.DetectorType; +import org.jlab.utils.groups.IndexedTable; + +/** + * + * @author baltzell + */ +public class TranslationTable extends IndexedTable { + + public TranslationTable() { + super(3,new String[]{"sector/I","layer/I","component/I","order/I","type/I"}); + }; + + public void add(DetectorType dt, IndexedTable it) { + for (Object key : it.getList().getMap().keySet()) { + int crate = IndexedTable.DEFAULT_GENERATOR.getIndex((long) key, 0); + int slot = IndexedTable.DEFAULT_GENERATOR.getIndex((long) key, 1); + int channel = IndexedTable.DEFAULT_GENERATOR.getIndex((long) key, 2); + long hash = IndexedTable.DEFAULT_GENERATOR.hashCode(crate, slot, channel); + // add row to the new table: + addEntry(crate, slot, channel); + // add all entries to the new row: + int column; + for (column=0; column Date: Mon, 22 Dec 2025 19:32:04 -0500 Subject: [PATCH 6/8] improve, test, stop recalculating hash --- .../detector/decode/TranslationTable.java | 58 ++++++++++++++++--- 1 file changed, 49 insertions(+), 9 deletions(-) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/TranslationTable.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/TranslationTable.java index ae89dfa9a2..c9566f0f65 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/TranslationTable.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/TranslationTable.java @@ -1,8 +1,10 @@ package org.jlab.detector.decode; import org.jlab.detector.base.DetectorType; +import org.jlab.detector.calib.utils.ConstantsManager; import org.jlab.utils.groups.IndexedTable; + /** * * @author baltzell @@ -14,21 +16,59 @@ public TranslationTable() { }; public void add(DetectorType dt, IndexedTable it) { + for (Object key : it.getList().getMap().keySet()) { - int crate = IndexedTable.DEFAULT_GENERATOR.getIndex((long) key, 0); - int slot = IndexedTable.DEFAULT_GENERATOR.getIndex((long) key, 1); - int channel = IndexedTable.DEFAULT_GENERATOR.getIndex((long) key, 2); - long hash = IndexedTable.DEFAULT_GENERATOR.hashCode(crate, slot, channel); + + // get the indices: + long hash = (long)key; + int crate = IndexedTable.DEFAULT_GENERATOR.getIndex(hash, 0); + int slot = IndexedTable.DEFAULT_GENERATOR.getIndex(hash, 1); + int channel = IndexedTable.DEFAULT_GENERATOR.getIndex(hash, 2); + + if (hasEntryByHash(hash)) { + System.err.print("TranslationTable: found CCDB overlap for "); + System.err.println(String.format("%d/%d/%d %s",crate,slot,channel,dt)); + } + // add row to the new table: addEntry(crate, slot, channel); - // add all entries to the new row: - int column; - for (column=0; column Date: Mon, 22 Dec 2025 19:36:06 -0500 Subject: [PATCH 7/8] maintain old behavior, first wins --- .../detector/decode/TranslationTable.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/TranslationTable.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/TranslationTable.java index c9566f0f65..a9a80cf958 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/TranslationTable.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/TranslationTable.java @@ -29,18 +29,19 @@ public void add(DetectorType dt, IndexedTable it) { System.err.print("TranslationTable: found CCDB overlap for "); System.err.println(String.format("%d/%d/%d %s",crate,slot,channel,dt)); } + else { + // add row to the new table: + addEntry(crate, slot, channel); - // add row to the new table: - addEntry(crate, slot, channel); + // add each column's entry to the new row: + for (int column=0; column Date: Mon, 22 Dec 2025 19:49:43 -0500 Subject: [PATCH 8/8] log all the info --- .../java/org/jlab/detector/decode/TranslationTable.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/TranslationTable.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/TranslationTable.java index a9a80cf958..9958969083 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/TranslationTable.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/TranslationTable.java @@ -4,7 +4,6 @@ import org.jlab.detector.calib.utils.ConstantsManager; import org.jlab.utils.groups.IndexedTable; - /** * * @author baltzell @@ -27,7 +26,10 @@ public void add(DetectorType dt, IndexedTable it) { if (hasEntryByHash(hash)) { System.err.print("TranslationTable: found CCDB overlap for "); - System.err.println(String.format("%d/%d/%d %s",crate,slot,channel,dt)); + System.err.println(String.format("type %d/%s versus %s and c/s/c=%d/%d/%d", + getIntValueByHash("type",hash), + DetectorType.getType(getIntValueByHash("type",hash)), + dt,crate,slot,channel)); } else { // add row to the new table: