From 0424d62a4eec4430278c6c3344b3041e6fe3456e Mon Sep 17 00:00:00 2001 From: Wouter Deconinck <wdconinc@gmail.com> Date: Mon, 21 Feb 2022 22:44:14 -0600 Subject: [PATCH] Use SimTrackingHitCollectors --- .../options/track_reconstruction.py | 107 +++++++++++++---- .../options/track_reconstruction.py | 108 ++++++++++++++---- .../tracking/options/track_reconstruction.py | 102 ++++++++++++----- 3 files changed, 241 insertions(+), 76 deletions(-) diff --git a/benchmarks/track_finding/options/track_reconstruction.py b/benchmarks/track_finding/options/track_reconstruction.py index 88e6bb90..f9ee38dc 100644 --- a/benchmarks/track_finding/options/track_reconstruction.py +++ b/benchmarks/track_finding/options/track_reconstruction.py @@ -22,11 +22,24 @@ input_sim_file = str(os.environ["JUGGLER_SIM_FILE"]) output_rec_file = str(os.environ["JUGGLER_REC_FILE"]) n_events = str(os.environ["JUGGLER_N_EVENTS"]) -geo_service = GeoSvc("GeoSvc", detectors=["{}/{}.xml".format(detector_path,detector_name)], OutputLevel=WARNING) +## note: old version of material map is called material-maps.XXX, new version is materials-map.XXX +## these names are somewhat inconsistent, and should probably all be renamed to 'material-map.XXX' +## FIXME +if detector_version == 'acadia': + geo_service = GeoSvc("GeoSvc", + detectors=["{}/{}.xml".format(detector_path,detector_name)], + materials="config/material-maps.json", + OutputLevel=WARNING) +else: + geo_service = GeoSvc("GeoSvc", + detectors=["{}/{}.xml".format(detector_path,detector_name)], + materials="calibrations/materials-map.cbor", + OutputLevel=WARNING) podioevent = EICDataSvc("EventDataSvc", inputs=[input_sim_file], OutputLevel=WARNING) from Configurables import PodioInput +from Configurables import Jug__Digi__SimTrackerHitsCollector as SimTrackerHitsCollector from Configurables import Jug__Digi__SiliconTrackerDigi as TrackerDigi from Configurables import Jug__Reco__TrackerHitReconstruction as TrackerHitReconstruction @@ -46,48 +59,96 @@ from Configurables import Jug__Reco__SimpleClustering as SimpleClustering algorithms = [ ] -input_collections = ['MCParticles','TrackerEndcapHits','TrackerBarrelHits','VertexBarrelHits','GEMTrackerEndcapHits'] +tracker_endcap_collections = [ + 'TrackerEndcapHits1', + 'TrackerEndcapHits2', + 'TrackerEndcapHits3', + 'TrackerEndcapHits4', + 'TrackerEndcapHits5', + 'TrackerEndcapHits6' +] +tracker_barrel_collections = [ + 'TrackerBarrelHits' +] +vertex_barrel_collections = [ + 'VertexBarrelHits' +] +gem_endcap_collections = [ + 'GEMTrackerEndcapHits1', + 'GEMTrackerEndcapHits2', + 'GEMTrackerEndcapHits3' +] +vertex_endcap_collections = [ + 'VertexEndcapHits' +] +mpgd_barrel_collections = [ + 'MPGDTrackerBarrelHits1', + 'MPGDTrackerBarrelHits2' +] + +input_collections = ['MCParticles'] + tracker_endcap_collections + tracker_barrel_collections + vertex_barrel_collections + gem_endcap_collections + if 'acadia' in detector_version: - input_collections.append('VertexEndcapHits') + input_collections += vertex_endcap_collections else: - input_collections.append('MPGDTrackerBarrelHits') -podioinput = PodioInput("PodioReader", - collections=input_collections)#, OutputLevel=DEBUG) + input_collections += mpgd_barrel_collections + +podioinput = PodioInput("PodioReader", + collections=input_collections) algorithms.append( podioinput ) -trk_b_digi = TrackerDigi("trk_b_digi", - inputHitCollection="TrackerBarrelHits", - outputHitCollection="TrackerBarrelRawHits", +trk_b_coll = SimTrackerHitsCollector("trk_b_coll", + inputSimTrackerHits = tracker_barrel_collections, + outputSimTrackerHits = "TrackerBarrelHits") +trk_b_digi = TrackerDigi("trk_b_digi", + inputHitCollection = trk_b_coll.outputSimTrackerHits, + outputHitCollection = "TrackerBarrelRawHits", timeResolution=8) algorithms.append( trk_b_digi ) -trk_ec_digi = TrackerDigi("trk_ec_digi", - inputHitCollection="TrackerEndcapHits", - outputHitCollection="TrackerEndcapRawHits", + +trk_ec_coll = SimTrackerHitsCollector("trk_ec_coll", + inputSimTrackerHits = tracker_endcap_collections, + outputSimTrackerHits = "TrackerEndcapHits") +trk_ec_digi = TrackerDigi("trk_ec_digi", + inputHitCollection = trk_ec_coll.outputSimTrackerHits, + outputHitCollection = "TrackerEndcapRawHits", timeResolution=8) algorithms.append( trk_ec_digi ) -vtx_b_digi = TrackerDigi("vtx_b_digi", - inputHitCollection="VertexBarrelHits", - outputHitCollection="VertexBarrelRawHits", +vtx_b_coll = SimTrackerHitsCollector("vtx_b_coll", + inputSimTrackerHits = vertex_barrel_collections, + outputSimTrackerHits = "VertexBarrelHits") +vtx_b_digi = TrackerDigi("vtx_b_digi", + inputHitCollection = vtx_b_coll.outputSimTrackerHits, + outputHitCollection = "VertexBarrelRawHits", timeResolution=8) algorithms.append( vtx_b_digi ) if 'acadia' in detector_version: - vtx_ec_digi = TrackerDigi("vtx_ec_digi", - inputHitCollection="VertexEndcapHits", - outputHitCollection="VertexEndcapRawHits", + vtx_ec_coll = SimTrackerHitsCollector("vtx_ec_coll", + inputSimTrackerHits = vertex_endcap_collections, + outputSimTrackerHits = "VertexEndcapHits") + vtx_ec_digi = TrackerDigi("vtx_ec_digi", + inputHitCollection = vtx_ec_coll.outputSimTrackerHits, + outputHitCollection = "VertexEndcapRawHits", timeResolution=8) algorithms.append( vtx_ec_digi ) else: - mm_b_digi = TrackerDigi("mm_b_digi", - inputHitCollection="MPGDTrackerBarrelHits", - outputHitCollection="MPGDTrackerBarrelRawHits", + mm_b_coll = SimTrackerHitsCollector("mm_b_coll", + inputSimTrackerHits = mpgd_barrel_collections, + outputSimTrackerHits = "MPGDTrackerBarrelHits") + mm_b_digi = TrackerDigi("mm_b_digi", + inputHitCollection = mm_b_coll.outputSimTrackerHits, + outputHitCollection = "MPGDTrackerBarrelRawHits", timeResolution=8) algorithms.append( mm_b_digi ) +gem_ec_coll = SimTrackerHitsCollector("gem_ec_coll", + inputSimTrackerHits = gem_endcap_collections, + outputSimTrackerHits = "GEMTrackerEndcapHits") gem_ec_digi = TrackerDigi("gem_ec_digi", - inputHitCollection="GEMTrackerEndcapHits", - outputHitCollection="GEMTrackerEndcapRawHits", + inputHitCollection = gem_ec_coll.outputSimTrackerHits, + outputHitCollection = "GEMTrackerEndcapRawHits", timeResolution=10) algorithms.append(gem_ec_digi) diff --git a/benchmarks/track_fitting/options/track_reconstruction.py b/benchmarks/track_fitting/options/track_reconstruction.py index 83f00b8d..31e4a6ce 100644 --- a/benchmarks/track_fitting/options/track_reconstruction.py +++ b/benchmarks/track_fitting/options/track_reconstruction.py @@ -22,18 +22,30 @@ input_sim_file = str(os.environ["JUGGLER_SIM_FILE"]) output_rec_file = str(os.environ["JUGGLER_REC_FILE"]) n_events = str(os.environ["JUGGLER_N_EVENTS"]) -geo_service = GeoSvc("GeoSvc", detectors=["{}/{}.xml".format(detector_path,detector_name)], OutputLevel=WARNING) +## note: old version of material map is called material-maps.XXX, new version is materials-map.XXX +## these names are somewhat inconsistent, and should probably all be renamed to 'material-map.XXX' +## FIXME +if detector_version == 'acadia': + geo_service = GeoSvc("GeoSvc", + detectors=["{}/{}.xml".format(detector_path,detector_name)], + materials="config/material-maps.json", + OutputLevel=WARNING) +else: + geo_service = GeoSvc("GeoSvc", + detectors=["{}/{}.xml".format(detector_path,detector_name)], + materials="calibrations/materials-map.cbor", + OutputLevel=WARNING) podioevent = EICDataSvc("EventDataSvc", inputs=[input_sim_file], OutputLevel=WARNING) from Configurables import PodioInput +from Configurables import Jug__Digi__SimTrackerHitsCollector as SimTrackerHitsCollector from Configurables import Jug__Digi__SiliconTrackerDigi as TrackerDigi from Configurables import Jug__Reco__TrackerHitReconstruction as TrackerHitReconstruction from Configurables import Jug__Reco__TrackingHitsCollector2 as TrackingHitsCollector from Configurables import Jug__Reco__TrackerSourceLinker as TrackerSourceLinker -#from Configurables import Jug__Reco__TrackingHitsSourceLinker as TrackingHitsSourceLinker from Configurables import Jug__Reco__TrackParamTruthInit as TrackParamTruthInit from Configurables import Jug__Reco__TrackParamClusterInit as TrackParamClusterInit from Configurables import Jug__Reco__TrackParamVertexClusterInit as TrackParamVertexClusterInit @@ -46,48 +58,96 @@ from Configurables import Jug__Reco__SimpleClustering as SimpleClustering algorithms = [ ] -input_collections = ['MCParticles','TrackerEndcapHits','TrackerBarrelHits','VertexBarrelHits','GEMTrackerEndcapHits'] +tracker_endcap_collections = [ + 'TrackerEndcapHits1', + 'TrackerEndcapHits2', + 'TrackerEndcapHits3', + 'TrackerEndcapHits4', + 'TrackerEndcapHits5', + 'TrackerEndcapHits6' +] +tracker_barrel_collections = [ + 'TrackerBarrelHits' +] +vertex_barrel_collections = [ + 'VertexBarrelHits' +] +gem_endcap_collections = [ + 'GEMTrackerEndcapHits1', + 'GEMTrackerEndcapHits2', + 'GEMTrackerEndcapHits3' +] +vertex_endcap_collections = [ + 'VertexEndcapHits' +] +mpgd_barrel_collections = [ + 'MPGDTrackerBarrelHits1', + 'MPGDTrackerBarrelHits2' +] + +input_collections = ['MCParticles'] + tracker_endcap_collections + tracker_barrel_collections + vertex_barrel_collections + gem_endcap_collections + if 'acadia' in detector_version: - input_collections.append('VertexEndcapHits') + input_collections += vertex_endcap_collections else: - input_collections.append('MPGDTrackerBarrelHits') -podioinput = PodioInput("PodioReader", - collections=input_collections)#, OutputLevel=DEBUG) + input_collections += mpgd_barrel_collections + +podioinput = PodioInput("PodioReader", + collections=input_collections) algorithms.append( podioinput ) -trk_b_digi = TrackerDigi("trk_b_digi", - inputHitCollection="TrackerBarrelHits", - outputHitCollection="TrackerBarrelRawHits", +trk_b_coll = SimTrackerHitsCollector("trk_b_coll", + inputSimTrackerHits = tracker_barrel_collections, + outputSimTrackerHits = "TrackerBarrelHits") +trk_b_digi = TrackerDigi("trk_b_digi", + inputHitCollection = trk_b_coll.outputSimTrackerHits, + outputHitCollection = "TrackerBarrelRawHits", timeResolution=8) algorithms.append( trk_b_digi ) -trk_ec_digi = TrackerDigi("trk_ec_digi", - inputHitCollection="TrackerEndcapHits", - outputHitCollection="TrackerEndcapRawHits", + +trk_ec_coll = SimTrackerHitsCollector("trk_ec_coll", + inputSimTrackerHits = tracker_endcap_collections, + outputSimTrackerHits = "TrackerEndcapHits") +trk_ec_digi = TrackerDigi("trk_ec_digi", + inputHitCollection = trk_ec_coll.outputSimTrackerHits, + outputHitCollection = "TrackerEndcapRawHits", timeResolution=8) algorithms.append( trk_ec_digi ) -vtx_b_digi = TrackerDigi("vtx_b_digi", - inputHitCollection="VertexBarrelHits", - outputHitCollection="VertexBarrelRawHits", +vtx_b_coll = SimTrackerHitsCollector("vtx_b_coll", + inputSimTrackerHits = vertex_barrel_collections, + outputSimTrackerHits = "VertexBarrelHits") +vtx_b_digi = TrackerDigi("vtx_b_digi", + inputHitCollection = vtx_b_coll.outputSimTrackerHits, + outputHitCollection = "VertexBarrelRawHits", timeResolution=8) algorithms.append( vtx_b_digi ) if 'acadia' in detector_version: - vtx_ec_digi = TrackerDigi("vtx_ec_digi", - inputHitCollection="VertexEndcapHits", - outputHitCollection="VertexEndcapRawHits", + vtx_ec_coll = SimTrackerHitsCollector("vtx_ec_coll", + inputSimTrackerHits = vertex_endcap_collections, + outputSimTrackerHits = "VertexEndcapHits") + vtx_ec_digi = TrackerDigi("vtx_ec_digi", + inputHitCollection = vtx_ec_coll.outputSimTrackerHits, + outputHitCollection = "VertexEndcapRawHits", timeResolution=8) algorithms.append( vtx_ec_digi ) else: - mm_b_digi = TrackerDigi("mm_b_digi", - inputHitCollection="MPGDTrackerBarrelHits", - outputHitCollection="MPGDTrackerBarrelRawHits", + mm_b_coll = SimTrackerHitsCollector("mm_b_coll", + inputSimTrackerHits = mpgd_barrel_collections, + outputSimTrackerHits = "MPGDTrackerBarrelHits") + mm_b_digi = TrackerDigi("mm_b_digi", + inputHitCollection = mm_b_coll.outputSimTrackerHits, + outputHitCollection = "MPGDTrackerBarrelRawHits", timeResolution=8) algorithms.append( mm_b_digi ) +gem_ec_coll = SimTrackerHitsCollector("gem_ec_coll", + inputSimTrackerHits = gem_endcap_collections, + outputSimTrackerHits = "GEMTrackerEndcapHits") gem_ec_digi = TrackerDigi("gem_ec_digi", - inputHitCollection="GEMTrackerEndcapHits", - outputHitCollection="GEMTrackerEndcapRawHits", + inputHitCollection = gem_ec_coll.outputSimTrackerHits, + outputHitCollection = "GEMTrackerEndcapRawHits", timeResolution=10) algorithms.append(gem_ec_digi) diff --git a/benchmarks/tracking/options/track_reconstruction.py b/benchmarks/tracking/options/track_reconstruction.py index cdf2764e..2512324c 100644 --- a/benchmarks/tracking/options/track_reconstruction.py +++ b/benchmarks/tracking/options/track_reconstruction.py @@ -39,6 +39,7 @@ podioevent = EICDataSvc("EventDataSvc", inputs=[input_sim_file], OutputLevel=W from Configurables import PodioInput +from Configurables import Jug__Digi__SimTrackerHitsCollector as SimTrackerHitsCollector from Configurables import Jug__Digi__SiliconTrackerDigi as TrackerDigi from Configurables import Jug__Reco__TrackerHitReconstruction as TrackerHitReconstruction @@ -58,50 +59,96 @@ from Configurables import Jug__Reco__SimpleClustering as SimpleClustering algorithms = [ ] -input_collections = ['MCParticles','TrackerEndcapHits','TrackerBarrelHits','VertexBarrelHits','GEMTrackerEndcapHits'] +tracker_endcap_collections = [ + 'TrackerEndcapHits1', + 'TrackerEndcapHits2', + 'TrackerEndcapHits3', + 'TrackerEndcapHits4', + 'TrackerEndcapHits5', + 'TrackerEndcapHits6' +] +tracker_barrel_collections = [ + 'TrackerBarrelHits' +] +vertex_barrel_collections = [ + 'VertexBarrelHits' +] +gem_endcap_collections = [ + 'GEMTrackerEndcapHits1', + 'GEMTrackerEndcapHits2', + 'GEMTrackerEndcapHits3' +] +vertex_endcap_collections = [ + 'VertexEndcapHits' +] +mpgd_barrel_collections = [ + 'MPGDTrackerBarrelHits1', + 'MPGDTrackerBarrelHits2' +] + +input_collections = ['MCParticles'] + tracker_endcap_collections + tracker_barrel_collections + vertex_barrel_collections + gem_endcap_collections + if 'acadia' in detector_version: - input_collections.append('VertexEndcapHits') + input_collections += vertex_endcap_collections else: - input_collections.append('MPGDTrackerBarrelHits') -podioinput = PodioInput("PodioReader", - collections=input_collections, - OutputLevel=DEBUG) + input_collections += mpgd_barrel_collections + +podioinput = PodioInput("PodioReader", + collections=input_collections) algorithms.append( podioinput ) -trk_b_digi = TrackerDigi("trk_b_digi", - inputHitCollection="TrackerBarrelHits", - outputHitCollection="TrackerBarrelRawHits", - timeResolution=8, - OutputLevel=DEBUG) +trk_b_coll = SimTrackerHitsCollector("trk_b_coll", + inputSimTrackerHits = tracker_barrel_collections, + outputSimTrackerHits = "TrackerBarrelHits") +trk_b_digi = TrackerDigi("trk_b_digi", + inputHitCollection = trk_b_coll.outputSimTrackerHits, + outputHitCollection = "TrackerBarrelRawHits", + timeResolution=8) algorithms.append( trk_b_digi ) -trk_ec_digi = TrackerDigi("trk_ec_digi", - inputHitCollection="TrackerEndcapHits", - outputHitCollection="TrackerEndcapRawHits", + +trk_ec_coll = SimTrackerHitsCollector("trk_ec_coll", + inputSimTrackerHits = tracker_endcap_collections, + outputSimTrackerHits = "TrackerEndcapHits") +trk_ec_digi = TrackerDigi("trk_ec_digi", + inputHitCollection = trk_ec_coll.outputSimTrackerHits, + outputHitCollection = "TrackerEndcapRawHits", timeResolution=8) algorithms.append( trk_ec_digi ) -vtx_b_digi = TrackerDigi("vtx_b_digi", - inputHitCollection="VertexBarrelHits", - outputHitCollection="VertexBarrelRawHits", +vtx_b_coll = SimTrackerHitsCollector("vtx_b_coll", + inputSimTrackerHits = vertex_barrel_collections, + outputSimTrackerHits = "VertexBarrelHits") +vtx_b_digi = TrackerDigi("vtx_b_digi", + inputHitCollection = vtx_b_coll.outputSimTrackerHits, + outputHitCollection = "VertexBarrelRawHits", timeResolution=8) algorithms.append( vtx_b_digi ) if 'acadia' in detector_version: - vtx_ec_digi = TrackerDigi("vtx_ec_digi", - inputHitCollection="VertexEndcapHits", - outputHitCollection="VertexEndcapRawHits", + vtx_ec_coll = SimTrackerHitsCollector("vtx_ec_coll", + inputSimTrackerHits = vertex_endcap_collections, + outputSimTrackerHits = "VertexEndcapHits") + vtx_ec_digi = TrackerDigi("vtx_ec_digi", + inputHitCollection = vtx_ec_coll.outputSimTrackerHits, + outputHitCollection = "VertexEndcapRawHits", timeResolution=8) algorithms.append( vtx_ec_digi ) else: - mm_b_digi = TrackerDigi("mm_b_digi", - inputHitCollection="MPGDTrackerBarrelHits", - outputHitCollection="MPGDTrackerBarrelRawHits", + mm_b_coll = SimTrackerHitsCollector("mm_b_coll", + inputSimTrackerHits = mpgd_barrel_collections, + outputSimTrackerHits = "MPGDTrackerBarrelHits") + mm_b_digi = TrackerDigi("mm_b_digi", + inputHitCollection = mm_b_coll.outputSimTrackerHits, + outputHitCollection = "MPGDTrackerBarrelRawHits", timeResolution=8) algorithms.append( mm_b_digi ) +gem_ec_coll = SimTrackerHitsCollector("gem_ec_coll", + inputSimTrackerHits = gem_endcap_collections, + outputSimTrackerHits = "GEMTrackerEndcapHits") gem_ec_digi = TrackerDigi("gem_ec_digi", - inputHitCollection="GEMTrackerEndcapHits", - outputHitCollection="GEMTrackerEndcapRawHits", + inputHitCollection = gem_ec_coll.outputSimTrackerHits, + outputHitCollection = "GEMTrackerEndcapRawHits", timeResolution=10) algorithms.append(gem_ec_digi) @@ -156,8 +203,7 @@ algorithms.append( trk_hit_col ) sourcelinker = TrackerSourceLinker("sourcelinker", inputHitCollection=trk_hit_col.trackingHits, outputSourceLinks="TrackSourceLinks", - outputMeasurements="TrackMeasurements", - OutputLevel=VERBOSE) + outputMeasurements="TrackMeasurements") algorithms.append( sourcelinker ) ## Track param init @@ -178,13 +224,11 @@ parts_from_fit = ParticlesFromTrackFit("parts_from_fit", inputTrajectories="trajectories", outputParticles="ReconstructedParticles", outputTrackParameters="outputTrackParameters") - #OutputLevel=DEBUG) algorithms.append( parts_from_fit ) #trajs_from_fit = TrajectoryFromTrackFit("trajs_from_fit", #inputTrajectories = trk_find_alg.outputTrajectories, #outputTrajectoryParameters = "outputTrajectoryParameters") - #OutputLevel=DEBUG) #algorithms.append(trajs_from_fit) out = PodioOutput("out", filename=output_rec_file) -- GitLab