Author: [log in to unmask]
Date: Mon Jun 8 12:51:57 2015
New Revision: 3113
Log:
add mode 1 threshold cut, rename constant
Modified:
java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/FADCEcalReadoutDriver.java
java/trunk/evio/src/main/java/org/hps/evio/EcalEvioReader.java
java/trunk/evio/src/main/java/org/hps/evio/EcalHitWriter.java
java/trunk/evio/src/main/java/org/hps/evio/EventConstants.java
java/trunk/evio/src/main/java/org/hps/evio/TestRunTriggeredReconToEvio.java
java/trunk/evio/src/main/java/org/hps/evio/TestRunTriggeredReconToLcio.java
Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/FADCEcalReadoutDriver.java
=============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/FADCEcalReadoutDriver.java (original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/FADCEcalReadoutDriver.java Mon Jun 8 12:51:57 2015
@@ -42,7 +42,7 @@
public class FADCEcalReadoutDriver extends EcalReadoutDriver<RawCalorimeterHit> {
// Repeated here from EventConstants in evio module to avoid depending on it.
- private static final int ECAL_WINDOW_MODE = 1;
+ private static final int ECAL_RAW_MODE = 1;
private static final int ECAL_PULSE_MODE = 2;
private static final int ECAL_PULSE_INTEGRAL_MODE = 3;
private String ecalName = "Ecal";
@@ -92,16 +92,16 @@
private double fixedGain = -1;
private boolean constantTriggerWindow = true;
private boolean addNoise = false;
-
+
// 32.8 p.e./MeV = New detector in 2014
// 2 p.e./MeV = Test Run detector
private double pePerMeV = 32.8; //photoelectrons per MeV, used to calculate noise
-
+
//switch between test run and 2014 definitions of gain constants
// true = ONLY simulation studies in 2014
// false = Test Run data/simulations and 2014+ Detector's real data
private boolean use2014Gain = false;
-
+
//switch between three pulse shape functions
private PulseShape pulseShape = PulseShape.ThreePole;
@@ -208,7 +208,7 @@
public void setMode(int mode) {
this.mode = mode;
- if (mode != ECAL_WINDOW_MODE && mode != ECAL_PULSE_MODE && mode != ECAL_PULSE_INTEGRAL_MODE) {
+ if (mode != ECAL_RAW_MODE && mode != ECAL_PULSE_MODE && mode != ECAL_PULSE_INTEGRAL_MODE) {
throw new IllegalArgumentException("invalid mode " + mode);
}
}
@@ -239,7 +239,7 @@
FADCPipeline pipeline = pipelineMap.get(cellID);
pipeline.step();
-
+
// Get the channel data.
EcalChannelConstants channelData = findChannel(cellID);
@@ -325,9 +325,9 @@
@Override
protected void processTrigger(EventHeader event) {
switch (mode) {
- case ECAL_WINDOW_MODE:
+ case ECAL_RAW_MODE:
if (debug) {
- System.out.println("Reading out ECal in window mode");
+ System.out.println("Reading out ECal in raw mode");
}
event.put(ecalReadoutCollectionName, readWindow(), RawTrackerHit.class, 0, ecalReadoutName);
break;
@@ -371,7 +371,17 @@
List<RawTrackerHit> hits = new ArrayList<RawTrackerHit>();
for (Long cellID : pipelineMap.keySet()) {
short[] adcValues = getWindow(cellID);
- hits.add(new BaseRawTrackerHit(cellID, 0, adcValues));
+ EcalChannelConstants channelData = findChannel(cellID);
+ boolean isAboveThreshold = false;
+ for (int i = 0; i < adcValues.length; i++) {
+ if (adcValues[i] > channelData.getCalibration().getPedestal() + readoutThreshold) {
+ isAboveThreshold = true;
+ break;
+ }
+ }
+ if (isAboveThreshold) {
+ hits.add(new BaseRawTrackerHit(cellID, 0, adcValues));
+ }
}
return hits;
}
@@ -385,12 +395,15 @@
int pointerOffset = 0;
int numSamplesToRead = 0;
int thresholdCrossing = 0;
-
+
// Get the channel data.
EcalChannelConstants channelData = findChannel(cellID);
-
+
for (int i = 0; i < readoutWindow; i++) {
if (numSamplesToRead != 0) {
+ if (adcValues == null) {
+ throw new RuntimeException("expected a pulse buffer, none found (this should never happen)");
+ }
adcValues[adcValues.length - numSamplesToRead] = window[i - pointerOffset];
numSamplesToRead--;
if (numSamplesToRead == 0) {
@@ -416,10 +429,10 @@
int pointerOffset = 0;
int numSamplesToRead = 0;
int thresholdCrossing = 0;
-
+
// Get the channel data.
EcalChannelConstants channelData = findChannel(cellID);
-
+
if (window != null) {
for (int i = 0; i < readoutWindow; i++) {
if (numSamplesToRead != 0) {
@@ -455,11 +468,11 @@
//add preamp noise and photoelectron Poisson noise in quadrature
double noise;
if (use2014Gain) {
- noise = Math.sqrt(Math.pow(channelData.getCalibration().getNoise() * channelData.getGain().getGain() * EcalUtils.gainFactor * EcalUtils.ecalReadoutPeriod, 2)
- + hit.getRawEnergy() / (EcalUtils.lightYield * EcalUtils.quantumEff * EcalUtils.surfRatio));
+ noise = Math.sqrt(Math.pow(channelData.getCalibration().getNoise() * channelData.getGain().getGain() * EcalUtils.gainFactor * EcalUtils.ecalReadoutPeriod, 2)
+ + hit.getRawEnergy() / (EcalUtils.lightYield * EcalUtils.quantumEff * EcalUtils.surfRatio));
} else {
- noise = Math.sqrt(Math.pow(channelData.getCalibration().getNoise() * channelData.getGain().getGain() * EcalUtils.MeV, 2)
- + hit.getRawEnergy() * EcalUtils.MeV / pePerMeV);
+ noise = Math.sqrt(Math.pow(channelData.getCalibration().getNoise() * channelData.getGain().getGain() * EcalUtils.MeV, 2)
+ + hit.getRawEnergy() * EcalUtils.MeV / pePerMeV);
}
energyAmplitude += RandomGaussian.getGaussian(0, noise);
}
@@ -482,10 +495,10 @@
public void detectorChanged(Detector detector) {
// Get the Subdetector.
ecal = detector.getSubdetector(ecalName);
-
+
// ECAL combined conditions object.
ecalConditions = DatabaseConditionsManager.getInstance().getEcalConditions();
-
+
resetFADCBuffers();
}
@@ -497,7 +510,7 @@
pipelineMap = new HashMap<Long, FADCPipeline>();
Set<Long> cells = ((HPSEcal3) ecal).getNeighborMap().keySet();
for (Long cellID : cells) {
- EcalChannelConstants channelData = findChannel(cellID);
+ EcalChannelConstants channelData = findChannel(cellID);
signalMap.put(cellID, new RingBuffer(bufferLength));
pipelineMap.put(cellID, new FADCPipeline(pipelineLength, (int) Math.round(channelData.getCalibration().getPedestal())));
}
@@ -507,7 +520,7 @@
private double pulseAmplitude(double time, long cellID) {
// Get the channel data.
EcalChannelConstants channelData = findChannel(cellID);
-
+
if (use2014Gain) {
//if fixedGain is set, multiply the default gain by this factor
double corrGain;
@@ -615,22 +628,22 @@
return array[((ptr - pos) % size + size) % size];
}
}
-
- /**
+
+ /**
* Convert physical ID to gain value.
+ *
* @param cellID (long)
* @return channel constants (EcalChannelConstants)
*/
private EcalChannelConstants findChannel(long cellID) {
return ecalConditions.getChannelConstants(ecalConditions.getChannelCollection().findGeometric(cellID));
}
-
-
- public static class TimeComparator implements Comparator<RawCalorimeterHit> {
+
+ public static class TimeComparator implements Comparator<RawCalorimeterHit> {
@Override
- public int compare(RawCalorimeterHit o1, RawCalorimeterHit o2) {
- return o1.getTimeStamp() - o2.getTimeStamp();
- }
- }
+ public int compare(RawCalorimeterHit o1, RawCalorimeterHit o2) {
+ return o1.getTimeStamp() - o2.getTimeStamp();
+ }
+ }
}
Modified: java/trunk/evio/src/main/java/org/hps/evio/EcalEvioReader.java
=============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/EcalEvioReader.java (original)
+++ java/trunk/evio/src/main/java/org/hps/evio/EcalEvioReader.java Mon Jun 8 12:51:57 2015
@@ -260,7 +260,7 @@
}
if (id == null) {
- FADCGenericHit hit = makeGenericRawHit(EventConstants.ECAL_WINDOW_MODE, crate, slot, channel, cdata, nSamples);
+ FADCGenericHit hit = makeGenericRawHit(EventConstants.ECAL_RAW_MODE, crate, slot, channel, cdata, nSamples);
processUnrecognizedChannel(hit);
} else {
BaseRawTrackerHit hit = makeECalRawHit(0, id, cdata, nSamples);
Modified: java/trunk/evio/src/main/java/org/hps/evio/EcalHitWriter.java
=============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/EcalHitWriter.java (original)
+++ java/trunk/evio/src/main/java/org/hps/evio/EcalHitWriter.java Mon Jun 8 12:51:57 2015
@@ -69,7 +69,7 @@
public void setMode(int mode) {
this.mode = mode;
- if (mode != EventConstants.ECAL_WINDOW_MODE && mode != EventConstants.ECAL_PULSE_MODE && mode != EventConstants.ECAL_PULSE_INTEGRAL_MODE) {
+ if (mode != EventConstants.ECAL_RAW_MODE && mode != EventConstants.ECAL_PULSE_MODE && mode != EventConstants.ECAL_PULSE_INTEGRAL_MODE) {
throw new IllegalArgumentException("invalid mode " + mode);
}
}
@@ -77,7 +77,7 @@
@Override
public boolean hasData(EventHeader event) {
switch (mode) {
- case EventConstants.ECAL_WINDOW_MODE:
+ case EventConstants.ECAL_RAW_MODE:
return event.hasCollection(RawTrackerHit.class, hitCollectionName);
case EventConstants.ECAL_PULSE_MODE:
return event.hasCollection(RawTrackerHit.class, hitCollectionName);
@@ -92,7 +92,7 @@
public void writeData(EventHeader event, EventBuilder builder) {
List<Object> hits = new ArrayList<Object>();
switch (mode) {
- case EventConstants.ECAL_WINDOW_MODE:
+ case EventConstants.ECAL_RAW_MODE:
hits.addAll(event.get(RawTrackerHit.class, hitCollectionName));
writeHits(hits, builder, mode);
break;
@@ -160,7 +160,7 @@
}
switch (mode) {
- case EventConstants.ECAL_WINDOW_MODE:
+ case EventConstants.ECAL_RAW_MODE:
// Write the two collections for top and bottom hits to separate EVIO banks.
writeWindowHitCollection(topHits, topBank, builder);
writeWindowHitCollection(bottomHits, botBank, builder);
@@ -415,7 +415,7 @@
public void writeData(EventHeader event, EventHeader toEvent) {
String readoutName = ((org.lcsim.geometry.compact.Subdetector) subDetector).getReadout().getName();
switch (mode) {
- case EventConstants.ECAL_WINDOW_MODE:
+ case EventConstants.ECAL_RAW_MODE:
case EventConstants.ECAL_PULSE_MODE:
List<RawTrackerHit> rawTrackerHits = event.get(RawTrackerHit.class, hitCollectionName);
if (verbosity >= 1) {
Modified: java/trunk/evio/src/main/java/org/hps/evio/EventConstants.java
=============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/EventConstants.java (original)
+++ java/trunk/evio/src/main/java/org/hps/evio/EventConstants.java Mon Jun 8 12:51:57 2015
@@ -16,7 +16,7 @@
public static final int SVT_BANK_NUMBER = 1;
public static final int ECAL_BANK_NUMBER = 1;
public static final int TRIGGER_BANK_NUMBER = 1;
- public static final int ECAL_WINDOW_MODE = 1;
+ public static final int ECAL_RAW_MODE = 1;
public static final int ECAL_PULSE_MODE = 2;
public static final int ECAL_PULSE_INTEGRAL_MODE = 3; //FADC mode 3
public static final int ECAL_PULSE_INTEGRAL_HIGHRESTDC_MODE = 4; //FADC mode 7
Modified: java/trunk/evio/src/main/java/org/hps/evio/TestRunTriggeredReconToEvio.java
=============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/TestRunTriggeredReconToEvio.java (original)
+++ java/trunk/evio/src/main/java/org/hps/evio/TestRunTriggeredReconToEvio.java Mon Jun 8 12:51:57 2015
@@ -58,7 +58,7 @@
public void setEcalMode(int ecalMode) {
this.ecalMode = ecalMode;
- if (ecalMode != EventConstants.ECAL_WINDOW_MODE && ecalMode != EventConstants.ECAL_PULSE_MODE && ecalMode != EventConstants.ECAL_PULSE_INTEGRAL_MODE) {
+ if (ecalMode != EventConstants.ECAL_RAW_MODE && ecalMode != EventConstants.ECAL_PULSE_MODE && ecalMode != EventConstants.ECAL_PULSE_INTEGRAL_MODE) {
throw new IllegalArgumentException("invalid mode " + ecalMode);
}
if (ecalWriter != null) {
Modified: java/trunk/evio/src/main/java/org/hps/evio/TestRunTriggeredReconToLcio.java
=============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/TestRunTriggeredReconToLcio.java (original)
+++ java/trunk/evio/src/main/java/org/hps/evio/TestRunTriggeredReconToLcio.java Mon Jun 8 12:51:57 2015
@@ -77,7 +77,7 @@
public void setEcalMode(int ecalMode) {
this.ecalMode = ecalMode;
- if (ecalMode != EventConstants.ECAL_WINDOW_MODE && ecalMode != EventConstants.ECAL_PULSE_MODE && ecalMode != EventConstants.ECAL_PULSE_INTEGRAL_MODE) {
+ if (ecalMode != EventConstants.ECAL_RAW_MODE && ecalMode != EventConstants.ECAL_PULSE_MODE && ecalMode != EventConstants.ECAL_PULSE_INTEGRAL_MODE) {
throw new IllegalArgumentException("invalid mode " + ecalMode);
}
if (ecalWriter != null) {
|