Commit in lcsim/src/org/lcsim/contrib/SteveMagill on MAIN
ModRonDTPhotonFinderSid01.java+111added 1.1


lcsim/src/org/lcsim/contrib/SteveMagill
ModRonDTPhotonFinderSid01.java added at 1.1
diff -N ModRonDTPhotonFinderSid01.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ModRonDTPhotonFinderSid01.java	20 Aug 2008 20:21:21 -0000	1.1
@@ -0,0 +1,111 @@
+package org.lcsim.contrib.SteveMagill;
+
+/*
+ * RonDTPhotonFinderSid01.java
+ *
+ * Created on February 25, 2008, 10:28 AM
+ * modified to allow restricted hit input
+ */
+
+import org.lcsim.contrib.uiowa.RonPhotonFinder.*;
+import java.util.*;
+import org.lcsim.util.Driver;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
+import org.lcsim.util.hitmap.HitMap;
+import org.lcsim.recon.cluster.nn.*;
+import org.lcsim.digisim.*;
+import org.lcsim.recon.cluster.util.*;
+import org.lcsim.util.lcio.LCIOConstants;
+import org.lcsim.recon.cluster.directedtree.*;
+import org.lcsim.contrib.Cassell.recon.DTPhotons.*;
+
+/**
+ *
+ * @author cassell
+ */
+public class ModRonDTPhotonFinderSid01 extends Driver
+{
+    String inName;
+    String outHName;
+    String outCName;
+    HMatrixVars hmv;
+    Sid01DTPhotonFinder finder;
+//    String[] clusternames1 = {"EcalBarrDigiHitsDTreeClusters","EcalEndcapDigiHitsDTreeClusters"};
+//    String DTclName = "DTEcalClusters";
+//    String ReDTclName = "Re"+DTclName;
+    Clusterer clusterer;
+    
+    /** Creates a new instance of RonDTPhotonFinderSid01 */
+    public ModRonDTPhotonFinderSid01(String in, String outH, String outC)
+    {
+        inName = in;
+        outHName = outH;
+        outCName = outC;
+        clusterer = new NearestNeighborClusterer(1,1,1,0,0.);
+        hmv = new HMatrixVars();
+        add(hmv);
+        finder = new Sid01DTPhotonFinder(hmv);
+//        add(new DigiPackageDriver());
+//        add(new DirectedTreeDriver());
+        int minDTc = 3;  // minimum number of cells in a cluster
+        DirectedTreeDriver DTEBdriver = new DirectedTreeDriver();
+        DTEBdriver.setMinimumClusterSize(minDTc);
+        DTEBdriver.setInputHitMap(inName);
+        DTEBdriver.setOutputClusterList("EMHitsDTClus");
+        add(DTEBdriver);
+        
+//        add(new CombineClLists(clusternames1,DTclName));
+        add(new CoreReclusterDriver("EMHitsDTClus","ReEMHitsDTClus"));
+    }
+    protected void process(EventHeader event)
+    {
+        super.process(event);
+        HitMap inmap = (HitMap) event.get(inName);
+        List<Cluster> inlist = event.get(Cluster.class,"ReEMHitsDTClus");
+        List<Cluster> sublist = new ArrayList<Cluster>();
+        Map<Cluster,Cluster> submap = new HashMap<Cluster,Cluster>();
+        for(Cluster c:inlist)
+        {
+           List<Cluster> nncl = clusterer.createClusters(c.getCalorimeterHits());
+           int maxh = 0;
+           Cluster maxc = null;
+           for(Cluster nnc:nncl)
+           {
+              if(nnc.getCalorimeterHits().size() > maxh)
+              {
+                 maxh = nnc.getCalorimeterHits().size();
+                 maxc = nnc;
+              }
+           }
+           sublist.add(maxc);
+           submap.put(maxc,c);
+        }
+        List<Cluster> subphotons = finder.findPhotons(sublist);
+        List<Cluster> photons = new ArrayList<Cluster>();
+        for(Cluster subp:subphotons)
+        {
+           BasicCluster pc = new BasicCluster();
+           for(Cluster subc:subp.getClusters())
+           {
+              pc.addCluster(submap.get(subc));
+           }
+           photons.add(pc);
+        }
+        int flag = 1<<LCIOConstants.CLBIT_HITS;
+        event.put(outCName, photons, Cluster.class, flag );
+        HitMap outputHitMap = new HitMap(inmap);
+//   Remove photon hits
+        for (Cluster clus : photons) 
+        {
+            for (CalorimeterHit hit : clus.getCalorimeterHits())
+            {
+               Long cellID = new Long(hit.getCellID());
+               outputHitMap.remove(cellID);
+            }
+         }
+         event.put(outHName, outputHitMap);
+    }
+    
+}
CVSspam 0.2.8