diff --git a/Hlt/Hlt1Conf/options/hlt1_example.py b/Hlt/Hlt1Conf/options/hlt1_example.py
index 4f2c4fa80d446edfbf08e988bc7fffb4fda99d6e..5c395d03eb5df2614698a2432c966eceacd3f9a4 100644
--- a/Hlt/Hlt1Conf/options/hlt1_example.py
+++ b/Hlt/Hlt1Conf/options/hlt1_example.py
@@ -13,6 +13,8 @@ from PyConf.Algorithms import FTRawBankDecoder
from RecoConf.hlt1_tracking import require_gec
from Hlt1Conf.lines.track_mva import (one_track_mva_line, two_track_mva_line,
debug_two_track_mva_line)
+from Hlt1Conf.lines.track_muon import (one_track_muon_mva_line)
+from Hlt1Conf.lines.low_pt_muon import (detached_low_pt_muon_line)
ftdec_v = 4
env = EverythingHandler(
@@ -25,6 +27,8 @@ with FTRawBankDecoder.bind(DecodingVersion=ftdec_v), \
'Hlt1TrackMVALine': one_track_mva_line,
'Hlt1TwoTrackMVALine': two_track_mva_line,
'Hlt1DebugTwoTrackMVALine': debug_two_track_mva_line,
+ 'Hlt1TrackMuonMVALine': one_track_muon_mva_line,
+ 'Hlt1LowPtMuonLine': detached_low_pt_muon_line,
}
for name, builder in builders.items():
env.registerLine(name, builder())
diff --git a/Hlt/Hlt1Conf/python/Hlt1Conf/algorithms.py b/Hlt/Hlt1Conf/python/Hlt1Conf/algorithms.py
index 5322a13480e4771f98b9dab2ab2fdbd80714fad1..766f416e693d3c1187a32df019f6a7c1c61a2e63 100644
--- a/Hlt/Hlt1Conf/python/Hlt1Conf/algorithms.py
+++ b/Hlt/Hlt1Conf/python/Hlt1Conf/algorithms.py
@@ -18,6 +18,7 @@ from Configurables import (
CombineTracks__2Body__Track_v2,
CombineTracks__2Body__Track_v2__Dumper,
CombineTracks__2Body__PrFittedForwardTracks,
+ SOAFilter__TrackWithMuonIDView,
)
from PyConf.components import Algorithm
@@ -86,6 +87,16 @@ def PrFilterV2Tracks(functor, **kwargs):
**kwargs)
+@configurable
+def SOAFilterTracksWithMuonID(functor, **kwargs):
+ return Algorithm(
+ SOAFilter__TrackWithMuonIDView,
+ Code=functor.code(),
+ Headers=functor.headers(),
+ Factory='FunctorFactory',
+ **kwargs)
+
+
@configurable
def FilterPrFittedForwardTracks(functor, **kwargs):
return Algorithm(
diff --git a/Hlt/Hlt1Conf/python/Hlt1Conf/lines/low_pt_muon.py b/Hlt/Hlt1Conf/python/Hlt1Conf/lines/low_pt_muon.py
new file mode 100644
index 0000000000000000000000000000000000000000..07a006480b6fd65b7177b5dcbd2a914f7473ef56
--- /dev/null
+++ b/Hlt/Hlt1Conf/python/Hlt1Conf/lines/low_pt_muon.py
@@ -0,0 +1,71 @@
+###############################################################################
+# (c) Copyright 2019 CERN for the benefit of the LHCb Collaboration #
+# #
+# This software is distributed under the terms of the GNU General Public #
+# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". #
+# #
+# In applying this licence, CERN does not waive the privileges and immunities #
+# granted to it by virtue of its status as an Intergovernmental Organization #
+# or submit itself to any jurisdiction. #
+###############################################################################
+from __future__ import absolute_import, division, print_function
+from GaudiKernel.SystemOfUnits import MeV, mm
+from PyConf import configurable
+from RecoConf.hlt1_tracking import (
+ require_gec,
+ require_pvs,
+ make_pvs,
+ make_velokalman_fitted_tracks,
+ EmptyFilter,
+)
+from RecoConf.hlt1_muonid import (
+ make_muon_id,
+ make_tracks_with_muon_id,
+)
+
+from RecoConf.hlt1_muonmatch import make_tracks_with_muonmatch_ipcut
+from ..algorithms import SOAFilterTracksWithMuonID
+
+from Functors import ISMUON, PT, MINIPCHI2CUT, CHI2DOF
+
+
+def make_fitted_tracks_with_muon_id(velo_track_min_ip, tracking_min_pt):
+ make_all_tracks = make_tracks_with_muonmatch_ipcut(velo_track_min_ip,
+ tracking_min_pt)
+ fitted_forward_tracks = make_velokalman_fitted_tracks(make_all_tracks)
+ muon_ids = make_muon_id(fitted_forward_tracks)
+ tracks_with_muon_id = make_tracks_with_muon_id(fitted_forward_tracks,
+ muon_ids)
+ # The types needed by the Muon filter are a selection and a track container.
+ return fitted_forward_tracks, tracks_with_muon_id
+
+
+def require_forward_tracks(tracks):
+ return EmptyFilter(name='require_forward_tracks', InputLocation=tracks)
+
+
+@configurable
+def prefilters(make_pvs=make_pvs):
+ return [require_gec(), require_pvs(make_pvs())]
+
+
+@configurable
+def detached_low_pt_muon_line(
+ make_input_tracks=make_fitted_tracks_with_muon_id,
+ make_pvs=make_pvs,
+ velo_track_min_ip=4. * mm,
+ tracking_min_pt=80. * MeV,
+ max_chi2dof=100.0,
+ min_pt=80.0 * MeV,
+ min_ipchi2=7.4,
+):
+ pvs = make_pvs().location
+ sel = (ISMUON) & (PT > min_pt) & MINIPCHI2CUT(
+ IPChi2Cut=min_ipchi2, Vertices=pvs) & (CHI2DOF < max_chi2dof)
+ tracks, tracks_with_muon_id = make_input_tracks(velo_track_min_ip,
+ tracking_min_pt)
+ # Filter avoids running converters
+ require_tracks = require_forward_tracks(tracks["Pr"])
+ trackmuon_filter = SOAFilterTracksWithMuonID(
+ sel, Input=tracks_with_muon_id, InputSelection=tracks["v2ZipSel"])
+ return prefilters() + [require_tracks, trackmuon_filter]
diff --git a/Hlt/Hlt1Conf/python/Hlt1Conf/lines/track_muon.py b/Hlt/Hlt1Conf/python/Hlt1Conf/lines/track_muon.py
new file mode 100644
index 0000000000000000000000000000000000000000..2cd6a3248c5801e6d1a0db4a8edf7bae8e3b58af
--- /dev/null
+++ b/Hlt/Hlt1Conf/python/Hlt1Conf/lines/track_muon.py
@@ -0,0 +1,67 @@
+###############################################################################
+# (c) Copyright 2019 CERN for the benefit of the LHCb Collaboration #
+# #
+# This software is distributed under the terms of the GNU General Public #
+# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". #
+# #
+# In applying this licence, CERN does not waive the privileges and immunities #
+# granted to it by virtue of its status as an Intergovernmental Organization #
+# or submit itself to any jurisdiction. #
+###############################################################################
+from __future__ import absolute_import, division, print_function
+import math
+from GaudiKernel.SystemOfUnits import GeV
+from PyConf import configurable
+from RecoConf.hlt1_tracking import (
+ require_gec,
+ require_pvs,
+ make_pvs,
+ make_hlt1_tracks,
+ make_velokalman_fitted_tracks,
+)
+from RecoConf.hlt1_muonid import (
+ make_muon_id,
+ make_tracks_with_muon_id,
+)
+from ..algorithms import SOAFilterTracksWithMuonID
+
+from Functors import PT, CHI2DOF, MINIPCHI2, MINIPCHI2CUT, ISMUON
+import Functors.math as fmath
+
+
+def make_fitted_tracks_with_muon_id():
+ tracks = make_velokalman_fitted_tracks(make_hlt1_tracks())
+ muon_ids = make_muon_id(tracks)
+ tracks_with_muon_id = make_tracks_with_muon_id(tracks, muon_ids)
+ return tracks, tracks_with_muon_id
+
+
+@configurable
+def track_muon_prefilters(make_pvs=make_pvs):
+ return [require_gec(), require_pvs(make_pvs())]
+
+
+@configurable
+def one_track_muon_mva_line(
+ make_input_tracks=make_fitted_tracks_with_muon_id,
+ make_pvs=make_pvs,
+ # TrackMuonLoose cuts from ZombieMoore to be done
+ max_chi2dof=100.0,
+ min_pt=2.0 * GeV,
+ max_pt=26 * GeV,
+ min_ipchi2=7.4,
+ param1=1.0,
+ param2=2.0,
+ param3=1.248):
+ pvs = make_pvs().location
+ pre_sel = (ISMUON) & (PT > min_pt) & (CHI2DOF < max_chi2dof)
+ hard_sel = (PT > max_pt) & MINIPCHI2CUT(IPChi2Cut=min_ipchi2, Vertices=pvs)
+ bulk_sel = fmath.in_range(min_pt, PT, max_pt) & (
+ fmath.log(MINIPCHI2(pvs)) >
+ (param1 / ((PT / GeV - param2)**2) +
+ (param3 / max_pt) * (max_pt - PT) + math.log(min_ipchi2)))
+ full_sel = pre_sel & (hard_sel | bulk_sel)
+ tracks, tracks_with_muon_id = make_input_tracks()
+ track_filter = SOAFilterTracksWithMuonID(
+ full_sel, Input=tracks_with_muon_id, InputSelection=tracks["v2ZipSel"])
+ return track_muon_prefilters() + [track_filter]
diff --git a/Hlt/Hlt1Conf/python/Hlt1Conf/lines/track_mva.py b/Hlt/Hlt1Conf/python/Hlt1Conf/lines/track_mva.py
index fd7309266f410269c0cc3c06e8861b63513e7bc2..52044aa39200115a96572652cc23726940678a15 100644
--- a/Hlt/Hlt1Conf/python/Hlt1Conf/lines/track_mva.py
+++ b/Hlt/Hlt1Conf/python/Hlt1Conf/lines/track_mva.py
@@ -17,7 +17,7 @@ from RecoConf.hlt1_tracking import (require_gec, require_pvs, make_pvs,
make_velokalman_fitted_tracks)
from ..algorithms import (CombineTracks, PrFilterV2Tracks,
FilterPrFittedForwardTracks)
-from PyConf.Algorithms import (FTRawBankDecoder, MakeIterableTracks)
+from PyConf.Algorithms import MakeIterableTracks
def make_tracks_mva_tracks():
diff --git a/Hlt/Hlt1Conf/tests/qmtest/persistency.qms/dst_read.qmt b/Hlt/Hlt1Conf/tests/qmtest/persistency.qms/dst_read.qmt
index 9e0c830c7b737b0974c23e45e1fa79e49d3166ad..e6473e751849960002fdfed49d5e4c2d9f10d820 100644
--- a/Hlt/Hlt1Conf/tests/qmtest/persistency.qms/dst_read.qmt
+++ b/Hlt/Hlt1Conf/tests/qmtest/persistency.qms/dst_read.qmt
@@ -24,7 +24,10 @@ Run HLT1 on an HLT1-filtered DST file.
true
-countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 0})
+# Expect 12 warnings due to Rec#79, 6 from each muon ID algorithm:
+# MuonIDHlt1Alg WARNING CondDB {X,Y}FOIParameters member size is 20, geometry expects 16
+# MuonIDHlt1Alg#1 WARNING CondDB {X,Y}FOIParameters member size is 20, geometry expects 16
+countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 12})
import re
diff --git a/Hlt/Hlt1Conf/tests/qmtest/persistency.qms/dst_write.qmt b/Hlt/Hlt1Conf/tests/qmtest/persistency.qms/dst_write.qmt
index ae1ce57d2414186c798e68303278f97cc743f148..7f65a384a3535c15c3a813375f095bee810ba1bb 100644
--- a/Hlt/Hlt1Conf/tests/qmtest/persistency.qms/dst_write.qmt
+++ b/Hlt/Hlt1Conf/tests/qmtest/persistency.qms/dst_write.qmt
@@ -21,9 +21,12 @@ Run HLT1 and save an DST file.
true
-# Expect a single WARNING:
+# Expect a single WARNING from the data broker:
# HiveDataBrokerSvc WARNING non-reentrant algorithm: OutputStream
-countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 1})
+# and 12 due to Rec#79, 6 from each muon ID algorithm:
+# MuonIDHlt1Alg WARNING CondDB {X,Y}FOIParameters member size is 20, geometry expects 16
+# MuonIDHlt1Alg#1 WARNING CondDB {X,Y}FOIParameters member size is 20, geometry expects 16
+countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 13})
import re
diff --git a/Hlt/Hlt1Conf/tests/qmtest/persistency.qms/mdf_read.qmt b/Hlt/Hlt1Conf/tests/qmtest/persistency.qms/mdf_read.qmt
index 4ec6eb0c5c04ef0d86fba2d978e12f866022f893..6004ac1e8727e0c34737e5b9eae97bed3a06fec9 100644
--- a/Hlt/Hlt1Conf/tests/qmtest/persistency.qms/mdf_read.qmt
+++ b/Hlt/Hlt1Conf/tests/qmtest/persistency.qms/mdf_read.qmt
@@ -24,7 +24,10 @@ Run HLT1 on an HLT1-filtered MDF file.
true
-countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 0})
+# Expect 12 warnings due to Rec#79, 6 from each muon ID algorithm:
+# MuonIDHlt1Alg WARNING CondDB {X,Y}FOIParameters member size is 20, geometry expects 16
+# MuonIDHlt1Alg#1 WARNING CondDB {X,Y}FOIParameters member size is 20, geometry expects 16
+countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 12})
import re
diff --git a/Hlt/Hlt1Conf/tests/qmtest/persistency.qms/mdf_write.qmt b/Hlt/Hlt1Conf/tests/qmtest/persistency.qms/mdf_write.qmt
index c0c7aef99da0c34dbd3e38800a6df5a89c84a369..89a6b09cbe8dcfccee0ace3d5d8df947ebf7209d 100644
--- a/Hlt/Hlt1Conf/tests/qmtest/persistency.qms/mdf_write.qmt
+++ b/Hlt/Hlt1Conf/tests/qmtest/persistency.qms/mdf_write.qmt
@@ -21,9 +21,12 @@ Run HLT1 and save an MDF file.
true
-# Expect a single WARNING:
-# HiveDataBrokerSvc WARNING non-reentrant algorithm: LHCb::MDFWriter/LHCb__MDFWriter
-countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 1})
+# Expect a single WARNING from the data broker:
+# HiveDataBrokerSvc WARNING non-reentrant algorithm: OutputStream
+# and 12 due to Rec#79, 6 from each muon ID algorithm:
+# MuonIDHlt1Alg WARNING CondDB {X,Y}FOIParameters member size is 20, geometry expects 16
+# MuonIDHlt1Alg#1 WARNING CondDB {X,Y}FOIParameters member size is 20, geometry expects 16
+countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 13})
import re
diff --git a/Hlt/Hlt1Conf/tests/qmtest/test_hlt1_example.qmt b/Hlt/Hlt1Conf/tests/qmtest/test_hlt1_example.qmt
index ba6e0f6a8de73cd80c5bbffe7bc8ce11e22b0173..db38cd719546ad30bb70e5fac9e924a6ec41bda4 100644
--- a/Hlt/Hlt1Conf/tests/qmtest/test_hlt1_example.qmt
+++ b/Hlt/Hlt1Conf/tests/qmtest/test_hlt1_example.qmt
@@ -29,7 +29,11 @@ HiveDataBrokerSvc().OutputLevel = 5
true
-countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 0})
+# We expect 12 warnings, 6 of:
+# MuonIDHlt1Alg WARNING CondDB {X,Y}FOIParameters member size is 20, geometry expects 16
+# and 6 of
+# MuonIDHlt1Alg#1 WARNING CondDB {X,Y}FOIParameters member size is 20, geometry expects 16
+countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 12})
# test that at least one event fires
import re
diff --git a/Hlt/RecoConf/options/hlt1_reco_baseline.py b/Hlt/RecoConf/options/hlt1_reco_baseline.py
index 2f3c2d2be1e20c64b28d3e6f2962b1ec779ce108..15958df815dfcb908b2583198136db7e5a5e5088 100644
--- a/Hlt/RecoConf/options/hlt1_reco_baseline.py
+++ b/Hlt/RecoConf/options/hlt1_reco_baseline.py
@@ -12,6 +12,10 @@
from RecoConf.hlt1_tracking import (require_gec, require_pvs, make_pvs,
make_hlt1_tracks,
make_velokalman_fitted_tracks)
+from RecoConf.hlt1_muonid import (
+ make_muon_id,
+ make_tracks_with_muon_id,
+)
from PyConf.Algorithms import FTRawBankDecoder
from PyConf.environment import EverythingHandler, setupInputFromTestFileDB
@@ -23,9 +27,10 @@ def hlt1_full_track_reco_line():
with FTRawBankDecoder.bind(DecodingVersion=ftdec_v):
gec = require_gec(FTDecodingVersion=ftdec_v)
NoPVFilter = require_pvs(make_pvs())
- fitted_tracks = make_velokalman_fitted_tracks(make_hlt1_tracks())["Pr"]
-
- return [gec, NoPVFilter, fitted_tracks]
+ fitted_tracks = make_velokalman_fitted_tracks(make_hlt1_tracks())
+ muon_ids = make_muon_id(fitted_tracks)
+ tracks_with_muon_id = make_tracks_with_muon_id(fitted_tracks, muon_ids)
+ return [gec, NoPVFilter, fitted_tracks["Pr"], tracks_with_muon_id]
env = EverythingHandler(
diff --git a/Hlt/RecoConf/python/RecoConf/hlt1_muonid.py b/Hlt/RecoConf/python/RecoConf/hlt1_muonid.py
new file mode 100644
index 0000000000000000000000000000000000000000..020e950c797c1bca40bd99bfcc7234ad2285c092
--- /dev/null
+++ b/Hlt/RecoConf/python/RecoConf/hlt1_muonid.py
@@ -0,0 +1,36 @@
+###############################################################################
+# (c) Copyright 2019 CERN for the benefit of the LHCb Collaboration #
+# #
+# This software is distributed under the terms of the GNU General Public #
+# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". #
+# #
+# In applying this licence, CERN does not waive the privileges and immunities #
+# granted to it by virtue of its status as an Intergovernmental Organization #
+# or submit itself to any jurisdiction. #
+###############################################################################
+from PyConf import configurable
+
+from PyConf.Algorithms import (
+ MuonRawToHits,
+ MuonIDHlt1Alg,
+ MakeView__Track_v2__MuonID,
+)
+
+from hlt1_tracking import RawData
+
+
+@configurable
+def make_muon_hits(raw=RawData):
+ return MuonRawToHits(RawEventLocation=raw().RawEvent).HitContainer
+
+
+@configurable
+def make_muon_id(tracks, make_muon_hits=make_muon_hits):
+ return MuonIDHlt1Alg(
+ InputTracks=tracks["v2Zip"],
+ InputMuonHits=make_muon_hits()).OutputMuonPID
+
+
+def make_tracks_with_muon_id(tracks, muon_ids):
+ return MakeView__Track_v2__MuonID(
+ InputTracks=tracks["v2Zip"], InputMuonIDs=muon_ids).Output
diff --git a/Hlt/RecoConf/python/RecoConf/hlt1_muonmatch.py b/Hlt/RecoConf/python/RecoConf/hlt1_muonmatch.py
new file mode 100644
index 0000000000000000000000000000000000000000..012c769e638bc287181f263157af9e6b98cf80ff
--- /dev/null
+++ b/Hlt/RecoConf/python/RecoConf/hlt1_muonmatch.py
@@ -0,0 +1,103 @@
+###############################################################################
+# (c) Copyright 2019 CERN for the benefit of the LHCb Collaboration #
+# #
+# This software is distributed under the terms of the GNU General Public #
+# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". #
+# #
+# In applying this licence, CERN does not waive the privileges and immunities #
+# granted to it by virtue of its status as an Intergovernmental Organization #
+# or submit itself to any jurisdiction. #
+###############################################################################
+from PyConf import configurable
+
+from PyConf.Algorithms import (
+ MuonMatchVeloUTSoA,
+ TracksVPConverter,
+ TracksUTConverter,
+ LHCb__Converters__Track__v1__fromV2TrackV1Track as FromV2TrackV1Track,
+ PrFilterIPSoA,
+ SciFiTrackForwarding,
+)
+
+from hlt1_tracking import (
+ make_velo_hits,
+ make_velo_tracks,
+ make_pvs,
+ make_upstream_tracks,
+ make_forward_tracks,
+ VeloUTTracking,
+)
+
+from hlt1_muonid import (
+ make_muon_hits, )
+
+
+@configurable
+def make_IPselected_tracks(tracks, pvs, ip_cut, make_velo_hits=make_velo_hits):
+ output_tracks = PrFilterIPSoA(
+ IPcut=ip_cut, Input=tracks["Pr"], InputVertices=pvs).Output
+ output_tracks_v2 = TracksVPConverter(
+ TracksLocation=output_tracks,
+ HitsLocation=make_velo_hits()).OutputTracksLocation
+ output_tracks_v1 = FromV2TrackV1Track(
+ InputTracksName=output_tracks_v2).OutputTracksName
+
+ return {
+ "Pr": output_tracks,
+ "v2": output_tracks_v2,
+ "v1": output_tracks_v1
+ }
+
+
+@configurable
+def make_muon_match_tracks(velo_tracks,
+ upstream_tracks,
+ make_muon_hits=make_muon_hits):
+ muon_match_tracks = MuonMatchVeloUTSoA(
+ InputTracks=upstream_tracks["Pr"],
+ InputMuonHits=make_muon_hits()).OutputTracks
+ muon_match_tracks_v2 = TracksUTConverter(
+ TracksVPLocation=velo_tracks["v2"],
+ TracksUTLocation=muon_match_tracks).OutputTracksLocation
+
+ muon_match_tracks_v1 = FromV2TrackV1Track(
+ InputTracksName=muon_match_tracks_v2).OutputTracksName
+
+ return {
+ "Pr": muon_match_tracks,
+ "v2": muon_match_tracks_v2,
+ "v1": muon_match_tracks_v1
+ }
+
+
+def make_tracks_with_muonmatch():
+ velo_tracks = make_velo_tracks()
+ velo_ut_tracks = make_upstream_tracks(velo_tracks)
+ muon_match_tracks = make_muon_match_tracks(velo_tracks, velo_ut_tracks)
+ forward_tracks = make_forward_tracks(muon_match_tracks)
+ return {
+ "Velo": velo_tracks,
+ "Upstream": velo_ut_tracks,
+ "MuonMatch": muon_match_tracks,
+ "Forward": forward_tracks,
+ }
+
+
+def make_tracks_with_muonmatch_ipcut(velo_track_min_ip, tracking_min_pt):
+ velo_tracks = make_velo_tracks()
+ pvs = make_pvs() #make_pvs make method better
+ ipselected_tracks = make_IPselected_tracks(velo_tracks, pvs,
+ velo_track_min_ip)
+ with VeloUTTracking.bind(
+ minPT=tracking_min_pt, minPTFinal=tracking_min_pt):
+ velo_ut_tracks = make_upstream_tracks(ipselected_tracks)
+ muon_match_tracks = make_muon_match_tracks(velo_tracks, velo_ut_tracks)
+
+ with SciFiTrackForwarding.bind(MinPt=tracking_min_pt, PreSelectionPT=0.):
+ forward_tracks = make_forward_tracks(muon_match_tracks)
+ return {
+ "Velo": velo_tracks,
+ "Upstream": velo_ut_tracks,
+ "MuonMatch": muon_match_tracks,
+ "Forward": forward_tracks,
+ }
diff --git a/Hlt/RecoConf/python/RecoConf/hlt1_tracking.py b/Hlt/RecoConf/python/RecoConf/hlt1_tracking.py
index a8241026d264cd07fe371d80ce2577a0ce4edca7..8d1253f8df7ff34f5691080cfc845f23edfd576c 100644
--- a/Hlt/RecoConf/python/RecoConf/hlt1_tracking.py
+++ b/Hlt/RecoConf/python/RecoConf/hlt1_tracking.py
@@ -22,19 +22,17 @@ from Configurables import (
PrStoreUTHit,
VoidFilter,
PrVeloUT,
- ParameterizedKalmanFit,
)
-# all trivial (not changing default) and fully datahandly imports can be done from here
from PyConf.Algorithms import (
MakeSelection__Track_v1 as TrackV1Selection,
MakeSelection__Track_v2 as TrackV2Selection,
LHCb__Converters__Track__v1__fromV2TrackV1TrackVector as
FromV2TrackV1TrackVector,
LHCb__Converters__Track__v1__fromV2TrackV1Track as FromV2TrackV1Track,
+ MakeZipContainer__Track_v2,
FTRawBankDecoder,
TracksVPMergerConverter,
- TracksVPConverter,
TracksUTConverter,
TracksFTConverter,
TracksFitConverter,
@@ -47,7 +45,9 @@ from PyConf.Algorithms import (
LHCb__MDF__IOAlg,
)
-from GaudiKernel.SystemOfUnits import mm, MeV
+from GaudiKernel.SystemOfUnits import MeV
+
+from Functors import SIZE
def __rawdata_transform_outputs(RawEvent):
@@ -67,7 +67,6 @@ VeloUTTracking = make_algorithm(PrVeloUT, defaults=dict(minPT=300 * MeV))
def __emptyfilter_input_transform(InputLocation):
- from Functors import SIZE
fun = SIZE(InputLocation) > 0
return {"Code": fun.code(), "Headers": fun.headers()}
@@ -222,10 +221,13 @@ def make_forward_tracks(
TracksFTLocation=forward_tracks_pr).OutputTracksLocation
forward_tracks_v1 = FromV2TrackV1Track(
InputTracksName=forward_tracks_v2).OutputTracksName
+ forward_tracks_v2_zip = MakeZipContainer__Track_v2(
+ Input=forward_tracks_v2).OutputSelection
return {
"Pr": forward_tracks_pr,
"v2": forward_tracks_v2,
- "v1": forward_tracks_v1
+ "v1": forward_tracks_v1,
+ "v2Zip": forward_tracks_v2_zip,
}
@@ -246,12 +248,18 @@ def make_velokalman_fitted_tracks(tracks, make_hits=make_velo_hits):
Input=FromV2TrackV1TrackVector(
InputTracksName=fitted_tracks_v2).OutputTracksName)
fitted_tracks_v2_sel = TrackV2Selection(Input=fitted_tracks_v2).Output
+ fitted_tracks_v2_zip_sel = MakeZipContainer__Track_v2(
+ Input=fitted_tracks_v2).OutputSelection
+ fitted_tracks_v2_zip = MakeZipContainer__Track_v2(
+ Input=fitted_tracks_v2).OutputData
return {
"Pr": fitted_tracks,
"v2": fitted_tracks_v2,
"v1": fitted_tracks_v1,
"v1Sel": fitted_tracks_v1_sel,
"v2Sel": fitted_tracks_v2_sel,
+ "v2Zip": fitted_tracks_v2_zip,
+ "v2ZipSel": fitted_tracks_v2_zip_sel,
}
diff --git a/Hlt/RecoConf/tests/qmtest/hlt1_reco_baseline.qmt b/Hlt/RecoConf/tests/qmtest/hlt1_reco_baseline.qmt
index 47c35b1225fdf6bb1fcac7abe490370f1276e4b0..241648133b46ee17cacf2c378992764a488ae7ff 100644
--- a/Hlt/RecoConf/tests/qmtest/hlt1_reco_baseline.qmt
+++ b/Hlt/RecoConf/tests/qmtest/hlt1_reco_baseline.qmt
@@ -26,7 +26,9 @@ HiveDataBrokerSvc().OutputLevel = 5
true
-countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 0})
+# Expect 6 warnings due to Rec#79 from the muon ID algorithm:
+# MuonIDHlt1Alg WARNING CondDB {X,Y}FOIParameters member size is 20, geometry expects 16
+countErrorLines({"FATAL": 0, "ERROR": 0, "WARNING": 6})
# test that at least one event fires
import re