Skip to content

Commit 054a212

Browse files
committed
add utilities for rebuilding scalers
1 parent c760d2c commit 054a212

File tree

3 files changed

+76
-2
lines changed

3 files changed

+76
-2
lines changed

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

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,10 @@ public class DaqScalers {
5050
public StruckScalers struck=null;
5151

5252
private long timestamp=0;
53-
public void setTimestamp(long timestamp) { this.timestamp=timestamp; }
53+
public DaqScalers setTimestamp(long timestamp) {
54+
this.timestamp=timestamp;
55+
return this;
56+
}
5457
public long getTimestamp(){ return this.timestamp; }
5558

5659
/**
@@ -137,6 +140,37 @@ public static DaqScalers create(Bank rawScalerBank,IndexedTable fcupTable,Indexe
137140
return DaqScalers.create(rawScalerBank,fcupTable,slmTable,helTable,dsc2.getGatedClockSeconds());
138141
}
139142

143+
/**
144+
*
145+
* @param conman
146+
* @param runConfig
147+
* @param rawScaler
148+
* @return
149+
*/
150+
public static DaqScalers create(ConstantsManager conman, Bank runConfig, Bank rawScaler) {
151+
int run = runConfig.getInt("run", 0);
152+
IndexedTable fcup = conman.getConstants(run, "/runcontrol/fcup");
153+
IndexedTable slm = conman.getConstants(run, "/runcontrol/slm");
154+
IndexedTable hel = conman.getConstants(run, "/runcontrol/helicity");
155+
IndexedTable dsc = conman.getConstants(run, "/daq/config/scalers/dsc1");
156+
if (fcup!=null && dsc!=null) {
157+
if (dsc.getIntValue("frequency",0,0,0) < Dsc2Scaler.MAX_DSC2_CLOCK_FREQ) {
158+
return DaqScalers.create(rawScaler, fcup, slm, hel, dsc)
159+
.setTimestamp(runConfig.getLong("timestamp", 0));
160+
}
161+
else {
162+
try {
163+
Time rst = (Time)conman.getRcdbConstant(run,"run_start_time").getValue();
164+
Date uet = new Date(runConfig.getInt("unixtime",0)*1000L);
165+
return DaqScalers.create(rawScaler, fcup, slm, hel, rst, uet)
166+
.setTimestamp(runConfig.getLong("timestamp", 0));
167+
}
168+
catch (Exception e) {}
169+
}
170+
}
171+
return null;
172+
}
173+
140174
/**
141175
* @param schema bank schema
142176
* @return RUN::scaler banks
@@ -253,7 +287,7 @@ public static List<Bank> createBanks(int runnumber, SchemaFactory schema, Event
253287
IndexedTable hel = conman.getConstants(runnumber, "/runcontrol/helicity");
254288
IndexedTable dsc = conman.getConstants(runnumber, "/daq/config/scalers/dsc1");
255289

256-
if (dsc.getIntValue("frequency", 0,0,0) < 2e5) {
290+
if (dsc.getIntValue("frequency", 0,0,0) < Dsc2Scaler.MAX_DSC2_CLOCK_FREQ) {
257291
ret.addAll(createBanks(schema,rawScaler,fcup, slm, hel, dsc));
258292
}
259293
else {
@@ -274,5 +308,6 @@ public static List<Bank> createBanks(int runnumber, SchemaFactory schema, Event
274308

275309
return ret;
276310
}
311+
277312
}
278313

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

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import java.util.Arrays;
66
import java.util.Collections;
77
import java.util.Comparator;
8+
import java.util.logging.Logger;
9+
import org.jlab.detector.calib.utils.ConstantsManager;
810

911
import org.jlab.jnp.hipo4.io.HipoReader;
1012
import org.jlab.jnp.hipo4.data.Event;
@@ -27,6 +29,8 @@ public class DaqScalersSequence implements Comparator<DaqScalers> {
2729

2830
private Bank rcfgBank=null;
2931

32+
static final Logger logger = Logger.getLogger(DaqScalersSequence.class.getName());
33+
3034
public static class Interval {
3135
private DaqScalers previous = null;
3236
private DaqScalers next = null;
@@ -187,6 +191,7 @@ public Interval getInterval(Event event1, Event event2) {
187191
* @return sequence
188192
*/
189193
public static DaqScalersSequence readSequence(List<String> filenames) {
194+
logger.info("DaqScalersSequence:: Reading scaler sequence from "+String.join(",", filenames));
190195

191196
DaqScalersSequence seq=new DaqScalersSequence();
192197

@@ -229,6 +234,38 @@ public static DaqScalersSequence readSequence(List<String> filenames) {
229234

230235
return seq;
231236
}
237+
238+
/**
239+
*
240+
* @param tags
241+
* @param conman
242+
* @param filenames
243+
* @return
244+
*/
245+
public static DaqScalersSequence rebuildSequence(int tags, ConstantsManager conman, List<String> filenames) {
246+
logger.info("DaqScalersSequence:: Rebuilding scaler sequence from "+String.join(",", filenames));
247+
DaqScalersSequence seq=new DaqScalersSequence();
248+
for (String filename : filenames) {
249+
HipoReader reader = new HipoReader();
250+
reader.setTags(tags);
251+
reader.open(filename);
252+
SchemaFactory schema = reader.getSchemaFactory();
253+
if (seq.rcfgBank==null)
254+
seq.rcfgBank = new Bank(schema.getSchema("RUN::config"));
255+
while (reader.hasNext()) {
256+
Event event=new Event();
257+
Bank scaler=new Bank(schema.getSchema("RAW::scaler"));
258+
Bank config=new Bank(schema.getSchema("RUN::config"));
259+
reader.nextEvent(event);
260+
event.read(scaler);
261+
event.read(config);
262+
if (scaler.getRows()<1 || config.getRows()<1) continue;
263+
seq.add(DaqScalers.create(conman, config, scaler));
264+
}
265+
reader.close();
266+
}
267+
return seq;
268+
}
232269

233270
public static void main(String[] args) {
234271

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
*/
1717
public class Dsc2Scaler extends DaqScaler{
1818

19+
public static final long MAX_DSC2_CLOCK_FREQ = (long)2e5;
20+
1921
private static final boolean GATEINVERTED=true;
2022

2123
// DSC has TRG and TDC thresholds, we use only TDC here:

0 commit comments

Comments
 (0)