Skip to content
Snippets Groups Projects
Commit 3558f224 authored by Alejandro Alfonso Albero's avatar Alejandro Alfonso Albero
Browse files

Merge from aalfonso-PhotonMaker branch

parent 23bed845
No related branches found
No related tags found
No related merge requests found
......@@ -31,7 +31,7 @@ makers_to_run = [
(name, getattr(standard_particles, name))
for name in dir(standard_particles)
# Ignore non-particle-maker functions
if name.startswith('make_') and name != 'make_protoparticles'
if name.startswith('make_')
]
......
......@@ -19,7 +19,7 @@ from __future__ import absolute_import, division, print_function
from GaudiKernel.SystemOfUnits import GeV, MeV
from PyConf.Algorithms import FunctionalParticleMaker
from PyConf.Algorithms import FunctionalParticleMaker, TESMergerParticle
from PyConf.Tools import (LoKi__Hybrid__ProtoParticleFilter as
ProtoParticleFilter, LoKi__Hybrid__TrackSelector as
TrackSelector)
......@@ -28,7 +28,9 @@ from PyConf import configurable
from .algorithms import require_all, ParticleCombiner, PhotonFilter
from .hacks import patched_hybrid_tool
from RecoConf.reco_objects_from_file import make_protoparticles, make_neutral_protoparticles
from RecoConf.reco_objects_from_file import (
make_protoparticles as _make_protoparticles, make_neutral_protoparticles as
_make_neutral_protoparticles)
@configurable
......@@ -54,7 +56,7 @@ def standard_protoparticle_filter(Code='PP_ALL', **kwargs):
@configurable
def make_particles(species='pion',
make_protoparticles=make_protoparticles,
make_protoparticles=_make_protoparticles,
get_track_selector=get_long_track_selector,
make_protoparticle_filter=standard_protoparticle_filter):
particles = FunctionalParticleMaker(
......@@ -67,12 +69,19 @@ def make_particles(species='pion',
@configurable
def make_photons(species='Gamma',
make_neutral_protoparticles=make_neutral_protoparticles,
make_neutral_protoparticles=_make_neutral_protoparticles,
**kwargs):
return PhotonFilter(make_neutral_protoparticles(), species, **kwargs)
#Long particles
def make_long_electrons_no_brem():
return make_particles(
species="electron",
get_track_selector=get_long_track_selector,
make_protoparticle_filter=standard_protoparticle_filter)
def make_long_pions():
return make_particles(
species="pion",
......@@ -125,15 +134,11 @@ def make_down_protons():
#Photons
def make_converted_photons():
return make_photons(
make_neutral_protoparticles=make_neutral_protoparticles,
UnconvertedPhotons=False)
return make_photons(ConvertedPhotons=True, UnconvertedPhotons=False)
def make_unconverted_photons():
return make_photons(
make_neutral_protoparticles=make_neutral_protoparticles,
ConvertedPhotons=False)
return make_photons(ConvertedPhotons=False, UnconvertedPhotons=True)
def make_all_photons():
......
......@@ -152,6 +152,10 @@ def make_VPClus_location_and_offsets(make_raw=default_raw_event):
}
def make_VPClus_hits():
return make_VPClus_location_and_offsets()["Location"]
@configurable
def make_velo_full_clusters(make_raw=default_raw_event):
return VPClusFull(RawEventLocation=make_raw()).ClusterLocation
......@@ -412,11 +416,11 @@ def get_global_ut_hits_tool(ut_hits_tool=PrAddUTHitsTool,
"""Defines global tool for adding UT hits.
Args:
ut_hits_tool (?): tool adding UT hits, defaults to PrAddUTHitsTool.
ut_hits_tool: tool adding UT hits, defaults to PrAddUTHitsTool.
make_ut_hits (DataHandle): maker of UT hits, defaults to `make_PrStoreUTHit_hits`.
Returns:
GaudiTool?: ``ut_hits_tool`` consuming ``make_ut_hits``.
``ut_hits_tool`` consuming ``make_ut_hits``.
"""
return ut_hits_tool(UTHitsLocation=make_ut_hits())
......@@ -443,7 +447,7 @@ def make_PrForwardTracking_tracks(input_tracks,
Args:
input_tracks (dict): upstream tracks, needs ``'Pr'`` tracks, e.g. from `all_upstream_track_types`.
make_ft_hits (DataHandle): maker of FT hits, defaults to `make_PrStoreFTHit_hits`.
ut_hits_tool (GaudiTool?): tool providing UT hits, defaults to `get_global_ut_hits_tool`.
ut_hits_tool: tool providing UT hits, defaults to `get_global_ut_hits_tool`.
Returns:
DataHandle: PrForwardTracking's OutputName.
......@@ -568,38 +572,37 @@ def get_global_materiallocator(materiallocator=SimplifiedMaterialLocator):
"""Returns instance of (Simplified/Detailed)MaterialLocator.
Args:
materiallocator (?): MaterialLocator tool, defaults to SimplifiedMaterialLocator.
materiallocator: MaterialLocator tool, defaults to SimplifiedMaterialLocator.
Returns:
GaudiTool?: instance of input tool.
Instance of input tool.
"""
return materiallocator()
@configurable
def get_global_measurement_provider(
velo_clusters=make_VPClus_location_and_offsets,
ut_clusters=make_PrStoreUTHit_hits,
ft_clusters=make_FTRawBankDecoder_clusters,
vp_provider=VPMeasurementProvider,
ut_provider=UTMeasurementProvider,
ft_provider=FTMeasurementProvider):
def get_global_measurement_provider(velo_hits=make_VPClus_hits,
ut_hits=make_PrStoreUTHit_hits,
ft_clusters=make_FTRawBankDecoder_clusters,
vp_provider=VPMeasurementProvider,
ut_provider=UTMeasurementProvider,
ft_provider=FTMeasurementProvider):
"""Returns instance of MeasurementProvider given VP, UT and FT provider and cluster/hits.
Args:
velo_clusters (DataHandle): maker of velo clusters, defaults to `make_VPClus_location_and_offsets`.
ut_clusters (DataHandle): maker of UT hits, defaults to `make_PrStoreUTHit_hits`.
ft_clusters (DataHandle): maker of FT clusters, defaults to `make_FTRawBankDecoder_clusters`.
vp_provider (?): MeasurementProvider tool for VeloPix, defaults to VPMeasurementProvider.
ut_provider (?): MeasurementProvider tool for UT, defaults to UTMeasurementProvider.
ft_provider (?): MeasurementProvider tool for SciFi, defaults to FTMeasurementProvider.
vp_provider: MeasurementProvider tool for VeloPix, defaults to VPMeasurementProvider.
ut_provider: MeasurementProvider tool for UT, defaults to UTMeasurementProvider.
ft_provider: MeasurementProvider tool for SciFi, defaults to FTMeasurementProvider.
Returns:
GaudiTool?: instance of a global MeasurementProvider.
Instance of a global MeasurementProvider.
"""
return MeasurementProvider(
VPProvider=vp_provider(ClusterLocation=velo_clusters()["Location"]),
UTProvider=ut_provider(ClusterLocation=ut_clusters()),
VPProvider=vp_provider(ClusterLocation=velo_hits()),
UTProvider=ut_provider(ClusterLocation=ut_hits()),
FTProvider=ft_provider(ClusterLocation=ft_clusters()),
)
......@@ -611,11 +614,11 @@ def get_track_master_fitter(
"""Returns instance of TrackMasterFitter given MaterialLocator and MeasurementProvider.
Args:
get_materiallocator (GaudiTool?): MaterialLocator tool, defaults to `get_global_materiallocator`.
get_measurement_provider (GaudiTool?): MeasurementProvider tool, defaults to `get_global_measurement_provider`.
get_materiallocator: MaterialLocator tool, defaults to `get_global_materiallocator`.
get_measurement_provider: MeasurementProvider tool, defaults to `get_global_measurement_provider`.
Returns:
GaudiTool?: instance of TrackMasterFitter.
Instance of TrackMasterFitter.
"""
materialLocator = get_materiallocator()
return TrackMasterFitter(
......@@ -632,7 +635,7 @@ def make_TrackEventFitter_fitted_tracks(tracks,
Args:
tracks (dict of dicts): input tracks to TrackEventFitter, needs``["Forward"]["v1"]`` tracks, e.g. from make_hlt1_tracks.
fitter_tool (GaudiTool?): instance of track fitting tool, defaults to `get_track_master_fitter`.
fitter_tool: instance of track fitting tool, defaults to `get_track_master_fitter`.
Returns:
A dict mapping fitted HLT1 forward v1 tracks to ``'v1'``.
......
......@@ -16,6 +16,7 @@ from PyConf.components import make_algorithm
from Configurables import PrForwardTrackingVelo
from RecoConf.hlt1_tracking import (
make_VPClus_hits,
make_PrStoreUTHit_hits,
make_PrStoreFTHit_hits,
get_global_ut_hits_tool,
......@@ -25,14 +26,11 @@ from RecoConf.hlt1_tracking import (
)
from PyConf.Algorithms import (
PrHybridSeeding,
PrMatchNN,
PrLongLivedTracking,
TrackBestTrackCreator,
TracksFTConverter,
LHCb__Converters__Track__v1__fromV2TrackV1Track as FromV2TrackV1Track,
MakeZipContainer__Track_v2,
)
PrHybridSeeding, PrMatchNN, PrLongLivedTracking, TrackBestTrackCreator,
TracksFTConverter, LHCb__Converters__Track__v1__fromV2TrackV1Track as
FromV2TrackV1Track, MakeZipContainer__Track_v2)
from PyConf.Tools import UpgradeGhostId
LowPTForward = make_algorithm(
PrForwardTrackingVelo, defaults=dict(UseMomentumEstimate=False))
......@@ -47,7 +45,7 @@ def make_PrForwardTrackingVelo_tracks(input_tracks,
Args:
input_tracks (dict): velo tracks, needs ``'Pr'`` tracks, e.g. from `all_velo_track_types <RecoConf.hlt1_tracking.all_velo_track_types>`.
make_ft_hits (DataHandle): maker of FT hits, defaults to `make_PrStoreFTHit_hits <RecoConf.hlt1_tracking.make_PrStoreFTHit_hits>`.
ut_hits_tool (GaudiTool?): tool providing UT hits, defaults to `get_global_ut_hits_tool <RecoConf.hlt1_tracking.get_global_ut_hits_tool>`.
ut_hits_tool: tool providing UT hits, defaults to `get_global_ut_hits_tool <RecoConf.hlt1_tracking.get_global_ut_hits_tool>`.
Returns:
DataHandle: PrForwardTrackingVelo's OutputName.
......@@ -118,7 +116,7 @@ def make_PrMatchNN_tracks(velo_tracks,
Args:
velo_tracks (dict): velo tracks, needs ``'v2'`` tracks, e.g. from `all_velo_track_types <RecoConf.hlt1_tracking.all_velo_track_types>`.
scifi_tracks (dict): SciFi seeding tracks, needs ``'v2'`` tracks, e.g. from `make_PrHybridSeeding_tracks`.
ut_hits_tool (GaudiTool?): tool providing UT hits, defaults to `get_global_ut_hits_tool <RecoConf.hlt1_tracking.get_global_ut_hits_tool>`.
ut_hits_tool: tool providing UT hits, defaults to `get_global_ut_hits_tool <RecoConf.hlt1_tracking.get_global_ut_hits_tool>`.
Returns:
A dict mapping v1 and v2 long tracks from track-matching to ``'v1'`` and ``'v2'`` respectively.
......@@ -142,7 +140,7 @@ def make_PrLongLivedTracking_tracks(scifi_tracks,
Args:
scifi_tracks (dict): SciFi seeding tracks, needs ``'v2'`` tracks, e.g. from `make_PrHybridSeeding_tracks`.
ut_hits_tool (GaudiTool?): tool providing UT hits, defaults to `get_global_ut_hits_tool <RecoConf.hlt1_tracking.get_global_ut_hits_tool>`.
ut_hits_tool: tool providing UT hits, defaults to `get_global_ut_hits_tool <RecoConf.hlt1_tracking.get_global_ut_hits_tool>`.
Returns:
A dict mapping v1 and v2 downstream tracks to ``'v1'`` and ``'v2'`` respectively.
......@@ -157,6 +155,21 @@ def make_PrLongLivedTracking_tracks(scifi_tracks,
@configurable
def get_UpgradeGhostId_tool(velo_hits=make_VPClus_hits,
ut_hits=make_PrStoreUTHit_hits):
"""Returns instance of UpgradeGhostId given VP and UT hits.
Args:
velo_hits (DataHandle): maker of velo hits, defaults to `make_VPClus_hits <RecoConf.hlt1_tracking.make_VPClus_hits>`.
ut_hits (DataHandle): maker of UT hits, defaults to `make_PrStoreUTHit_hits <RecoConf.hlt1_tracking.make_PrStoreUTHit_hits>`.
Returns:
Instance of UpgradeGhostId
"""
return UpgradeGhostId(
VPClusterLocation=velo_hits(), UTClusterLocation=ut_hits())
def make_TrackBestTrackCreator_tracks(velo_tracks,
upstream_tracks,
hlt2_forward_tracks,
......@@ -168,14 +181,14 @@ def make_TrackBestTrackCreator_tracks(velo_tracks,
"""Persists best quality tracks, calls track fitters and kills clones.
Args:
velo_tracks (DataHandle?): velo tracks, e.g. from `all_velo_track_types <RecoConf.hlt1_tracking.all_velo_track_types>` ``["v1"]``.
upstream_tracks (DataHandle?): upstream tracks, e.g. from `all_upstream_track_types <RecoConf.hlt1_tracking.all_upstream_track_types>` ``["v1"]``.
hlt2_forward_tracks (DataHandle?): HLT2 forward tracks, e.g. from `all_hlt2_forward_track_types` ``["v1"]``.
hlt1_forward_tracks (DataHandle?): HLT1 forward tracks, e.g. from `make_hlt1_fitted_tracks` ``["v1"]``.
scifi_tracks (DataHandle?): SciFi seeding tracks, e.g. from `make_PrHybridSeeding_tracks` ``["v1"]``.
downstream_tracks (DataHandle?): downstream tracks, e.g. from `make_PrLongLivedTracking_tracks` ``["v1"]``.
match_tracks (DataHandle?): long tracks from matching, e.g. from `make_PrMatchNN_tracks` ``["v1"]``.
get_fitter_tool (GaudiTool?): instance of track fitting tool, defaults to `get_track_master_fitter <RecoConf.hlt1_tracking.get_track_master_fitter>`.
velo_tracks (DataHandle): velo tracks, e.g. from `all_velo_track_types <RecoConf.hlt1_tracking.all_velo_track_types>` ``["v1"]``.
upstream_tracks (DataHandle): upstream tracks, e.g. from `all_upstream_track_types <RecoConf.hlt1_tracking.all_upstream_track_types>` ``["v1"]``.
hlt2_forward_tracks (DataHandle): HLT2 forward tracks, e.g. from `all_hlt2_forward_track_types` ``["v1"]``.
hlt1_forward_tracks (DataHandle): HLT1 forward tracks, e.g. from `make_hlt1_fitted_tracks` ``["v1"]``.
scifi_tracks (DataHandle): SciFi seeding tracks, e.g. from `make_PrHybridSeeding_tracks` ``["v1"]``.
downstream_tracks (DataHandle): downstream tracks, e.g. from `make_PrLongLivedTracking_tracks` ``["v1"]``.
match_tracks (DataHandle): long tracks from matching, e.g. from `make_PrMatchNN_tracks` ``["v1"]``.
get_fitter_tool: instance of track fitting tool, defaults to `get_track_master_fitter <RecoConf.hlt1_tracking.get_track_master_fitter>`.
Returns:
DataHandle: TrackBestTrackCreator's TracksOutContainer
......@@ -190,13 +203,32 @@ def make_TrackBestTrackCreator_tracks(velo_tracks,
downstream_tracks, match_tracks, scifi_tracks
]
@configurable
def make_TrackBestTrackCreator_tracks(track_list,
get_fitter_tool=get_track_master_fitter,
get_ghost_tool=get_UpgradeGhostId_tool):
"""Persists best quality tracks, calls track fitters, kills clones and adds neural-net response for fake-track (a.k.a. ghost) rejection.
Args:
track_list (list of DataHandles): the list passed to TrackBestTrackCreator's TracksInContainers.
get_fitter_tool: track fitting tool, defaults to `get_track_master_fitter <RecoConf.hlt1_tracking.get_track_master_fitter>`.
get_ghost_tool: ghostId tool, adding a neural-net response that has been trained to reject fake (a.k.a. ghost) tracks.
Returns:
DataHandle: Best tracks
Note:
TrackBestTrackCreator's defaults have been overridden in this maker with ``InitTrackStates=False, DoNotRefit=False, FitTracks=True``
"""
return TrackBestTrackCreator(
TracksInContainers=tracklists,
TracksInContainers=track_list,
InitTrackStates=False,
DoNotRefit=False,
Fitter=get_fitter_tool(),
FitTracks=True,
).TracksOutContainer
GhostIdTool=get_ghost_tool(),
AddGhostProb=True,
FitTracks=True).TracksOutContainer
def make_hlt2_tracks():
......@@ -207,22 +239,24 @@ def make_hlt2_tracks():
"""
hlt1_tracks = make_hlt1_tracks()
fitted_hlt1_tracks = make_hlt1_fitted_tracks(hlt1_tracks)
hlt2_forward_tracks = all_hlt2_forward_track_types(
hlt1_tracks["Velo"],
make_forward_tracks=make_PrForwardTrackingVelo_tracks)
hlt2_forward_tracks = all_hlt2_forward_track_types(hlt1_tracks["Velo"])
scifi_tracks = make_PrHybridSeeding_tracks()
downstream_tracks = make_PrLongLivedTracking_tracks(scifi_tracks)
match_tracks = make_PrMatchNN_tracks(hlt1_tracks["Velo"], scifi_tracks)
track_version = "v1"
#TODO: the list has a random order, pls fix
track_list_for_TrackBestTrackCreator = [
hlt1_tracks["Velo"][track_version], hlt2_forward_tracks[track_version],
fitted_hlt1_tracks[track_version],
hlt1_tracks["Upstream"][track_version],
downstream_tracks[track_version], match_tracks[track_version],
scifi_tracks[track_version]
]
best_tracks = make_TrackBestTrackCreator_tracks(
velo_tracks=hlt1_tracks["Velo"][track_version],
upstream_tracks=hlt1_tracks["Upstream"][track_version],
hlt2_forward_tracks=hlt2_forward_tracks[track_version],
hlt1_forward_tracks=fitted_hlt1_tracks[track_version],
scifi_tracks=scifi_tracks[track_version],
downstream_tracks=downstream_tracks[track_version],
match_tracks=match_tracks[track_version])
track_list_for_TrackBestTrackCreator)
return {
"Velo": hlt1_tracks["Velo"],
"Upstream": hlt1_tracks["Upstream"],
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment