Skip to content
Snippets Groups Projects

Remove default values of process such that it is configured once via a required user input

Merged Abhijit Mathad requested to merge AM_process into master
@@ -16,10 +16,17 @@ from PyConf.Algorithms import UnpackMCParticle, UnpackMCVertex
from PyConf.application import make_data_with_FetchDataFromFile
from GaudiConf.reading import bank_location
from typing import OrderedDict
from enum import Enum
class ProcessTypes(str, Enum):
Turbo = "Turbo"
Hlt2 = "Hlt2"
Spruce = "Spruce"
@configurable
def upfront_decoder(process='Spruce'):
def upfront_decoder(*, process: ProcessTypes):
"""Return a DataHandle for HltPackedBufferDecoder output
This is input to all unpacking algorithms except MC and old unpacker
"""
@@ -50,41 +57,41 @@ def upfront_decoder(process='Spruce'):
RawBanks=dst_data).OutputBuffers
def get_particles(location, process="Spruce"):
def get_particles(location):
"""
Unpacking of particles. This will also unpack the decay vertices associated with these particles implicitely
"""
unpacker = unpackers_map()["Particles"]
return unpacker(
InputName=upfront_decoder(process),
InputName=upfront_decoder(),
outputs={
"OutputName": force_location(location)
}).OutputName
def get_pp2mcp_relations(location, process="Spruce", extra_inputs=[]):
def get_pp2mcp_relations(location, extra_inputs=[]):
"""
Unpacking of ProtoParticle to MCParticle relations. These are needed for truth matching
"""
unpacker_pp2mcp = unpackers_map()["PP2MCPRelations"]
return unpacker_pp2mcp(
InputName=upfront_decoder(process),
InputName=upfront_decoder(),
ExtraInputs=extra_inputs,
outputs={
"OutputName": force_location(location)
}).OutputName
def get_p2v_relations(location, process="Spruce"):
def get_p2v_relations(location):
"""
Unpacking of P2V relations. Make sure particles are unpacked
"""
unpacker_p2v = unpackers_map()["P2VPRelations"]
return unpacker_p2v(
InputName=upfront_decoder(process),
InputName=upfront_decoder(),
outputs={
"OutputName": force_location(location)
}).OutputName
@@ -126,7 +133,8 @@ def get_mc_vertices(location):
}).OutputName
def reconstruction(process='Spruce', obj="", reco=""):
@configurable
def reconstruction(*, process: ProcessTypes, obj: str, reco: str):
stream = '/Event/Spruce/HLT2'
if process in ['Hlt2', 'Turbo']:
stream = '/Event/HLT2'
@@ -135,39 +143,37 @@ def reconstruction(process='Spruce', obj="", reco=""):
unpacker = unpackers_map()[reco]
return unpacker(
InputName=upfront_decoder(process),
InputName=upfront_decoder(),
outputs={
"OutputName": force_location(location)
}).OutputName
def get_rich_pids(process='Spruce'):
return reconstruction(process=process, obj='RichPIDs', reco="RichPIDs")
def get_rich_pids():
return reconstruction(obj='RichPIDs', reco="RichPIDs")
def get_muon_pids(process='Spruce'):
return reconstruction(process=process, obj='MuonPIDs', reco="MuonPIDs")
def get_muon_pids():
return reconstruction(obj='MuonPIDs', reco="MuonPIDs")
def get_charged_protoparticles(process='Spruce'):
return reconstruction(
process=process, obj="ChargedProtos", reco="ProtoParticles")
def get_charged_protoparticles():
return reconstruction(obj="ChargedProtos", reco="ProtoParticles")
def get_neutral_protoparticles(process='Spruce'):
return reconstruction(
process=process, obj="NeutralProtos", reco="ProtoParticles")
def get_neutral_protoparticles():
return reconstruction(obj="NeutralProtos", reco="ProtoParticles")
def get_pvs_v1(process='Spruce'):
return reconstruction(process=process, obj="PVs", reco="PVs")
def get_pvs_v1():
return reconstruction(obj="PVs", reco="PVs")
def get_pvs(process='Spruce'):
def get_pvs():
### Temporary: as long as we persist v1, we need to insert a converter for the new PVs
from PyConf.Algorithms import RecV1ToPVConverter
return RecV1ToPVConverter(InputVertices=get_pvs_v1(process)).OutputVertices
return RecV1ToPVConverter(InputVertices=get_pvs_v1()).OutputVertices
def get_rec_summary(process="Spruce"):
return reconstruction(process=process, obj="RecSummary", reco="RecSummary")
def get_rec_summary():
return reconstruction(obj="RecSummary", reco="RecSummary")
Loading