lcsim/src/org/lcsim/contrib/uiowa
diff -u -r1.8 -r1.9
--- MinimalRunPFA.java 16 Oct 2008 18:32:23 -0000 1.8
+++ MinimalRunPFA.java 21 Oct 2008 23:05:48 -0000 1.9
@@ -27,6 +27,17 @@
public MinimalRunPFA() {
// Prepare to run PFA: Tracks (includes DigiSim)
add(new org.lcsim.contrib.Cassell.recon.Cheat.CheatReconDriver());
+ // Prepare by filtering muon system hits
+ {
+ DecisionMakerSingle<CalorimeterHit> upperLayer = new UpperSubLayerDecision();
+ DecisionMakerSingle<CalorimeterHit> lowerLayer = new NotDecisionMakerSingle(upperLayer);
+ DecisionMakerSingle<CalorimeterHit> timeCut = new CalorimeterHitTimeCutDecision(100);
+ AndDecisionMakerSingle<CalorimeterHit> lowerLayerAndTimeCut = new AndDecisionMakerSingle<CalorimeterHit>();
+ lowerLayerAndTimeCut.addDecisionMaker(lowerLayer);
+ lowerLayerAndTimeCut.addDecisionMaker(timeCut);
+ add(new ListFilterDriver(lowerLayerAndTimeCut, "MuonBarrHits", "CorrMuonBarrDigiHits", CalorimeterHit.class));
+ add(new ListFilterDriver(lowerLayerAndTimeCut, "MuonEndcapHits", "CorrMuonEndcapDigiHits", CalorimeterHit.class));
+ }
// Prepare to run PFA: Photon-finding and DirectedTree
List<String> recoHitLists = new Vector<String>(); // Hits to use in main clustering
List<String> allHitLists = new Vector<String>(); // All hits (used in muon-finding)
@@ -35,10 +46,10 @@
recoHitLists.add("EcalEndcapDigiHits");
recoHitLists.add("HcalBarrDigiHits");
recoHitLists.add("HcalEndcapDigiHits");
- recoHitLists.add("MuonEndcapDigiHits");
+ recoHitLists.add("CorrMuonEndcapDigiHits");
allHitLists.addAll(recoHitLists);
- allHitLists.add("MuonBarrDigiHits");
- mstHitLists.add("MuonEndcapDigiHits");
+ allHitLists.add("CorrMuonBarrDigiHits");
+ mstHitLists.add("CorrMuonEndcapDigiHits");
//HelixExtrapolator findCluster = new org.lcsim.recon.pfa.identifier.TrackHelixPlusHitExtrapolator();
HelixExtrapolator findCluster = new org.lcsim.recon.pfa.identifier.LocalHelixExtrapolator();
add(findCluster);
lcsim/src/org/lcsim/contrib/uiowa
diff -u -r1.58 -r1.59
--- ReclusterDTreeDriver.java 16 Oct 2008 00:32:22 -0000 1.58
+++ ReclusterDTreeDriver.java 21 Oct 2008 23:05:48 -0000 1.59
@@ -35,7 +35,7 @@
* in this package, which uses the implementation in
* org.lcsim.recon.cluster.directedtree developed by NIU).
*
- * @version $Id: ReclusterDTreeDriver.java,v 1.58 2008/10/16 00:32:22 mcharles Exp $
+ * @version $Id: ReclusterDTreeDriver.java,v 1.59 2008/10/21 23:05:48 mcharles Exp $
* @author Mat Charles <[log in to unmask]>
*/
@@ -163,10 +163,10 @@
List<CalorimeterHit> allHitsMcalEndcap = null;
List<CalorimeterHit> allHitsFcalEndcap = null;
if (m_useMucalBarrel) {
- allHitsMcalBarrel = m_event.get(CalorimeterHit.class, "MuonBarrDigiHits");
+ allHitsMcalBarrel = m_event.get(CalorimeterHit.class, "CorrMuonBarrDigiHits");
}
if (m_useMucalEndcap) {
- allHitsMcalEndcap = m_event.get(CalorimeterHit.class, "MuonEndcapDigiHits");
+ allHitsMcalEndcap = m_event.get(CalorimeterHit.class, "CorrMuonEndcapDigiHits");
}
if (m_useFcal) {
allHitsFcalEndcap = m_event.get(CalorimeterHit.class, "ForwardEcalEndcapDigiHits");
@@ -1321,7 +1321,7 @@
} else if (hitFCAL && m_useFcal) {
leftoverHitClustersToShareFCAL.add(tmpClus);
} else {
- throw new AssertionError("Unknown subdetector");
+ throw new AssertionError("Unknown subdetector: "+hit.getSubdetector().getName());
}
}
} else {
@@ -1613,6 +1613,7 @@
allParticles.addAll(neutralHadronParticles);
allParticles.addAll(photonParticles);
allParticles.addAll(missedChargedParticles);
+ checkForDuplicateHitsInParticles(allParticles);
m_event.put(m_outputParticleListName, allParticles);
m_event = null;
@@ -4884,6 +4885,14 @@
}
}
+ void checkForDuplicateHitsInParticles(Collection<ReconstructedParticle> particles) {
+ List<Cluster> clusters = new Vector<Cluster>();
+ for (ReconstructedParticle part : particles) {
+ clusters.addAll(part.getClusters());
+ }
+ checkForDuplicateHitsInClusters(clusters);
+ }
+
void checkForDuplicateHitsInClusters(Collection<Cluster> clusters) {
Set<CalorimeterHit> allUsedHits = new HashSet<CalorimeterHit>();
List<CalorimeterHit> allUsedHitsList = new Vector<CalorimeterHit>();