Commit in hps-java/src/main on MAIN | |||
java/org/lcsim/hps/recon/tracking/SimpleSvtReadout.java | +39 | -13 | 1.1 -> 1.2 |
java/org/lcsim/hps/evio/TestRunTriggeredReconToLcio.java | +2 | -2 | 1.5 -> 1.6 |
/SVTHitWriter_RTH.java | +29 | -9 | 1.1 -> 1.2 |
resources/org/lcsim/hps/steering/HPSTestRunReconToLcio.lcsim | +1 | -8 | 1.2 -> 1.3 |
/SVTMonitoring.lcsim | +7 | -5 | 1.2 -> 1.3 |
+78 | -37 |
updates to RawTrackerHit processing
diff -u -r1.1 -r1.2 --- SimpleSvtReadout.java 16 Aug 2012 01:06:30 -0000 1.1 +++ SimpleSvtReadout.java 16 Aug 2012 22:01:30 -0000 1.2 @@ -10,6 +10,7 @@
//--- lcsim ---// import org.lcsim.detector.tracker.silicon.ChargeCarrier; import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
import org.lcsim.event.EventHeader; import org.lcsim.event.RawTrackerHit; import org.lcsim.event.base.BaseRawTrackerHit;
@@ -22,11 +23,12 @@
import org.lcsim.recon.tracking.digitization.sisim.SiSensorSim; import org.lcsim.recon.tracking.digitization.sisim.config.SimTrackerHitReadoutDriver; import org.lcsim.util.Driver;
+import org.lcsim.util.lcio.LCIOConstants;
/** * * @author Omar Moreno <[log in to unmask]>
- * @version $Id: SimpleSvtReadout.java,v 1.1 2012/08/16 01:06:30 meeg Exp $
+ * @version $Id: SimpleSvtReadout.java,v 1.2 2012/08/16 22:01:30 meeg Exp $
*/ public class SimpleSvtReadout extends Driver {
@@ -39,6 +41,7 @@
double readoutOffset = 0.0; private String readout = "TrackerHits"; private SimTrackerHitReadoutDriver readoutDriver = new SimTrackerHitReadoutDriver();
+ private int readoutCycle = 0;
public SimpleSvtReadout() { add(readoutDriver);
@@ -53,7 +56,7 @@
String[] readouts = {readout}; readoutDriver.setCollections(readouts);
-
+
pipelineMap.clear(); for (SiSensor sensor : SvtUtils.getInstance().getSensors()) { pipelineMap.put(sensor, new APV25Pipeline[HPSSVTConstants.TOTAL_STRIPS_PER_SENSOR]);
@@ -77,7 +80,7 @@
} } }
- Apv25Full.apv25ClockCycle++;
+ readoutCycle++;
} for (SiSensor sensor : SvtUtils.getInstance().getSensors()) {
@@ -114,9 +117,11 @@
if (pipelines[channel] == null) { pipelines[channel] = new APV25Pipeline(); }
-
+ double resistorValue = 100; // Ohms + double inputStageGain = 1.5; + double amplitude = (charge / Apv25Constants.MIP) * resistorValue * inputStageGain * Math.pow(2, 14) / 2000;
for (int i = 0; i < 20; i++) {
- pipelines[channel].addToCell(i, charge * pulseAmplitude((i + 1) * readoutPeriod + readoutTime() - ClockSingleton.getTime(), 50.0));
+ pipelines[channel].addToCell(i, amplitude * pulseAmplitude((i + 1) * readoutPeriod + readoutTime() - ClockSingleton.getTime(), 50.0));
} } }
@@ -138,13 +143,14 @@
for (SiSensor sensor : SvtUtils.getInstance().getSensors()) { APV25Pipeline[] pipelines = pipelineMap.get(sensor);
- for (int i = 0; i < pipelines.length; i++) { - if (pipelines[i] != null) {
+ for (int channel = 0; channel < pipelines.length; channel++) { + if (pipelines[channel] != null) {
short[] samples = new short[6]; for (int j = 0; j < 6; j++) {
- samples[j] = (short) pipelines[i].getValue(j);
+ samples[j] = (short) (pipelines[channel].getValue(j) + HPSSVTCalibrationConstants.getPedestal(sensor, channel));
// System.out.println(samples[j]); }
+// System.out.println();
// Find the side number (is 1) int sideNumber;
@@ -153,19 +159,39 @@
} else { sideNumber = ChargeCarrier.ELECTRON.charge(); }
- long cell_id = sensor.makeStripId(i, sideNumber).getValue(); -
+ long cell_id = sensor.makeStripId(channel, sideNumber).getValue();
RawTrackerHit hit = new BaseRawTrackerHit(0, cell_id, samples, null, sensor); // System.out.println("Making RTH");
- hits.add(hit);
+ if (samplesAboveThreshold(hit)) { + hits.add(hit); + } + SiTrackerIdentifierHelper _sid_helper = (SiTrackerIdentifierHelper) sensor.getIdentifierHelper(); + System.out.println(_sid_helper.getSideValue(hit.getIdentifier())); + System.out.println(hit.getIdentifier());
} } }
- event.put(outputCollection, hits, RawTrackerHit.class, 0);
+ int flags = 1 << LCIOConstants.TRAWBIT_ID1; + event.put(outputCollection, hits, RawTrackerHit.class, flags, readout); + } + }
+ private boolean samplesAboveThreshold(RawTrackerHit hit) { + SiSensor sensor = (SiSensor) hit.getDetectorElement(); + int channel = hit.getIdentifierFieldValue("strip"); + HPSSVTCalibrationConstants.getChannelConstants(sensor, channel); + double pedestal = HPSSVTCalibrationConstants.getPedestal(sensor, channel); + double noise = HPSSVTCalibrationConstants.getNoise(sensor, channel); + int count = 0; + short[] samples = hit.getADCValues(); + for (int i = 0; i < samples.length; i++) { + if (samples[i] - pedestal > noise * 3.0) { + count++; + }
}
+ return count >= 3;
} public class APV25Pipeline extends RingBuffer {
@@ -220,6 +246,6 @@
} private double readoutTime() {
- return Apv25Full.apv25ClockCycle * readoutPeriod + readoutOffset;
+ return readoutCycle * readoutPeriod + readoutOffset;
} }
diff -u -r1.5 -r1.6 --- TestRunTriggeredReconToLcio.java 6 Aug 2012 21:15:21 -0000 1.5 +++ TestRunTriggeredReconToLcio.java 16 Aug 2012 22:01:30 -0000 1.6 @@ -29,7 +29,7 @@
private int eventsWritten = 0; // HPSEcalConditions ecalIDConverter = null; ECalHitWriter ecalWriter = null;
- SVTHitWriter svtWriter = null;
+ SVTHitWriter_RTH svtWriter = null;
TriggerDataWriter triggerWriter = null; List<HitWriter> writers = null; LCIOWriter lcioWriter = null;
@@ -70,7 +70,7 @@
ecalWriter.setHitCollectionName(rawCalorimeterHitCollectionName); writers.add(ecalWriter);
- svtWriter = new SVTHitWriter();
+ svtWriter = new SVTHitWriter_RTH();
writers.add(svtWriter); triggerWriter = new TriggerDataWriter();
diff -u -r1.1 -r1.2 --- SVTHitWriter_RTH.java 16 Aug 2012 01:06:30 -0000 1.1 +++ SVTHitWriter_RTH.java 16 Aug 2012 22:01:30 -0000 1.2 @@ -18,16 +18,20 @@
import org.lcsim.hps.recon.tracking.HPSSVTConstants; import org.lcsim.hps.recon.tracking.HPSSVTData; import org.lcsim.hps.recon.tracking.SvtUtils;
+import org.lcsim.util.lcio.LCIOConstants; +import org.lcsim.util.lcio.LCIOUtil;
/** * * @author Sho Uemura <[log in to unmask]>
- * @version $Id: SVTHitWriter_RTH.java,v 1.1 2012/08/16 01:06:30 meeg Exp $
+ * @version $Id: SVTHitWriter_RTH.java,v 1.2 2012/08/16 22:01:30 meeg Exp $
*/ public class SVTHitWriter_RTH implements HitWriter { boolean debug = false; private String hitCollectionName = "SVTRawTrackerHits";
+ private String fpgaDataCollectionName = "FPGAData"; + String readoutName = "TrackerHits";
public SVTHitWriter_RTH() { }
@@ -36,25 +40,36 @@
this.hitCollectionName = hitCollectionName; }
+ @Override
public boolean hasData(EventHeader event) { return event.hasCollection(RawTrackerHit.class, hitCollectionName); }
- public void writeData(EventHeader event, EventBuilder builder) {
+ //make some dummy FpgaData to use in case there isn't any real FpgaData + private static List<FpgaData> makeFpgaData() {
double[] temps = new double[HPSSVTConstants.TOTAL_HYBRIDS_PER_FPGA * HPSSVTConstants.TOTAL_TEMPS_PER_HYBRID]; for (int i = 0; i < HPSSVTConstants.TOTAL_HYBRIDS_PER_FPGA * HPSSVTConstants.TOTAL_TEMPS_PER_HYBRID; i++) { temps[i] = 23.0; }
+ List<FpgaData> fpgaData = new ArrayList<FpgaData>(); + for (int fpgaNumber = 0; fpgaNumber < SVT_TOTAL_NUMBER_FPGAS; fpgaNumber++) { + fpgaData.add(new FpgaData(fpgaNumber, temps, 0)); + } + + return fpgaData; + } + + public void writeData(EventHeader event, EventBuilder builder) {
List<RawTrackerHit> hits = event.get(RawTrackerHit.class, hitCollectionName);
- List<FpgaData> fpgaData = new ArrayList<FpgaData>();
+ List<FpgaData> fpgaData = makeFpgaData();
System.out.println("Writing " + hits.size() + " SVT hits");
+ System.out.println("Writing " + fpgaData.size() + " FPGA data");
List<List<int[]>> fpgaHits = new ArrayList<List<int[]>>(); for (int fpgaNumber = 0; fpgaNumber < SVT_TOTAL_NUMBER_FPGAS; fpgaNumber++) { fpgaHits.add(new ArrayList<int[]>());
- fpgaData.add(new FpgaData(fpgaNumber, temps, 0));
} for (RawTrackerHit hit : hits) {
@@ -113,10 +128,6 @@
builder.addChild(svtBank, frameBank); // Add the SVT data to the FPGA bank frameBank.appendIntData(dataBuffer);
- builder.getEvent().setAllHeaderLengths(); - System.out.println(frameBank.getTotalBytes()); - System.out.println(svtBank.getTotalBytes()); - System.out.println(builder.getEvent().getTotalBytes());
} catch (EvioException e) { throw new RuntimeException(e); }
@@ -132,7 +143,16 @@
@Override public void writeData(EventHeader event, EventHeader toEvent) { List<RawTrackerHit> rawTrackerHits = event.get(RawTrackerHit.class, hitCollectionName);
+ + +
System.out.println("Writing " + rawTrackerHits.size() + " SVT hits");
- toEvent.put(hitCollectionName, rawTrackerHits, RawTrackerHit.class, 0);
+ int flags = 1 << LCIOConstants.TRAWBIT_ID1; + toEvent.put(hitCollectionName, rawTrackerHits, RawTrackerHit.class, flags, readoutName); + + List<FpgaData> fpgaData = makeFpgaData(); + System.out.println("Writing " + fpgaData.size() + " FPGA data"); + + toEvent.put(fpgaDataCollectionName, fpgaData, FpgaData.class, 0);
} }
diff -u -r1.2 -r1.3 --- HPSTestRunReconToLcio.lcsim 3 Aug 2012 23:14:39 -0000 1.2 +++ HPSTestRunReconToLcio.lcsim 16 Aug 2012 22:01:30 -0000 1.3 @@ -15,7 +15,6 @@
<driver name="EcalConverter"/> <driver name="EcalClusterer"/> <driver name="EcalTrigger"/>
- <driver name="SVTSensorSetup"/>
<driver name="SVTReadout"/> <driver name="ClockDriver"/> <driver name="TestRunReconToLcio"/>
@@ -61,13 +60,7 @@
<deadTime>10</deadTime> </driver>
- <driver name="SVTSensorSetup" - type="org.lcsim.hps.recon.tracking.HPSSVTSensorSetup"> - </driver> - - <driver name="SVTReadout" - type="org.lcsim.hps.recon.tracking.apv25.HPSSiSensorReadout"> - <addNoise>true</addNoise>
+ <driver name="SVTReadout" type="org.lcsim.hps.recon.tracking.SimpleSvtReadout">
</driver> <driver name="ClockDriver"
diff -u -r1.2 -r1.3 --- SVTMonitoring.lcsim 14 Aug 2012 00:58:03 -0000 1.2 +++ SVTMonitoring.lcsim 16 Aug 2012 22:01:30 -0000 1.3 @@ -6,21 +6,22 @@
<driver name="SVTPulsePlots"/> <driver name="RawTrackerHitFitterDriver" />
- <driver name="SVTPulseFitPlots"/> - <driver name="SVTMonitoringPlots"/>
+<!-- <driver name="SVTPulseFitPlots"/> + <driver name="SVTMonitoringPlots"/>-->
<driver name="TrackerHitDriver" />
- <driver name="SVTHitRecoPlots"/>
+<!-- <driver name="SVTHitRecoPlots"/>-->
- <driver name="TrackerReconDriver" />
+<!-- <driver name="TrackerReconDriver" />
<driver name="SVTSimpleEventDisplay"/> <driver name="TrackTimePlots"/> <driver name="EcalRawConverter" /> <driver name="EcalClusterer" />
- <driver name="TrackingReconstructionPlots" />
+ <driver name="TrackingReconstructionPlots" />-->
<driver name="CleanupDriver" />
+ <driver name="LoadCalibrationsDriver"/>
</execute> <drivers> <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
@@ -72,5 +73,6 @@
<driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"> <collectionNames>TrackerHits</collectionNames> </driver>
+ <driver name="LoadCalibrationsDriver" type="org.lcsim.hps.recon.tracking.LoadCalibrationsDriver"/>
</drivers> </lcsim>
\ No newline at end of file
Use REPLY-ALL to reply to list
To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1