lcsim/src/org/lcsim/contrib/uiowa
diff -u -r1.1 -r1.2
--- MinimalRunPFA.java 17 Dec 2007 22:32:45 -0000 1.1
+++ MinimalRunPFA.java 31 May 2008 01:16:06 -0000 1.2
@@ -10,20 +10,180 @@
import org.lcsim.recon.cluster.structural.likelihood.LikelihoodEvaluatorWrapper;
import org.lcsim.recon.cluster.directedtree.*;
import org.lcsim.util.hitmap.*;
+import org.lcsim.recon.pfa.output.EnergySumPlotter;
+import org.lcsim.recon.cluster.util.*;
+import org.lcsim.event.util.*;
+import org.lcsim.digisim.*;
+import org.lcsim.mc.fast.tracking.*;
public class MinimalRunPFA extends Driver
{
- public MinimalRunPFA() {
- add(new org.lcsim.contrib.uiowa.NonTrivialPFA(false)); // Run the PFA, output is a List<ReconstructedParticle> named "PFAReconstructedParticles"
- org.lcsim.contrib.uiowa.ReclusterDriver reclus = new org.lcsim.contrib.uiowa.ReclusterDriver("ReconFSParticles", "FSReconTracks", "muonParticles", "photonClustersWithoutFragments", "skeletons", "MSTClustersLinkedWithFewerThanTenHits", "structuralUnusedHits", "MSTClustersLinkedWithTenOrMoreHits", "mips", "clumps", "splitSkeletons", new LikelihoodEvaluatorWrapper());
- //reclus.setDebug(true);
- add(reclus);
- setupDTree();
- add(new ReclusterDTreeDriver("DTreeClusters", "FSReconTracks", "ReconFSParticles"));
+ boolean requireAcceptance = true;
+ boolean useOldRonPhotonFinder = false;
+ public MinimalRunPFA() {
+ //substituteSetup(); requireAcceptance = false;
+ add(new org.lcsim.contrib.uiowa.NonTrivialPFA()); // Run the PFA, output is a List<ReconstructedParticle> named "PFAReconstructedParticles"
+ add(new org.lcsim.contrib.uiowa.SetUpDTreeForReclustering());
+ ReclusterDTreeDriver reclusTree = new ReclusterDTreeDriver("DTreeClusters", "FSReconTracks", "ReconFSParticles");
+ add(reclusTree);
+ //reclusTree.setDebug(true);
+ ReclusterDTreeDriverTimeCut testTimeCutDriver = new ReclusterDTreeDriverTimeCut("DTreeClustersTimeCut", "FSReconTracks", "ReconFSParticles");
+ add(testTimeCutDriver);
+ writeOutMini();
checkPerf();
}
+ void writeOutMini() {
+ // Flush things for output
+ add(new FlushReconstructedParticlesDriver("UnflushedPFAReconstructedParticles", "PFAReconstructedParticles", "flushedClusters"));
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles", "Flushed_DTreeReclusteredParticles", "FlushedClusters_DTreeReclusteredParticles"));
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_forConfusionMatrix", "Flushed_DTreeReclusteredParticles_forConfusionMatrix", "FlushedClusters_DTreeReclusteredParticles_forConfusionMatrix"));
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_jetsOnly", "Flushed_DTreeReclusteredParticles_jetsOnly", "FlushedClusters_DTreeReclusteredParticles_jetsOnly"));
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_unusedHits", "Flushed_DTreeReclusteredParticles_unusedHits", "FlushedClusters_DTreeReclusteredParticles_unusedHits"));
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_chargedPassingEoverPveto", "Flushed_DTreeReclusteredParticles_chargedPassingEoverPveto", "FlushedClusters_DTreeReclusteredParticles_chargedPassingEoverPveto"));
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_chargedFailingEoverPveto", "Flushed_DTreeReclusteredParticles_chargedFailingEoverPveto", "FlushedClusters_DTreeReclusteredParticles_chargedFailingEoverPveto"));
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_debugEoverP", "Flushed_DTreeReclusteredParticles_debugEoverP", "FlushedClusters_DTreeReclusteredParticles_debugEoverP"));
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_debugEoverP_punchThrough", "Flushed_DTreeReclusteredParticles_debugEoverP_punchThrough", "FlushedClusters_DTreeReclusteredParticles_debugEoverP_punchThrough"));
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_debugEoverP_noPunchThrough", "Flushed_DTreeReclusteredParticles_debugEoverP_noPunchThrough", "FlushedClusters_DTreeReclusteredParticles_debugEoverP_noPunchThrough"));
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_debugEoverP_oldCalib", "Flushed_DTreeReclusteredParticles_debugEoverP_oldCalib", "FlushedClusters_DTreeReclusteredParticles_debugEoverP_oldCalib"));
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_debugEoverP_punchThrough_oldCalib", "Flushed_DTreeReclusteredParticles_debugEoverP_punchThrough_oldCalib", "FlushedClusters_DTreeReclusteredParticles_debugEoverP_punchThrough_oldCalib"));
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_debugEoverP_noPunchThrough_oldCalib", "Flushed_DTreeReclusteredParticles_debugEoverP_noPunchThrough_oldCalib", "FlushedClusters_DTreeReclusteredParticles_debugEoverP_noPunchThrough_oldCalib"));
+
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_photonLikePhotons", "Flushed_DTreeReclusteredParticles_photonLikePhotons", "FlushedClusters_DTreeReclusteredParticles_photonLikePhotons"));
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_chargedHadronLikePhotons", "Flushed_DTreeReclusteredParticles_chargedHadronLikePhotons", "FlushedClusters_DTreeReclusteredParticles_chargedHadronLikePhotons"));
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_electronClusters", "Flushed_DTreeReclusteredParticles_electronClusters", "FlushedClusters_DTreeReclusteredParticles_electronClusters"));
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_seedHadronLikePhotonClusters", "Flushed_DTreeReclusteredParticles_seedHadronLikePhotonClusters", "FlushedClusters_DTreeReclusteredParticles_seedHadronLikePhotonClusters"));
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_nonSeedHadronLikePhotonClusters", "Flushed_DTreeReclusteredParticles_nonSeedHadronLikePhotonClusters", "FlushedClusters_DTreeReclusteredParticles_nonSeedHadronLikePhotonClusters"));
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_nonSeedPhotonLikePhotonClusters", "Flushed_DTreeReclusteredParticles_nonSeedPhotonLikePhotonClusters", "FlushedClusters_DTreeReclusteredParticles_nonSeedPhotonLikePhotonClusters"));
+
+ // New -- test
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredTimeCutParticles", "Flushed_DTreeReclusteredTimeCutParticles", "FlushedClusters_DTreeReclusteredTimeCutParticles"));
+ add(new FlushReconstructedParticlesDriver("DTreeReclusteredTimeCutParticles_forConfusionMatrix", "Flushed_DTreeReclusteredTimeCutParticles_forConfusionMatrix", "FlushedClusters_DTreeReclusteredTimeCutParticles_forConfusionMatrix"));
+
+
+ //
+ Vector<String> v = new Vector<String>();
+ v.add("TkrEndcapHits");
+ v.add("EcalEndcapDigiHitsCheatClusters");
+ v.add("smallphotonfinder__smallPhotonClusters2");
+ //v.add("MSTClustersLinkedWithTenOrMoreHits");
+ v.add("VtxBarrHits");
+ v.add("HcalBarrRaw2sim");
+ v.add("merge_ron_ron__clustersAfterFragmentHandling");
+ //v.add("HcalEndcapHits");
+ v.add("hadronclusterfinder__mstClustersHcal");
+ v.add("VtxEndcapHits");
+ v.add("haloMinusSmallPhotons");
+ v.add("MCParticleEndPointEnergy");
+ v.add("firstpasstrackmatcher__smallLinkedClustersMinusChargedParticlesFromMips");
+ v.add("hadronclusterfinder__mstClustersLinked");
+ v.add("transientChargedHadronParticles");
+ //v.add("smallPhotonClusters");
+ v.add("TracksToMCP");
+ v.add("TkrForwardHits");
+ v.add("LuminosityMonitorHits");
+ v.add("jetOutput__PFAReconstructedParticles");
+ //v.add("EcalEndcapHits");
+ v.add("TkrForwardHitsCheatTrackerHits");
+ //v.add("skeletonsPlusHalo");
+ //v.add("splitSkeletons");
+ v.add("TkrBarrHitsCheatTrackerHits");
+ v.add("HcalEndcapRaw2sim");
+ v.add("firstpasstrackmatcher__skeletonsPlusHaloMinusChargedParticlesFromMips");
+ v.add("EcalEndcapRaw2sim");
+ v.add("firstpasstrackmatcher__leftoverTracks");
+ v.add("firstpasstrackmatcher__unmatchedMips");
+ //v.add("MuonBarrHits");
+ v.add("clumpsHcal");
+ v.add("mipsEcal");
+ //v.add("smallPhotonParticles");
+ //v.add("Tracks_by_ron");
+ //v.add("PerfectRecoParticles");
+ v.add("merge_ron_ron__FindCharged__inputClusterList");
+ v.add("smallphotonfinder__smallPhotonClusters1");
+ v.add("TkrBarrHitsCheatTracks");
+ v.add("clumpsEcal");
+ //v.add("HcalBarrHits");
+ //TEST//v.add("HcalEndcapDigiHits");
+ //v.add("smallClustersMinusSmallPhotons");
+ v.add("VtxEndcapHitsCheatTracks");
+ //v.add("clumps");
+ //v.add("MSTClustersLinkedWithFewerThanTenHits");
+ v.add("TkrForwardHitsCheatTracks");
+ v.add("merge_ron_ron__neutralHadronParticles");
+ v.add("TkrEndcapHitsCheatTracks");
+ v.add("EcalBarrDigiHitsCheatClusters");
+ v.add("EcalBarrRawHits");
+ //v.add("mips");
+ v.add("CheatReconstructedParticles");
+ v.add("TkrEndcapHitsCheatTrackerHits");
+ v.add("VtxEndcapHitsCheatTrackerHits");
+ v.add("TkrBarrHits");
+ v.add("UnflushedPFAReconstructedParticles");
+ //v.add("PerfectCheatClusters");
+ v.add("HcalBarrDigiHitsCheatClusters");
+ //v.add("EcalBarrHits");
+ //TEST//v.add("EcalBarrDigiHits");
+ v.add("HcalEndcapDigiHitsCheatClusters");
+ v.add("EcalEndcapRawHits");
+ v.add("VtxBarrHitsCheatTrackerHits");
+ //v.add("flushedClusters");
+ v.add("merge_ron_ron__chargedHadronParticlesAfterFragmentHandling");
+ //TEST//v.add("HcalBarrDigiHits");
+ v.add("firstpasstrackmatcher__chargedHadronParticlesWithMipAssociation");
+ //v.add("RefinedCheatTracks");
+ //v.add("Tracks");
+ v.add("firstpasstrackmatcher__tracksMinusMipAssociations");
+ v.add("EcalBarrRaw2sim");
+ //v.add("PFAReconstructedParticles");
+ v.add("merge_ron_ron__FindCharged__leftoverTracks");
+ //v.add("skeletons");
+ v.add("cheatid__HitList1ForCheatFragmentIdentifier");
+ v.add("hadronclusterfinder__mstClustersEcal");
+ v.add("mipsHcal");
+ v.add("merge_ron_ron__FindNeutral__neutralClustersWithFragmentsMerged");
+ //v.add("MCParticle");
+ //v.add("ForwardEcalEndcapHits");
+ v.add("HcalBarrRawHits");
+ v.add("VtxBarrHitsCheatTracks");
+ //v.add("photonClusters");
+ v.add("firstpasstrackmatcher__chargedHadronParticlesWithNonMipAssociation");
+ //TEST//v.add("EcalEndcapDigiHits");
+ v.add("largePhotonParticles");
+ //v.add("HcalEndcapRawHits");
+ //v.add("MuonEndcapHits");
+
+
+ //TEST//v.add("EcalBarrDTrees");
+ //TEST//v.add("EcalEndcapDTrees");
+ //TEST//v.add("HcalBarrDTrees");
+ //TEST//v.add("HcalEndcapDTrees");
+ //TEST//v.add("EcalBarrPhotonClusters");
+ //TEST//v.add("EcalEndcapPhotonClusters");
+ v.add("TempCheatTracks");
+ v.add("TempCheatParticles");
+ v.add("HadronParticles");
+ v.add("photonClustersWithoutFragments");
+ v.add("merge_ron_ron__FindCharged__unmatchedMips");
+
+ v.add("merge_ron_ron__FindCharged__chargedHadronParticlesWithMipAssociation");
+ v.add("merge_ron_ron__FindCharged__chargedHadronParticlesWithNonMipAssociation");
+ v.add("merge_ron_ron__FindCharged__skeletonsPlusHaloMinusChargedParticlesFromMips");
+ v.add("merge_ron_ron__FindCharged__tracksMinusMipAssociations");
+ v.add("merge_ron_ron__FindCharged__unmatchedMips");
+ v.add("smallClustersMinusSmallPhotons");
+ v.add("NonFSReconClusters");
+ //v.add("ReconPerfectVisReconParticles");
+ //v.add("ReconPerfectReconParticles");
+ v.add("HcalEndcapRawHits");
+ //v.add("GenPerfectVisReconParticles");
+ //v.add("GenPerfectReconParticles");
+
+ //add(new org.lcsim.util.loop.LCIODriver("test-mini.slcio", v));
+ add(new org.lcsim.util.loop.LCIODriver("test-mini.slcio", v));
+ }
+
void setupDTree() {
// Convert DigiSim's lists to hitmaps:
HitListToHitMapDriver converter1 = new HitListToHitMapDriver();
@@ -42,16 +202,56 @@
add(converter2);
add(converter3);
add(converter4);
+
+ // DTree (TESTING!)
+ DirectedTreeDriver TESTING_treeDriverEcalBarr = new DirectedTreeDriver();
+ TESTING_treeDriverEcalBarr.setInputHitMap("EcalBarrDigiHitMap");
+ TESTING_treeDriverEcalBarr.setOutputClusterList("EcalBarrDTrees_WITHPHOTONS");
+ TESTING_treeDriverEcalBarr.setOutputHitMap("EcalBarrDigiHitMapAfterDTree_WITHPHOTONS");
+ DirectedTreeDriver TESTING_treeDriverEcalEndcap = new DirectedTreeDriver();
+ TESTING_treeDriverEcalEndcap.setInputHitMap("EcalEndcapDigiHitMap");
+ TESTING_treeDriverEcalEndcap.setOutputClusterList("EcalEndcapDTrees_WITHPHOTONS");
+ TESTING_treeDriverEcalEndcap.setOutputHitMap("EcalEndcapDigiHitMapAfterDTree_WITHPHOTONS");
+ add(TESTING_treeDriverEcalBarr);
+ add(TESTING_treeDriverEcalEndcap);
+
// Find photons in ECAL
- org.lcsim.contrib.uiowa.RonPhotonFinder.RonPhotonFinderSid01 photonFinderEcalBarrel = new org.lcsim.contrib.uiowa.RonPhotonFinder.RonPhotonFinderSid01("EcalBarrDigiHitMap", "EcalBarrDigiHitMapWithoutPhotons", "EcalBarrPhotonClusters");
- org.lcsim.contrib.uiowa.RonPhotonFinder.RonPhotonFinderSid01 photonFinderEcalEndcap = new org.lcsim.contrib.uiowa.RonPhotonFinder.RonPhotonFinderSid01("EcalEndcapDigiHitMap", "EcalEndcapDigiHitMapWithoutPhotons", "EcalEndcapPhotonClusters");
- add(photonFinderEcalBarrel);
- add(photonFinderEcalEndcap);
- ListAddDriver<Cluster> mergePhotonClusters = new ListAddDriver<Cluster>(Cluster.class);
- mergePhotonClusters.addInputList("EcalBarrPhotonClusters");
- mergePhotonClusters.addInputList("EcalEndcapPhotonClusters");
- mergePhotonClusters.setOutputList("PhotonClustersForDTree");
- add(mergePhotonClusters);
+ if (useOldRonPhotonFinder) {
+ // Make photons in barrel & endcap separately
+ org.lcsim.contrib.uiowa.RonPhotonFinder.RonPhotonFinderSid01 photonFinderEcalBarrel = new org.lcsim.contrib.uiowa.RonPhotonFinder.RonPhotonFinderSid01("EcalBarrDigiHitMap", "EcalBarrDigiHitMapWithoutPhotons", "EcalBarrPhotonClusters");
+ org.lcsim.contrib.uiowa.RonPhotonFinder.RonPhotonFinderSid01 photonFinderEcalEndcap = new org.lcsim.contrib.uiowa.RonPhotonFinder.RonPhotonFinderSid01("EcalEndcapDigiHitMap", "EcalEndcapDigiHitMapWithoutPhotons", "EcalEndcapPhotonClusters");
+ add(photonFinderEcalBarrel);
+ add(photonFinderEcalEndcap);
+ // Merge to a single list of photons
+ ListAddDriver<Cluster> mergePhotonClusters = new ListAddDriver<Cluster>(Cluster.class);
+ mergePhotonClusters.addInputList("EcalBarrPhotonClusters");
+ mergePhotonClusters.addInputList("EcalEndcapPhotonClusters");
+ mergePhotonClusters.setOutputList("PhotonClustersForDTree");
+ add(mergePhotonClusters);
+ } else {
+ // Merge barrel & endcap hits
+ HitMapAddDriver combineEcal = new HitMapAddDriver();
+ combineEcal.addInputHitMap("EcalBarrDigiHitMap");
+ combineEcal.addInputHitMap("EcalEndcapDigiHitMap");
+ combineEcal.setOutputHitMap("EcalDigiHitMap");
+ add(combineEcal);
+ // Make photons in barrel & endcap together
+ org.lcsim.contrib.Cassell.recon.DTPhotons.RonDTPhotonFinderSid01 photonFinder = new org.lcsim.contrib.Cassell.recon.DTPhotons.RonDTPhotonFinderSid01("EcalDigiHitMap", "EcalDigiHitMapWithoutPhotons", "PhotonClustersForDTree");
+ add(photonFinder);
+ // Split back into barrel & endcap
+ // This is a little fiddly -- need to do one subtraction to
+ // identify the photon hits, then a second to remove the photon
+ // hits from the previous hitmaps.
+ HitMapSubtractDriver separateEcal1 = new HitMapSubtractDriver("EcalBarrDigiHitMap", "EcalDigiHitMapWithoutPhotons", "EcalBarrel_photonHits");
+ HitMapSubtractDriver separateEcal2 = new HitMapSubtractDriver("EcalEndcapDigiHitMap", "EcalDigiHitMapWithoutPhotons", "EcalEndcap_photonHits");
+ HitMapSubtractDriver separateEcal3 = new HitMapSubtractDriver("EcalBarrDigiHitMap", "EcalBarrel_photonHits", "EcalBarrDigiHitMapWithoutPhotons");
+ HitMapSubtractDriver separateEcal4 = new HitMapSubtractDriver("EcalEndcapDigiHitMap", "EcalEndcap_photonHits", "EcalEndcapDigiHitMapWithoutPhotons");
+ add(separateEcal1);
+ add(separateEcal2);
+ add(separateEcal3);
+ add(separateEcal4);
+ }
+
// DTree
DirectedTreeDriver treeDriverEcalBarr = new DirectedTreeDriver();
treeDriverEcalBarr.setInputHitMap("EcalBarrDigiHitMapWithoutPhotons");
@@ -84,21 +284,45 @@
}
void checkPerf() {
+ if (requireAcceptance) {
add(new org.lcsim.contrib.uiowa.MassPlots("PFAReconstructedParticles", "output-write.aida")); // Make some histograms and write them to a file
- add(new org.lcsim.contrib.uiowa.MassPlots("ReclusteredParticles", "output-write-reclustered.aida")); // Make some histograms and write them to a file
add(new org.lcsim.contrib.uiowa.MassPlots("DTreeReclusteredParticles", "output-write-dtree-reclustered.aida")); // Make some histograms and write them to a file
+ add(new org.lcsim.contrib.uiowa.MassPlots("DTreeReclusteredParticles_withEoverPveto", "output-write-dtree-reclustered-veto.aida")); // Make some histograms and write them to a file
+ // New -- test
+ add(new org.lcsim.contrib.uiowa.MassPlots("DTreeReclusteredTimeCutParticles", "output-write-dtree-reclustered-timecut.aida")); // Make some histograms and write them to a file
+ add(new org.lcsim.contrib.uiowa.MassPlots("DTreeReclusteredTimeCutParticles_withEoverPveto", "output-write-dtree-reclustered-timecut-veto.aida")); // Make some histograms and write them to a file
+ } else {
+ add(new EnergySumPlotter("DTreeReclusteredParticles", "dtree-energysum.aida"));
+ add(new EnergySumPlotter("DTreeReclusteredParticles_withEoverPveto", "dtree-veto-energysum.aida"));
+ }
+
String CheatReconRname = "ReconPerfectReconParticles";
String CheatReconFSname = "ReconFSParticles";
String CheatReconFSTrackedname = "TrackedReconFSParticles";
org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies testRonDriverForNonTrivialPFA = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"PFAReconstructedParticles",true);
- org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies testRonDriverForReclusterer = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"ReclusteredParticles", true);
org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies testRonDriverForDTreeReclusterer = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"DTreeReclusteredParticles", true);
+ org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies testRonDriverForDTreeReclusterer2 = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"DTreeReclusteredParticles_forConfusionMatrix", true);
+ org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies testRonDriverForDTreeReclusterer3 = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"DTreeReclusteredParticles_jetsOnly", true);
+ org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies testRonDriverForDTreeReclusterer4 = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"DTreeReclusteredParticles_unusedHits", true);
+ org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies testRonDriverForDTreeReclusterer5 = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"DTreeReclusteredParticles_chargedPassingEoverPveto", true);
+ org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies testRonDriverForDTreeReclusterer6 = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"DTreeReclusteredParticles_chargedFailingEoverPveto", true);
add(testRonDriverForNonTrivialPFA);
- add(testRonDriverForReclusterer);
add(testRonDriverForDTreeReclusterer);
+ add(testRonDriverForDTreeReclusterer2);
+ add(testRonDriverForDTreeReclusterer3);
+ add(testRonDriverForDTreeReclusterer4);
+ add(testRonDriverForDTreeReclusterer5);
+ add(testRonDriverForDTreeReclusterer6);
+
+ // Photon tests
+ //add(new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"TestOrigPhotonList",true));
+ //add(new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"TestModifiedPhotonList",true));
+ //add(new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"TestSeedPhotonList",true));
}
+ int count = 0;
public void process(EventHeader event) {
+ System.out.println("DEBUG: Looking at event "+count); count++;
boolean passesTruthAcceptanceCut = false;
MCParticle partZTovv = null;
MCParticle partZToqq = null;
@@ -128,10 +352,12 @@
}
}
if (partZTovv == null) {
- System.out.println("ERROR: no Z -> vv cand");
+ //System.out.println("ERROR: no Z -> vv cand");
}
if (partZToqq == null) {
- System.out.println("ERROR: no Z -> qq cand");
+ if (requireAcceptance) {
+ System.out.println("ERROR: no Z -> qq cand");
+ }
} else {
//System.out.println("DEBUG: Mass of Z -> qq = "+partZToqq.getMass());
passesTruthAcceptanceCut = true;
@@ -141,8 +367,68 @@
}
}
}
- if (passesTruthAcceptanceCut) {
+ if (passesTruthAcceptanceCut || !requireAcceptance) {
super.process(event);
}
}
+
+ void substituteSetup() {
+ CreateFinalStateMCParticleList mcListMakerGen = new CreateFinalStateMCParticleList("Gen");
+ CreateFinalStateMCParticleList mcListMakerSim = new CreateFinalStateMCParticleList("Sim");
+ double rcut = 300.; // Bruce said 400 mm at meeting March 13
+ double zcut = 300.;
+ mcListMakerSim.setRadiusCut(rcut);
+ mcListMakerSim.setZCut(zcut);
+ add(mcListMakerGen);
+ add(mcListMakerSim);
+ String mcListNameGen = "GenFinalStateParticles";
+ String mcListNameSim = "SimFinalStateParticles";
+ String mcListName = mcListNameGen;
+
+ // CalHitMapDriver is needed by DigiSim
+ add(new CalHitMapDriver());
+ // DigiSim: SimCalHits -> RawCalHits
+ DigiSimDriver digi = new org.lcsim.digisim.DigiSimDriver();
+ add(digi);
+ // RawCalHits -> SimCalorimeterHits
+ add( new SimCalorimeterHitsDriver() );
+
+ String eventHitMapEcal = "inputHitMapEcal";
+ String eventHitMapHcal = "inputHitMapHcal";
+ String[] eventHitCollections = {"EcalBarrDigiHits","EcalEndcapDigiHits","HcalBarrDigiHits","HcalEndcapDigiHits"};
+ {
+ HitListToHitMapDriver hitmapEcal = new HitListToHitMapDriver();
+ hitmapEcal.addInputList("EcalBarrDigiHits");
+ hitmapEcal.addInputList("EcalEndcapDigiHits");
+ hitmapEcal.setOutput(eventHitMapEcal);
+ HitListToHitMapDriver hitmapHcal = new HitListToHitMapDriver();
+ hitmapHcal.addInputList("HcalBarrDigiHits");
+ hitmapHcal.addInputList("HcalEndcapDigiHits");
+ hitmapHcal.setOutput(eventHitMapHcal);
+ add(hitmapEcal);
+ add(hitmapHcal);
+ }
+
+ String trackList;
+ {
+ // Find tracks (non-cheating)
+ // Output: List<Track> saved as EventHeader.TRACKS
+ add (new MCFastTracking());
+ String fastMCTrackList = EventHeader.TRACKS;
+
+ // Find tracks (cheating)
+ String ronTrackList = "FSReconTracks";
+ String ronMCList = "ReconFSParticles";
+ add(new org.lcsim.contrib.Cassell.recon.Cheat.CheatReconDriver());
+
+ // Choose which track list to use
+ boolean useRonTrackList = true;
+ if (useRonTrackList) {
+ trackList = ronTrackList;
+ mcListName = ronMCList;
+ } else {
+ trackList = fastMCTrackList;
+ }
+ }
+ }
}