From 2ac723202277fad65de08c5f417c0af4b2ec50bf Mon Sep 17 00:00:00 2001
From: Whitney Armstrong <warmstrong@anl.gov>
Date: Thu, 17 Dec 2020 02:14:08 -0600
Subject: [PATCH] Added tracking source linker taking multiple collections.

	modified:   tracking/options/tracker_reconstruction.py
---
 tracking/options/tracker_reconstruction.py | 39 +++++++++++++++++-----
 1 file changed, 30 insertions(+), 9 deletions(-)

diff --git a/tracking/options/tracker_reconstruction.py b/tracking/options/tracker_reconstruction.py
index 75f104ae..fa42e3d5 100644
--- a/tracking/options/tracker_reconstruction.py
+++ b/tracking/options/tracker_reconstruction.py
@@ -28,6 +28,7 @@ from Configurables import Jug__Digi__EMCalorimeterDigi as EMCalorimeterDigi
 from Configurables import Jug__Reco__TrackerHitReconstruction as TrackerHitReconstruction
 
 from Configurables import Jug__Reco__TrackerSourceLinker as TrackerSourceLinker
+from Configurables import Jug__Reco__TrackerSourcesLinker as TrackerSourcesLinker
 from Configurables import Jug__Reco__TrackingHitsSourceLinker as TrackingHitsSourceLinker
 from Configurables import Jug__Reco__TrackParamTruthInit as TrackParamTruthInit
 from Configurables import Jug__Reco__TrackParamClusterInit as TrackParamClusterInit
@@ -42,7 +43,7 @@ from Configurables import Jug__Reco__SimpleClustering as SimpleClustering
 
 
 podioinput = PodioInput("PodioReader", 
-                        collections=["mcparticles","SiTrackerBarrelHits","SiVertexBarrelHits","EcalBarrelHits"])#, OutputLevel=DEBUG)
+                        collections=["mcparticles","SiTrackerEndcapHits","SiTrackerBarrelHits","SiVertexBarrelHits","EcalBarrelHits"])#, OutputLevel=DEBUG)
 
 ## copiers to get around input --> output copy bug. Note the "2" appended to the output collection.
 copier = MCCopier("MCCopier", 
@@ -60,6 +61,10 @@ ufsd_digi = UFSDTrackerDigi("ufsd_digi",
         inputHitCollection="SiTrackerBarrelHits",
         outputHitCollection="SiTrackerBarrelRawHits",
         timeResolution=8)
+ufsd_digi2 = UFSDTrackerDigi("ufsd_digi2", 
+        inputHitCollection="SiTrackerEndcapHits",
+        outputHitCollection="SiTrackerEndcapRawHits",
+        timeResolution=8)
 
 vtx_digi = UFSDTrackerDigi("vtx_digi", 
         inputHitCollection="SiVertexBarrelHits",
@@ -80,26 +85,40 @@ simple_cluster = SimpleClustering("simple_cluster",
         maxDistance=50.0*units.cm,
         OutputLevel=DEBUG)
 
+# Tracker and vertex reconstruction
 trk_barrel_reco = TrackerHitReconstruction("trk_barrel_reco",
-        inputHitCollection="SiTrackerBarrelRawHits",
+        inputHitCollection = ufsd_digi.outputHitCollection,
         outputHitCollection="TrackerBarrelRecHits")
 
+trk_endcap_reco = TrackerHitReconstruction("trk_endcap_reco",
+        inputHitCollection = ufsd_digi2.outputHitCollection,
+        outputHitCollection="TrackerEndcapRecHits")
+
 vtx_barrel_reco = TrackerHitReconstruction("vtx_barrel_reco",
         inputHitCollection = vtx_digi.outputHitCollection,
         outputHitCollection="VertexBarrelRecHits")
 
-# Source linker 
+# Hit Source linker 
 sourcelinker = TrackerSourceLinker("trk_srclinker",
         inputHitCollection="TrackerBarrelRecHits",
         outputSourceLinks="BarrelTrackSourceLinks",
         OutputLevel=DEBUG)
 
 trk_hits_srclnkr = TrackingHitsSourceLinker("trk_hits_srclnkr",
-        inputTrackerCollections=["TrackerBarrelRecHits","VertexBarrelRecHits"],
-        outputSourceLinks="BarrelSourceLinks",
+        inputTrackerCollections = [trk_endcap_reco.outputHitCollection, 
+                                   trk_barrel_reco.outputHitCollection, 
+                                   vtx_barrel_reco.outputHitCollection],
+        outputSourceLinks="TrackingSourceLinks",
         OutputLevel=DEBUG)
 
-## Track param init
+
+
+#trk_hits_srclnkr2 = TrtackerSourcesLinker("trk_srcslnkr2",
+#        trackerHitCollections=["TrackerEndcapRecHits","TrackerBarrelRecHits","VertexBarrelRecHits"],
+#        outputSourceLinks="AllTrackerSourceLinks",
+#        OutputLevel=DEBUG)
+
+# Track param init
 truth_trk_init = TrackParamTruthInit("truth_trk_init",
         inputMCParticles="mcparticles",
         outputInitialTrackParameters="InitTrackParams",
@@ -119,10 +138,11 @@ vtxcluster_trk_init = TrackParamVertexClusterInit("vtxcluster_trk_init",
 
 # Tracking algorithms
 trk_find_alg = TrackFindingAlgorithm("trk_find_alg",
-        inputSourceLinks="BarrelSourceLinks",
+        inputSourceLinks = trk_hits_srclnkr.outputSourceLinks,
         inputInitialTrackParameters= "InitTrackParams",#"InitTrackParamsFromClusters", 
         outputTrajectories="trajectories",
         OutputLevel=DEBUG)
+
 parts_from_fit = ParticlesFromTrackFit("parts_from_fit",
         inputTrajectories="trajectories",
         outputParticles="ReconstructedParticles",
@@ -130,10 +150,11 @@ parts_from_fit = ParticlesFromTrackFit("parts_from_fit",
         OutputLevel=DEBUG)
 
 trk_find_alg1 = TrackFindingAlgorithm("trk_find_alg1",
-        inputSourceLinks="BarrelSourceLinks",
+        inputSourceLinks = trk_hits_srclnkr.outputSourceLinks,
         inputInitialTrackParameters= "InitTrackParamsFromClusters", 
         outputTrajectories="trajectories1",
         OutputLevel=DEBUG)
+
 parts_from_fit1 = ParticlesFromTrackFit("parts_from_fit1",
         inputTrajectories="trajectories1",
         outputParticles="ReconstructedParticles1",
@@ -141,7 +162,7 @@ parts_from_fit1 = ParticlesFromTrackFit("parts_from_fit1",
         OutputLevel=DEBUG)
 
 trk_find_alg2 = TrackFindingAlgorithm("trk_find_alg2",
-        inputSourceLinks="BarrelSourceLinks",
+        inputSourceLinks = trk_hits_srclnkr.outputSourceLinks,
         inputInitialTrackParameters= "InitTrackParamsFromVtxClusters", 
         outputTrajectories="trajectories2",
         OutputLevel=DEBUG)
-- 
GitLab