Skip to content
Snippets Groups Projects

Draft: Tracking geo

Closed Whitney Armstrong requested to merge tracking_geo into master
Files
8
+ 220
0
from Gaudi.Configuration import *
from GaudiKernel.DataObjectHandleBase import DataObjectHandleBase
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 "JUGGLER_DETECTOR_PATH" in os.environ :
detector_path = str(os.environ["JUGGLER_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=DEBUG)
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__ExampleCaloDigi as ExampleCaloDigi
from Configurables import Jug__Digi__UFSDTrackerDigi as TrackerDigi
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
from Configurables import Jug__Reco__TrackParamVertexClusterInit as TrackParamVertexClusterInit
from Configurables import Jug__Reco__TrackFindingAlgorithm as TrackFindingAlgorithm
from Configurables import Jug__Reco__ParticlesFromTrackFit as ParticlesFromTrackFit
from Configurables import Jug__Reco__EMCalReconstruction as EMCalReconstruction
from Configurables import Jug__Reco__SimpleClustering as SimpleClustering
podioinput = PodioInput("PodioReader",
collections=["mcparticles","TrackerEndcapHits","TrackerBarrelHits","VertexBarrelHits","VertexEndcapHits"])
## copiers to get around input --> output copy bug. Note the "2" appended to the output collection.
copier = MCCopier("MCCopier",
inputCollection="mcparticles",
outputCollection="mcparticles2")
#trkcopier = TrkCopier("TrkCopier",
# inputCollection="TrackerBarrelHits",
# outputCollection="TrackerBarrelHits2")
#
#trk_b_digi = TrackerDigi("trk_b_digi",
# inputHitCollection="TrackerBarrelHits",
# outputHitCollection="TrackerBarrelRawHits",
# timeResolution=8)
#trk_ec_digi = TrackerDigi("trk_ec_digi",
# inputHitCollection="TrackerEndcapHits",
# outputHitCollection="TrackerEndcapRawHits",
# timeResolution=8)
#
#vtx_b_digi = TrackerDigi("vtx_b_digi",
# inputHitCollection="VertexBarrelHits",
# outputHitCollection="VertexBarrelRawHits",
# timeResolution=8)
#
#vtx_ec_digi = TrackerDigi("vtx_ec_digi",
# inputHitCollection="VertexEndcapHits",
# outputHitCollection="VertexEndcapRawHits",
# timeResolution=8)
#
#ecal_reco = EMCalReconstruction("ecal_reco",
# inputHitCollection="RawEcalBarrelHits",
# outputHitCollection="RecEcalBarrelHits",
# minModuleEdep=0.0*units.MeV,
# OutputLevel=WARNING)
#
#simple_cluster = SimpleClustering("simple_cluster",
# inputHitCollection="RecEcalBarrelHits",
# outputClusters="SimpleClusters",
# minModuleEdep=1.0*units.MeV,
# maxDistance=50.0*units.cm,
# OutputLevel=WARNING)
#
## Tracker and vertex reconstruction
#trk_b_reco = TrackerHitReconstruction("trk_b_reco",
# inputHitCollection = trk_b_digi.outputHitCollection,
# outputHitCollection="TrackerBarrelRecHits")
#
#trk_ec_reco = TrackerHitReconstruction("trk_ec_reco",
# inputHitCollection = trk_ec_digi.outputHitCollection,
# outputHitCollection="TrackerEndcapRecHits")
#
#vtx_b_reco = TrackerHitReconstruction("vtx_b_reco",
# inputHitCollection = vtx_b_digi.outputHitCollection,
# outputHitCollection="VertexBarrelRecHits")
#
#vtx_ec_reco = TrackerHitReconstruction("vtx_ec_reco",
# inputHitCollection = vtx_ec_digi.outputHitCollection,
# outputHitCollection="VertexEndcapRecHits")
#
## Hit Source linker
#sourcelinker = TrackerSourceLinker("sourcelinker",
# inputHitCollection=trk_b_reco.outputHitCollection,
# outputSourceLinks="BarrelTrackSourceLinks",
# outputMeasurements="BarrelTrackMeasurements",
# OutputLevel=DEBUG)
#
##trk_hits_srclnkr = TrackerSourcesLinker("trk_srcslnkr",
## ITrackerBarrelHits = vtx_b_reco.outputHitCollection,
## ITrackerEndcapHits = vtx_ec_reco.outputHitCollection,
## OTrackerBarrelHits = trk_b_reco.outputHitCollection,
## OTrackerEndcapHits = trk_ec_reco.outputHitCollection,
## outputSourceLinks="TrackerMeasurements",
## OutputLevel=DEBUG)
#
### Track param init
#truth_trk_init = TrackParamTruthInit("truth_trk_init",
# inputMCParticles="mcparticles",
# outputInitialTrackParameters="InitTrackParams",
# OutputLevel=DEBUG)
#
#clust_trk_init = TrackParamClusterInit("clust_trk_init",
# inputClusters="SimpleClusters",
# outputInitialTrackParameters="InitTrackParamsFromClusters",
# OutputLevel=DEBUG)
#vtxcluster_trk_init = TrackParamVertexClusterInit("vtxcluster_trk_init",
# inputVertexHits="VertexBarrelRecHits",
# inputClusters="SimpleClusters",
# outputInitialTrackParameters="InitTrackParamsFromVtxClusters",
# maxHitRadius=40.0*units.mm,
# OutputLevel=WARNING)
## Tracking algorithms
#trk_find_alg = TrackFindingAlgorithm("trk_find_alg",
# inputSourceLinks = sourcelinker.outputSourceLinks,
# inputMeasurements = sourcelinker.outputMeasurements,
# inputInitialTrackParameters= "InitTrackParams",#"InitTrackParamsFromClusters",
# outputTrajectories="trajectories",
# OutputLevel=DEBUG)
#
#parts_from_fit = ParticlesFromTrackFit("parts_from_fit",
# inputTrajectories="trajectories",
# outputParticles="ReconstructedParticles",
# outputTrackParameters="outputTrackParameters",
# OutputLevel=DEBUG)
#
#trk_find_alg1 = TrackFindingAlgorithm("trk_find_alg1",
# inputSourceLinks = sourcelinker.outputSourceLinks,
# inputMeasurements = sourcelinker.outputMeasurements,
# inputInitialTrackParameters= "InitTrackParamsFromClusters",
# outputTrajectories="trajectories1",
# OutputLevel=DEBUG)
#
#parts_from_fit1 = ParticlesFromTrackFit("parts_from_fit1",
# inputTrajectories="trajectories1",
# outputParticles="ReconstructedParticles1",
# outputTrackParameters="outputTrackParameters1",
# OutputLevel=DEBUG)
#
##trk_find_alg2 = TrackFindingAlgorithm("trk_find_alg2",
## inputSourceLinks = trk_hits_srclnkr.outputSourceLinks,
## inputMeasurements = trk_hits_srclnkr.outputMeasurements,
## inputInitialTrackParameters= "InitTrackParamsFromVtxClusters",
## outputTrajectories="trajectories2",
## OutputLevel=WARNING)
##parts_from_fit2 = ParticlesFromTrackFit("parts_from_fit2",
## inputTrajectories="trajectories2",
## outputParticles="ReconstructedParticles2",
## outputTrackParameters="outputTrackParameters2",
## OutputLevel=WARNING)
#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, DataObjectHandleBase):
# 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"
]
ApplicationMgr(
TopAlg = [podioinput,
copier,
out
],
EvtSel = 'NONE',
EvtMax = 1,
ExtSvc = [podioevent,geo_service],
OutputLevel=WARNING
)
Loading