Print

Print


Commit in lcsim/src/org/lcsim/recon/pfa/structural on MAIN
SetUpDTreeForReclustering.java+851.3 -> 1.4
MJC: Optionally, include muon and/or fcal hits in PFA setup

lcsim/src/org/lcsim/recon/pfa/structural
SetUpDTreeForReclustering.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- SetUpDTreeForReclustering.java	13 Jul 2008 23:33:48 -0000	1.3
+++ SetUpDTreeForReclustering.java	12 Aug 2008 23:44:50 -0000	1.4
@@ -11,6 +11,9 @@
 public class SetUpDTreeForReclustering extends Driver
 {
     boolean useOldRonPhotonFinder = false;
+    boolean useMuonEndcap = true;
+    boolean useMuonBarrel = false;
+    boolean useForwardEcal = false;
 
     public SetUpDTreeForReclustering() {
 	// Convert DigiSim's lists to hitmaps:
@@ -31,6 +34,30 @@
 	add(converter3);
 	add(converter4);
 
+	// Convert muon lists to hitmaps:
+	if (useMuonBarrel) {
+	    HitListToHitMapDriver converter5 = new HitListToHitMapDriver();
+	    converter5.addInputList("MuonBarrHits");
+	    converter5.setOutput("MuonBarrHitMap");
+	    add(converter5);
+	}
+	if (useMuonEndcap) {
+	    HitListToHitMapDriver converter6 = new HitListToHitMapDriver();
+	    converter6.addInputList("MuonEndcapHits");
+	    converter6.setOutput("MuonEndcapHitMap");
+	    add(converter6);
+	}
+
+	// Convert forward EM endcap hits
+	// NB, must have digisim configured to handle forward ECAL
+	if (useForwardEcal) {
+	    // Convert forward EM endcap hits:
+	    HitListToHitMapDriver converter7 = new HitListToHitMapDriver();
+	    converter7.addInputList("ForwardEcalEndcapDigiHits");
+	    converter7.setOutput("ForwardEcalEndcapDigiHitMap");
+	    add(converter7);
+	}
+
 	// Find photons in ECAL
 	if (useOldRonPhotonFinder) {
 	    // Make photons in barrel & endcap separately
@@ -49,6 +76,9 @@
 	    HitMapAddDriver combineEcal = new HitMapAddDriver();
 	    combineEcal.addInputHitMap("EcalBarrDigiHitMap");
 	    combineEcal.addInputHitMap("EcalEndcapDigiHitMap");
+	    if (useForwardEcal) {
+		combineEcal.addInputHitMap("ForwardEcalEndcapDigiHitMap"); // Include forward endcap
+	    }
 	    combineEcal.setOutputHitMap("EcalDigiHitMap");
 	    add(combineEcal);
 	    // Make photons in barrel & endcap together
@@ -66,6 +96,12 @@
 	    add(separateEcal2);
 	    add(separateEcal3);
 	    add(separateEcal4);
+	    if (useForwardEcal) {
+		HitMapSubtractDriver separateEcal5 = new HitMapSubtractDriver("ForwardEcalEndcapDigiHitMap", "EcalDigiHitMapWithoutPhotons", "ForwardEcalEndcap_photonHits");
+		HitMapSubtractDriver separateEcal6 = new HitMapSubtractDriver("ForwardEcalEndcapDigiHitMap", "ForwardEcalEndcap_photonHits", "ForwardEcalEndcapDigiHitMapWithoutPhotons");
+		add(separateEcal5);
+		add(separateEcal6);
+	    }
 	}
 
 	// Run DTree
@@ -90,6 +126,29 @@
 	add(treeDriverHcalBarr);
 	add(treeDriverHcalEndcap);
 	
+	// DTree doesn't handly anything except ECAL & HCAL right now, so use MST instead:
+	if (useMuonBarrel) {
+	    org.lcsim.recon.cluster.mst.MSTClusterDriver mstMcalBarrel = new org.lcsim.recon.cluster.mst.MSTClusterDriver("MuonBarrHitMapAfterDTree", "MuonBarrDTrees");
+	    mstMcalBarrel.addInputHitMap("MuonBarrHitMap");
+	    mstMcalBarrel.setThreshold(1500.0); // 3x3cm segmentation transversely, 6.5cm longitudinally
+	    mstMcalBarrel.registerMetrics(new org.lcsim.recon.cluster.mst.MinimumHitToHitDistance());
+	    add(mstMcalBarrel);
+	}
+	if (useMuonEndcap) {
+	    org.lcsim.recon.cluster.mst.MSTClusterDriver mstMcalEndcap = new org.lcsim.recon.cluster.mst.MSTClusterDriver("MuonEndcapHitMapAfterDTree", "MuonEndcapDTrees");
+	    mstMcalEndcap.addInputHitMap("MuonEndcapHitMap");
+	    mstMcalEndcap.setThreshold(1500.0); // 3x3cm segmentation transversely, 6.5cm longitudinally
+	    mstMcalEndcap.registerMetrics(new org.lcsim.recon.cluster.mst.MinimumHitToHitDistance());
+	    add(mstMcalEndcap);
+	}
+	if (useForwardEcal) {
+	    org.lcsim.recon.cluster.mst.MSTClusterDriver mstFcalEndcap = new org.lcsim.recon.cluster.mst.MSTClusterDriver("ForwardEcalEndcapDigiHitMapAfterDTree", "ForwardEcalEndcapDTrees");
+	    mstFcalEndcap.addInputHitMap("ForwardEcalEndcapDigiHitMap");
+	    mstFcalEndcap.setThreshold(12.5); // 3.5x3.5cm segmentation transversely, 3.7mm longitudinally
+	    mstFcalEndcap.registerMetrics(new org.lcsim.recon.cluster.mst.MinimumHitToHitDistance());
+	    add(mstFcalEndcap);
+	}
+
 	// Merge & write out
 	ListAddDriver<Cluster> mergeDTreeClustersECAL = new ListAddDriver<Cluster>(Cluster.class);
 	mergeDTreeClustersECAL.addInputList("EcalBarrDTrees");
@@ -103,9 +162,35 @@
 	mergeDTreeClustersHCAL.setOutputList("DTreeClustersHCAL");
 	add(mergeDTreeClustersHCAL);
 
+	if (useMuonBarrel || useMuonEndcap) {
+	    ListAddDriver<Cluster> mergeDTreeClustersMCAL = new ListAddDriver<Cluster>(Cluster.class);
+	    if (useMuonBarrel) {
+		mergeDTreeClustersMCAL.addInputList("MuonBarrDTrees");
+	    }
+	    if (useMuonEndcap) {
+		mergeDTreeClustersMCAL.addInputList("MuonEndcapDTrees");
+	    }
+	    mergeDTreeClustersMCAL.setOutputList("DTreeClustersMCAL");
+	    add(mergeDTreeClustersMCAL);
+	}
+
+	if (useForwardEcal) {
+	    ListAddDriver<Cluster> mergeDTreeClustersFCAL = new ListAddDriver<Cluster>(Cluster.class);
+	    mergeDTreeClustersFCAL.addInputList("ForwardEcalEndcapDTrees");
+	    mergeDTreeClustersFCAL.setOutputList("DTreeClustersFCAL");
+	    add(mergeDTreeClustersFCAL);
+	}
+
+
 	ListAddDriver<Cluster> mergeDTreeClusters = new ListAddDriver<Cluster>(Cluster.class);
 	mergeDTreeClusters.addInputList("DTreeClustersECAL");
 	mergeDTreeClusters.addInputList("DTreeClustersHCAL");
+	if (useMuonBarrel || useMuonEndcap) {
+	    mergeDTreeClusters.addInputList("DTreeClustersMCAL");
+	}
+	if (useForwardEcal) {
+	    mergeDTreeClusters.addInputList("DTreeClustersFCAL");
+	}
 	mergeDTreeClusters.setOutputList("DTreeClusters");
 	add(mergeDTreeClusters);
     }
CVSspam 0.2.8