Print

Print


Commit in lcsim/src/org/lcsim/contrib/uiowa/structural on MAIN
ExamplePFA.java+68-411.1 -> 1.2
LikelihoodFindingStructuralDriver.java+9-151.1 -> 1.2
LikelihoodLinkDriver.java+10-161.1 -> 1.2
+87-72
3 modified files
Vector --> List in interface; make access to event variable of type Map<Cluster, Vector<Cluster> > type-safe via a special class MapClusterToListOfClusters.

lcsim/src/org/lcsim/contrib/uiowa/structural
ExamplePFA.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- ExamplePFA.java	29 Sep 2005 21:04:48 -0000	1.1
+++ ExamplePFA.java	1 Oct 2005 01:35:41 -0000	1.2
@@ -2,58 +2,85 @@
 
 import org.lcsim.event.EventHeader;
 import org.lcsim.util.Driver;
-import org.lcsim.recon.cluster.nn.NearestNeighborClusterDriver;
 
 import structural.likelihood.*;
+import mst.MSTClusterDriver;
+import mst.GeometricalDistance;
+import mst.MinimumHitToHitDistance;
+import mst.Metrics;
 
 public class ExamplePFA extends Driver
 {
+    public ExamplePFA() {
+	this(false);
+    }
+
     public ExamplePFA(boolean writeLikelihood) 
     {
-	// Begin with a big-scale cluster set
-	// This will output the following lists:
-	//    EcalBarrHitsNNClusters
-	//    EcalEndcapHitsNNClusters
-	//    ForwardEcalEndcapHitsNNClusters
-	//    HcalBarrHitsNNClusters
-	//    HcalEndcapHitsNNClusters
-	//Driver nnDriver = new NearestNeighborClusterDriver(6, 6, 8, 1);
-	//add(nnDriver);
-
-	// ... or, make cluster lists with MST.
-	// MSTClusterDriver linkDriver = new MSTClusterDriver("user");
-        // ...
-
-	// Need to merge those lists/clusters somehow
-	// PairDecisionMaker dec = new LinkClusterDecision();
-
-	// Find MIPs within clusters
+	// Begin with a big-scale cluster set, made with the MST:
+	Metrics geomDist = new GeometricalDistance();
+	Metrics hitHitDist = new MinimumHitToHitDistance();
+
+	MSTClusterDriver mstDriverEcal = new MSTClusterDriver("EMCal");
+	MSTClusterDriver mstDriverHcal = new MSTClusterDriver("HCal");
+	mstDriverEcal.registerMetrics(geomDist);
+	mstDriverHcal.registerMetrics(geomDist);
+	mstDriverEcal.setThreshold(30.0); // 3cm
+	mstDriverHcal.setThreshold(100.0); // 10cm
+	mstDriverEcal.setClusterName("MSTCluster EMCal");
+	mstDriverHcal.setClusterName("MSTCluster HCal");
+	add(mstDriverEcal);
+	add(mstDriverHcal);
+
+	// Find MIPs within clusters. Have to do this before merge
+	// because the MIP-finder is layer-based...
+	TrackSegmentFinder findTracksEcal = new TrackSegmentFinder("MSTCluster EMCal", "Track segments EMCal");
+	TrackSegmentFinder findTracksHcal = new TrackSegmentFinder("MSTCluster HCal", "Track segments HCal");
+	add(findTracksEcal);
+	add(findTracksHcal);
+
+	// Now, link them together across the ECAL-HCAL boundary:
+	MSTClusterDriver mstDriverLink = new MSTClusterDriver("User");
+	mstDriverLink.registerMetrics(hitHitDist);
+	mstDriverLink.setThreshold(50.0); // 5cm
+	mstDriverLink.addUserInputList("MSTCluster EMCal");
+	mstDriverLink.addUserInputList("MSTCluster HCal");
+	mstDriverLink.setClusterName("MSTCluster linked");
+	add(mstDriverLink);
+
+	// Special thing: Map MIPs to clusters correctly after this cluster linking...
+	Remapper remapTracks = new Remapper("MSTCluster linked", "Track segments linked");
+	remapTracks.addInputClusters("MSTCluster EMCal", "Track segments EMCal");
+	remapTracks.addInputClusters("MSTCluster HCal", "Track segments HCal");
+	add(remapTracks);
 
 	// Find clumps within clusters
 
 	// Run likelihood structural analysis
-	ClusterAssociator assoc = null;
-	if (writeLikelihood) {
-	    // Obtain and write likelihood histograms
-	    LikelihoodEvaluator eval = new LikelihoodEvaluator();
-	    LikelihoodFindingStructuralDriver likelihoodWriter = new LikelihoodFindingStructuralDriver(eval, assoc);
-	    add(likelihoodWriter);
-	} else {
-	    // Use pre-existing likelihood histograms to check clusters
-	    LikelihoodEvaluator eval = LikelihoodEvaluator.readFromFile("likelihood.bin");
-	    eval.addLikelihoodQuantityTrackToTrack(new TrackToTrackDOCA(), 10, 0.0, 5.0, false, true);
-	    eval.addLikelihoodQuantityTrackToTrack(new TrackToTrackPOCAInCalorimeter(), 2, -0.5, 1.5, false, false);
-	    eval.addLikelihoodQuantityTrackToTrack(new TrackToTrackSmallestDistanceToPOCA(), 5, 0.0, 5.0, false, true);
-	    eval.addLikelihoodQuantityTrackToTrack(new TrackToTrackIntermediateHitsCount(), 10, -0.5, 9.5, false, true);
-	    eval.addLikelihoodQuantityTrackToTrack(new TrackToTrackIntermediateHitsFraction(), 11, -0.05, 1.05, false, false);
-	    eval.addLikelihoodQuantityTrackToClump(new TrackToClumpDOCA(), 5, 0.0, 25.0, false, true);
-	    eval.addLikelihoodQuantityTrackToClump(new ClusterToClusterMinDistance(), 5, 0.0, 25.0, false, true);
-	    eval.addLikelihoodQuantityClumpToClump(new ClumpToClumpDOCA(), 5, 0.0, 50.0, false, true);
-	    eval.addLikelihoodQuantityClumpToClump(new ClusterToClusterMinDistance(), 5, 0.0, 50.0, false, true);
-	    
-	    LikelihoodLinkPlotterDriver likelihoodPlotter = new LikelihoodLinkPlotterDriver(eval, 0.5, 0.5, 0.5, assoc);
-	    likelihoodPlotter.initPlots("likelihoodPerformance.aida");
-	    add(likelihoodPlotter);
+	if (false) {
+	    ClusterAssociator assoc = null;
+	    if (writeLikelihood) {
+		// Obtain and write likelihood histograms
+		LikelihoodEvaluator eval = new LikelihoodEvaluator();
+		LikelihoodFindingStructuralDriver likelihoodWriter = new LikelihoodFindingStructuralDriver(eval, assoc);
+		add(likelihoodWriter);
+	    } else {
+		// Use pre-existing likelihood histograms to check clusters
+		LikelihoodEvaluator eval = LikelihoodEvaluator.readFromFile("likelihood.bin");
+		eval.addLikelihoodQuantityTrackToTrack(new TrackToTrackDOCA(), 10, 0.0, 5.0, false, true);
+		eval.addLikelihoodQuantityTrackToTrack(new TrackToTrackPOCAInCalorimeter(), 2, -0.5, 1.5, false, false);
+		eval.addLikelihoodQuantityTrackToTrack(new TrackToTrackSmallestDistanceToPOCA(), 5, 0.0, 5.0, false, true);
+		eval.addLikelihoodQuantityTrackToTrack(new TrackToTrackIntermediateHitsCount(), 10, -0.5, 9.5, false, true);
+		eval.addLikelihoodQuantityTrackToTrack(new TrackToTrackIntermediateHitsFraction(), 11, -0.05, 1.05, false, false);
+		eval.addLikelihoodQuantityTrackToClump(new TrackToClumpDOCA(), 5, 0.0, 25.0, false, true);
+		eval.addLikelihoodQuantityTrackToClump(new ClusterToClusterMinDistance(), 5, 0.0, 25.0, false, true);
+		eval.addLikelihoodQuantityClumpToClump(new ClumpToClumpDOCA(), 5, 0.0, 50.0, false, true);
+		eval.addLikelihoodQuantityClumpToClump(new ClusterToClusterMinDistance(), 5, 0.0, 50.0, false, true);
+		
+		LikelihoodLinkPlotterDriver likelihoodPlotter = new LikelihoodLinkPlotterDriver(eval, 0.5, 0.5, 0.5, assoc);
+		likelihoodPlotter.initPlots("likelihoodPerformance.aida");
+		add(likelihoodPlotter);
+	    }
 	}
     }
 

lcsim/src/org/lcsim/contrib/uiowa/structural
LikelihoodFindingStructuralDriver.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- LikelihoodFindingStructuralDriver.java	29 Sep 2005 21:04:48 -0000	1.1
+++ LikelihoodFindingStructuralDriver.java	1 Oct 2005 01:35:41 -0000	1.2
@@ -70,23 +70,17 @@
 	//}
     }
     
-    public Vector<Cluster> findTrackSegments(Cluster clus) {
-	// FIX: This should be done through a parameter instead of a hard-coded name
-	// FIX: This is just ugly.
-	List<Object> dummyObjectList = m_event.get(Object.class, "MapClustersToMIPs");
-	Object dummyObject = dummyObjectList.iterator().next();
-	Map<Cluster, Vector<Cluster> > mapClustersToMIPs = (Map<Cluster, Vector<Cluster> >) (dummyObject);
-        Vector<Cluster> vMIPs = mapClustersToMIPs.get(clus);
+    public List<Cluster> findTrackSegments(Cluster clus) {
+	List<MapClusterToListOfClusters> dummyList = m_event.get(MapClusterToListOfClusters.class, "[string goes here]");
+	Map<Cluster, List<Cluster>>mapClustersToMIPs = dummyList.iterator().next();
+        List<Cluster> vMIPs = mapClustersToMIPs.get(clus);
         return vMIPs;
     }
 
-    public Vector<Cluster> findClumps(Cluster clus) {
-	// FIX: This should be done through a parameter instead of a hard-coded name
-	// FIX: This is just ugly.
-	List<Object> dummyObjectList = m_event.get(Object.class, "MapClustersToClumps");
-	Object dummyObject = dummyObjectList.iterator().next();
-	Map<Cluster, Vector<Cluster> > mapClustersToClumps = (Map<Cluster, Vector<Cluster> >) (dummyObject);
-        Vector<Cluster> vClumps = mapClustersToClumps.get(clus);
+    public List<Cluster> findClumps(Cluster clus) {
+	List<MapClusterToListOfClusters> dummyList = m_event.get(MapClusterToListOfClusters.class, "[string goes here]");
+	Map<Cluster, List<Cluster>>mapClustersToClumps = dummyList.iterator().next();
+        List<Cluster> vClumps = mapClustersToClumps.get(clus);
         return vClumps;
     }
 
@@ -172,6 +166,6 @@
     public void initializeEvent() {}
     public void initializeBigCluster(Cluster bigClus) {}
     public void finalizeEvent() {}
-    public void finalizeBigCluster(Cluster bigClus, Vector<Cluster> vMIPs, Vector<Cluster> vClumps) {}
+    public void finalizeBigCluster(Cluster bigClus, List<Cluster> vMIPs, List<Cluster> vClumps) {}
 
 }

lcsim/src/org/lcsim/contrib/uiowa/structural
LikelihoodLinkDriver.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- LikelihoodLinkDriver.java	29 Sep 2005 21:04:48 -0000	1.1
+++ LikelihoodLinkDriver.java	1 Oct 2005 01:35:41 -0000	1.2
@@ -39,23 +39,17 @@
         return (clus.getCalorimeterHits().size() <= 10);
     }
     
-    public Vector<Cluster> findTrackSegments(Cluster clus) {
-	// FIX: This should be done through a parameter instead of a hard-coded name
-	// FIX: This is just ugly.
-	List<Object> dummyObjectList = m_event.get(Object.class, "MapClustersToMIPs");
-	Object dummyObject = dummyObjectList.iterator().next();
-	Map<Cluster, Vector<Cluster> > mapClustersToMIPs = (Map<Cluster, Vector<Cluster> >) (dummyObject);
-        Vector<Cluster> vMIPs = mapClustersToMIPs.get(clus);
+    public List<Cluster> findTrackSegments(Cluster clus) {
+	List<MapClusterToListOfClusters> dummyList = m_event.get(MapClusterToListOfClusters.class, "[string goes here]");
+	Map<Cluster, List<Cluster>>mapClustersToMIPs = dummyList.iterator().next();
+        List<Cluster> vMIPs = mapClustersToMIPs.get(clus);
         return vMIPs;
     }
     
-    public Vector<Cluster> findClumps(Cluster clus) {
-	// FIX: This should be done through a parameter instead of a hard-coded name
-	// FIX: This is just ugly.
-	List<Object> dummyObjectList = m_event.get(Object.class, "MapClustersToClumps");
-	Object dummyObject = dummyObjectList.iterator().next();
-	Map<Cluster, Vector<Cluster> > mapClustersToClumps = (Map<Cluster, Vector<Cluster> >) (dummyObject);
-        Vector<Cluster> vClumps = mapClustersToClumps.get(clus);
+    public List<Cluster> findClumps(Cluster clus) {
+	List<MapClusterToListOfClusters> dummyList = m_event.get(MapClusterToListOfClusters.class, "[string goes here]");
+	Map<Cluster, List<Cluster>>mapClustersToClumps = dummyList.iterator().next();
+        List<Cluster> vClumps = mapClustersToClumps.get(clus);
         return vClumps;
     }
 
@@ -93,9 +87,9 @@
     public void finalizeEvent() {
         //
     }
-    public void finalizeBigCluster(Cluster bigClus, Vector<Cluster> vMIPs, Vector<Cluster> vClumps) {
+    public void finalizeBigCluster(Cluster bigClus, List<Cluster> vMIPs, List<Cluster> vClumps) {
         // Merge links & clusters:
-        Vector<Cluster> vLinkedClusters = new Vector<Cluster>();
+        List<Cluster> vLinkedClusters = new Vector<Cluster>();
         Set<Cluster> unassignedClumps = new HashSet<Cluster>();
         Set<Cluster> unassignedMIPs = new HashSet<Cluster>();
         unassignedClumps.addAll(vClumps);
CVSspam 0.2.8