diff --git a/etc/bankdefs/hipo4/rich.json b/etc/bankdefs/hipo4/rich.json index 8b5a57415d..57f16c6002 100644 --- a/etc/bankdefs/hipo4/rich.json +++ b/etc/bankdefs/hipo4/rich.json @@ -238,6 +238,8 @@ {"name":"time", "type":"F", "info":"Hit time" }, {"name":"rawtime", "type":"F", "info":"Hit rawtime" }, {"name":"duration", "type":"S", "info":"Hit duration" }, + {"name":"mchi2", "type":"F", "info":"Track-cluster matching chi2 (if any)"}, + {"name":"msize", "type":"S", "info":"Cluster size"}, {"name":"status", "type":"S", "info":"Hit status" }, {"name":"used", "type":"B", "info":"eligible for PID in time (1=yes, 0=no) angle (10=yes, 0=no) hypo (100=by other) or cluster (2)"}, {"name":"emilay", "type":"B", "info":"aerogel layer of photon emission"}, diff --git a/reconstruction/calib/src/main/java/org/jlab/calibration/detectors/RICHBankBuilder.java b/reconstruction/calib/src/main/java/org/jlab/calibration/detectors/RICHBankBuilder.java index 5f52852a1f..4309ff89ef 100644 --- a/reconstruction/calib/src/main/java/org/jlab/calibration/detectors/RICHBankBuilder.java +++ b/reconstruction/calib/src/main/java/org/jlab/calibration/detectors/RICHBankBuilder.java @@ -35,6 +35,7 @@ public DataBank buildCalibBank(DataEvent event) { DataBank part = event.getBank("REC::Particle"); DataBank rich = event.getBank("RICH::Particle"); DataBank hits = event.getBank("RICH::Hit"); + DataBank clus = event.getBank("RICH::Cluster"); DataBank phos = event.getBank("RICH::Photon"); List goodPhotons = new ArrayList<>(); @@ -45,9 +46,12 @@ public DataBank buildCalibBank(DataEvent event) { } Map part2Rich = new HashMap<>(); + Map clus2Rich = new HashMap<>(); for(int i=0; i goodClusters = new ArrayList<>(); @@ -99,6 +103,7 @@ public DataBank buildCalibBank(DataEvent event) { row++; } for(int i : goodClusters) { + int cluster = hits.getShort("cluster", i); calib.setShort("hindex", row, (short) i); calib.setByte( "sector", row, (byte) hits.getShort("sector", i)); calib.setShort("pmt", row, hits.getShort("pmt", i)); @@ -111,6 +116,14 @@ public DataBank buildCalibBank(DataEvent event) { calib.setFloat("time", row, hits.getFloat("time", i)); calib.setFloat("rawtime", row, hits.getFloat("rawtime", i)); calib.setShort("duration", row, hits.getShort("duration", i)); + if(clus2Rich.containsKey(cluster-1)) { + int rindex = clus2Rich.get(cluster-1); + calib.setByte("pindex", row, rich.getByte("pindex", rindex)); + calib.setFloat("mchi2", row, rich.getFloat("mchi2", rindex)); + calib.setShort("msize", row, clus.getShort("size", cluster-1)); + } + else + calib.setByte("pindex", row, (byte) -1); row++; } return calib;