Skip to content

Commit 838c318

Browse files
propagate DSC2 rollover fix to RUN::scaler.fcup and RUN::scaler.fcupgated (#822)
1 parent 666c825 commit 838c318

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/RebuildScalers.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,12 @@ public static void main(String[] args) {
108108
if (ccdb_dsc.getIntValue("frequency", 0,0,0) < 2e5) {
109109
ds = DaqScalers.create(rawScalerBank, ccdb_fcup, ccdb_slm, ccdb_hel, ccdb_dsc);
110110
}
111+
else if (seq != null) {
112+
// Use rollover-corrected clock if available and clock's freq > 200 kHz
113+
long ut = seq.get(event).dsc2.getClock();
114+
long gt = seq.get(event).dsc2.getGatedClock();
115+
ds = DaqScalers.create(rawScalerBank, ccdb_fcup, ccdb_slm, ccdb_hel, ccdb_dsc, ut, gt);
116+
}
111117
else {
112118
// Inputs for calculation run duration in seconds, since for
113119
// some run periods the DSC2 clock rolls over during a run.
@@ -116,11 +122,6 @@ public static void main(String[] args) {
116122
ds = DaqScalers.create(rawScalerBank, ccdb_fcup, ccdb_slm, ccdb_hel, rst, uet);
117123
}
118124

119-
if (seq != null) {
120-
ds.dsc2.setClock(seq.get(event).dsc2.getClock());
121-
ds.dsc2.setGatedClock(seq.get(event).dsc2.getClock());
122-
}
123-
124125
runScalerBank = ds.createRunBank(writer.getSchemaFactory());
125126
helScalerBank = ds.createHelicityBank(writer.getSchemaFactory());
126127

common-tools/clas-detector/src/main/java/org/jlab/detector/scalers/DaqScalers.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,27 @@ public static DaqScalers create(Bank rawScalerBank,IndexedTable fcupTable,Indexe
146146
return DaqScalers.create(rawScalerBank,fcupTable,slmTable,helTable,dsc2.getGatedClockSeconds());
147147
}
148148

149+
/**
150+
* Same as create(Bank,IndexedTable,IndexedTable,IndexedTable), except
151+
* relies on clock, gatedClock values. Used with clock rollover correction
152+
*
153+
* @param rawScalerBank HIPO RAW::scaler bank
154+
* @param fcupTable /runcontrol/fcup from CCDB
155+
* @param slmTable /runcontrol/slm from CCDB
156+
* @param helTable /runcontrol/helicity from CCDB
157+
* @param dscTable /daq/config/scalers/dsc1 from CCDB
158+
* @param clock (rollover-corrected) DSC2 clock's count
159+
* @param gatedClock (rollover-corrected) DSC2 gated clock's count
160+
* @return
161+
*/
162+
public static DaqScalers create(Bank rawScalerBank,IndexedTable fcupTable,IndexedTable slmTable,IndexedTable helTable,IndexedTable dscTable,long clock,long gatedClock) {
163+
DaqScalers ds = DaqScalers.create(rawScalerBank,fcupTable,slmTable,helTable,dscTable);
164+
ds.dsc2.setClock(clock);
165+
ds.dsc2.setGatedClock(gatedClock);
166+
ds.dsc2.calibrate(fcupTable, slmTable);
167+
return ds;
168+
}
169+
149170
/**
150171
*
151172
* @param conman

0 commit comments

Comments
 (0)