lcsim/src/org/lcsim/contrib/uiowa/structural
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
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
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);