diff --git a/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Writer.java b/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Writer.java index a094b939cd..cead1b0607 100644 --- a/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Writer.java +++ b/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Writer.java @@ -8,6 +8,7 @@ import org.jlab.analysis.postprocess.Processor; import org.jlab.clara.std.services.EventWriterException; import org.jlab.detector.calib.utils.ConstantsManager; +import org.jlab.detector.calib.utils.OccupancyTable; import org.jlab.detector.decode.CLASDecoder4; import org.jlab.detector.helicity.HelicitySequence; import org.jlab.detector.helicity.HelicitySequenceDelayed; @@ -35,6 +36,9 @@ public class Clas12Writer extends HipoToHipoWriter { static final String[] TAG1BANKS = {"RUN::scaler","HEL::scaler","RAW::scaler","RAW::epics","HEL::flip","COAT::config"}; + long occupancyEvents; + OccupancyTable[] occupancyTables; + Bank[] occupancyBanks; Bank[] tag1banks; Bank runConfig; Bank helicityAdc; @@ -46,6 +50,7 @@ public class Clas12Writer extends HipoToHipoWriter { boolean postprocess; private void init(JSONObject opts) { + occupancyEvents = 0; fullSchema = new SchemaFactory(); fullSchema.initFromDirectory(FileUtils.getEnvironmentPath("CLAS12DIR","etc/bankdefs/hipo4")); runConfig = new Bank(fullSchema.getSchema("RUN::config")); @@ -61,6 +66,10 @@ private void init(JSONObject opts) { tag1banks = new Bank[TAG1BANKS.length]; for (int i=0; i 0 && evno > 0) eventUnix.put(evno, unix); } + processOccupancy((Event)event); helicities.add(HelicityState.createFromFadcBank(helicityAdc, runConfig, conman)); Event t = CLASDecoder4.createTaggedEvent((Event)event, runConfig, tag1banks); if (!t.isEmpty()) writer.addEvent(t, 1); diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/calib/utils/OccupancyTable.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/calib/utils/OccupancyTable.java new file mode 100644 index 0000000000..bbd5e6339d --- /dev/null +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/calib/utils/OccupancyTable.java @@ -0,0 +1,176 @@ +package org.jlab.detector.calib.utils; + +import java.util.Map; +import org.jlab.io.base.DataBank; +import org.jlab.io.base.DataEvent; +import org.jlab.jnp.hipo4.data.Bank; +import org.jlab.utils.groups.IndexedTable; +import org.jlab.utils.groups.IndexedTable.IndexedEntry; + +public abstract class OccupancyTable { + + public static class DC extends OccupancyTable { + public DC() { super(); } + /*public void fill(DataEvent e) { + DataBank b = e.getBank("DC::tot"); + if (b == null) b = e.getBank("DC::tdc"); + if (b == null) return; + final int rows = b.rows(); + for (int i=0; i m = table.getList().getMap(); + for (long hash : m.keySet()) { + int[] indices = IndexedTable.DEFAULT_GENERATOR.getIndices(hash, indexNames.length); + for (int j=0; j)table.getList().getMap()).keySet()) { + int[] idx = IndexedTable.DEFAULT_GENERATOR.getIndices(hash, indexNames.length); + for (int j=0; j)table.getList().getMap()).keySet()) { + t.addEntry(IndexedTable.DEFAULT_GENERATOR.getIndices(hash, indexNames.length)); + t.setDoubleValueByHash((table.getDoubleValueByHash(0, hash))/events, 0, hash); + } + return t; + } + +} \ No newline at end of file diff --git a/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/OccupancyEngine.java b/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/OccupancyEngine.java new file mode 100644 index 0000000000..1dab369dc1 --- /dev/null +++ b/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/OccupancyEngine.java @@ -0,0 +1,35 @@ +package org.jlab.clas.reco; + +import org.jlab.detector.calib.utils.OccupancyTable; +import org.jlab.io.base.DataEvent; + +/** + * + * @author baltzell + */ +public class OccupancyEngine extends ReconstructionEngine { + + OccupancyTable[] tables = {new OccupancyTable.DC()}; + String[] banks = {"DC::occ"}; + + public OccupancyEngine() { + super("Occupancy", "baltzell", "0.1"); + } + + @Override + public boolean processDataEventUser(DataEvent event) { + for (int i=0; i