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