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