Author: [log in to unmask]
Date: Mon Mar 30 17:30:44 2015
New Revision: 2629
Log:
add TDC-DSC mapping
Modified:
java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/triggerbank/TDCData.java
java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java
Modified: java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/triggerbank/TDCData.java
=============================================================================
--- java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/triggerbank/TDCData.java (original)
+++ java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/triggerbank/TDCData.java Mon Mar 30 17:30:44 2015
@@ -2,6 +2,9 @@
import java.util.ArrayList;
import java.util.List;
+import org.hps.conditions.database.DatabaseConditionsManager;
+import org.hps.conditions.ecal.EcalChannel;
+import org.hps.conditions.ecal.EcalConditions;
import org.lcsim.event.GenericObject;
/**
@@ -43,34 +46,90 @@
public class TDCHit {
- private final int slot, edge, channel, time;
+ private final int tdcSlot, edge, tdcChannel, time;
+ private int dscCrate, dscSlot, dscChannel;
+ private int fadcCrate;
+ private boolean isECal;
+ private int x = 0, y = 0;
public TDCHit(int data) {
- slot = (data >> 27) & 0x1F; // bits 31:27
+ tdcSlot = (data >> 27) & 0x1F; // bits 31:27
edge = (data >> 26) & 1; // bits 26:26
- channel = (data >> 19) & 0x7F; // bits 25:19
+ tdcChannel = (data >> 19) & 0x7F; // bits 25:19
time = data & 0x7FFFF; // bits 18:00
+ tdc2dsc();
}
- public int getSlot() {
- return slot;
+ public int getTdcSlot() {
+ return tdcSlot;
}
public int getEdge() {
return edge;
}
- public int getChannel() {
- return channel;
+ public int getTdcChannel() {
+ return tdcChannel;
}
public int getTime() {
return time;
}
+ public int getDscCrate() {
+ return dscCrate;
+ }
+
+ public int getDscSlot() {
+ return dscSlot;
+ }
+
+ public int getDscChannel() {
+ return dscChannel;
+ }
+
+ public int getFadcCrate() {
+ return fadcCrate;
+ }
+
+ public boolean isECal() {
+ return isECal;
+ }
+
+ public int getX() {
+ return x;
+ }
+
+ public int getY() {
+ return y;
+ }
+
+ private void tdc2dsc() {
+ if (tdcSlot < 10 || tdcSlot > 13 || tdcChannel < 0 || tdcChannel > 127) {
+ throw new RuntimeException("Invalid TDC channel: " + tdcSlot + " " + tdcChannel);
+ }
+ int tdcSlot0 = 10;
+ int dscSlot0 = tdcSlot < 12 ? 3 : 6;
+ dscCrate = tdcChannel < 64 ? 46 : 58;
+ fadcCrate = tdcChannel < 64 ? 2 : 1;
+ dscSlot = (tdcChannel % 64) / 16 + 4 * (tdcSlot - tdcSlot0) + dscSlot0;
+ dscChannel = tdcChannel % 16;
+
+ EcalConditions ecalConditions = DatabaseConditionsManager.getInstance().getEcalConditions();
+ EcalChannel.DaqId daqId = new EcalChannel.DaqId(new int[]{fadcCrate, dscSlot, dscChannel}); // DSC slot/channel mapping mirrors FADC mapping
+ EcalChannel ecalChannel = ecalConditions.getChannelCollection().findChannel(daqId);
+ if (ecalChannel == null) {
+ isECal = false;
+ } else {
+ isECal = true;
+ x = ecalChannel.getX();
+ y = ecalChannel.getY();
+ }
+ }
+
@Override
public String toString() {
- return String.format("slot %d, edge %d, ch %d, time %d", slot, edge, channel, time);
+ return String.format("slot %d, edge %d, ch %d, time %d; DSC crate %d, slot %d, ch %d, isECal %b, ix %d, iy %d", tdcSlot, edge, tdcChannel, time, dscCrate, dscSlot, dscChannel, isECal, x, y);
}
}
}
Modified: java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java
=============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java (original)
+++ java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java Mon Mar 30 17:30:44 2015
@@ -51,7 +51,6 @@
intBanks = new ArrayList<IntBankDefinition>();
intBanks.add(new IntBankDefinition(SSPData.class, new int[]{sspCrateBankTag, sspBankTag}));
intBanks.add(new IntBankDefinition(TIData.class, new int[]{sspCrateBankTag, 0xe10a}));
- intBanks.add(new IntBankDefinition(TDCData.class, new int[]{0x2d, 0xe107}));
intBanks.add(new IntBankDefinition(TDCData.class, new int[]{0x3a, 0xe107}));
// ecalReader = new ECalEvioReader(0x25, 0x27);
triggerConfigReader = new TriggerConfigEvioReader();
|