lcsim/src/org/lcsim/contrib/uiowa
diff -u -r1.28 -r1.29
--- NonTrivialPFA.java 20 Oct 2007 00:47:56 -0000 1.28
+++ NonTrivialPFA.java 10 Nov 2007 02:09:57 -0000 1.29
@@ -176,17 +176,13 @@
add (new MCFastTracking());
String fastMCTrackList = EventHeader.TRACKS;
- // Find tracks (really cheating)
- String cheatingTrackList = "Tracks_by_cheat";
- // THIS BREAKS SOMETHING ELSE DOWNSTREAM // add (new ImprovisedTrackCheater(mcListName, cheatingTrackList));
-
// Find tracks (cheating)
- String ronTrackList = "Tracks_by_ron";
+ String ronTrackList = "FSReconTracks";
String ronMCList = "ReconFSParticles";
add(new org.lcsim.contrib.Cassell.recon.Cheat.CheatReconDriver());
// Choose which track list to use
- boolean useRonTrackList = false;
+ boolean useRonTrackList = true;
if (useRonTrackList) {
trackList = ronTrackList;
mcListName = ronMCList;
@@ -206,7 +202,8 @@
{
// Muons
String prefix = "muonfinder__";
- addCheatingMuonFinder(prefix, eventHitMapEcal, eventHitMapHcal, trackList, eventMuonClusters, eventHitMapEcalWithoutMuons, eventHitMapHcalWithoutMuons, mcListName, eventTracksMinusMuons, eventMuonParticles);
+ //addCheatingMuonFinder(prefix, eventHitMapEcal, eventHitMapHcal, trackList, eventMuonClusters, eventHitMapEcalWithoutMuons, eventHitMapHcalWithoutMuons, mcListName, eventTracksMinusMuons, eventMuonParticles);
+ addEmptyMuonFinder(prefix, eventHitMapEcal, eventHitMapHcal, trackList, eventMuonClusters, eventHitMapEcalWithoutMuons, eventHitMapHcalWithoutMuons, mcListName, eventTracksMinusMuons, eventMuonParticles);
trackList = eventTracksMinusMuons; // CHANGES TRACK LIST (UGLY)
// Book-keeping
accountant.addListOfNamedLists( new String[] { eventHitMapEcalWithoutMuons, eventMuonClusters, eventHitMapHcalWithoutMuons } );
@@ -428,6 +425,7 @@
// OK! Now try again in a different way.
//add(new ReclusterDriver(mcListName, trackList, eventMuonParticles, eventPhotonClusters, eventSkeletonClusters, eventSmallClusters, eventUnusedHits, eventLargeClusters, eventMips, eventClumps, eventSplitSkeletonClusters, evalWrapper));
+ //add(new ParticleListToClusterListDriver("ReclusteredParticles", "ReclusteredClusters"));
}
// Make sure the book-keeping is OK:
@@ -521,6 +519,44 @@
add(new HitMapSubtractDriver(inputHitMapHcal, prefix+"TempMuonHitMap", outputHitMapHcal));
}
+ // This is a silly hack for now. The main thing is to ensure
+ // that the right output lists get created.
+ protected void addEmptyMuonFinder(String prefix, String inputHitMapEcal, String inputHitMapHcal, String inputTrackList, String outputMuonClusterList, String outputHitMapEcal, String outputHitMapHcal, String mcListName, String outputTrackList, String outputParticleList)
+ {
+ System.out.println("WARNING: Not using a muon finder");
+
+ // Nothing will pass this filter!
+ add(new ListFilterDriver(new ParticlePDGDecision(1393174826), mcListName, prefix+"MCParticlesMuonsOnly"));
+
+ List<String> inputHitMaps = new Vector<String>();
+ inputHitMaps.add(inputHitMapEcal);
+ inputHitMaps.add(inputHitMapHcal);
+ add(new HitMapAddDriver(inputHitMaps, prefix+"TempHitMap"));
+
+ org.lcsim.recon.cluster.cheat.PerfectClusterer myCheatMuonFinder = new org.lcsim.recon.cluster.cheat.PerfectClusterer();
+ myCheatMuonFinder.setInputHitMap(prefix+"TempHitMap");
+ myCheatMuonFinder.setOutputHitMap(prefix+"TempOutputHitMap");
+ myCheatMuonFinder.setOutputClusterList(prefix+"TempMuonClusterList");
+ myCheatMuonFinder.setMCParticleList(prefix+"MCParticlesMuonsOnly");
+ myCheatMuonFinder.allowHitSharing(false);
+ add(myCheatMuonFinder);
+
+ PerfectIdentifier id = new PerfectIdentifier();
+ id.setInputClusterList(prefix+"TempMuonClusterList");
+ id.setOutputParticleList(outputParticleList);
+ id.setMCParticleList(prefix+"MCParticlesMuonsOnly");
+ id.setInputTrackList(inputTrackList);
+ id.setOutputTrackList(outputTrackList);
+ id.requireTrack(true);
+ add(id);
+
+ // OK. Now go back and remove the hits from muons that were used
+ add(new ParticleListToClusterListDriver(outputParticleList, outputMuonClusterList));
+ add(new ClusterListToHitMapDriver(outputMuonClusterList, prefix+"TempMuonHitMap"));
+ add(new HitMapSubtractDriver(inputHitMapEcal, prefix+"TempMuonHitMap", outputHitMapEcal));
+ add(new HitMapSubtractDriver(inputHitMapHcal, prefix+"TempMuonHitMap", outputHitMapHcal));
+ }
+
protected void addRonPhotonFinder(String prefix, String inputHitMap, String outputPhotonClusterList, String outputHitMap)
{
org.lcsim.contrib.uiowa.RonPhotonFinder.RonPhotonFinderSid01 driver = new org.lcsim.contrib.uiowa.RonPhotonFinder.RonPhotonFinderSid01(inputHitMap, outputHitMap, outputPhotonClusterList);
@@ -715,7 +751,7 @@
// Link across the ECAL-HCAL boundary
MSTClusterDriver mstDriverLink = new MSTClusterDriver("User");
mstDriverLink.registerMetrics(new MinimumHitToHitDistance());
- mstDriverLink.setThreshold(50.0); // 5cm
+ mstDriverLink.setThreshold(70.0); // 7cm -- eyeballed to get good cross-boundary linkage.
mstDriverLink.addUserInputList(prefix+"mstClustersEcal");
mstDriverLink.addUserInputList(prefix+"mstClustersHcal");
mstDriverLink.setClusterName(prefix+"mstClustersLinked");
@@ -1013,27 +1049,6 @@
addMerger(mergeThese, outputList);
}
-
- // This belongs somewhere central
- private class ImprovisedTrackCheater extends Driver {
- String m_inputMCListName;
- String m_outputTrackListName;
- public ImprovisedTrackCheater(String inputMCList, String outputTrackList) {
- m_inputMCListName = inputMCList;
- m_outputTrackListName = outputTrackList;
- }
- protected void process(EventHeader event) {
- List<MCParticle> mcList = event.get(MCParticle.class, m_inputMCListName);
- List<Track> trackList = new Vector<Track>();
- for (MCParticle part : mcList) {
- if (part.getCharge() != 0) {
- BaseTrackMC track = new BaseTrackMC(part);
- trackList.add(track);
- }
- }
- event.put(m_outputTrackListName, trackList);
- }
- }
}