lcsim/src/org/lcsim/contrib/uiowa
diff -u -r1.6 -r1.7
--- NonTrivialPFA.java 23 Apr 2007 22:33:35 -0000 1.6
+++ NonTrivialPFA.java 24 Apr 2007 01:14:46 -0000 1.7
@@ -183,6 +183,7 @@
// Find simple clusters
// --------------------
+ String largePhotonParticleList = "large photon particles (ron calib)";
{
// Photons
String prefix = "photonfinder: ";
@@ -192,14 +193,10 @@
String outputHitMap = "hit map ecal without photons";
addPhotonFinder(prefix, inputHitMap, inputTrackList, photonClusterList, outputHitMap);
prefix = "photonmaker: ";
- String photonParticleList_adhoc = "large photon particles (adhoc calib)";
- String photonParticleList_RonCalib = "large photon particles (ron calib)";
- addPhotonParticleMaker(prefix, photonClusterList, photonParticleList_adhoc, adHocCalib);
- addPhotonParticleMaker(prefix, photonClusterList, photonParticleList_RonCalib, ronPhotonCalib);
+ addPhotonParticleMaker(prefix, photonClusterList, largePhotonParticleList, ronPhotonCalib);
// Book-keeping
accountant.addListOfNamedLists( new String[] { "hit map ecal without photons", "photon clusters", "input hit map hcal" } );
- accountant.addListOfNamedLists( new String[] { "hit map ecal without photons", photonParticleList_adhoc, "input hit map hcal" } );
- accountant.addListOfNamedLists( new String[] { "hit map ecal without photons", photonParticleList_RonCalib, "input hit map hcal" } );
+ accountant.addListOfNamedLists( new String[] { "hit map ecal without photons", largePhotonParticleList, "input hit map hcal" } );
}
@@ -308,66 +305,34 @@
String tempParticleList = "charged hadron particles";
prefix = "firstpasstrackmatcher: ";
addTrackMatcher(prefix, trackList, inputMIPList, haloClusterList, smallClusterList, tempParticleList, false, null, false); // Check: "trackList" ?
-
+
// Look for teeny clusters near front of ECAL (soft photons)
prefix = "smallphotonfinder: ";
- String smallPhotonParticleList_adhoc = "small photons (adhoc calib)";
- String smallPhotonParticleList_RonCalib = "small photons (ron calib)";
+ String smallPhotonParticleList = "small photons (ron calib)";
String haloMinusPhotonClusterList = "skeletons plus halo minus small photons";
String smallClusterMinusPhotonClusterList = "mst clusters linked (<10 hits) minus small photons";
String smallPhotonClusterList = "small photon clusters";
SimpleFragmentIdentifier fragID = new SimpleFragmentIdentifier(10, 100.0);
fragID.addParticleList(tempParticleList);
addSmallPhotonClusterFinder(prefix, fragID, haloClusterList, smallClusterList, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, smallPhotonClusterList);
- addSmallPhotonParticleFinder(prefix+"adhoc: ",smallPhotonClusterList,smallPhotonParticleList_adhoc,adHocCalib);
- addSmallPhotonParticleFinder(prefix+"ron: ",smallPhotonClusterList,smallPhotonParticleList_RonCalib,ronPhotonCalib);
+ addSmallPhotonParticleFinder(prefix+"ron: ",smallPhotonClusterList,smallPhotonParticleList,ronPhotonCalib);
- // Merge/handle fragments
+ // Support classes to merge/handle fragments
SimpleFragmentMerger fragMerge = new SimpleFragmentMerger();
DropFragments fragNoMerge = new DropFragments();
CheatFragmentIdentifier fragMergeCheat = setUpCheatFragmentIdentifier("cheatid: ", haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, unusedHitMap2, mcListName);
- String tempClusterListMerge = "clusters with fragments merged";
- String tempClusterListNoMerge = "clusters with fragments not merged";
- String tempHitMapMerge = "hits left over after fragments merged";
- String tempHitMapNoMerge = "hits left over after fragments not merged";
- prefix = "fragmerge: ";
- addFragmentHandling(prefix, fragID, fragMerge, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, tempClusterListMerge, tempHitMapMerge);
- addFragmentHandling(prefix, fragID, fragNoMerge, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, tempClusterListNoMerge, tempHitMapNoMerge);
-
- // Repeat the hadron ID step with the revised cluster list after fragment handling
- prefix = "trackmatchsecondpass: ";
- String tempChargedParticleListMerge = "charged hadron particles 2";
- String tempChargedParticleListNoMerge = "charged hadron particles 2 [no merge]";
- addTrackMatcher(prefix+"adhoc/merge", trackList, inputMIPList, tempClusterListMerge, null, tempChargedParticleListMerge, true, adHocCalib, false); // Check: "trackList" ?
- addTrackMatcher(prefix+"adhoc/nomerge", trackList, inputMIPList, tempClusterListNoMerge, null, tempChargedParticleListNoMerge, true, adHocCalib, false); // Check: "trackList" ?
-
- // ... and then any remaining clusters should be neutral
- String tempNeutralParticleListMerge_adhoc = "neutral hadron particles (adhoc calib)";
- String tempNeutralParticleListNoMerge_adhoc = "neutral hadron particles [no merge] (adhoc calib)";
- String tempNeutralParticleListMerge_RonCalib = "neutral hadron particles (ron calib)";
- String tempNeutralParticleListNoMerge_RonCalib = "neutral hadron particles [no merge] (ron calib)";
- prefix = "neutrals: ";
- addNeutralHadronHandler(prefix+"adhoc/merge: ", tempChargedParticleListMerge, tempClusterListMerge, tempNeutralParticleListMerge_adhoc, adHocCalib);
- addNeutralHadronHandler(prefix+"adhoc/nomerge: ", tempChargedParticleListNoMerge, tempClusterListNoMerge, tempNeutralParticleListNoMerge_adhoc, adHocCalib);
- addNeutralHadronHandler(prefix+"ron/merge: ", tempChargedParticleListMerge, tempClusterListMerge, tempNeutralParticleListMerge_RonCalib, ronNeutralHadronCalib);
- addNeutralHadronHandler(prefix+"ron/nomerge: ", tempChargedParticleListNoMerge, tempClusterListNoMerge, tempNeutralParticleListNoMerge_RonCalib, ronNeutralHadronCalib);
-
- // Make particle lists
- String largePhotonParticleList_adhoc = "large photon particles (adhoc calib)";
- String[] particleListsMerge_adhoc = { tempChargedParticleListMerge, tempNeutralParticleListMerge_adhoc, largePhotonParticleList_adhoc, smallPhotonParticleList_adhoc } ;
- String[] particleListsNoMerge_adhoc = { tempChargedParticleListNoMerge, tempNeutralParticleListNoMerge_adhoc, largePhotonParticleList_adhoc, smallPhotonParticleList_adhoc } ;
- String combinedParticleListMerge_adhoc = "all particles (adhoc calib)";
- String combinedParticleListNoMerge_adhoc = "all particles [no frag merge] (adhoc calib)";
- addMerger(particleListsMerge_adhoc, combinedParticleListMerge_adhoc);
- addMerger(particleListsNoMerge_adhoc, combinedParticleListNoMerge_adhoc);
- // And with Ron's calibration:
- String largePhotonParticleList_RonCalib = "large photon particles (ron calib)";
- String[] particleListsMerge_RonCalib = { tempChargedParticleListMerge, tempNeutralParticleListMerge_RonCalib, largePhotonParticleList_RonCalib, smallPhotonParticleList_RonCalib } ;
- String[] particleListsNoMerge_RonCalib = { tempChargedParticleListNoMerge, tempNeutralParticleListNoMerge_RonCalib, largePhotonParticleList_RonCalib, smallPhotonParticleList_RonCalib } ;
- String combinedParticleListMerge_RonCalib = "all particles (ron calib)";
- String combinedParticleListNoMerge_RonCalib = "all particles [no frag merge] (ron calib)";
- addMerger(particleListsMerge_RonCalib, combinedParticleListMerge_RonCalib);
- addMerger(particleListsNoMerge_RonCalib, combinedParticleListNoMerge_RonCalib);
+
+ // Now we can fork according to what calibration/options we want to use.
+ addHadronFinders("merge/ron/ron: ", "all particles (ron calib)", fragID, fragMerge, inputMIPList, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, trackList, smallPhotonParticleList, largePhotonParticleList, ronNeutralHadronCalib, ronNeutralHadronCalib);
+ addHadronFinders("nomerge/ron/ron: ", "all particles [no frag merge] (ron calib)", fragID, fragNoMerge, inputMIPList, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, trackList, smallPhotonParticleList, largePhotonParticleList, ronNeutralHadronCalib, ronNeutralHadronCalib);
+ addHadronFinders("merge/ron/adhoc: ", "all particles (ron calib, adhoc calib for E/p)", fragID, fragMerge, inputMIPList, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, trackList, smallPhotonParticleList, largePhotonParticleList, ronNeutralHadronCalib, adHocCalib);
+ addHadronFinders("nomerge/ron/adhoc: ", "all particles [no frag merge] (ron calib, adhoc calib for E/p)", fragID, fragNoMerge, inputMIPList, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, trackList, smallPhotonParticleList, largePhotonParticleList, ronNeutralHadronCalib, adHocCalib);
+ addHadronFinders("merge/adhoc/adhoc: ", "all particles (adhoc calib)", fragID, fragMerge, inputMIPList, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, trackList, smallPhotonParticleList, largePhotonParticleList, adHocCalib, adHocCalib);
+ addHadronFinders("nomerge/adhoc/adhoc: ", "all particles [no frag merge] (adhoc calib)", fragID, fragNoMerge, inputMIPList, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, trackList, smallPhotonParticleList, largePhotonParticleList, adHocCalib, adHocCalib);
+
+ // Make sure lists are accessible to Ron using old names.
+ add(new ListFilterDriver(new DummyDecisionMakerSingle<ReconstructedParticle>(), "merge/ron/ron: neutral hadron particles", "neutral hadron particles (ron calib)"));
+ add(new ListFilterDriver(new DummyDecisionMakerSingle<ReconstructedParticle>(), "merge/ron/ron: charged hadron particles after fragment handling", "charged hadron particles 2"));
}
// Make sure the book-keeping is OK:
@@ -885,4 +850,37 @@
mergeParticles.setOutputList(outputParticleList);
add(mergeParticles);
}
+
+ protected void addHadronFinders(String prefix,
+ String outputList,
+ FragmentIdentifier fragID,
+ FragmentMerger fragMerge,
+ String inputMIPList,
+ String haloMinusPhotonClusterList,
+ String smallClusterMinusPhotonClusterList,
+ String trackList,
+ String smallPhotonParticleList,
+ String largePhotonParticleList,
+ ClusterEnergyCalculator calibration,
+ ClusterEnergyCalculator calibrationForEoverP)
+ {
+ // Fragment handling
+ String clusterList = prefix+"clusters after fragment handling";
+ String hitMap = prefix+"hits left over after fragment handling";
+ addFragmentHandling(prefix+"FragmentHandling: ", fragID, fragMerge, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, clusterList, hitMap);
+
+ // Repeat the hadron ID step with the revised cluster list after fragment handling
+ String tempChargedParticleList = prefix+"charged hadron particles after fragment handling";
+ addTrackMatcher(prefix+"FindCharged: ", trackList, inputMIPList, clusterList, null, tempChargedParticleList, true, calibrationForEoverP, false);
+ System.out.println(prefix+": Will write out charged particles as '"+tempChargedParticleList+"'");
+
+ // ... and then any remaining clusters should be neutral
+ String tempNeutralParticleList = prefix+"neutral hadron particles";
+ addNeutralHadronHandler(prefix+"FindNeutral: ", tempChargedParticleList, clusterList, tempNeutralParticleList, calibration);
+ System.out.println(prefix+": Will write out neutral particles as '"+tempNeutralParticleList+"'");
+
+ // Make particle lists
+ String[] mergeThese = { tempChargedParticleList, tempNeutralParticleList, largePhotonParticleList, smallPhotonParticleList } ;
+ addMerger(mergeThese, outputList);
+ }
}