Skip to content
Snippets Groups Projects

Draft: Resolve "Add BTOF Benchmark"

Open Zhenyu Ye requested to merge 80-add-btof-benchmark into master
Files
11
 
from Gaudi.Configuration import *
 
 
from Configurables import ApplicationMgr, EICDataSvc, PodioOutput, GeoSvc
 
from GaudiKernel import SystemOfUnits as units
 
 
detector_name = "topside"
 
if "JUGGLER_DETECTOR" in os.environ :
 
detector_name = str(os.environ["JUGGLER_DETECTOR"])
 
 
detector_path = ""
 
if "DETECTOR_PATH" in os.environ :
 
detector_path = str(os.environ["DETECTOR_PATH"])
 
 
# todo add checks
 
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)
 
podioevent = EICDataSvc("EventDataSvc", inputs=[input_sim_file], OutputLevel=WARNING)
 
 
from Configurables import PodioInput
 
from Configurables import Jug__Base__InputCopier_dd4pod__Geant4ParticleCollection_dd4pod__Geant4ParticleCollection_ as MCCopier
 
from Configurables import Jug__Base__InputCopier_dd4pod__CalorimeterHitCollection_dd4pod__CalorimeterHitCollection_ as CalCopier
 
from Configurables import Jug__Base__InputCopier_dd4pod__TrackerHitCollection_dd4pod__TrackerHitCollection_ as TrkCopier
 
 
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__TrackParamTruthInit as TrackParamTruthInit
 
from Configurables import Jug__Reco__TrackParamClusterInit as TrackParamClusterInit
 
from Configurables import Jug__Reco__TrackParamVertexClusterInit as TrackParamVertexClusterInit
 
 
#from Configurables import Jug__Reco__ConformalXYPeakProtoTracks as ConformalXYPeakProtoTracks
 
from Configurables import Jug__Reco__TrackFindingAlgorithm as TrackFindingAlgorithm
 
from Configurables import Jug__Reco__ParticlesFromTrackFit as ParticlesFromTrackFit
 
 
from Configurables import Jug__Reco__SimpleClustering as SimpleClustering
 
 
 
algorithms = [ ]
 
 
podioinput = PodioInput("PodioReader",
 
collections=["mcparticles","TrackerEndcapHits","TrackerBarrelHits","VertexBarrelHits","VertexEndcapHits","BarrelTOFHits","ForwardTOFHits","BackwardTOFHits"])
 
#collections=["mcparticles","TrackerEndcapHits","TrackerBarrelHits","VertexBarrelHits","VertexEndcapHits","GEMTrackerEndcapHits","BarrelTOFHits","ForwardTOFHits","BackwardTOFHits"])
 
algorithms.append( podioinput )
 
 
## copiers to get around input --> output copy bug. Note the "2" appended to the output collection.
 
copier = MCCopier("MCCopier",
 
inputCollection="mcparticles",
 
outputCollection="mcparticles2")
 
algorithms.append( copier )
 
 
trkcopier = TrkCopier("TrkCopier",
 
inputCollection="TrackerBarrelHits",
 
outputCollection="TrackerBarrelHits2")
 
algorithms.append( trkcopier )
 
 
trk_b_digi = TrackerDigi("trk_b_digi",
 
inputHitCollection="TrackerBarrelHits",
 
outputHitCollection="TrackerBarrelRawHits",
 
timeResolution=8)
 
algorithms.append( trk_b_digi )
 
trk_ec_digi = TrackerDigi("trk_ec_digi",
 
inputHitCollection="TrackerEndcapHits",
 
outputHitCollection="TrackerEndcapRawHits",
 
timeResolution=8)
 
algorithms.append( trk_ec_digi )
 
 
vtx_b_digi = TrackerDigi("vtx_b_digi",
 
inputHitCollection="VertexBarrelHits",
 
outputHitCollection="VertexBarrelRawHits",
 
timeResolution=8)
 
algorithms.append( vtx_b_digi )
 
 
vtx_ec_digi = TrackerDigi("vtx_ec_digi",
 
inputHitCollection="VertexEndcapHits",
 
outputHitCollection="VertexEndcapRawHits",
 
timeResolution=8)
 
algorithms.append( vtx_ec_digi )
 
 
#gem_ec_digi = TrackerDigi("gem_ec_digi",
 
# inputHitCollection="GEMTrackerEndcapHits",
 
# outputHitCollection="GEMTrackerEndcapRawHits",
 
# timeResolution=10)
 
#algorithms.append(gem_ec_digi)
 
 
tof_b_digi = TrackerDigi("tof_b_digi",
 
inputHitCollection="BarrelTOFHits",
 
outputHitCollection="BarrelTOFRawHits",
 
timeResolution=20)
 
algorithms.append(tof_b_digi)
 
 
tof_forward_digi = TrackerDigi("tof_forward_digi",
 
inputHitCollection="ForwardTOFHits",
 
outputHitCollection="ForwardTOFRawHits",
 
timeResolution=20)
 
algorithms.append(tof_forward_digi)
 
 
tof_backward_digi = TrackerDigi("tof_backward_digi",
 
inputHitCollection="BackwardTOFHits",
 
outputHitCollection="BackwardTOFRawHits",
 
timeResolution=20)
 
algorithms.append(tof_backward_digi)
 
 
# Tracker and vertex reconstruction
 
trk_b_reco = TrackerHitReconstruction("trk_b_reco",
 
inputHitCollection = trk_b_digi.outputHitCollection,
 
outputHitCollection="TrackerBarrelRecHits")
 
algorithms.append( trk_b_reco )
 
 
trk_ec_reco = TrackerHitReconstruction("trk_ec_reco",
 
inputHitCollection = trk_ec_digi.outputHitCollection,
 
outputHitCollection="TrackerEndcapRecHits")
 
algorithms.append( trk_ec_reco )
 
 
vtx_b_reco = TrackerHitReconstruction("vtx_b_reco",
 
inputHitCollection = vtx_b_digi.outputHitCollection,
 
outputHitCollection="VertexBarrelRecHits")
 
algorithms.append( vtx_b_reco )
 
 
vtx_ec_reco = TrackerHitReconstruction("vtx_ec_reco",
 
inputHitCollection = vtx_ec_digi.outputHitCollection,
 
outputHitCollection="VertexEndcapRecHits")
 
algorithms.append( vtx_ec_reco )
 
 
#gem_ec_reco = TrackerHitReconstruction("gem_ec_reco",
 
# inputHitCollection=gem_ec_digi.outputHitCollection,
 
# outputHitCollection="GEMTrackerEndcapRecHits")
 
#algorithms.append(gem_ec_reco)
 
 
tof_b_reco = TrackerHitReconstruction("tof_b_reco",
 
inputHitCollection=tof_b_digi.outputHitCollection,
 
outputHitCollection="BarrelTOFRecHits")
 
algorithms.append(tof_b_reco)
 
 
tof_forward_reco = TrackerHitReconstruction("tof_forward_reco",
 
inputHitCollection=tof_forward_digi.outputHitCollection,
 
outputHitCollection="ForwardTOFRecHits")
 
algorithms.append(tof_forward_reco)
 
 
tof_backward_reco = TrackerHitReconstruction("tof_backward_reco",
 
inputHitCollection=tof_backward_digi.outputHitCollection,
 
outputHitCollection="BackwardTOFRecHits")
 
algorithms.append(tof_backward_reco)
 
 
trk_hit_col = TrackingHitsCollector("trk_hit_col",
 
inputTrackingHits=[
 
str(trk_b_reco.outputHitCollection),
 
str(trk_ec_reco.outputHitCollection),
 
str(vtx_b_reco.outputHitCollection),
 
str(vtx_ec_reco.outputHitCollection),
 
# str(gem_ec_reco.outputHitCollection),
 
str(tof_b_reco.outputHitCollection),
 
str(tof_forward_reco.outputHitCollection),
 
str(tof_backward_reco.outputHitCollection) ],
 
trackingHits="trackingHits",
 
OutputLevel=DEBUG)
 
algorithms.append( trk_hit_col )
 
 
# track finding
 
#conformal_find = ConformalXYPeakProtoTracks("conformal_find",
 
# inputTrackerHits=trk_hit_col.trackingHits,
 
# outputProtoTracks="outputProtoTracks",
 
# nProtoTracks="nProtoTracks",
 
# nPhiBins=90,
 
# OutputLevel=DEBUG)
 
#algorithms.append( conformal_find )
 
 
# Hit Source linker
 
sourcelinker = TrackerSourceLinker("sourcelinker",
 
inputHitCollection=trk_hit_col.trackingHits,
 
outputSourceLinks="TrackSourceLinks",
 
outputMeasurements="TrackMeasurements", OutputLevel=DEBUG)
 
algorithms.append( sourcelinker )
 
 
## Track param init
 
truth_trk_init = TrackParamTruthInit("truth_trk_init",
 
inputMCParticles="mcparticles",
 
outputInitialTrackParameters="InitTrackParams")
 
#OutputLevel=DEBUG)
 
algorithms.append( truth_trk_init )
 
 
# Tracking algorithms
 
trk_find_alg = TrackFindingAlgorithm("trk_find_alg",
 
inputSourceLinks = sourcelinker.outputSourceLinks,
 
inputMeasurements = sourcelinker.outputMeasurements,
 
inputInitialTrackParameters= "InitTrackParams",#"InitTrackParamsFromClusters",
 
outputTrajectories="trajectories")
 
#OutputLevel=DEBUG)
 
algorithms.append( trk_find_alg )
 
 
parts_from_fit = ParticlesFromTrackFit("parts_from_fit",
 
inputTrajectories="trajectories",
 
outputParticles="ReconstructedParticles",
 
outputTrackParameters="outputTrackParameters")
 
#OutputLevel=DEBUG)
 
algorithms.append( parts_from_fit )
 
 
#types = []
 
## this printout is useful to check that the type information is passed to python correctly
 
#print("---------------------------------------\n")
 
#print("---\n# List of input and output types by class")
 
#for configurable in sorted([ PodioInput, EICDataSvc, PodioOutput,
 
# TrackerHitReconstruction,ExampleCaloDigi,
 
# UFSDTrackerDigi, TrackerSourceLinker,
 
# PodioOutput],
 
# key=lambda c: c.getType()):
 
# print("\"{}\":".format(configurable.getType()))
 
# props = configurable.getDefaultProperties()
 
# for propname, prop in sorted(props.items()):
 
# print(" prop name: {}".format(propname))
 
# if isinstance(prop, DataHandleBase):
 
# types.append(prop.type())
 
# print(" {}: \"{}\"".format(propname, prop.type()))
 
#print("---")
 
 
out = PodioOutput("out", filename=output_rec_file)
 
out.outputCommands = ["keep *",
 
"drop BarrelTrackSourceLinks",
 
"drop InitTrackParams",
 
"drop trajectories",
 
"drop outputSourceLinks",
 
"drop outputInitialTrackParameters",
 
"drop mcparticles"
 
]
 
algorithms.append(out)
 
 
ApplicationMgr(
 
TopAlg = algorithms,
 
EvtSel = 'NONE',
 
EvtMax = n_events,
 
ExtSvc = [podioevent,geo_service],
 
OutputLevel=WARNING
 
)
 
Loading