hps-java/src/main/java/org/lcsim/hps/evio
diff -N MCEventBuilder.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ MCEventBuilder.java 3 Apr 2012 18:36:48 -0000 1.1
@@ -0,0 +1,279 @@
+package org.lcsim.hps.evio;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jlab.coda.jevio.BaseStructure;
+import org.jlab.coda.jevio.BaseStructureHeader;
+import org.jlab.coda.jevio.CompositeData;
+import org.jlab.coda.jevio.EvioEvent;
+import org.jlab.coda.jevio.EvioException;
+import org.lcsim.detector.DetectorElementStore;
+import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.identifier.IExpandedIdentifier;
+import org.lcsim.detector.identifier.IIdentifier;
+import org.lcsim.detector.identifier.IIdentifierDictionary;
+import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawCalorimeterHit;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.base.BaseLCSimEvent;
+import org.lcsim.event.base.BaseRawCalorimeterHit;
+import org.lcsim.event.base.BaseRawTrackerHit;
+import org.lcsim.geometry.Detector;
+import org.lcsim.geometry.Subdetector;
+import org.lcsim.geometry.subdetector.HPSEcal3;
+import org.lcsim.geometry.subdetector.HPSTracker;
+import org.lcsim.util.lcio.LCIOConstants;
+
+/**
+ * Build LCSim events from EVIO data.
+ *
+ * @author Jeremy McCormick <[log in to unmask]>
+ *
+ */
+public final class MCEventBuilder implements LCSimEventBuilder {
+
+ // Names of subdetectors.
+ private String trackerName;
+ private String calorimeterName;
+
+ // Names of raw data collections with default settings.
+ private String rawTrackerHitCollectionName = "RawTrackerHitMaker_RawTrackerHits";
+ private String rawCalorimeterHitCollectionName = "EcalRawHits";
+
+ // Detector conditions object.
+ private Detector detector;
+
+ // Debug flag.
+ private boolean debug = false;
+
+ /*
+ public LCSimEventBuilder(String detectorName) {
+
+ // Make a dummy event to setup the conditions system.
+ EventHeader dummyEvent = new BaseLCSimEvent(0, 0, detectorName);
+ detector = dummyEvent.getDetector();
+
+ // Set default detector names by looking for HPS detector types.
+ for (Subdetector subdet : detector.getSubdetectorList()) {
+ if (subdet instanceof HPSTracker) {
+ trackerName = subdet.getName();
+ System.out.println("trackerName = " + trackerName);
+ } else if (subdet instanceof HPSEcal3) {
+ calorimeterName = subdet.getName();
+ System.out.println("calorimeterName = " + calorimeterName);
+ }
+ }
+ }
+ */
+
+ public MCEventBuilder()
+ {}
+
+ public void setDetectorName(String detectorName) {
+
+ // Make a dummy event to setup the conditions system.
+ EventHeader dummyEvent = new BaseLCSimEvent(0, 0, detectorName);
+ detector = dummyEvent.getDetector();
+
+ // Set default detector names by looking for HPS detector types.
+ for (Subdetector subdet : detector.getSubdetectorList()) {
+ if (subdet instanceof HPSTracker) {
+ trackerName = subdet.getName();
+ System.out.println("trackerName = " + trackerName);
+ } else if (subdet instanceof HPSEcal3) {
+ calorimeterName = subdet.getName();
+ System.out.println("calorimeterName = " + calorimeterName);
+ }
+ }
+ }
+
+ public void setDebug(boolean debug) {
+ this.debug = debug;
+ }
+
+ public String getRawTrackerHitCollectionName() {
+ return rawTrackerHitCollectionName;
+ }
+
+ public void setRawTrackerHitCollectionName(String rawTrackerHitCollectionName) {
+ this.rawTrackerHitCollectionName = rawTrackerHitCollectionName;
+ }
+
+ public String getRawCalorimeterHitCollectionName() {
+ return rawCalorimeterHitCollectionName;
+ }
+
+ public void setRawCalorimeterHitCollectionName(String rawCalorimeterHitCollectionName) {
+ this.rawCalorimeterHitCollectionName = rawCalorimeterHitCollectionName;
+ }
+
+ public String getTrackerName() {
+ return trackerName;
+ }
+
+ public void setTrackerName(String trackerName) {
+ this.trackerName = trackerName;
+ }
+
+ public String getTrackerReadoutName() {
+ return detector.getSubdetector(trackerName).getReadout().getName();
+ }
+
+ public String getCalorimeterName() {
+ return calorimeterName;
+ }
+
+ public void setCalorimeterName(String calorimeterName) {
+ this.calorimeterName = calorimeterName;
+ }
+
+ public String getCalorimeterReadoutName() {
+ return detector.getSubdetector(calorimeterName).getReadout().getName();
+ }
+
+ public Detector getDetector() {
+ return detector;
+ }
+
+ public EventHeader makeLCSimEvent(EvioEvent evioEvent) {
+
+ // Make RawTrackerHit collection.
+ List<RawTrackerHit> rawTrackerHits = makeRawTrackerHits(evioEvent);
+
+ // Make RawCalorimeterHit collection, combining top and bottom section of ECal into one list.
+ List<RawCalorimeterHit> rawCalorimeterHits = makeRawCalorimeterHits(evioEvent);
+
+ // Create a new LCSimEvent.
+ //EventHeader lcsimEvent = new BaseLCSimEvent(0, evioEvent.getHeader().getNumber(), detectorName);
+ EventHeader lcsimEvent = new BaseLCSimEvent(0, evioEvent.getHeader().getNumber(), detector.getDetectorName());
+
+ // Add the hit collections.
+ lcsimEvent.put(rawTrackerHitCollectionName, rawTrackerHits, RawTrackerHit.class, (1 << LCIOConstants.TRAWBIT_ID1), getTrackerReadoutName());
+ lcsimEvent.put(rawCalorimeterHitCollectionName, rawCalorimeterHits, RawCalorimeterHit.class, 0, getCalorimeterReadoutName());
+
+ return lcsimEvent;
+ }
+
+
+ private List<RawTrackerHit> makeRawTrackerHits(EvioEvent event) {
+ List<RawTrackerHit> rawTrackerHits = null;
+ for (BaseStructure bank : event.getChildren()) {
+ if (bank.getHeader().getTag() == MCRawDataToEvio4Converter.trackerBankTag) {
+ //System.out.println("found SVT bank; tag = " + MCRawDataToEvio4Converter.trackerBankTag);
+ CompositeData cdata = null;
+ try {
+ cdata = bank.getCompositeData();
+ }
+ catch (EvioException e) {
+ throw new RuntimeException(e);
+ }
+ rawTrackerHits = makeRawTrackerHits(cdata);
+ }
+ }
+ return rawTrackerHits;
+ }
+
+ private List<RawTrackerHit> makeRawTrackerHits(CompositeData cdata) {
+
+ // Get some ID info before looping in order to strip out irrelevant fields.
+ // TODO Next three should be cached so as to avoid calling every event.
+ IIdentifierDictionary dict = detector.getSubdetector(trackerName).getDetectorElement().getIdentifierHelper().getIdentifierDictionary();
+ int fieldIdx = dict.getFieldIndex("side");
+ int sideIdx = dict.getFieldIndex("strip");
+
+ // List of hits to return.
+ List<RawTrackerHit> hits = new ArrayList<RawTrackerHit>();
+
+ // Loop over the items in the CompositeData.
+ int n = cdata.getNValue();
+ if (debug)
+ System.out.println("RawTrackerHit.N = " + n);
+ for (int i=0; i<n; i++) {
+
+ // Get values for hit from composite data.
+ Long id = cdata.getLong();
+ int time = cdata.getInt();
+ int adcValue = cdata.getInt();
+
+ // Make the new hit.
+ RawTrackerHit hit = new BaseRawTrackerHit(id, time, new short[] {(short)adcValue});
+
+ // The "side" and "strip" fields needs to be stripped from the ID for sensor lookup.
+ IExpandedIdentifier expId = dict.unpack(hit.getIdentifier());
+ expId.setValue(fieldIdx, 0);
+ expId.setValue(sideIdx, 0);
+ IIdentifier strippedId = dict.pack(expId);
+
+ // Find the sensor for this hit using the stripped ID.
+ SiSensor sensor = findSensor(strippedId);
+
+ // Assign sensor to hit.
+ hit.setDetectorElement(sensor);
+
+ // Add this hit to the list.
+ hits.add(hit);
+ }
+
+ if (debug)
+ System.out.println("makeRawTrackerHits created " + hits.size() + " hits");
+
+ return hits;
+ }
+
+ private SiSensor findSensor(IIdentifier id) {
+ List<IDetectorElement> des = DetectorElementStore.getInstance().find(id);
+ SiSensor sensor = null;
+ if (des == null || des.size() == 0) {
+ throw new RuntimeException("Failed to find any DetectorElements with ID <0x" + Long.toHexString(id.getValue()) + ">.");
+ }
+ else if (des.size() == 1) {
+ sensor = (SiSensor)des.get(0);
+ }
+ else {
+ for (IDetectorElement de : des) {
+ if (de instanceof SiSensor) {
+ sensor = (SiSensor)de;
+ break;
+ }
+ }
+ }
+ if (sensor == null) {
+ throw new RuntimeException("No sensor was found with ID <0x" + Long.toHexString(id.getValue()) + ">.");
+ }
+ return sensor;
+ }
+
+ private List<RawCalorimeterHit> makeRawCalorimeterHits(EvioEvent event) {
+ List<RawCalorimeterHit> hits = new ArrayList<RawCalorimeterHit>();
+ for (BaseStructure bank : event.getChildren()) {
+ BaseStructureHeader header = bank.getHeader();
+ if (header.getTag() == MCRawDataToEvio4Converter.ecalBottomBankTag || header.getTag() == MCRawDataToEvio4Converter.ecalTopBankTag) {
+ CompositeData cdata = null;
+ try {
+ cdata = bank.getCompositeData();
+ }
+ catch (EvioException e) {
+ throw new RuntimeException(e);
+ }
+ List<RawCalorimeterHit> bankHits = makeRawCalorimeterHits(cdata);
+ hits.addAll(bankHits);
+ }
+ }
+ return hits;
+ }
+
+ private List<RawCalorimeterHit> makeRawCalorimeterHits(CompositeData cdata) {
+ List<RawCalorimeterHit> hits = new ArrayList<RawCalorimeterHit>();
+ List<Object> items = cdata.getItems();
+ int n = cdata.getNValue();
+ for (int i=0; i<n; i++) {
+ long id = cdata.getLong();
+ int amplitude = cdata.getInt();
+ int timestamp = cdata.getInt();
+ hits.add(new BaseRawCalorimeterHit(id, amplitude, timestamp));
+ }
+ return hits;
+ }
+}
\ No newline at end of file
hps-java/src/main/java/org/lcsim/hps/evio
diff -u -r1.2 -r1.3
--- LCSimEventBuilder.java 22 Mar 2012 03:54:53 -0000 1.2
+++ LCSimEventBuilder.java 3 Apr 2012 18:36:48 -0000 1.3
@@ -1,256 +1,10 @@
package org.lcsim.hps.evio;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jlab.coda.jevio.BaseStructure;
-import org.jlab.coda.jevio.BaseStructureHeader;
-import org.jlab.coda.jevio.CompositeData;
import org.jlab.coda.jevio.EvioEvent;
-import org.jlab.coda.jevio.EvioException;
-import org.lcsim.detector.DetectorElementStore;
-import org.lcsim.detector.IDetectorElement;
-import org.lcsim.detector.identifier.IExpandedIdentifier;
-import org.lcsim.detector.identifier.IIdentifier;
-import org.lcsim.detector.identifier.IIdentifierDictionary;
-import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.event.EventHeader;
-import org.lcsim.event.RawCalorimeterHit;
-import org.lcsim.event.RawTrackerHit;
-import org.lcsim.event.base.BaseLCSimEvent;
-import org.lcsim.event.base.BaseRawCalorimeterHit;
-import org.lcsim.event.base.BaseRawTrackerHit;
-import org.lcsim.geometry.Detector;
-import org.lcsim.geometry.Subdetector;
-import org.lcsim.geometry.subdetector.HPSEcal3;
-import org.lcsim.geometry.subdetector.HPSTracker;
-import org.lcsim.util.lcio.LCIOConstants;
-
-/**
- * Build LCSim events from EVIO data.
- *
- * @author Jeremy McCormick <[log in to unmask]>
- *
- */
-public class LCSimEventBuilder {
-
- // Names of subdetectors.
- private String trackerName;
- private String calorimeterName;
-
- // Names of raw data collections with default settings.
- private String rawTrackerHitCollectionName = "RawTrackerHitMaker_RawTrackerHits";
- private String rawCalorimeterHitCollectionName = "EcalRawHits";
-
- // Detector conditions object.
- private Detector detector;
-
- // Debug flag.
- private boolean debug = false;
-
- public LCSimEventBuilder(String detectorName) {
-
- // Make a dummy event to setup the conditions system.
- EventHeader dummyEvent = new BaseLCSimEvent(0, 0, detectorName);
- detector = dummyEvent.getDetector();
-
- // Set default detector names by looking for HPS detector types.
- for (Subdetector subdet : detector.getSubdetectorList()) {
- if (subdet instanceof HPSTracker) {
- trackerName = subdet.getName();
- System.out.println("trackerName = " + trackerName);
- } else if (subdet instanceof HPSEcal3) {
- calorimeterName = subdet.getName();
- System.out.println("calorimeterName = " + calorimeterName);
- }
- }
- }
-
- public void setDebug(boolean debug) {
- this.debug = debug;
- }
-
- public String getRawTrackerHitCollectionName() {
- return rawTrackerHitCollectionName;
- }
-
- public void setRawTrackerHitCollectionName(String rawTrackerHitCollectionName) {
- this.rawTrackerHitCollectionName = rawTrackerHitCollectionName;
- }
-
- public String getRawCalorimeterHitCollectionName() {
- return rawCalorimeterHitCollectionName;
- }
-
- public void setRawCalorimeterHitCollectionName(String rawCalorimeterHitCollectionName) {
- this.rawCalorimeterHitCollectionName = rawCalorimeterHitCollectionName;
- }
-
- public String getTrackerName() {
- return trackerName;
- }
-
- public void setTrackerName(String trackerName) {
- this.trackerName = trackerName;
- }
-
- public String getTrackerReadoutName() {
- return detector.getSubdetector(trackerName).getReadout().getName();
- }
-
- public String getCalorimeterName() {
- return calorimeterName;
- }
-
- public void setCalorimeterName(String calorimeterName) {
- this.calorimeterName = calorimeterName;
- }
-
- public String getCalorimeterReadoutName() {
- return detector.getSubdetector(calorimeterName).getReadout().getName();
- }
-
- public Detector getDetector() {
- return detector;
- }
-
- public EventHeader makeLCSimEvent(EvioEvent evioEvent) {
-
- // Make RawTrackerHit collection.
- List<RawTrackerHit> rawTrackerHits = makeRawTrackerHits(evioEvent);
-
- // Make RawCalorimeterHit collection, combining top and bottom section of ECal into one list.
- List<RawCalorimeterHit> rawCalorimeterHits = makeRawCalorimeterHits(evioEvent);
-
- // Create a new LCSimEvent.
- //EventHeader lcsimEvent = new BaseLCSimEvent(0, evioEvent.getHeader().getNumber(), detectorName);
- EventHeader lcsimEvent = new BaseLCSimEvent(0, evioEvent.getHeader().getNumber(), detector.getDetectorName());
-
- // Add the hit collections.
- lcsimEvent.put(rawTrackerHitCollectionName, rawTrackerHits, RawTrackerHit.class, (1 << LCIOConstants.TRAWBIT_ID1), getTrackerReadoutName());
- lcsimEvent.put(rawCalorimeterHitCollectionName, rawCalorimeterHits, RawCalorimeterHit.class, 0, getCalorimeterReadoutName());
-
- return lcsimEvent;
- }
-
- private List<RawTrackerHit> makeRawTrackerHits(EvioEvent event) {
- List<RawTrackerHit> rawTrackerHits = null;
- for (BaseStructure bank : event.getChildren()) {
- if (bank.getHeader().getTag() == MCRawDataToEvio4Converter.trackerBankTag) {
- //System.out.println("found SVT bank; tag = " + MCRawDataToEvio4Converter.trackerBankTag);
- CompositeData cdata = null;
- try {
- cdata = bank.getCompositeData();
- }
- catch (EvioException e) {
- throw new RuntimeException(e);
- }
- rawTrackerHits = makeRawTrackerHits(cdata);
- }
- }
- return rawTrackerHits;
- }
-
- private List<RawTrackerHit> makeRawTrackerHits(CompositeData cdata) {
-
- // Get some ID info before looping in order to strip out irrelevant fields.
- // TODO Next three should be cached so as to avoid calling every event.
- IIdentifierDictionary dict = detector.getSubdetector(trackerName).getDetectorElement().getIdentifierHelper().getIdentifierDictionary();
- int fieldIdx = dict.getFieldIndex("side");
- int sideIdx = dict.getFieldIndex("strip");
-
- // List of hits to return.
- List<RawTrackerHit> hits = new ArrayList<RawTrackerHit>();
-
- // Loop over the items in the CompositeData.
- int n = cdata.getNValue();
- if (debug)
- System.out.println("RawTrackerHit.N = " + n);
- for (int i=0; i<n; i++) {
-
- // Get values for hit from composite data.
- Long id = cdata.getLong();
- int time = cdata.getInt();
- int adcValue = cdata.getInt();
-
- // Make the new hit.
- RawTrackerHit hit = new BaseRawTrackerHit(id, time, new short[] {(short)adcValue});
-
- // The "side" and "strip" fields needs to be stripped from the ID for sensor lookup.
- IExpandedIdentifier expId = dict.unpack(hit.getIdentifier());
- expId.setValue(fieldIdx, 0);
- expId.setValue(sideIdx, 0);
- IIdentifier strippedId = dict.pack(expId);
-
- // Find the sensor for this hit using the stripped ID.
- SiSensor sensor = findSensor(strippedId);
-
- // Assign sensor to hit.
- hit.setDetectorElement(sensor);
-
- // Add this hit to the list.
- hits.add(hit);
- }
-
- if (debug)
- System.out.println("makeRawTrackerHits created " + hits.size() + " hits");
-
- return hits;
- }
-
- private SiSensor findSensor(IIdentifier id) {
- List<IDetectorElement> des = DetectorElementStore.getInstance().find(id);
- SiSensor sensor = null;
- if (des == null || des.size() == 0) {
- throw new RuntimeException("Failed to find any DetectorElements with ID <0x" + Long.toHexString(id.getValue()) + ">.");
- }
- else if (des.size() == 1) {
- sensor = (SiSensor)des.get(0);
- }
- else {
- for (IDetectorElement de : des) {
- if (de instanceof SiSensor) {
- sensor = (SiSensor)de;
- break;
- }
- }
- }
- if (sensor == null) {
- throw new RuntimeException("No sensor was found with ID <0x" + Long.toHexString(id.getValue()) + ">.");
- }
- return sensor;
- }
-
- private List<RawCalorimeterHit> makeRawCalorimeterHits(EvioEvent event) {
- List<RawCalorimeterHit> hits = new ArrayList<RawCalorimeterHit>();
- for (BaseStructure bank : event.getChildren()) {
- BaseStructureHeader header = bank.getHeader();
- if (header.getTag() == MCRawDataToEvio4Converter.ecalBottomBankTag || header.getTag() == MCRawDataToEvio4Converter.ecalTopBankTag) {
- CompositeData cdata = null;
- try {
- cdata = bank.getCompositeData();
- }
- catch (EvioException e) {
- throw new RuntimeException(e);
- }
- List<RawCalorimeterHit> bankHits = makeRawCalorimeterHits(cdata);
- hits.addAll(bankHits);
- }
- }
- return hits;
- }
-
- private List<RawCalorimeterHit> makeRawCalorimeterHits(CompositeData cdata) {
- List<RawCalorimeterHit> hits = new ArrayList<RawCalorimeterHit>();
- List<Object> items = cdata.getItems();
- int n = cdata.getNValue();
- for (int i=0; i<n; i++) {
- long id = cdata.getLong();
- int amplitude = cdata.getInt();
- int timestamp = cdata.getInt();
- hits.add(new BaseRawCalorimeterHit(id, amplitude, timestamp));
- }
- return hits;
- }
-}
\ No newline at end of file
+public interface LCSimEventBuilder {
+ EventHeader makeLCSimEvent(EvioEvent evioEvent);
+ void setDetectorName(String detectorName);
+ void setDebug(boolean debug);
+}
hps-java/src/main/java/org/lcsim/hps/evio
diff -u -r1.2 -r1.3
--- LCSimTestRunEventBuilder.java 2 Apr 2012 18:59:12 -0000 1.2
+++ LCSimTestRunEventBuilder.java 3 Apr 2012 18:36:48 -0000 1.3
@@ -1,5 +1,7 @@
package org.lcsim.hps.evio;
+import static org.lcsim.hps.evio.EventConstants.SVT_BANK_TAG;
+
import java.util.ArrayList;
import java.util.List;
@@ -8,46 +10,44 @@
import org.jlab.coda.jevio.CompositeData;
import org.jlab.coda.jevio.EvioEvent;
import org.jlab.coda.jevio.EvioException;
-import org.lcsim.detector.DetectorElementStore;
-import org.lcsim.detector.IDetectorElement;
-import org.lcsim.detector.identifier.IExpandedIdentifier;
-import org.lcsim.detector.identifier.IIdentifier;
-import org.lcsim.detector.identifier.IIdentifierDictionary;
-import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.RawCalorimeterHit;
-import org.lcsim.event.RawTrackerHit;
import org.lcsim.event.base.BaseLCSimEvent;
import org.lcsim.event.base.BaseRawCalorimeterHit;
-import org.lcsim.event.base.BaseRawTrackerHit;
import org.lcsim.geometry.Detector;
import org.lcsim.geometry.Subdetector;
import org.lcsim.geometry.subdetector.HPSEcal3;
import org.lcsim.geometry.subdetector.HPSTracker;
import org.lcsim.geometry.util.IDEncoder;
-import org.lcsim.util.lcio.LCIOConstants;
+import org.lcsim.hps.recon.tracking.HPSSVTData;
/**
* Build LCSim events from EVIO data.
- *
* @author Sho Uemura <[log in to unmask]>
- * @version $Id: LCSimTestRunEventBuilder.java,v 1.2 2012/04/02 18:59:12 meeg Exp $
- *
+ * @author Jeremy McCormick <[log in to unmask]>
+ * @version $Id: LCSimTestRunEventBuilder.java,v 1.3 2012/04/03 18:36:48 jeremy Exp $
*/
-public class LCSimTestRunEventBuilder {
+public class LCSimTestRunEventBuilder implements LCSimEventBuilder {
// Names of subdetectors.
private String trackerName;
private String calorimeterName;
+
// Names of raw data collections with default settings.
private String rawTrackerHitCollectionName = "RawTrackerHitMaker_RawTrackerHits";
private String rawCalorimeterHitCollectionName = "EcalRawHits";
+
+ //private String svtDataCollectionName;
+
// Detector conditions object.
private Detector detector;
+
// Debug flag.
private boolean debug = false;
- public LCSimTestRunEventBuilder(String detectorName) {
+ public LCSimTestRunEventBuilder() {}
+
+ public void setDetectorName(String detectorName) {
// Make a dummy event to setup the conditions system.
EventHeader dummyEvent = new BaseLCSimEvent(0, 0, detectorName);
@@ -116,22 +116,60 @@
public EventHeader makeLCSimEvent(EvioEvent evioEvent) {
// Make RawTrackerHit collection.
- List<RawTrackerHit> rawTrackerHits = makeRawTrackerHits(evioEvent);
+ //List<RawTrackerHit> rawTrackerHits = makeRawTrackerHits(evioEvent);
// Make RawCalorimeterHit collection, combining top and bottom section of ECal into one list.
List<RawCalorimeterHit> rawCalorimeterHits = makeRawCalorimeterHits(evioEvent);
// Create a new LCSimEvent.
- //EventHeader lcsimEvent = new BaseLCSimEvent(0, evioEvent.getHeader().getNumber(), detectorName);
EventHeader lcsimEvent = new BaseLCSimEvent(0, evioEvent.getHeader().getNumber(), detector.getDetectorName());
// Add the hit collections.
- lcsimEvent.put(rawTrackerHitCollectionName, rawTrackerHits, RawTrackerHit.class, (1 << LCIOConstants.TRAWBIT_ID1), getTrackerReadoutName());
+ //lcsimEvent.put(rawTrackerHitCollectionName, rawTrackerHits, RawTrackerHit.class, (1 << LCIOConstants.TRAWBIT_ID1), getTrackerReadoutName());
lcsimEvent.put(rawCalorimeterHitCollectionName, rawCalorimeterHits, RawCalorimeterHit.class, 0, getCalorimeterReadoutName());
return lcsimEvent;
}
+
+ private List<HPSSVTData> makeSVTData(EvioEvent event) {
+ List<HPSSVTData> data = new ArrayList<HPSSVTData>();
+ for (BaseStructure crateBank : event.getChildren()) {
+ int crateTag = crateBank.getHeader().getTag();
+ if (crateTag == SVT_BANK_TAG) {
+ int[] intData = crateBank.getIntData();
+
+ int n = intData.length;
+ for (int i=0; i<n; i+=4) {
+
+ int[] sampleData = new int[4];
+ sampleData[0] = intData[i];
+ sampleData[1] = intData[i+1];
+ sampleData[2] = intData[i+2];
+ sampleData[3] = intData[i+3];
+
+ HPSSVTData svtData = new HPSSVTData(sampleData);
+
+ data.add(svtData);
+
+ /*
+ int fpga = svtData.getFPGAAddress();
+ int hybrid = svtData.getHybridNumber();
+ int channel = svtData.getChannelNumber();
+ int apv = svtData.getAPVNumber();
+
+ System.out.println("fpga=" + fpga + "; hybrid=" + hybrid + "; channel=" + channel + "; apv=" + apv);
+ for (int j=0; j<6; j++) {
+ int val = svtData.getSample(j);
+ System.out.println(" sample[" + j + "]="+val);
+ }
+ */
+ }
+ }
+ }
+ return data;
+ }
+ /*
private List<RawTrackerHit> makeRawTrackerHits(EvioEvent event) {
List<RawTrackerHit> rawTrackerHits = new ArrayList<RawTrackerHit>();
for (BaseStructure bank : event.getChildren()) {
@@ -149,6 +187,7 @@
return rawTrackerHits;
}
+
private List<RawTrackerHit> makeRawTrackerHits(CompositeData cdata) {
// Get some ID info before looping in order to strip out irrelevant fields.
@@ -218,6 +257,7 @@
}
return sensor;
}
+ */
private List<RawCalorimeterHit> makeRawCalorimeterHits(EvioEvent event) {
List<RawCalorimeterHit> hits = new ArrayList<RawCalorimeterHit>();
@@ -293,17 +333,4 @@
}
return hits;
}
-
- private List<RawCalorimeterHit> makeRawCalorimeterHits_old(CompositeData cdata) {
- List<RawCalorimeterHit> hits = new ArrayList<RawCalorimeterHit>();
- List<Object> items = cdata.getItems();
- int n = cdata.getNValue();
- for (int i = 0; i < n; i++) {
- long id = cdata.getLong();
- int amplitude = cdata.getInt();
- int timestamp = cdata.getInt();
- hits.add(new BaseRawCalorimeterHit(id, amplitude, timestamp));
- }
- return hits;
- }
}
\ No newline at end of file