Author: [log in to unmask]
Date: Tue Jul 21 12:24:34 2015
New Revision: 3271
Log:
adding skim for fee and moller for ecal gain calibration
Added:
java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalGainCalibFilter.java
Added: java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalGainCalibFilter.java
=============================================================================
--- java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalGainCalibFilter.java (added)
+++ java/trunk/recon/src/main/java/org/hps/recon/filtering/EcalGainCalibFilter.java Tue Jul 21 12:24:34 2015
@@ -0,0 +1,60 @@
+package org.hps.recon.filtering;
+
+import java.util.List;
+import org.lcsim.event.Cluster;
+import org.lcsim.event.EventHeader;
+import org.hps.recon.ecal.cluster.ClusterUtilities;
+
+public class EcalGainCalibFilter extends EventReconFilter {
+
+ private double feeCut = 0.6;
+ private double molCut = 0.6;
+ private double tMin = 16.0;
+ private double tMax = 80.0;
+ private double dtMax = 12.0;
+ private String clusterCollectionName = "EcalClusters";
+
+ public void setFeeCut(double feeCut) { this.feeCut = feeCut; }
+ public void setMolCut(double molCut) { this.molCut = molCut; }
+ public void setTMin(double tMin) { this.tMin = tMin; }
+ public void setTMax(double tMax) { this.tMax = tMax; }
+ public void setDTMax(double dTMax) { this.dtMax = dTMax; }
+
+ public void setClusterCollectionName(String clusterCollectionName) {
+ this.clusterCollectionName = clusterCollectionName;
+ }
+
+ @Override
+ public void process(EventHeader event)
+ {
+ incrementEventProcessed();
+ if (!event.hasCollection(Cluster.class, clusterCollectionName)) skipEvent();
+ List<Cluster> cc = event.get(Cluster.class, clusterCollectionName);
+ if (cc.size() < 1) skipEvent();
+ boolean keepEvent = false;
+ for (Cluster c1 : cc)
+ {
+ final double t1 = ClusterUtilities.getSeedHitTime(c1);
+ if (t1<tMin || t1>tMax) continue;
+ if (c1.getEnergy() > feeCut)
+ {
+ keepEvent = true;
+ break;
+ }
+ for (Cluster c2 : cc)
+ {
+ final double t2 = ClusterUtilities.getSeedHitTime(c2);
+ if (c1 == c2) continue;
+ if (t2<tMin || t2>tMax) continue;
+ if (Math.abs(t1-t2) > dtMax) continue;
+ if (c1.getEnergy() + c2.getEnergy() > molCut)
+ {
+ keepEvent = true;
+ break;
+ }
+ }
+ }
+ if (!keepEvent) skipEvent();
+ incrementEventPassed();
+ }
+}
|