Newer
Older
""" Define methods used to instantiate configured Waveform reconstruction tools and algorithms
Copyright (C) 2020 CERN for the benefit of the FASER collaboration
"""
from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
from AthenaConfiguration.ComponentFactory import CompFactory
from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
from WaveformConditionsTools.WaveformTimingConfig import WaveformTimingCfg
WaveformReconstructionTool = CompFactory.WaveformReconstructionTool
ClockReconstructionTool = CompFactory.ClockReconstructionTool
# One stop shopping for normal FASER data
""" Return all algorithms and tools for Waveform reconstruction """
acc = ComponentAccumulator()
if not flags.Input.isMC:
acc.merge(WaveformClockRecCfg(flags, "ClockRecAlg"))

Eric Torrence
committed
acc.merge(WaveformHitRecCfg(flags, "TriggerWaveformRecAlg", "Trigger"))
acc.merge(WaveformHitRecCfg(flags, "VetoWaveformRecAlg", "Veto"))
acc.merge(WaveformHitRecCfg(flags, "PreshowerWaveformRecAlg", "Preshower"))
acc.merge(WaveformHitRecCfg(flags, "CaloWaveformRecAlg", "Calo"))
acc.merge(WaveformHitRecCfg(flags, "VetoNuWaveformRecAlg", "VetoNu"))
return acc
# Return configured WaveformClock reconstruction algorithm
def WaveformClockRecCfg(flags, name="ClockRecAlg", **kwargs):
acc = ComponentAccumulator()
tool = ClockReconstructionTool(name="ClockReconstructionTool")
# tool.CheckResult = True
kwargs.setdefault("ClockReconstructionTool", tool)
recoAlg = CompFactory.WaveClockRecAlg(name, **kwargs)
recoAlg.ClockReconstructionTool = tool
acc.addEventAlgo(recoAlg)
return acc
# Return configured WaveformHit reconstruction algorithm
# Specify data source (Veto, VetoNu, Trigger, Preshower, Calo, Test)
def WaveformHitRecCfg(flags, name="WaveformRecAlg", source="", **kwargs):
acc = ComponentAccumulator()
#if flags.Input.isMC:
# kwargs.setdefault("PeakThreshold", 5)
tool = WaveformReconstructionTool(name=source+"WaveformRecTool", **kwargs)
if "PeakThreshold" in kwargs: kwargs.pop("PeakThreshold")
kwargs.setdefault("WaveformContainerKey", source+"Waveforms")
kwargs.setdefault("WaveformHitContainerKey", source+"WaveformHits")
kwargs.setdefault("WaveformReconstructionTool", tool)
recoAlg = CompFactory.RawWaveformRecAlg(name, **kwargs)
recoAlg.WaveformReconstructionTool = tool
acc.addEventAlgo(recoAlg)
return acc
def WaveformReconstructionOutputCfg(flags, **kwargs):
""" Return ComponentAccumulator with output for Waveform Reco"""
acc = ComponentAccumulator()
ItemList = [
"xAOD::WaveformHitContainer#*"
, "xAOD::WaveformHitAuxContainer#*"
, "xAOD::WaveformClock#*"
, "xAOD::WaveformClockAuxInfo#*"
]
acc.merge(OutputStreamCfg(flags, "xAOD", ItemList))
# ostream = acc.getEventAlgo("OutputStreamRDO")
# ostream.TakeItemsFromInput = True # Don't know what this does
return acc
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# Return configured "reconstruction" algorithm from scint SIM hits
# Specify data source (Veto, Trigger, Preshower)
def PseudoScintHitToWaveformRecCfg(flags, name="PseudoScintHitToWaveformRecAlg", source="", **kwargs):
acc = ComponentAccumulator()
tool = CompFactory.PseudoSimToWaveformRecTool(name=source+"PseudoSimToWaveformRecTool", **kwargs)
kwargs.setdefault("ScintHitContainerKey", source+"Hits")
kwargs.setdefault("WaveformHitContainerKey", source+"WaveformHits")
kwargs.setdefault("PseudoSimToWaveformRecTool", tool)
recoAlg = CompFactory.PseudoScintHitToWaveformRecAlg(name, **kwargs)
recoAlg.PseudoSimToWaveformRecTool = tool
acc.addEventAlgo(recoAlg)
return acc
# Return configured "reconstruction" algorithm from calo SIM hits
def PseudoCaloHitToWaveformRecCfg(flags, name="PseudoCaloHitToWaveformRecAlg", **kwargs):
acc = ComponentAccumulator()
tool = CompFactory.PseudoSimToWaveformRecTool(name="CaloPseudoSimToWaveformRecTool", **kwargs)
kwargs.setdefault("CaloHitContainerKey", "EcalHits")
kwargs.setdefault("WaveformHitContainerKey", "CaloWaveformHits")
kwargs.setdefault("PseudoSimToWaveformRecTool", tool)
recoAlg = CompFactory.PseudoCaloHitToWaveformRecAlg(name, **kwargs)
recoAlg.PseudoSimToWaveformRecTool = tool
acc.addEventAlgo(recoAlg)
return acc