Author: [log in to unmask]
Date: Sun Feb 1 06:31:34 2015
New Revision: 2021
Log:
Changing initialization
Modified:
java/trunk/users/src/main/java/org/hps/users/baltzell/ECalRunningPedestalDriver.java
Modified: java/trunk/users/src/main/java/org/hps/users/baltzell/ECalRunningPedestalDriver.java
=============================================================================
--- java/trunk/users/src/main/java/org/hps/users/baltzell/ECalRunningPedestalDriver.java (original)
+++ java/trunk/users/src/main/java/org/hps/users/baltzell/ECalRunningPedestalDriver.java Sun Feb 1 06:31:34 2015
@@ -53,6 +53,7 @@
private List<Integer>[] eventPedestals = (ArrayList<Integer>[]) new ArrayList[nChannels];
private List<Long>[] eventTimestamps = (ArrayList<Long>[]) new ArrayList[nChannels];
+ private boolean debug = false;
private EcalConditions ecalConditions = null;
@@ -61,7 +62,7 @@
for (int ii = 0; ii < nChannels; ii++) {
eventPedestals[ii] = new ArrayList<>();
eventTimestamps[ii] = new ArrayList<>();
- runningPedestals.add(-1.); // would like to initialize with DB pedestals, but they're not available yet
+ runningPedestals.add(-1.);
}
}
@Override
@@ -73,27 +74,38 @@
ecalConditions = ConditionsManager.defaultInstance()
.getCachedConditions(EcalConditions.class,TableConstants.ECAL_CONDITIONS)
.getCachedData();
+ for (int ii=0; ii<nChannels; ii++) {
+ runningPedestals.set(ii,getStaticPedestal(ii+1));
+ }
+ if (debug){
+ printPedestals();
+ }
}
public void setMinLookbackEvents(int nev) {
+ if (nev<1){
+ System.err.println(
+ "ECalRunningPedestalDriver: MinLookbackEvents too small. Setting to 1.");
+ nev=1;
+ }
minLookbackEvents = nev;
}
public void setMaxLookbackEvents(int nev) {
+ if (nev>limitLookbackEvents){
+ System.err.println(
+ "ECalRunningPedestalDriver: MaxLookbackEvents too big. Setting to "
+ +limitLookbackEvents+".");
+ nev=limitLookbackEvents;
+ }
maxLookbackEvents = nev;
}
public void setMaxLookbackTime(int time) {
maxLookbackTime = time;
}
-
- public double getPedestal(int channel_id) {
- final int nped = eventPedestals[channel_id - 1].size();
- if (nped < minLookbackEvents) return getStaticPedestal(channel_id);
- else return runningPedestals.get(channel_id - 1);
- }
-
public void printPedestals() {
for (int ii = 0; ii < nChannels; ii++) {
- System.out.printf("(%d,%.2f,%.2f) ",ii,runningPedestals.get(ii),getStaticPedestal(ii + 1));
+ System.out.printf("(%d,%.2f,%.2f) ",ii,runningPedestals.get(ii),
+ getStaticPedestal(ii + 1));
}
System.out.printf("\n");
}
@@ -109,25 +121,19 @@
GenericObject extraData = (GenericObject) rel.getTo();
updatePedestal(event,hit,extraData);
}
-
- // quick fix until I know how to read from DB before 'process':
- List<Double> peds = new ArrayList<Double>(nChannels);
- for (int ii=0; ii<nChannels; ii++){
- peds.add(ii,getPedestal(ii+1));
- }
//
- // don't care right now whether this persists in output slcio,
+ // Don't care right now whether this persists in output slcio,
// just that it is accessible during reconstruction (and it is)
//
// Another option would be to put hits' running pedestals into HitExtraData.Mode7Data
- // Or create another LCRelation
- // Either would also remove the need for indexing later.
+ // Or create another LCRelation. Either would also remove the need for indexing later.
//
- event.put(runningPedestalsName,peds,Double.class,1,"dog");
-// event.put(runningPedestalsName,runningPedestals,Double.class,1,"dog");
-
-// printPedestals();
+ event.put(runningPedestalsName,runningPedestals,Double.class,1,"dog");
+
+ if (debug) {
+ printPedestals();
+ }
}
public void updatePedestal(EventHeader event, RawCalorimeterHit hit, GenericObject mode7data) {
@@ -160,7 +166,7 @@
if (eventPedestals[ii].size() > 1) {
- // remove oldest pedestal if we surpassed limit on #events:
+ // remove oldest pedestal if surpassed limit on #events:
if (eventPedestals[ii].size() > limitLookbackEvents
|| (maxLookbackEvents > 0 && eventPedestals[ii].size() > maxLookbackEvents)) {
eventPedestals[ii].remove(0);
@@ -181,7 +187,7 @@
}
// Update running pedestal average:
- if (eventPedestals[ii].size() > 0) {
+ if (eventPedestals[ii].size() >= minLookbackEvents) {
double avg = 0;
for (int jj = 0; jj < eventPedestals[ii].size(); jj++) {
avg += eventPedestals[ii].get(jj);
@@ -192,6 +198,12 @@
}
}
+ public double getPedestal(int channel_id) {
+ return runningPedestals.get(channel_id-1);
+// final int nped = eventPedestals[channel_id - 1].size();
+// if (nped < minLookbackEvents) return getStaticPedestal(channel_id);
+// else return runningPedestals.get(channel_id - 1);
+ }
public double getPedestal(RawCalorimeterHit hit) {
return getPedestal(getChannelID(hit));
}
|