Print

Print


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();
+    }
+}