lcsim/src/org/lcsim/contrib/uiowa
diff -u -r1.23 -r1.24
--- NonTrivialPFA.java 12 Oct 2007 21:47:19 -0000 1.23
+++ NonTrivialPFA.java 12 Oct 2007 23:30:01 -0000 1.24
@@ -83,9 +83,10 @@
// Calibration
// -----------
- // Ad-hoc calibration
- org.lcsim.contrib.uiowa.AdHocEnergyCalibration adHocCalib = new org.lcsim.contrib.uiowa.AdHocEnergyCalibration();
- add(adHocCalib);
+ // Ad-hoc calibration -- commented out since it can get confused by unexpected CM energies.
+ //org.lcsim.contrib.uiowa.AdHocEnergyCalibration adHocCalib = new org.lcsim.contrib.uiowa.AdHocEnergyCalibration();
+ //add(adHocCalib);
+
// Ron's calibrations
PhotonClusterEnergyCalculator ronPhotonCalib = new PhotonClusterEnergyCalculator();
GenericClusterEnergyCalculator ronGenericCalib = new GenericClusterEnergyCalculator();
@@ -231,8 +232,9 @@
// Find simple clusters
// --------------------
- String eventPhotonClusters = "photonClusters";
- String largePhotonParticleList = "largePhotonParticles";
+ String eventPhotonClusters = "photonClustersWithoutFragments";
+ String eventPhotonClustersWithFragments = "photonClusters";
+ String eventLargePhotonParticleList = "largePhotonParticles";
String eventHitMapEcalWithoutPhotons = "hitMapEcalWithoutPhotons";
{
// Photons
@@ -247,11 +249,8 @@
} else {
addPhotonFinder(prefix, eventHitMapEcal, inputTrackList, eventPhotonClusters, eventHitMapEcalWithoutPhotons);
}
- prefix = "photonmaker__";
- addPhotonParticleMaker(prefix, eventPhotonClusters, largePhotonParticleList, ronPhotonCalib);
// Book-keeping
accountant.addListOfNamedLists( new String[] { eventHitMapEcalWithoutPhotons, eventPhotonClusters, eventHitMapHcal } );
- accountant.addListOfNamedLists( new String[] { eventHitMapEcalWithoutPhotons, largePhotonParticleList, eventHitMapHcal } );
}
@@ -413,33 +412,34 @@
CheatFragmentIdentifier fragIDCheat = setUpCheatFragmentIdentifier("cheatid__", eventHaloMinusPhotonClusters, eventSmallClustersNotPhotons, eventUnusedHitsMinusHalo, mcListName);
boolean cheatOnFragments = false;
+ String eventHadronParticles = "HadronParticles";
String eventOutputParticles = "UnflushedPFAReconstructedParticles";
String prefixHadronsMain = "merge_ron_ron__";
- if (cheatOnFragments) {
- addHadronFinders(prefixHadronsMain, eventOutputParticles, fragIDCheat, fragMerge, eventMips, eventHaloMinusPhotonClusters, eventSmallClustersNotPhotons, trackList, eventSmallPhotonParticles, largePhotonParticleList, ronNeutralHadronCalib, ronNeutralHadronCalib, false, mcListName, eventUnusedHitsMinusHalo);
- } else {
- addHadronFinders(prefixHadronsMain, eventOutputParticles, fragID, fragMerge, eventMips, eventHaloMinusPhotonClusters, eventSmallClustersNotPhotons, trackList, eventSmallPhotonParticles, largePhotonParticleList, ronNeutralHadronCalib, ronChargedHadronCalib, false, mcListName, eventUnusedHitsMinusHalo);
+ {
+ FragmentIdentifier idToUse = fragID;
+ if (cheatOnFragments) { idToUse = fragIDCheat; }
+ addHadronFinders(prefixHadronsMain, eventHadronParticles, idToUse, fragMerge, eventMips, eventHaloMinusPhotonClusters, eventSmallClustersNotPhotons, trackList, ronNeutralHadronCalib, ronNeutralHadronCalib, false, mcListName, eventUnusedHitsMinusHalo, eventPhotonClusters, eventPhotonClustersWithFragments);
}
+ // Make particle lists
+ prefix = "photonmaker__";
+ addPhotonParticleMaker(prefix, eventPhotonClustersWithFragments, eventLargePhotonParticleList, ronPhotonCalib);
+
+ String[] mergeThese = { eventHadronParticles, eventLargePhotonParticleList, eventSmallPhotonParticles } ;
+ addMerger(mergeThese, eventOutputParticles);
+
// Flush the output list to make sure it's LCIO-compatible
String eventOutputParticlesFlushed = "PFAReconstructedParticles";
String eventOutputClustersFromFlushedParticles = "flushedClusters";
add(new FlushReconstructedParticlesDriver(eventOutputParticles, eventOutputParticlesFlushed, eventOutputClustersFromFlushedParticles));
- // Optionally, other hadron finders with various calibrations etc:
- //addHadronFinders("nomerge_ron_ron__", eventOutputParticles+"_noFragMerge", fragID, fragNoMerge, eventMips, eventHaloMinusPhotonClusters, eventSmallClustersNotPhotons, trackList, eventSmallPhotonParticles, largePhotonParticleList, ronNeutralHadronCalib, ronChargedHadronCalib, false);
- //addHadronFinders("merge_ron_adhoc__", eventOutputParticles+"_adhocEoverP", fragID, fragMerge, eventMips, eventHaloMinusPhotonClusters, eventSmallClustersNotPhotons, trackList, eventSmallPhotonParticles, largePhotonParticleList, ronNeutralHadronCalib, adHocCalib, false);
- //addHadronFinders("nomerge_ron_adhoc__", eventOutputParticles+"_noFragMerge_adhocEoverP", fragID, fragNoMerge, eventMips, eventHaloMinusPhotonClusters, eventSmallClustersNotPhotons, trackList, eventSmallPhotonParticles, largePhotonParticleList, ronNeutralHadronCalib, adHocCalib, false);
- //addHadronFinders("merge_adhoc_adhoc__", eventOutputParticles+"_adhoc", fragID, fragMerge, eventMips, eventHaloMinusPhotonClusters, eventSmallClustersNotPhotons, trackList, eventSmallPhotonParticles, largePhotonParticleList, adHocCalib, adHocCalib, false);
- //addHadronFinders("nomerge_adhoc_adhoc__", eventOutputParticles+"_noFragMerge_adhoc", fragID, fragNoMerge, eventMips, eventHaloMinusPhotonClusters, eventSmallClustersNotPhotons, trackList, eventSmallPhotonParticles, largePhotonParticleList, adHocCalib, adHocCalib, false);
-
// Now try to be a bit smarter. We can try to handle the cases where >1 track is connected to a cluster.
// Currently buggy -- not stable enough to use in production yet.
//add(new HandleMultiTrackClusters(eventOutputParticles, "all particles (ron calib) -- one track per cluster" ));
// Book-keeping
// Need to be smarter about this bit:
- accountant.addListOfNamedLists( new String[] { eventSmallPhotonParticles, largePhotonParticleList, "merge_ron_ron__neutralHadronParticles", "merge_ron_ron__chargedHadronParticlesAfterFragmentHandling" } );
+ accountant.addListOfNamedLists( new String[] { eventSmallPhotonParticles, eventLargePhotonParticleList, "merge_ron_ron__neutralHadronParticles", "merge_ron_ron__chargedHadronParticlesAfterFragmentHandling" } );
accountant.addListOfNamedLists( new String[] { eventOutputParticlesFlushed } );
}
@@ -884,7 +884,7 @@
add(smallPhotonMaker);
}
- protected void addFragmentHandling(String prefix, FragmentIdentifier fragID, FragmentMerger fragMerge, String haloMinusPhotonClusterList, String smallClusterMinusPhotonClusterList, String outputClusterList, String outputHitMap, String inputHitMap)
+ protected void addFragmentHandling(String prefix, FragmentIdentifier fragID, FragmentMerger fragMerge, String haloMinusPhotonClusterList, String smallClusterMinusPhotonClusterList, String outputClusterList, String outputHitMap, String inputHitMap, String inputLargePhotonClusterList, String outputLargePhotonClusterList)
{
FragmentHandler fragDriver = new FragmentHandler();
fragDriver.addInputClusterList(haloMinusPhotonClusterList);
@@ -895,6 +895,7 @@
fragDriver.setFragmentIdentifier(fragID);
fragDriver.setFragmentMerger(fragMerge);
fragDriver.setAllowAllFragments(false);
+ fragDriver.addInputSeparateNonfragmentClusterList(inputLargePhotonClusterList, outputLargePhotonClusterList);
add(fragDriver);
}
@@ -952,18 +953,18 @@
String haloMinusPhotonClusterList,
String smallClusterMinusPhotonClusterList,
String trackList,
- String smallPhotonParticleList,
- String largePhotonParticleList,
ClusterEnergyCalculator calibration,
ClusterEnergyCalculator calibrationForEoverP,
boolean trackDebug,
String mcListName,
- String inputHitMapName)
+ String inputHitMapName,
+ String inputLargePhotonClusterList,
+ String outputLargePhotonClusterList)
{
// Fragment handling
String clusterList = prefix+"clustersAfterFragmentHandling";
String hitMap = prefix+"hitsLeftOverAfterFragmentHandling";
- addFragmentHandling(prefix+"FragmentHandling__", fragID, fragMerge, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, clusterList, hitMap, inputHitMapName);
+ addFragmentHandling(prefix+"FragmentHandling__", fragID, fragMerge, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, clusterList, hitMap, inputHitMapName, inputLargePhotonClusterList, outputLargePhotonClusterList);
// Repeat the hadron ID step with the revised cluster list after fragment handling
String tempChargedParticleList = prefix+"chargedHadronParticlesAfterFragmentHandling";
@@ -981,9 +982,9 @@
System.out.println(prefix+": Will write out neutral particles as '"+tempNeutralParticleList+"'");
}
- // Make particle lists
- String[] mergeThese = { tempChargedParticleList, tempNeutralParticleList, largePhotonParticleList, smallPhotonParticleList } ;
+ String[] mergeThese = { tempChargedParticleList, tempNeutralParticleList };
addMerger(mergeThese, outputList);
+
}
// This belongs somewhere central