Commit in hps-java/src/main on MAIN | |||
java/org/lcsim/hps/recon/ecal/HPSEcalFADCReadoutDriver.java | +10 | -7 | 1.16 -> 1.17 |
/HPSEcalEdepToTriggerConverterDriver.java | +23 | -4 | 1.1 -> 1.2 |
resources/org/lcsim/hps/steering/HPSTestRunFastSimToEvio.lcsim | +94 | added 1.1 | |
/EcalGainDriver.lcsim | +2 | -2 | 1.3 -> 1.4 |
/TestRunOfflineRecon.lcsim | +1 | -1 | 1.5 -> 1.6 |
/HPSTestRunReconToLcio.lcsim | +2 | -7 | 1.3 -> 1.4 |
/HPSTestRunReconToEvio.lcsim | +7 | -9 | 1.13 -> 1.14 |
java/org/lcsim/hps/recon/tracking/SimpleSvtReadout.java | +8 | -9 | 1.2 -> 1.3 |
/HPSRawTrackerHitFitterDriver.java | +3 | -1 | 1.13 -> 1.14 |
java/org/lcsim/hps/evio/TestRunTriggeredReconToEvio.java | +13 | -14 | 1.18 -> 1.19 |
+163 | -54 |
ECal gain stuff
diff -u -r1.16 -r1.17 --- HPSEcalFADCReadoutDriver.java 29 Jun 2012 23:00:48 -0000 1.16 +++ HPSEcalFADCReadoutDriver.java 21 Aug 2012 01:06:51 -0000 1.17 @@ -26,7 +26,7 @@
* Simulates time evolution of preamp output pulse. * * @author Sho Uemura <[log in to unmask]>
- * @version $Id: HPSEcalFADCReadoutDriver.java,v 1.16 2012/06/29 23:00:48 meeg Exp $
+ * @version $Id: HPSEcalFADCReadoutDriver.java,v 1.17 2012/08/21 01:06:51 meeg Exp $
*/ public class HPSEcalFADCReadoutDriver extends HPSEcalReadoutDriver<RawCalorimeterHit> {
@@ -72,7 +72,7 @@
private int readoutThreshold = (int) threshold; private int triggerThreshold = (int) threshold; //amplitude ADC counts/GeV
- private double gain = 0.5*1000 * 80.0 / 60;
+// private double gain = 0.5*1000 * 80.0 / 60;
private double scaleFactor = 128; public HPSEcalFADCReadoutDriver() {
@@ -82,10 +82,9 @@
// converter = new HPSEcalConverter(null); }
- public void setGain(double gain) { - this.gain = gain; - } -
+// public void setGain(double gain) { +// this.gain = gain; +// }
public void setReadoutThreshold(int readoutThreshold) { this.readoutThreshold = readoutThreshold; }
@@ -156,6 +155,10 @@
FADCPipeline pipeline = pipelineMap.get(cellID); pipeline.step(); double pedestal = HPSEcalConditions.physicalToPedestal(cellID);
+ //normalization constant from cal gain (MeV/integral bit) to amplitude gain (amplitude bit/GeV) + double gainNorm = 1000.0 / pulseIntegral; + double gain = gainNorm / HPSEcalConditions.physicalToGain(cellID); +
double currentValue = gain * eDepBuffer.currentValue(); pipeline.writeValue((int) Math.round(pedestal + currentValue));
@@ -283,7 +286,7 @@
adcSum += window[i - pointerOffset]; numSamplesToRead--; if (numSamplesToRead == 0) {
- hits.add(new BaseRawCalorimeterHit(cellID, adcSum, 64*thresholdCrossing));
+ hits.add(new BaseRawCalorimeterHit(cellID, adcSum, 64 * thresholdCrossing));
} } else if ((i == 0 || window[i - 1] <= HPSEcalConditions.physicalToPedestal(cellID) + readoutThreshold) && window[i] > HPSEcalConditions.physicalToPedestal(cellID) + readoutThreshold) { thresholdCrossing = i;
diff -u -r1.1 -r1.2 --- HPSEcalEdepToTriggerConverterDriver.java 9 Aug 2012 22:27:10 -0000 1.1 +++ HPSEcalEdepToTriggerConverterDriver.java 21 Aug 2012 01:06:51 -0000 1.2 @@ -126,11 +126,10 @@
// System.out.format("%f %f %f\n", readoutIntegral, amplitude, triggerIntegral); int truncatedIntegral = (int) Math.floor(triggerIntegral / truncateScale) * truncateScale;
- if (truncatedIntegral <= 0) { - truncatedIntegral = 0;
+ if (truncatedIntegral > 0) { + return new HPSRawCalorimeterHit(truncatedIntegral, hit.getPosition(), hit.getTime(), id, 0);
}
- CalorimeterHit h = new HPSRawCalorimeterHit(truncatedIntegral, hit.getPosition(), hit.getTime(), id, 0); - return h;
+ return null;
} public CalorimeterHit makeReadoutHit(CalorimeterHit hit) {
@@ -140,6 +139,26 @@
return null; } double integral = hit.getRawEnergy() * 1000.0;
+ +// double thresholdCrossingTime = 0 - hit.getTime(); +// while (true) { +// double currentValue = amplitude * pulseAmplitude(thresholdCrossingTime); +// if (currentValue > readoutThreshold) { +// break; +// } +// thresholdCrossingTime += readoutPeriod; +// +// if (thresholdCrossingTime > 200.0) { +// break; +// } +// } +// +// double readoutIntegral = 0; +// for (int i = 0; i < 35; i++) { +// readoutIntegral += amplitude * pulseAmplitude(thresholdCrossingTime + (i - 5) * readoutPeriod); +// } +//// double integral = readoutIntegral * HPSEcalConditions.physicalToGain(id); +// System.out.format("dumb: %f, full: %f\n",hit.getRawEnergy() * 1000.0,readoutIntegral * HPSEcalConditions.physicalToGain(id));
CalorimeterHit h = new HPSRawCalorimeterHit(integral, hit.getPosition(), hit.getTime(), id, 0); return h;
diff -N HPSTestRunFastSimToEvio.lcsim --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ HPSTestRunFastSimToEvio.lcsim 21 Aug 2012 01:06:51 -0000 1.1 @@ -0,0 +1,94 @@
+ +<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" + xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd"> + <inputFiles> + <file>${inputFile}</file> + </inputFiles> + <control> + <printInputFiles>true</printInputFiles> + <printDriversDetailed>true</printDriversDetailed> + </control> + <execute> + <driver name="EventMarkerDriver"/> +<!-- <driver name="Timer1"/>--> + <driver name="HPSCalibrationDriver"/> + <driver name="EcalRawConverter"/> + <driver name="EcalClusterer"/> + <driver name="EcalTriggerFilter"/> + <driver name="EcalTriggerClusterer"/> + <driver name="TrackerDigiDriver"/> +<!-- <driver name="Timer2"/>--> + <driver name="TrackerReconDriver"/> +<!-- <driver name="Timer3"/>--> + + <driver name="TestRunReconToEvio"/> + +<!-- <driver name="CleanupDriver"/>--> +<!-- + <driver name="LCIOWriter"/> +--> + </execute> + <drivers> + <driver name="Timer1" type="org.lcsim.hps.util.TimerDriver"> + <name>1</name> + </driver> + <driver name="Timer2" type="org.lcsim.hps.util.TimerDriver"> + <name>2</name> + </driver> + <driver name="Timer3" type="org.lcsim.hps.util.TimerDriver"> + <name>3</name> + </driver> + <driver name="EcalGainDriver" + type="org.lcsim.hps.users.phansson.ECalGainDriver"> + <debug>false</debug> + <hideFrame>true</hideFrame> + <outputPlotFileName>gaindriver_sim.aida</outputPlotFileName> + <ecalGainFileName>clusterlist_sim.txt</ecalGainFileName> + <simTrigger>true</simTrigger> + </driver> + + <driver name="HPSCalibrationDriver" type="org.lcsim.hps.monitoring.HPSCalibrationDriver"/> + <driver name="EcalRawConverter" type="org.lcsim.hps.recon.ecal.HPSEcalEdepToTriggerConverterDriver"> + </driver> + <driver name="EcalTriggerFilter" type="org.lcsim.hps.recon.ecal.HPSEcalTriggerFilterDriver"> + <inputCollection>EcalTriggerHits</inputCollection> + <outputCollection>EcalFilteredHits</outputCollection> + </driver> + <driver name="EcalTriggerClusterer" + type="org.lcsim.hps.recon.ecal.HPSEcalCTPClusterer"> + <ecalName>Ecal</ecalName> + <ecalCollectionName>EcalFilteredHits</ecalCollectionName> + <clusterCollectionName>EcalTriggerClusters</clusterCollectionName> + </driver> + <driver name="EcalClusterer" + type="org.lcsim.hps.recon.ecal.HPSEcalClusterer"> + <ecalName>Ecal</ecalName> + <ecalCollectionName>EcalCalHits</ecalCollectionName> + </driver> + <driver name="CleanupDriver" + type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"> + <collectionNames>TrackerHits</collectionNames> + </driver> + <driver name="SVTSetupDriver" + type="org.lcsim.hps.recon.tracking.HPSSVTSensorSetup"> + </driver> + <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver"> + <eventInterval>1000</eventInterval> + </driver> + <driver name="TrackerDigiDriver" + type="org.lcsim.hps.recon.tracking.TrackerDigiDriver"> + <debug>false</debug> + </driver> + <driver name="TrackerReconDriver" + type="org.lcsim.hps.recon.tracking.TrackerReconDriver"> + <debug>false</debug> + <strategyResource>/org/lcsim/hps/recon/tracking/strategies/HPS-Test-4pt1.xml</strategyResource> + <stripMaxSeparation>20.0</stripMaxSeparation> + <stripTolerance>1.0</stripTolerance> + </driver> + <driver name="LCIOWriter" + type="org.lcsim.util.loop.LCIODriver"> + <outputFilePath>/Users/phansson/work/HPS/software/reco/run/hps_recon.slcio</outputFilePath> + </driver> + </drivers> +</lcsim>
diff -u -r1.3 -r1.4 --- EcalGainDriver.lcsim 15 Aug 2012 00:15:25 -0000 1.3 +++ EcalGainDriver.lcsim 21 Aug 2012 01:06:51 -0000 1.4 @@ -21,7 +21,7 @@
--> <driver name="EcalGainDriver"/>
- <driver name="CleanupDriver"/>
+<!-- <driver name="CleanupDriver"/>-->
<!-- <driver name="LCIOWriter"/> -->
@@ -60,7 +60,7 @@
</driver> <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver">
- <collectionNames>TrackerHits SVTRawTrackerHits SVTFittedRawTrackerHits</collectionNames>
+ <collectionNames>TrackerHits</collectionNames>
</driver> <driver name="EcalMonitoringPlots" type="org.lcsim.hps.monitoring.ecal.EcalMonitoringPlots"/> <driver name="EcalEventMonitor" type="org.lcsim.hps.monitoring.ecal.EcalEventMonitor">
diff -u -r1.5 -r1.6 --- TestRunOfflineRecon.lcsim 20 Aug 2012 20:05:04 -0000 1.5 +++ TestRunOfflineRecon.lcsim 21 Aug 2012 01:06:51 -0000 1.6 @@ -2,8 +2,8 @@
xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd"> <execute> <driver name="EventMarkerDriver"/>
- <driver name="RawTrackerHitSensorSetup"/>
<driver name="HPSCalibrationDriver"/>
+ <driver name="RawTrackerHitSensorSetup"/>
<driver name="RawTrackerHitFitterDriver" /> <driver name="TrackerHitDriver"/> <driver name="TrackerReconDriver"/>
diff -u -r1.3 -r1.4 --- HPSTestRunReconToLcio.lcsim 16 Aug 2012 22:01:30 -0000 1.3 +++ HPSTestRunReconToLcio.lcsim 21 Aug 2012 01:06:51 -0000 1.4 @@ -3,11 +3,6 @@
--> <lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
- - <inputFiles> - <file>${inputFile}</file> - </inputFiles> -
<execute> <driver name="LoadCalibrations"/> <driver name="HPSCalibrationDriver"/>
@@ -18,12 +13,12 @@
<driver name="SVTReadout"/> <driver name="ClockDriver"/> <driver name="TestRunReconToLcio"/>
- <driver name="CleanupDriver"/>
+ <driver name="CleanupDriver"/>
</execute> <drivers> <driver name="LoadCalibrations" type="org.lcsim.hps.recon.tracking.LoadCalibrationsDriver" />
- <driver name="HPSCalibrationDriver" type="org.lcsim.hps.monitoring.HPSCalibrationDriver"/>
+ <driver name="HPSCalibrationDriver" type="org.lcsim.hps.monitoring.HPSCalibrationDriver"/>
<driver name="TestRunReconToLcio" type="org.lcsim.hps.evio.TestRunTriggeredReconToLcio"> <outputFile>${outputFile}</outputFile> </driver>
diff -u -r1.13 -r1.14 --- HPSTestRunReconToEvio.lcsim 16 Aug 2012 01:06:30 -0000 1.13 +++ HPSTestRunReconToEvio.lcsim 21 Aug 2012 01:06:51 -0000 1.14 @@ -3,11 +3,6 @@
--> <lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
- - <inputFiles> - <file>${inputFile}</file> - </inputFiles> -
<execute> <driver name="LoadCalibrations"/> <driver name="HPSCalibrationDriver"/>
@@ -74,14 +69,17 @@
<deadTime>10</deadTime> </driver>
- <driver name="SVTReadout"
+<!-- <driver name="SVTReadout"
type="org.lcsim.hps.recon.tracking.apv25.HPSSiSensorReadout"> <addNoise>true</addNoise>
+ </driver>--> + <driver name="SVTReadout" + type="org.lcsim.hps.recon.tracking.SimpleSvtReadout">
</driver> <!-- <driver name="SVTReadout"
- type="org.lcsim.hps.recon.tracking.SimpleSvtReadout"> - </driver>--> -<!-- <driver name="SVT_RTM"
+ type="org.lcsim.hps.recon.tracking.apv25.SvtReadout"> + </driver> + <driver name="SVT_RTM"
type="org.lcsim.hps.recon.tracking.RearTransitionModule"> </driver> <driver name="SVT_DPM"
diff -u -r1.2 -r1.3 --- SimpleSvtReadout.java 16 Aug 2012 22:01:30 -0000 1.2 +++ SimpleSvtReadout.java 21 Aug 2012 01:06:51 -0000 1.3 @@ -10,7 +10,6 @@
//--- 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;
@@ -28,20 +27,21 @@
/** * * @author Omar Moreno <[log in to unmask]>
- * @version $Id: SimpleSvtReadout.java,v 1.2 2012/08/16 22:01:30 meeg Exp $
+ * @version $Id: SimpleSvtReadout.java,v 1.3 2012/08/21 01:06:51 meeg Exp $
*/ public class SimpleSvtReadout extends Driver { private SiSensorSim siSimulation = new CDFSiSensorSim();
- String outputCollection = "SVTRawTrackerHits";
+ private String outputCollection = "SVTRawTrackerHits";
private Map<SiSensor, APV25Pipeline[]> pipelineMap = new HashMap<SiSensor, APV25Pipeline[]>(); //readout period in ns
- double readoutPeriod = Apv25Constants.SAMPLING_INTERVAL;
+ private double readoutPeriod = Apv25Constants.SAMPLING_INTERVAL;
//readout period time offset in ns
- double readoutOffset = 0.0;
+ private double readoutOffset = 0.0;
private String readout = "TrackerHits"; private SimTrackerHitReadoutDriver readoutDriver = new SimTrackerHitReadoutDriver(); private int readoutCycle = 0;
+ private int samplesAboveThreshold = 3;
public SimpleSvtReadout() { add(readoutDriver);
@@ -166,15 +166,13 @@
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());
} } } int flags = 1 << LCIOConstants.TRAWBIT_ID1; event.put(outputCollection, hits, RawTrackerHit.class, flags, readout);
+ System.out.println("Made " + hits.size() + " RawTrackerHits");
} }
@@ -187,11 +185,12 @@
int count = 0; short[] samples = hit.getADCValues(); for (int i = 0; i < samples.length; i++) {
+// System.out.format("%d, %d\n", samples[i] - pedestal, noise * 3.0);
if (samples[i] - pedestal > noise * 3.0) { count++; } }
- return count >= 3;
+ return count >= samplesAboveThreshold;
} public class APV25Pipeline extends RingBuffer {
diff -u -r1.13 -r1.14 --- HPSRawTrackerHitFitterDriver.java 21 Jun 2012 18:47:07 -0000 1.13 +++ HPSRawTrackerHitFitterDriver.java 21 Aug 2012 01:06:51 -0000 1.14 @@ -75,7 +75,8 @@
// Make a fitted hit from this cluster for (RawTrackerHit hit : rawHits) {
- ChannelConstants constants = HPSSVTCalibrationConstants.getChannelConstants((SiSensor) hit.getDetectorElement(), hit.getIdentifierFieldValue("strip"));
+ int strip = hit.getIdentifierFieldValue("strip"); + ChannelConstants constants = HPSSVTCalibrationConstants.getChannelConstants((SiSensor) hit.getDetectorElement(), strip);
HPSShapeFitParameters fit = _shaper.fitShape(hit, constants); if (correctT0Shift) { fit.setT0(fit.getT0() - constants.getT0Shift());
@@ -86,6 +87,7 @@
fits.add(fit); HPSFittedRawTrackerHit hth = new HPSFittedRawTrackerHit(hit, fit); hits.add(hth);
+ if (strip!=639)
hit.getDetectorElement().getReadout().addHit(hth); } event.put(fitCollectionName, fits, HPSShapeFitParameters.class, genericObjectFlags);
diff -u -r1.18 -r1.19 --- TestRunTriggeredReconToEvio.java 16 Aug 2012 01:06:30 -0000 1.18 +++ TestRunTriggeredReconToEvio.java 21 Aug 2012 01:06:51 -0000 1.19 @@ -26,9 +26,10 @@
String evioOutputFile = "TestRunData.evio"; Queue<QueuedEtEvent> builderQueue = null; private int eventsWritten = 0;
+ private int eventNum = 0;
HPSEcalConditions ecalIDConverter = null; ECalHitWriter ecalWriter = null;
- SVTHitWriter svtWriter = null;
+ SVTHitWriter_RTH svtWriter = null;
TriggerDataWriter triggerWriter = null; List<HitWriter> writers = null; private int ecalMode = EventConstants.ECAL_PULSE_INTEGRAL_MODE;
@@ -74,7 +75,7 @@
ecalWriter.setHitCollectionName(rawCalorimeterHitCollectionName); writers.add(ecalWriter);
- svtWriter = new SVTHitWriter();
+ svtWriter = new SVTHitWriter_RTH();
writers.add(svtWriter); triggerWriter = new TriggerDataWriter();
@@ -100,13 +101,14 @@
if (HPSTriggerDriver.triggerBit()) { // Make a new EVIO event. EventBuilder builder = new EventBuilder(EventConstants.PHYSICS_EVENT_TAG, DataType.BANK, EventConstants.EVENT_BANK_NUM);
- builderQueue.add(new QueuedEtEvent(builder, writers.size()));
+ builderQueue.add(new QueuedEtEvent(builder, writers.size(), eventNum));
EvioBank eventIDBank = new EvioBank(EventConstants.EVENTID_BANK_TAG, DataType.UINT32, 0); int[] eventID = new int[3];
- eventID[0] = eventsWritten;
+ eventID[0] = eventNum;
eventID[1] = 1; //trigger type eventID[2] = 0; //status
+ eventNum++;
try { eventIDBank.appendIntData(eventID); builder.addChild(builder.getEvent(), eventIDBank);
@@ -145,15 +147,7 @@
} private void writeEvioEvent(EventBuilder builder) {
- //add an empty bank - this is just a really brain-damaged hack to change lengthsUpToDate to false - try { - EvioBank dummyBank = new EvioBank(17, DataType.UNKNOWN32, 17); - builder.addChild(builder.getEvent(), dummyBank); - } catch (EvioException e) { - throw new RuntimeException(e); - } - - System.out.printf("Writing event with %d bytes\n", builder.getEvent().getTotalBytes());
+ System.out.printf("Writing event %d with %d bytes\n", eventsWritten, builder.getEvent().getTotalBytes());
try { writer.writeEvent(builder.getEvent()); ++eventsWritten;
@@ -194,12 +188,17 @@
public boolean readSVT = false; public boolean readECal = false; private boolean[] readData = null;
+ private int eventNum;
- public QueuedEtEvent(EventBuilder builder, int numData) {
+ public QueuedEtEvent(EventBuilder builder, int numData, int eventNum) {
this.builder = builder; readData = new boolean[numData]; }
+ public int getEventNum() { + return eventNum; + } +
public void setRead(int i) { readData[i] = true; }
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