lcsim/src/org/lcsim/contrib/uiowa
diff -u -r1.4 -r1.5
--- SetUpDTreeForReclustering.java 6 Jun 2008 00:04:56 -0000 1.4
+++ SetUpDTreeForReclustering.java 12 Aug 2008 23:46:55 -0000 1.5
@@ -12,6 +12,7 @@
public class SetUpDTreeForReclustering extends Driver
{
boolean useOldRonPhotonFinder = false;
+ boolean useForwardEcal = false;
public SetUpDTreeForReclustering() {
{
@@ -32,8 +33,26 @@
add(converter2);
add(converter3);
add(converter4);
+ // Convert muon lists to hitmaps:
+ HitListToHitMapDriver converter5 = new HitListToHitMapDriver();
+ HitListToHitMapDriver converter6 = new HitListToHitMapDriver();
+ converter5.addInputList("MuonBarrHits");
+ converter6.addInputList("MuonEndcapHits");
+ converter5.setOutput("MuonBarrHitMap");
+ converter6.setOutput("MuonEndcapHitMap");
+ add(converter5);
+ add(converter6);
+ 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
@@ -52,6 +71,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
@@ -69,6 +91,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
@@ -95,6 +123,29 @@
add(treeDriverHcalEndcap);
}
+ // Run DTree on MUCAL -- this is currently rather tricky.
+ {
+ org.lcsim.recon.cluster.mst.MSTClusterDriver mstMcalBarrel = new org.lcsim.recon.cluster.mst.MSTClusterDriver("MuonBarrHitMapAfterDTree", "MuonBarrDTrees");
+ org.lcsim.recon.cluster.mst.MSTClusterDriver mstMcalEndcap = new org.lcsim.recon.cluster.mst.MSTClusterDriver("MuonEndcapHitMapAfterDTree", "MuonEndcapDTrees");
+ mstMcalBarrel.addInputHitMap("MuonBarrHitMap");
+ mstMcalEndcap.addInputHitMap("MuonEndcapHitMap");
+ mstMcalBarrel.setThreshold(1500.0); // 3x3cm segmentation transversely, 6.5cm longitudinally
+ mstMcalEndcap.setThreshold(1500.0); // 3x3cm segmentation transversely, 6.5cm longitudinally
+ mstMcalBarrel.registerMetrics(new org.lcsim.recon.cluster.mst.MinimumHitToHitDistance());
+ mstMcalEndcap.registerMetrics(new org.lcsim.recon.cluster.mst.MinimumHitToHitDistance());
+ add(mstMcalBarrel);
+ add(mstMcalEndcap);
+ }
+
+ // Run DTree on FCAL -- this is currently rather tricky.
+ 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);
@@ -109,44 +160,28 @@
mergeDTreeClustersHCAL.setOutputList("DTreeClustersHCAL");
add(mergeDTreeClustersHCAL);
+ ListAddDriver<Cluster> mergeDTreeClustersMCAL = new ListAddDriver<Cluster>(Cluster.class);
+ //mergeDTreeClustersMCAL.addInputList("MuonBarrDTrees");
+ 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");
+ mergeDTreeClusters.addInputList("DTreeClustersMCAL");
+ if (useForwardEcal) {
+ mergeDTreeClusters.addInputList("DTreeClustersFCAL");
+ }
mergeDTreeClusters.setOutputList("DTreeClusters");
add(mergeDTreeClusters);
}
-
- // Now find hits at small times (t < 10 ns) and redo clustering:
- {
- CalorimeterHitTimeCutDecision timeCut = new CalorimeterHitTimeCutDecision(10.0);
- HitMapFilter timeFilter = new HitMapFilter();
- timeFilter.setDecisionOnHit(timeCut);
- HitMapFilterDriver timeFilterDriverBarrel = new HitMapFilterDriver("HcalBarrDigiHitMap", "HcalBarrDigiHitMapTimeCut", timeFilter);
- HitMapFilterDriver timeFilterDriverEndcap = new HitMapFilterDriver("HcalEndcapDigiHitMap", "HcalEndcapDigiHitMapTimeCut", timeFilter);
- add(timeFilterDriverBarrel);
- add(timeFilterDriverEndcap);
- }
-
- {
- DirectedTreeDriver treeDriverHcalBarrTimeCut = new DirectedTreeDriver();
- treeDriverHcalBarrTimeCut.setInputHitMap("HcalBarrDigiHitMapTimeCut");
- treeDriverHcalBarrTimeCut.setOutputClusterList("HcalBarrDTreesTimeCut");
- treeDriverHcalBarrTimeCut.setOutputHitMap("HcalBarrDigiHitMapAfterDTreeTimeCut");
- DirectedTreeDriver treeDriverHcalEndcapTimeCut = new DirectedTreeDriver();
- treeDriverHcalEndcapTimeCut.setInputHitMap("HcalEndcapDigiHitMapTimeCut");
- treeDriverHcalEndcapTimeCut.setOutputClusterList("HcalEndcapDTreesTimeCut");
- treeDriverHcalEndcapTimeCut.setOutputHitMap("HcalEndcapDigiHitMapAfterDTreeTimeCut");
- add(treeDriverHcalBarrTimeCut);
- add(treeDriverHcalEndcapTimeCut);
- }
-
- {
- ListAddDriver<Cluster> mergeDTreeClustersTimeCut = new ListAddDriver<Cluster>(Cluster.class);
- mergeDTreeClustersTimeCut.addInputList("HcalBarrDTreesTimeCut");
- mergeDTreeClustersTimeCut.addInputList("HcalEndcapDTreesTimeCut");
- mergeDTreeClustersTimeCut.setOutputList("HcalDTreeClustersTimeCut");
- add(mergeDTreeClustersTimeCut);
- }
-
}
}