Author: [log in to unmask]
Date: Wed Feb 11 14:19:37 2015
New Revision: 2112
Log:
running pedestal now in EcalRawConverter+Driver (disabled by default).
Modified:
java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverter.java
java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverterDriver.java
Modified: java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverter.java
=============================================================================
--- java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverter.java (original)
+++ java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverter.java Wed Feb 11 14:19:37 2015
@@ -1,14 +1,17 @@
package org.hps.recon.ecal;
+import java.util.Map;
+
import org.hps.conditions.database.TableConstants;
+import org.hps.conditions.ecal.EcalChannel;
import org.hps.conditions.ecal.EcalChannelConstants;
import org.hps.conditions.ecal.EcalConditions;
import org.lcsim.conditions.ConditionsManager;
import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.EventHeader;
import org.lcsim.event.GenericObject;
import org.lcsim.event.RawCalorimeterHit;
import org.lcsim.event.RawTrackerHit;
-import org.lcsim.event.base.BaseCalorimeterHit;
import org.lcsim.event.base.BaseRawCalorimeterHit;
import org.lcsim.geometry.Detector;
@@ -24,6 +27,7 @@
*/
public class EcalRawConverter {
+ private boolean useRunningPedestal = false;
private boolean constantGain = false;
private double gain;
private boolean use2014Gain = true;
@@ -42,6 +46,36 @@
this.use2014Gain = use2014Gain;
}
+ public void setUseRunningPedestal(boolean useRunningPedestal) {
+ this.useRunningPedestal=useRunningPedestal;
+ }
+
+ // Choose whether to use static pedestal from database or running pedestal (NAB Feb 11, 2015):
+ public double getPedestal(EventHeader event,RawCalorimeterHit hit)
+ {
+ if (useRunningPedestal) {
+ if (event.hasItem("EcalRunningPedestals")) {
+ Map<EcalChannel, Double> runningPedMap=
+ (Map<EcalChannel, Double>)
+ event.get("EcalRunningPedestals");
+ EcalChannel chan = ecalConditions.getChannelCollection().
+ findGeometric(hit.getCellID());
+ //System.err.println(" %%%%%%%%%%%%%%%%% "+chan.getChannelId()+" "+runningPedMap.get(chan));
+ if (!runningPedMap.containsKey(chan)){
+ System.err.println("************** Missing Pedestal");
+ } else {
+ return runningPedMap.get(chan);
+ }
+ } else {
+ System.err.println("*****************************************************************");
+ System.err.println("** You Requested a Running Pedestal, but it is NOT available. **");
+ System.err.println("** Reverting to the database. Only printing this ONCE. **");
+ System.err.println("*****************************************************************");
+ useRunningPedestal = false;
+ }
+ }
+ return findChannel(hit.getCellID()).getCalibration().getPedestal();
+ }
public short sumADC(RawTrackerHit hit) {
EcalChannelConstants channelData = findChannel(hit.getCellID());
double pedestal = channelData.getCalibration().getPedestal();
@@ -74,14 +108,14 @@
//return h2;
}
- public CalorimeterHit HitDtoA(RawCalorimeterHit hit, GenericObject mode7Data, int window, double timeOffset) {
+ public CalorimeterHit HitDtoA(EventHeader event,RawCalorimeterHit hit, GenericObject mode7Data, int window, double timeOffset) {
double time = hit.getTimeStamp() / 16.0; //timestamps use the full 62.5 ps resolution
long id = hit.getCellID();
- // Get the channel data.
- EcalChannelConstants channelData = findChannel(id);
- double adcSum = hit.getAmplitude() - window * channelData.getCalibration().getPedestal();
+// // Get the channel data.
+// EcalChannelConstants channelData = findChannel(id);
+// double adcSum = hit.getAmplitude() - window * channelData.getCalibration().getPedestal();
// double adcSum = hit.getAmplitude() - window * Mode7Data.getAmplLow(mode7Data); //A.C. is this the proper way to pedestal subtract in mode 7?
-
+ double adcSum = hit.getAmplitude() - window * getPedestal(event,hit);
double rawEnergy = adcToEnergy(adcSum, id);
return CalorimeterHitUtilities.create(rawEnergy, time + timeOffset, id);
Modified: java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverterDriver.java
=============================================================================
--- java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverterDriver.java (original)
+++ java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverterDriver.java Wed Feb 11 14:19:37 2015
@@ -51,6 +51,10 @@
converter.setUse2014Gain(use2014Gain);
}
+ public void setUseRunningPedestal(boolean useRunningPedestal) {
+ converter.setUseRunningPedestal(useRunningPedestal);
+ }
+
public void setRunBackwards(boolean runBackwards) {
this.runBackwards = runBackwards;
}
@@ -203,7 +207,7 @@
}
GenericObject extraData = (GenericObject) rel.getTo();
CalorimeterHit newHit;
- newHit = converter.HitDtoA(hit, extraData, integralWindow, timeOffset);
+ newHit = converter.HitDtoA(event,hit, extraData, integralWindow, timeOffset);
if (newHit.getRawEnergy() > threshold) {
if (applyBadCrystalMap && isBadCrystal(newHit)) {
continue;
|