Skip to content
Snippets Groups Projects

WIP: Test tracking

Closed Chao Peng requested to merge test_tracking into master
2 files
+ 263
0
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 133
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'])
 
 
compact = '{}/{}.xml'.format(detector_path,detector_name)
 
# compact = '/home/cpeng/projects/eic/acts/thirdparty/OpenDataDetector/xml/OpenDataDetector.xml'
 
geo_service = GeoSvc('GeoSvc', detectors=[compact], 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__SingleTrackSourceLinker as SingleTrackSourceLinker
 
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
 
 
 
 
colls = [
 
'mcparticles',
 
# 'PixelBarrelReadout',
 
# 'TrackerEndcapHits',
 
'TrackerBarrelHits',
 
# 'VertexBarrelHits',
 
# 'VertexEndcapHits',
 
# 'EcalBarrelHits',
 
]
 
podioinput = PodioInput('PodioReader', collections=colls)#, OutputLevel=DEBUG)
 
 
## copiers to get around input --> output copy bug. Note the '2' appended to the output collection.
 
trk_b_digi = TrackerDigi('trk_b_digi',
 
# inputHitCollection='PixelBarrelReadout',
 
inputHitCollection='TrackerBarrelHits',
 
outputHitCollection='TrackerBarrelRawHits',
 
timeResolution=8)
 
 
vtx_b_digi = TrackerDigi('vtx_b_digi',
 
inputHitCollection='VertexBarrelHits',
 
outputHitCollection='VertexBarrelRawHits',
 
timeResolution=8)
 
 
# Tracker and vertex reconstruction
 
trk_b_reco = TrackerHitReconstruction('trk_b_reco',
 
OutputLevel=DEBUG,
 
inputHitCollection = trk_b_digi.outputHitCollection,
 
outputHitCollection='TrackerBarrelRecHits')
 
 
vtx_b_reco = TrackerHitReconstruction('vtx_b_reco',
 
inputHitCollection = vtx_b_digi.outputHitCollection,
 
outputHitCollection='VertexBarrelRecHits')
 
 
truth_trk_init = TrackParamTruthInit("truth_trk_init",
 
inputMCParticles="mcparticles",
 
outputInitialTrackParameters="InitTrackParams",
 
OutputLevel=DEBUG)
 
 
# Hit Source linker
 
sourcelinker = SingleTrackSourceLinker("sourcelinker",
 
inputHitCollection=trk_b_reco.outputHitCollection,
 
outputSourceLinks="BarrelTrackSourceLinks",
 
outputMeasurements="BarrelTrackMeasurements",
 
OutputLevel=DEBUG)
 
 
trk_find_alg1 = TrackFindingAlgorithm("trk_find_alg1",
 
inputSourceLinks = sourcelinker.outputSourceLinks,
 
inputMeasurements = sourcelinker.outputMeasurements,
 
inputInitialTrackParameters= "InitTrackParams",
 
outputTrajectories="trajectories1",
 
OutputLevel=DEBUG)
 
'''
 
# Tracking algorithms
 
trk_find_alg = TruthSeedingTrack('trk_find_alg',
 
inputHitCollection = trk_b_reco.outputHitCollection,
 
inputMCParticles='mcparticles',
 
outputTrajectories='trajectories',
 
OutputLevel=DEBUG)
 
'''
 
 
parts_from_fit = ParticlesFromTrackFit('parts_from_fit',
 
inputTrajectories='trajectories',
 
outputParticles='ReconstructedParticles',
 
outputTrackParameters='outputTrackParameters',
 
OutputLevel=DEBUG)
 
 
out = PodioOutput('out', filename=output_rec_file)
 
out.outputCommands = ['keep *']
 
 
ApplicationMgr(
 
TopAlg = [podioinput,
 
trk_b_digi,# vtx_b_digi,
 
trk_b_reco,# vtx_b_reco,
 
truth_trk_init,
 
sourcelinker,
 
trk_find_alg1,
 
out
 
],
 
EvtSel = 'NONE',
 
EvtMax = 3,
 
ExtSvc = [podioevent,geo_service],
 
OutputLevel=WARNING
 
)
 
Loading