Skip to content

Commit 9306502

Browse files
Merge pull request #91 from JeffersonLab/reverse-tt
Add run number changed hook, use it to lazy-load reverse translation table
2 parents d151eb4 + 28b7329 commit 9306502

File tree

2 files changed

+33
-27
lines changed

2 files changed

+33
-27
lines changed

src/main/java/org/clas/detectors/DCmonitor.java

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.jlab.groot.group.DataGroup;
99
import org.jlab.io.base.DataBank;
1010
import org.jlab.io.base.DataEvent;
11+
import org.jlab.utils.groups.IndexedList;
1112
import org.jlab.utils.groups.IndexedTable;
1213

1314
/**
@@ -17,20 +18,21 @@
1718

1819
public class DCmonitor extends DetectorMonitor {
1920

20-
public IndexedTable tt = null;
21+
public IndexedTable forward = null;
2122
public IndexedTable reverse = null;
2223

2324
public DCmonitor(String name) {
2425
super(name);
2526
this.setDetectorTabNames("occupancy", "occupancyNorm", "occupancyToT", "occupancyPercent", "multiplicity", "tot", "groupMult", "tdc2d", "tdc1d_s");
2627
this.useSectorButtons(true);
2728
this.init(false);
29+
this.getCcdb().init("/daq/tt/dc");
2830
}
2931

3032
@Override
3133
public void createHistos() {
3234

33-
this.getReverseTT(runNumber);
35+
forward = this.getCcdb().getConstants(runNumber, "/daq/tt/dc");
3436

3537
// create histograms
3638
this.setNumberOfEvents(0);
@@ -45,7 +47,6 @@ public void createHistos() {
4547

4648
H1F raw_summary = new H1F("raw_summary","raw_summary",6,0.5,6.5);
4749

48-
4950
for(int sector=1; sector <= 6; sector++) {
5051
H2F raw = new H2F("raw_sec" + sector, "Sector " + sector + " Occupancy", 112, 0.5, 112.5, 36, 0.5, 36.5);
5152
raw.setTitleX("wire");
@@ -66,14 +67,12 @@ public void createHistos() {
6667
occToT.setTitleX("wire");
6768
occToT.setTitleY("layer");
6869
occToT.setTitle("sector "+sector);
69-
7070

7171
H1F reg_occ = new H1F("reg_occ_sec" + sector, "Sector " + sector + " region Occupancy", 3, 0.5, 3.5);
7272
reg_occ.setTitleX("region");
7373
reg_occ.setTitleY("occupancy %");
7474
reg_occ.setTitle("sector "+sector);
7575
reg_occ.setFillColor(3);
76-
7776

7877
H1F raw_reg_occ = new H1F("raw_reg_occ_sec" + sector, "Sector " + sector + " region Occupancy", 3, 0.5, 3.5);
7978
raw_reg_occ.setTitleX("region");
@@ -124,36 +123,37 @@ public void createHistos() {
124123
dg.addDataSet(groupMult, 10);
125124
this.getDataGroup().add(dg, sector,0,0);
126125
}
127-
128-
129-
130126
}
131-
132-
private void getReverseTT(int run) {
133-
this.getCcdb().init("/daq/tt/dc");
134-
tt = this.getCcdb().getConstants(run, "/daq/tt/dc");
127+
128+
@Override
129+
public void runNumberChanged() {
130+
reverse = getReverseTT(forward);
131+
}
132+
133+
private static IndexedTable getReverseTT(IndexedTable tt) {
135134
System.err.print("Inverting DC translation table, this may take a few seconds ...");
136-
reverse = new IndexedTable(4, "crate/I:slot/I:channel/I");
137-
for(int row=0; row<tt.getRowCount(); row++) {
138-
int crate = Integer.parseInt((String)tt.getValueAt(row,0));
139-
int slot = Integer.parseInt((String)tt.getValueAt(row,1));
140-
int channel = Integer.parseInt((String)tt.getValueAt(row,2));
135+
IndexedTable ret = new IndexedTable(4, "crate/I:slot/I:channel/I");
136+
for(Object key : tt.getList().getMap().keySet()) {
137+
int crate = IndexedList.IndexGenerator.getIndex((long)key, 0);
138+
int slot = IndexedList.IndexGenerator.getIndex((long)key, 1);
139+
int channel = IndexedList.IndexGenerator.getIndex((long)key, 2);
141140
int sector = tt.getIntValue("sector", crate,slot,channel);
142141
int layer = tt.getIntValue("layer", crate,slot,channel);
143142
int comp = tt.getIntValue("component", crate,slot,channel);
144143
int order = tt.getIntValue("order", crate,slot,channel);
145-
reverse.addEntry(sector, layer, comp, order);
146-
reverse.setIntValue(crate, "crate", sector, layer, comp, order);
147-
reverse.setIntValue(slot, "slot", sector, layer, comp, order);
148-
reverse.setIntValue(channel, "channel", sector, layer, comp, order);
144+
ret.addEntry(sector, layer, comp, order);
145+
ret.setIntValue(crate, "crate", sector, layer, comp, order);
146+
ret.setIntValue(slot, "slot", sector, layer, comp, order);
147+
ret.setIntValue(channel, "channel", sector, layer, comp, order);
149148
}
150149
System.err.println("Done inverting DC translation table.");
150+
return ret;
151151
}
152152

153153
@Override
154154
public void plotHistos() {
155155
// initialize canvas and plot histograms
156-
156+
157157
this.getDetectorCanvas().getCanvas("occupancy").divide(2, 3);
158158
this.getDetectorCanvas().getCanvas("occupancy").setGridX(false);
159159
this.getDetectorCanvas().getCanvas("occupancy").setGridY(false);
@@ -289,8 +289,8 @@ public void processEvent(DataEvent event) {
289289
for(int key : multiplicity.keySet()) {
290290
int slot = this.getL(key);
291291
int group = this.getC(key)/16;
292-
int sector = this.tt.getIntValue("sector", this.getS(key), this.getL(key), this.getC(key));
293-
int layer = this.tt.getIntValue("layer", this.getS(key), this.getL(key), this.getC(key));
292+
int sector = this.forward.getIntValue("sector", this.getS(key), this.getL(key), this.getC(key));
293+
int layer = this.forward.getIntValue("layer", this.getS(key), this.getL(key), this.getC(key));
294294
int region = (layer-1)/12+1;
295295
int sc = slot<10 ? (slot-3)*6+group : (slot-7)*6+group;
296296
this.getDataGroup().getItem(sector,0,0).getH2F("group_mult_sec"+sector).fill(multiplicity.get(key),(region-1)*85+sc);
@@ -322,7 +322,7 @@ public void analysisUpdate() {
322322
}
323323

324324
for(int sector=1; sector <=6; sector++) {
325-
H1F raw = this.getDataGroup().getItem(sector,0,0).getH1F("raw_reg_occ_sec"+sector);
325+
H1F raw = this.getDataGroup().getItem(sector,0,0).getH1F("raw_reg_occ_sec"+sector);
326326
H1F ave = this.getDataGroup().getItem(sector,0,0).getH1F("reg_occ_sec"+sector);
327327
if(entries>0) {
328328
for(int loop = 0; loop < 3; loop++){

src/main/java/org/clas/viewer/DetectorMonitor.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,9 +189,15 @@ public boolean setRF() {
189189
}
190190
return false;
191191
}
192-
192+
193193
public void setRunNumber(int run) {
194-
this.runNumber = run;
194+
if (run != this.runNumber) {
195+
this.runNumber = run;
196+
this.runNumberChanged();
197+
}
198+
}
199+
200+
public void runNumberChanged() {
195201
}
196202

197203
public void setEventNumber(int ev) {

0 commit comments

Comments
 (0)