diff --git a/AtlasTest/CITest/Athena.cmake b/AtlasTest/CITest/Athena.cmake index 7493c56c7b6180d38173bbbfa30fe2b56f7d8c40..8833440adf500a7927c53b84b225d4eef675c2bf 100644 --- a/AtlasTest/CITest/Athena.cmake +++ b/AtlasTest/CITest/Athena.cmake @@ -83,12 +83,16 @@ atlas_add_citest( RecoRun2MC_PileUp SCRIPT RunWorkflowTests_Run2.py --CI -p -w MCPileUpReco -e '--maxEvents 5 --inputRDO_BKGFile=../../PileUpPresamplingRun2/run_d1730/myRDO.pool.root' --no-output-checks # go two levels up as the test runs in a subfolder DEPENDS_SUCCESS PileUpPresamplingRun2 ) -atlas_add_citest( RecoRun3Data_Collisions - SCRIPT RunWorkflowTests_Run3.py --CI -r -w DataReco -a q449 -e '--maxEvents 500 --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/TCT_Run3/data22_900GeV.00424070.express_express.merge.RAW._lb0100._SFO-ALL._0001.1' --threads 8 --no-output-checks +atlas_add_citest( RecoRun3Data + SCRIPT RunWorkflowTests_Run3.py --CI -r -w DataReco -a q449 -e '--maxEvents 100 --conditionsTag=CONDBR2-BLKPA-2022-07 --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/TCT_Run3/data22_13p6TeV.00431493.physics_Main.daq.RAW._lb0525._SFO-16._0001.data' --threads 8 --no-output-checks PROPERTIES PROCESSORS 8 ) -atlas_add_citest( RecoRun3Data_Collisions_Express - SCRIPT RunWorkflowTests_Run3.py --CI -r -w DataReco -a x676 -e '--maxEvents 100 --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/TCT_Run3/data22_13p6TeV.00428353.express_express.merge.RAW._lb0800._SFO-ALL._0001.1' --threads 8 --no-output-checks +atlas_add_citest( RecoRun3Data_Bulk + SCRIPT RunWorkflowTests_Run3.py --CI -r -w DataReco -a f1262 -e '--skipEvents 100 --maxEvents 500 --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/TCT_Run3/data22_13p6TeV.00431493.physics_Main.daq.RAW._lb0525._SFO-16._0001.data' --threads 8 --no-output-checks + PROPERTIES PROCESSORS 8 ) + +atlas_add_citest( RecoRun3Data_Express + SCRIPT RunWorkflowTests_Run3.py --CI -r -w DataReco -a x686 -e '--maxEvents 200 --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/TCT_Run3/data22_13p6TeV.00428353.express_express.merge.RAW._lb0800._SFO-ALL._0001.1' --threads 8 --no-output-checks PROPERTIES PROCESSORS 8 ) atlas_add_citest( RecoRun3Data_Cosmics diff --git a/Control/AthenaCommon/python/DetFlags.py b/Control/AthenaCommon/python/DetFlags.py index 3de22a694ba64fd72b6b85e8c44ac6517ea4f868..a98378e9cd53f5fe5ad12dec1dc1f3eedbe5112d 100755 --- a/Control/AthenaCommon/python/DetFlags.py +++ b/Control/AthenaCommon/python/DetFlags.py @@ -3,7 +3,7 @@ # DetFlags : Author Tadashi Maeno # Mods: David Rousseau, Paolo Calafiura, M. Gallas ( more flags and # tasks) -# detectors : ID = bpipe pixel SCT TRT BCM DBM +# detectors : ID = bpipe pixel SCT TRT BCM # Forward = Lucid ZDC ALFA AFP FwdRegion # LAr = em HEC FCal # Calo = em HEC FCal Tile @@ -69,7 +69,6 @@ class DetFlags: self._flag_SCT = False self._flag_TRT = False self._flag_BCM = False - self._flag_DBM = False # Forward self._flag_Lucid = False self._flag_ZDC = False @@ -142,14 +141,12 @@ class DetFlags: self.SCT_setOn() self.TRT_setOn() self.BCM_setOn() - self.DBM_setOn() def ID_setOff (self): self.bpipe_setOff() self.pixel_setOff() self.SCT_setOff() self.TRT_setOff() self.BCM_setOff() - self.DBM_setOff() def Calo_setOn (self): self.em_setOn() self.HEC_setOn() @@ -208,9 +205,9 @@ class DetFlags: def Forward_allOn (self): return self.ALFA_on() & self.ZDC_on() & self.Lucid_on() & self.AFP_on() & self.FwdRegion_on() def ID_on (self): - return self.bpipe_on() | self.pixel_on() | self.SCT_on() | self.TRT_on() | self.BCM_on() | self.DBM_on() + return self.bpipe_on() | self.pixel_on() | self.SCT_on() | self.TRT_on() | self.BCM_on() def ID_allOn (self): - return self.bpipe_on() & self.pixel_on() & self.SCT_on() & self.TRT_on() & self.BCM_on() & self.DBM_on() + return self.bpipe_on() & self.pixel_on() & self.SCT_on() & self.TRT_on() & self.BCM_on() def LAr_on (self): return self.em_on() | self.HEC_on() | self.FCal_on() def LAr_allOn (self): @@ -337,10 +334,6 @@ class DetFlags: cls._setAllTask('BCM','setOn') def BCM_setOff (cls): cls._setAllTask('BCM','setOff') - def DBM_setOn (cls): - cls._setAllTask('DBM','setOn') - def DBM_setOff (cls): - cls._setAllTask('DBM','setOff') def ALFA_setOn (cls): cls._setAllTask('ALFA','setOn') @@ -471,8 +464,6 @@ class DetFlags: return cls._anyTask_on('TRT') def BCM_on (cls): return cls._anyTask_on('BCM') - def DBM_on (cls): - return cls._anyTask_on('DBM') def ALFA_on (cls): return cls._anyTask_on('ALFA') @@ -536,7 +527,7 @@ class DetFlags: # show flags def Print (cls): - id =["bpipe","pixel","SCT","TRT","BCM","DBM"] + id =["bpipe","pixel","SCT","TRT","BCM"] forward=["Lucid", "ZDC", "ALFA", "AFP", "FwdRegion"] calo=["em","HEC","FCal","Tile"] muon=["MDT","CSC","TGC","RPC","sTGC","MM"] @@ -585,8 +576,6 @@ class DetFlags: TRT_setOff = classmethod(TRT_setOff) BCM_setOn = classmethod(BCM_setOn) BCM_setOff = classmethod(BCM_setOff) - DBM_setOn = classmethod(DBM_setOn) - DBM_setOff = classmethod(DBM_setOff) ALFA_setOn = classmethod(ALFA_setOn) ALFA_setOff= classmethod(ALFA_setOff) AFP_setOn = classmethod(AFP_setOn) @@ -644,7 +633,6 @@ class DetFlags: SCT_on = classmethod(SCT_on) TRT_on = classmethod(TRT_on) BCM_on = classmethod(BCM_on) - DBM_on = classmethod(DBM_on) ALFA_on = classmethod(ALFA_on) AFP_on = classmethod(AFP_on) ZDC_on = classmethod(ZDC_on) diff --git a/Control/AthenaConfiguration/python/AutoConfigFlags.py b/Control/AthenaConfiguration/python/AutoConfigFlags.py index 39a9dd98b3624458c4a7fddd0aeb4e5d2ac0082e..04fc71224d2856e41efb8c2725d09356879c92c5 100644 --- a/Control/AthenaConfiguration/python/AutoConfigFlags.py +++ b/Control/AthenaConfiguration/python/AutoConfigFlags.py @@ -124,8 +124,6 @@ def getDefaultDetectors(geoTag): # TODO: wait for special table in the geo DB # if DetDescrInfo(geoTag)['Common']['Run'] == 'RUN4': # detectors.add('BCMPrime') - if DetDescrInfo(geoTag)['Common']['Run'] in ['RUN1', 'RUN2', 'RUN3'] and DetDescrInfo(geoTag)['Pixel']['DBM']: - detectors.add('DBM') if DetDescrInfo(geoTag)['Common']['Run'] not in ['RUN1', 'RUN2', 'RUN3']: # RUN4 and beyond detectors.add('HGTD') diff --git a/Control/AthenaConfiguration/python/DetectorConfigFlags.py b/Control/AthenaConfiguration/python/DetectorConfigFlags.py index bd250eff01c4e85d1eb7b974f7146eecda218f97..6aa96159472eb164e5623becc1da56190e4db4b2 100644 --- a/Control/AthenaConfiguration/python/DetectorConfigFlags.py +++ b/Control/AthenaConfiguration/python/DetectorConfigFlags.py @@ -5,7 +5,7 @@ from AthenaConfiguration.AutoConfigFlags import getDefaultDetectors # This module is based upon Control/AthenaCommon/python/DetFlags.py # Only some flags have been migrated. A full list of what the old # DetFlags provided is given for reference below: -# detectors : ID = bpipe pixel SCT TRT BCM DBM +# detectors : ID = bpipe pixel SCT TRT BCM # ITk = bpipe ITkPixel ITkStrip BCMPrime (in future maybe PLR) # Forward = Lucid ZDC ALFA AFP FwdRegion # LAr = em HEC FCal @@ -36,7 +36,7 @@ from AthenaConfiguration.AutoConfigFlags import getDefaultDetectors # all detectors - used in helper functions allDetectors = [ 'Bpipe', 'Cavern', - 'BCM', 'DBM', 'Pixel', 'SCT', 'TRT', + 'BCM', 'Pixel', 'SCT', 'TRT', 'BCMPrime', 'PLR', 'ITkPixel', 'ITkStrip', 'HGTD', 'LAr', 'Tile', 'MBTS', 'CSC', 'MDT', 'RPC', 'TGC', 'sTGC', 'MM', @@ -44,7 +44,7 @@ allDetectors = [ ] # all detector groups - used in helper functions allGroups = { - 'ID': ['BCM', 'DBM', 'Pixel', 'SCT', 'TRT'], + 'ID': ['BCM', 'Pixel', 'SCT', 'TRT'], 'ITk': ['BCMPrime', 'ITkPixel', 'ITkStrip', 'PLR'], 'Calo': ['LAr', 'Tile', 'MBTS'], 'Muon': ['CSC', 'MDT', 'RPC', 'TGC', 'sTGC', 'MM'], @@ -61,11 +61,10 @@ def createDetectorConfigFlags(): # Inner Detector dcf.addFlag('Detector.GeometryBCM', lambda prevFlags : 'BCM' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) - dcf.addFlag('Detector.GeometryDBM', lambda prevFlags : 'DBM' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) dcf.addFlag('Detector.GeometryPixel', lambda prevFlags : 'Pixel' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) dcf.addFlag('Detector.GeometrySCT', lambda prevFlags : 'SCT' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) dcf.addFlag('Detector.GeometryTRT', lambda prevFlags : 'TRT' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) - dcf.addFlag('Detector.GeometryID', lambda prevFlags : (prevFlags.Detector.GeometryBCM or prevFlags.Detector.GeometryDBM + dcf.addFlag('Detector.GeometryID', lambda prevFlags : (prevFlags.Detector.GeometryBCM or prevFlags.Detector.GeometryPixel or prevFlags.Detector.GeometrySCT or prevFlags.Detector.GeometryTRT)) @@ -116,12 +115,11 @@ def createDetectorConfigFlags(): ## autoconfigured from geometry flags # Inner Detector dcf.addFlag('Detector.EnableBCM', lambda prevFlags : prevFlags.Detector.GeometryBCM) - dcf.addFlag('Detector.EnableDBM', lambda prevFlags : prevFlags.Detector.GeometryDBM) dcf.addFlag('Detector.EnablePixel', lambda prevFlags : prevFlags.Detector.GeometryPixel) dcf.addFlag('Detector.EnableSCT', lambda prevFlags : prevFlags.Detector.GeometrySCT) dcf.addFlag('Detector.EnableTRT', lambda prevFlags : prevFlags.Detector.GeometryTRT) dcf.addFlag('Detector.EnableID', lambda prevFlags : prevFlags.Detector.GeometryID and - (prevFlags.Detector.EnableBCM or prevFlags.Detector.EnableDBM + (prevFlags.Detector.EnableBCM or prevFlags.Detector.EnablePixel or prevFlags.Detector.EnableSCT or prevFlags.Detector.EnableTRT)) diff --git a/Control/AthenaConfiguration/python/OldFlags2NewFlags.py b/Control/AthenaConfiguration/python/OldFlags2NewFlags.py index 9ff9bddac35590d74d89ccf9ed2de14f70a3d164..d7965925cd454baab5ccc5e2d3cd3c497bf0660c 100644 --- a/Control/AthenaConfiguration/python/OldFlags2NewFlags.py +++ b/Control/AthenaConfiguration/python/OldFlags2NewFlags.py @@ -57,7 +57,7 @@ def getNewConfigFlags(): # Let's build a map whose key is new flagname, and whose value is old flagname. geom_flag_map = {} # Geometry - InnerDetector - geom_flag_map.update({ 'Bpipe':'bpipe', 'BCM':'BCM', 'DBM':'DBM', 'Pixel':'pixel', 'SCT':'SCT', 'TRT':'TRT'}) + geom_flag_map.update({ 'Bpipe':'bpipe', 'BCM':'BCM', 'Pixel':'pixel', 'SCT':'SCT', 'TRT':'TRT'}) # Geometry - Upgrade Phase-2 - TODO # geom_flag_map.update({ 'BCMPrime':'', 'ITkPixel':'', 'ITkStrip':'', 'HGTD':''}) diff --git a/Control/AthenaConfiguration/test/testDetectorFlags.py b/Control/AthenaConfiguration/test/testDetectorFlags.py index 49c9406542e374d49f893b7ae7642e97b5303305..442effe5ef7709ddf0dd3891567f97b3a433a513 100755 --- a/Control/AthenaConfiguration/test/testDetectorFlags.py +++ b/Control/AthenaConfiguration/test/testDetectorFlags.py @@ -26,7 +26,6 @@ for tag in test_tags: # test flags that change with time assert flags.Detector.EnableBCM == (tag != 'ATLAS-P2-RUN4-01-00-00') - assert flags.Detector.EnableDBM == (tag in ['ATLAS-R2-2016-01-00-01', 'ATLAS-R3S-2021-01-00-01']) assert flags.Detector.EnablePixel == (tag != 'ATLAS-P2-RUN4-01-00-00') assert flags.Detector.EnableSCT == (tag != 'ATLAS-P2-RUN4-01-00-00') assert flags.Detector.EnableTRT == (tag != 'ATLAS-P2-RUN4-01-00-00') diff --git a/ForwardDetectors/AFP/AFP_Digitization/python/AFP_DigitizationConfig_test.py b/ForwardDetectors/AFP/AFP_Digitization/python/AFP_DigitizationConfig_test.py index 4c651d11e1d2d16d0df6f805b274dbc9ab374691..4f6126cdbe53af8df786e521d80714bea51ded63 100755 --- a/ForwardDetectors/AFP/AFP_Digitization/python/AFP_DigitizationConfig_test.py +++ b/ForwardDetectors/AFP/AFP_Digitization/python/AFP_DigitizationConfig_test.py @@ -39,9 +39,6 @@ if __name__ == "__main__": ConfigFlags.Beam.NumberOfCollisions = 0. ConfigFlags.Output.RDOFileName = "myRDO.pool.root" - # TODO: temporary - ConfigFlags.Digitization.TruthOutput = True - ConfigFlags.fillFromArgs() ConfigFlags.lock() diff --git a/HighGranularityTimingDetector/HGTD_Digitization/HGTD_Digitization/python/HGTD_DigitizationConfig.py b/HighGranularityTimingDetector/HGTD_Digitization/HGTD_Digitization/python/HGTD_DigitizationConfig.py index e640fa98482eb5914f05d89ea1164b01dd844a32..98303b42f8e2959b27ea7ac6499cdc6a41f72301 100644 --- a/HighGranularityTimingDetector/HGTD_Digitization/HGTD_Digitization/python/HGTD_DigitizationConfig.py +++ b/HighGranularityTimingDetector/HGTD_Digitization/HGTD_Digitization/python/HGTD_DigitizationConfig.py @@ -107,7 +107,7 @@ def HGTD_OutputCfg(flags): acc = ComponentAccumulator() if flags.Output.doWriteRDO: ItemList = ["HGTD_RDO_Container#*"] - if flags.Digitization.TruthOutput: + if flags.Digitization.EnableTruth: ItemList += ["InDetSimDataCollection#*"] acc.merge(TruthDigitizationOutputCfg(flags)) acc.merge(OutputStreamCfg(flags, "RDO", ItemList)) diff --git a/HighGranularityTimingDetector/HGTD_Digitization/HGTD_Overlay/python/HGTD_OverlayConfig.py b/HighGranularityTimingDetector/HGTD_Digitization/HGTD_Overlay/python/HGTD_OverlayConfig.py index cf975a88b81f48ccc6afb9039ca68b8eb7998d15..991c91018dae7b124cf48a64a65350665a300c32 100644 --- a/HighGranularityTimingDetector/HGTD_Digitization/HGTD_Overlay/python/HGTD_OverlayConfig.py +++ b/HighGranularityTimingDetector/HGTD_Digitization/HGTD_Overlay/python/HGTD_OverlayConfig.py @@ -77,6 +77,7 @@ def HGTD_OverlayCfg(flags): # Add HGTD overlay algorithm acc.merge(HGTD_OverlayAlgCfg(flags)) # Add HGTD truth overlay - acc.merge(HGTD_TruthOverlayCfg(flags)) + if flags.Digitization.EnableTruth: + acc.merge(HGTD_TruthOverlayCfg(flags)) return acc diff --git a/InnerDetector/InDetConfig/python/InDetVKalVxInJetToolConfig.py b/InnerDetector/InDetConfig/python/InDetVKalVxInJetToolConfig.py new file mode 100644 index 0000000000000000000000000000000000000000..6559b1a581e1b567d491ed3776c5bca051980453 --- /dev/null +++ b/InnerDetector/InDetConfig/python/InDetVKalVxInJetToolConfig.py @@ -0,0 +1,44 @@ +# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +# Configuration of InDetVKalVxInJetTool package + +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.ComponentFactory import CompFactory +from AthenaConfiguration.Enums import LHCPeriod + +def InDetTrkInJetTypeCfg(flags, name="TrkInJetType", **kwargs): + acc = ComponentAccumulator() + kwargs.setdefault("trkSctHits", 4 if flags.GeoModel.Run <= LHCPeriod.Run3 else -1) + acc.setPrivateTools(CompFactory.InDet.InDetTrkInJetType(name, **kwargs)) + return acc + +def InDetVKalVxInJetToolCfg(flags, name="InDetVKalVxInJetTool", **kwargs): + acc = ComponentAccumulator() + + if "TrackClassTool" not in kwargs: + kwargs.setdefault("TrackClassTool", acc.popToolsAndMerge( + InDetTrkInJetTypeCfg(flags))) + + kwargs.setdefault("ExistIBL", flags.GeoModel.Run in [LHCPeriod.Run2, LHCPeriod.Run3]) + kwargs.setdefault("getNegativeTag", "Flip" in name) + + if flags.GeoModel.Run >= LHCPeriod.Run4: + from InDetConfig.InDetEtaDependentCutsConfig import IDEtaDependentCuts_SV1_SvcCfg + acc.merge(IDEtaDependentCuts_SV1_SvcCfg(flags, name="IDEtaDepCutsSvc_" + name)) + kwargs.setdefault("InDetEtaDependentCutsSvc", acc.getService("IDEtaDepCutsSvc_" + name)) + kwargs.setdefault("useVertexCleaningPix", False) # Would use hardcoded InDet Pixel geometry + kwargs.setdefault("useITkMaterialRejection", True) + + acc.setPrivateTools(CompFactory.InDet.InDetVKalVxInJetTool(name,**kwargs)) + return acc + +def MSV_InDetVKalVxInJetToolCfg(flags, name="IDVKalMultiVxInJet", **kwargs): + kwargs.setdefault("getNegativeTail", False) + kwargs.setdefault("ConeForTag", 1.0) + kwargs.setdefault("MultiVertex", True) + return InDetVKalVxInJetToolCfg(flags, name, **kwargs) + +def InDetVKalVxInHiPtJetToolCfg(flags, name="InDetVKalVxInHiPtJetTool", **kwargs): + kwargs.setdefault("CutSharedHits", 0) + kwargs.setdefault("Sel2VrtChi2Cut", 4.) + kwargs.setdefault("CutBVrtScore", 0.002) + return InDetVKalVxInJetToolCfg(flags, name, **kwargs) diff --git a/InnerDetector/InDetDigitization/BCM_Digitization/python/BCM_DigitizationConfig.py b/InnerDetector/InDetDigitization/BCM_Digitization/python/BCM_DigitizationConfig.py index 6e4123c845b4347e519abbf7030da7ae808ed61a..8aa4912d56771bef301c177a98310013a1240752 100644 --- a/InnerDetector/InDetDigitization/BCM_Digitization/python/BCM_DigitizationConfig.py +++ b/InnerDetector/InDetDigitization/BCM_Digitization/python/BCM_DigitizationConfig.py @@ -103,7 +103,7 @@ def BCM_OutputCfg(flags): acc = ComponentAccumulator() if flags.Output.doWriteRDO: ItemList = ["BCM_RDO_Container#*"] - if flags.Digitization.TruthOutput: + if flags.Digitization.EnableTruth: ItemList += ["InDetSimDataCollection#*"] acc.merge(TruthDigitizationOutputCfg(flags)) acc.merge(OutputStreamCfg(flags, "RDO", ItemList)) diff --git a/InnerDetector/InDetDigitization/PixelDigitization/python/ITkPixelDigitizationConfig.py b/InnerDetector/InDetDigitization/PixelDigitization/python/ITkPixelDigitizationConfig.py index 0b32f5cb72a54cd10d940f16b5fc6d8cbe28518e..3099239cd6527f6a572f6e35ab247692c0684140 100644 --- a/InnerDetector/InDetDigitization/PixelDigitization/python/ITkPixelDigitizationConfig.py +++ b/InnerDetector/InDetDigitization/PixelDigitization/python/ITkPixelDigitizationConfig.py @@ -227,7 +227,7 @@ def ITkPixelOutputCfg(flags): acc = ComponentAccumulator() if flags.Output.doWriteRDO: ItemList = ["PixelRDO_Container#*"] - if flags.Digitization.TruthOutput: + if flags.Digitization.EnableTruth: ItemList += ["InDetSimDataCollection#*"] acc.merge(TruthDigitizationOutputCfg(flags)) acc.merge(OutputStreamCfg(flags, "RDO", ItemList)) diff --git a/InnerDetector/InDetDigitization/PixelDigitization/python/PixelDigitizationConfig.py b/InnerDetector/InDetDigitization/PixelDigitization/python/PixelDigitizationConfig.py index 75435411e34869943ad5f00c51e9841e266573b4..532cbee9a89d751efbdaf037b1cdf15fbaaba73e 100644 --- a/InnerDetector/InDetDigitization/PixelDigitization/python/PixelDigitizationConfig.py +++ b/InnerDetector/InDetDigitization/PixelDigitization/python/PixelDigitizationConfig.py @@ -306,7 +306,7 @@ def PixelOutputCfg(flags): acc = ComponentAccumulator() if flags.Output.doWriteRDO: ItemList = ["PixelRDO_Container#*"] - if flags.Digitization.TruthOutput: + if flags.Digitization.EnableTruth: ItemList += ["InDetSimDataCollection#*"] acc.merge(TruthDigitizationOutputCfg(flags)) acc.merge(OutputStreamCfg(flags, "RDO", ItemList)) diff --git a/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfig.py b/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfig.py index ca356075c79ebbbb9b11f10e1d809fa1c805321f..746cf4d595e4ff209787b83570821ccd6a4e9d49 100644 --- a/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfig.py +++ b/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfig.py @@ -273,7 +273,7 @@ def SCT_OutputCfg(flags): acc = ComponentAccumulator() if flags.Output.doWriteRDO: ItemList = ["SCT_RDO_Container#*"] - if flags.Digitization.TruthOutput: + if flags.Digitization.EnableTruth: ItemList += ["InDetSimDataCollection#*"] acc.merge(TruthDigitizationOutputCfg(flags)) acc.merge(OutputStreamCfg(flags, "RDO", ItemList)) diff --git a/InnerDetector/InDetDigitization/StripDigitization/python/StripDigitizationConfig.py b/InnerDetector/InDetDigitization/StripDigitization/python/StripDigitizationConfig.py index 3b1112e5c26321794dbfe26b68be9d1081659ba2..b8cedc0852d41c633ec70275a31f7713b6fc8e3b 100644 --- a/InnerDetector/InDetDigitization/StripDigitization/python/StripDigitizationConfig.py +++ b/InnerDetector/InDetDigitization/StripDigitization/python/StripDigitizationConfig.py @@ -271,7 +271,7 @@ def ITkStripOutputCfg(flags): acc = ComponentAccumulator() if flags.Output.doWriteRDO: ItemList = ["SCT_RDO_Container#*"] - if flags.Digitization.TruthOutput: + if flags.Digitization.EnableTruth: ItemList += ["InDetSimDataCollection#*"] acc.merge(TruthDigitizationOutputCfg(flags)) acc.merge(OutputStreamCfg(flags, "RDO", ItemList)) diff --git a/InnerDetector/InDetDigitization/TRT_Digitization/python/TRT_DigitizationConfig.py b/InnerDetector/InDetDigitization/TRT_Digitization/python/TRT_DigitizationConfig.py index f0d44f1518ab5c4f8caf4249d713b89aa23d4699..a0ac42d0cfea9e0365ff1e9f193e7ecf3d1a2598 100644 --- a/InnerDetector/InDetDigitization/TRT_Digitization/python/TRT_DigitizationConfig.py +++ b/InnerDetector/InDetDigitization/TRT_Digitization/python/TRT_DigitizationConfig.py @@ -185,7 +185,7 @@ def TRT_OutputCfg(flags): acc = ComponentAccumulator() if flags.Output.doWriteRDO: ItemList = ["TRT_RDO_Container#*"] - if flags.Digitization.TruthOutput: + if flags.Digitization.EnableTruth: ItemList += ["InDetSimDataCollection#*"] acc.merge(TruthDigitizationOutputCfg(flags)) acc.merge(OutputStreamCfg(flags, "RDO", ItemList)) diff --git a/InnerDetector/InDetRawAlgs/InDetOverlay/python/BCMOverlayConfig.py b/InnerDetector/InDetRawAlgs/InDetOverlay/python/BCMOverlayConfig.py index 26032d6c1290698851173c9b426bfa7b06ddaab9..3a9fbc70eac8947df212e67931bf8657af9cfb4d 100644 --- a/InnerDetector/InDetRawAlgs/InDetOverlay/python/BCMOverlayConfig.py +++ b/InnerDetector/InDetRawAlgs/InDetOverlay/python/BCMOverlayConfig.py @@ -105,6 +105,7 @@ def BCMOverlayCfg(flags): # Add BCM overlay algorithm acc.merge(BCMOverlayAlgCfg(flags)) # Add BCM truth overlay - acc.merge(BCMTruthOverlayCfg(flags)) + if flags.Digitization.EnableTruth: + acc.merge(BCMTruthOverlayCfg(flags)) return acc diff --git a/InnerDetector/InDetRawAlgs/InDetOverlay/python/ITkPixelOverlayConfig.py b/InnerDetector/InDetRawAlgs/InDetOverlay/python/ITkPixelOverlayConfig.py index 6a65a0ac8e40079138b8fd220a8185b37d178400..ca33ffedf4265dd4452c7abf46c12522737eec65 100644 --- a/InnerDetector/InDetRawAlgs/InDetOverlay/python/ITkPixelOverlayConfig.py +++ b/InnerDetector/InDetRawAlgs/InDetOverlay/python/ITkPixelOverlayConfig.py @@ -82,6 +82,7 @@ def ITkPixelOverlayCfg(flags): # Add ITk Pixel overlay algorithm acc.merge(ITkPixelOverlayAlgCfg(flags)) # Add ITk Pixel truth overlay - acc.merge(ITkPixelTruthOverlayCfg(flags)) + if flags.Digitization.EnableTruth: + acc.merge(ITkPixelTruthOverlayCfg(flags)) return acc diff --git a/InnerDetector/InDetRawAlgs/InDetOverlay/python/ITkStripOverlayConfig.py b/InnerDetector/InDetRawAlgs/InDetOverlay/python/ITkStripOverlayConfig.py index b4c100aea4bcd791f358f0b28b35855aa56c1c8f..6dbb5cf371ea4935b5bcb76d5bc5259617d8a388 100644 --- a/InnerDetector/InDetRawAlgs/InDetOverlay/python/ITkStripOverlayConfig.py +++ b/InnerDetector/InDetRawAlgs/InDetOverlay/python/ITkStripOverlayConfig.py @@ -82,6 +82,7 @@ def ITkStripOverlayCfg(flags): # Add ITk Strip overlay algorithm acc.merge(ITkStripOverlayAlgCfg(flags)) # Add ITk Strip truth overlay - acc.merge(ITkStripTruthOverlayCfg(flags)) + if flags.Digitization.EnableTruth: + acc.merge(ITkStripTruthOverlayCfg(flags)) return acc diff --git a/InnerDetector/InDetRawAlgs/InDetOverlay/python/PixelOverlayConfig.py b/InnerDetector/InDetRawAlgs/InDetOverlay/python/PixelOverlayConfig.py index ffc10cb14cf1d4e546924ea18d262ccb05b1abec..b916995515c1fbea152527774e048ed7597de521 100644 --- a/InnerDetector/InDetRawAlgs/InDetOverlay/python/PixelOverlayConfig.py +++ b/InnerDetector/InDetRawAlgs/InDetOverlay/python/PixelOverlayConfig.py @@ -95,11 +95,12 @@ def PixelOverlayCfg(flags): # Add Pixel overlay digitization algorithm from PixelDigitization.PixelDigitizationConfig import PixelOverlayDigitizationBasicCfg acc.merge(PixelOverlayDigitizationBasicCfg(flags)) - #if track overlay, don't run the standard overlay + # if track overlay, don't run the standard overlay if not flags.Overlay.doTrackOverlay: # Add Pixel overlay algorithm acc.merge(PixelOverlayAlgCfg(flags)) # Add Pixel truth overlay - acc.merge(PixelTruthOverlayCfg(flags)) + if flags.Digitization.EnableTruth: + acc.merge(PixelTruthOverlayCfg(flags)) return acc diff --git a/InnerDetector/InDetRawAlgs/InDetOverlay/python/SCTOverlayConfig.py b/InnerDetector/InDetRawAlgs/InDetOverlay/python/SCTOverlayConfig.py index 666c467b1feed68f3877045d485c96da1c36e978..b420288d2b704e943c2fbc7cbd2fbc580d6e8391 100644 --- a/InnerDetector/InDetRawAlgs/InDetOverlay/python/SCTOverlayConfig.py +++ b/InnerDetector/InDetRawAlgs/InDetOverlay/python/SCTOverlayConfig.py @@ -98,11 +98,12 @@ def SCTOverlayCfg(flags): # Add SCT overlay digitization algorithm from SCT_Digitization.SCT_DigitizationConfig import SCT_OverlayDigitizationBasicCfg acc.merge(SCT_OverlayDigitizationBasicCfg(flags)) - #if track overlay, don't run the standard overlay + # if track overlay, don't run the standard overlay if not flags.Overlay.doTrackOverlay: # Add SCT overlay algorithm acc.merge(SCTOverlayAlgCfg(flags)) # Add SCT truth overlay - acc.merge(SCTTruthOverlayCfg(flags)) + if flags.Digitization.EnableTruth: + acc.merge(SCTTruthOverlayCfg(flags)) return acc diff --git a/InnerDetector/InDetRawAlgs/InDetOverlay/python/TRTOverlayConfig.py b/InnerDetector/InDetRawAlgs/InDetOverlay/python/TRTOverlayConfig.py index 736cc76326e8dd2aeee8b273551674c711f4f174..ffbf1aac51982d521c0b5caafe5a55aaedb11583 100644 --- a/InnerDetector/InDetRawAlgs/InDetOverlay/python/TRTOverlayConfig.py +++ b/InnerDetector/InDetRawAlgs/InDetOverlay/python/TRTOverlayConfig.py @@ -120,11 +120,12 @@ def TRTOverlayCfg(flags): # Add TRT overlay digitization algorithm from TRT_Digitization.TRT_DigitizationConfig import TRT_OverlayDigitizationBasicCfg acc.merge(TRT_OverlayDigitizationBasicCfg(flags)) - #if track overlay, only run digitization on the HS input + # if track overlay, only run digitization on the HS input if not flags.Overlay.doTrackOverlay: # Add TRT overlay algorithm acc.merge(TRTOverlayAlgCfg(flags)) # Add TRT truth overlay - acc.merge(TRTTruthOverlayCfg(flags)) + if flags.Digitization.EnableTruth: + acc.merge(TRTTruthOverlayCfg(flags)) return acc diff --git a/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/CMakeLists.txt b/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/CMakeLists.txt index fc10e68b9cbc2e236a1b02094bdfaf690286b459..056a4b4e8c104ef1d619e343ba609503c13590ed 100644 --- a/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/CMakeLists.txt +++ b/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/CMakeLists.txt @@ -13,7 +13,7 @@ atlas_add_library( InDetVKalVxInJetToolLib src/*.cxx PUBLIC_HEADERS InDetVKalVxInJetTool INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${Boost_LIBRARIES} ${ROOT_LIBRARIES} AnalysisUtilsLib AthenaBaseComps BeamPipeGeoModelLib PixelReadoutGeometryLib CxxUtils GeoPrimitives InDetRecToolInterfaces MVAUtils PathResolver TrkNeutralParameters TrkToolInterfaces TrkVKalVrtFitterLib VxSecVertex xAODTracking xAODTruth xAODEventInfo) + LINK_LIBRARIES ${Boost_LIBRARIES} ${ROOT_LIBRARIES} AnalysisUtilsLib AthenaBaseComps BeamPipeGeoModelLib PixelReadoutGeometryLib CxxUtils InDetRecToolInterfaces MVAUtils PathResolver TrkNeutralParameters TrkToolInterfaces TrkVKalVrtFitterLib VxSecVertex xAODTracking xAODTruth xAODEventInfo) atlas_add_component( InDetVKalVxInJetTool src/components/*.cxx diff --git a/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/python/InDetTrkInJetTypeConfig.py b/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/python/InDetTrkInJetTypeConfig.py deleted file mode 100644 index 086772dec53ad2c2cfba779f1fb45165b2c082b6..0000000000000000000000000000000000000000 --- a/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/python/InDetTrkInJetTypeConfig.py +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration -# Author: Vadim Kostyukhin vadim.kostyukhin@cern.ch - -from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator -from AthenaConfiguration.ComponentFactory import CompFactory - - -#------------------------------------ -def InDetTrkInJetTypeCfg(flags,name="TrkInJetType"): - - acc = ComponentAccumulator() - - TrkInJet = CompFactory.InDet.InDetTrkInJetType(name) - acc.setPrivateTools(TrkInJet) - - return acc - - - - - diff --git a/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/python/InDetVKalVxInJetToolConfig.py b/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/python/InDetVKalVxInJetToolConfig.py deleted file mode 100644 index d420d7756828633ff75361b3d280351a7ace5ea1..0000000000000000000000000000000000000000 --- a/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/python/InDetVKalVxInJetToolConfig.py +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration -# Author: Vadim Kostyukhin vadim.kostyukhin@cern.ch - -from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator -from AthenaConfiguration.ComponentFactory import CompFactory -from TrkVKalVrtFitter.VKalVrtFitterConfig import TrkVKalVrtFitterCfg -from InDetVKalVxInJetTool.InDetTrkInJetTypeConfig import InDetTrkInJetTypeCfg - -from AthenaCommon.Logging import logging -mlog = logging.getLogger( 'InDetVKalVxInJetTool::__init__ ' ) - -#------------------------------------ -def InDetVKalVxInJetFinderCfg(flags, name="InDetVKalVxInJetFinder", **myargs): - - mlog.info("entering InDetVKalVxInJetFinder configuration") - acc = ComponentAccumulator() - - myargs["VertexFitterTool"] = acc.popToolsAndMerge(TrkVKalVrtFitterCfg(flags)) - myargs["TrackClassTool"] = acc.popToolsAndMerge(InDetTrkInJetTypeCfg(flags)) - - VKalVxInJet = CompFactory.InDet.InDetVKalVxInJetTool(name,**myargs) - acc.setPrivateTools(VKalVxInJet) - mlog.info("InDetVKalVxInJetFinder created") - - return acc - - -#------------------------------------ -def InDetVKalVxInHiPtJetFinderCfg(flags, name="InDetVKalVxInHiPtJetFinder", **myargs): - - mlog.info("entering InDetVKalVxInHiPtJetFinder configuration") - acc = ComponentAccumulator() - - myargs["VertexFitterTool"] = acc.popToolsAndMerge(TrkVKalVrtFitterCfg(flags)) - myargs["TrackClassTool"] = acc.popToolsAndMerge(InDetTrkInJetTypeCfg(flags)) - myargs["CutSharedHits"] = 0 - myargs["Sel2VrtChi2Cut"] = 4. - myargs["CutBVrtScore"] = 0.002 - - VKalVxInJet = CompFactory.InDet.InDetVKalVxInJetTool(name,**myargs) - acc.setPrivateTools(VKalVxInJet) - mlog.info("InDetVKalVxInHiPtJetFinder created") - - return acc - - - - - diff --git a/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/src/BTagVrtSec.cxx b/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/src/BTagVrtSec.cxx index a589893a14099122baa2b66aba407a6d3c7f2313..2314843b70c14a8eaef356ee1932171ea3e57d8b 100755 --- a/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/src/BTagVrtSec.cxx +++ b/InnerDetector/InDetRecTools/InDetVKalVxInJetTool/src/BTagVrtSec.cxx @@ -4,7 +4,6 @@ // Header include #include "InDetVKalVxInJetTool/InDetVKalVxInJetTool.h" -#include "GeoPrimitives/GeoPrimitivesHelpers.h" //------------------------------------------------- // Other stuff #include "AnalysisUtils/AnalysisMisc.h" @@ -30,40 +29,41 @@ /// /// Author: Vadim Kostyukhin (vadim.kostyukhin@cern.ch) ///---------------------------------------------------------------------------------------- + namespace InDet{ float median(std::vector &Vec){ - int N=Vec.size(); + int N = Vec.size(); if(N==1) return Vec[0]; if(N==2) return (Vec[0]+Vec[1])/2.; if(N==3) return Vec[1]; if(N>3){ std::vector tmp(Vec); - int N05m=(N-1)/2, N05p=N/2; - //std::sort(tmp.begin(),tmp.end()); //can use nth_element instead of completely sorting, it's quicker + int N05m = (N-1)/2, N05p = N/2; + //can use nth_element instead of completely sorting, it's quicker if(N05m==N05p){ - std::nth_element(tmp.begin(),tmp.begin()+N05m,tmp.end()); - return tmp[N05m]; + std::nth_element(tmp.begin(),tmp.begin()+N05m,tmp.end()); + return tmp[N05m]; } else { - std::nth_element(tmp.begin(),tmp.begin()+N05m,tmp.end()); - std::nth_element(tmp.begin(),tmp.begin()+N05p,tmp.end()); - return (tmp[N05m]+tmp[N05p])/2.; + std::nth_element(tmp.begin(),tmp.begin()+N05m,tmp.end()); + std::nth_element(tmp.begin(),tmp.begin()+N05p,tmp.end()); + return (tmp[N05m]+tmp[N05p])/2.; } } return 0.; } - // + // Probability-like 2-track B-vertex score function based on track scores. // It is distributed approximetely flat in [0,1] inline float getVrtScore(int i, int j, std::vector> & trkScore){ - if(i==j)return 0.; - float res = trkScore.at(i)[0] * trkScore.at(j)[0]; - res *= (1.-trkScore[i][1])*(1.-trkScore[j][1]); - res *= (1.-trkScore[i][2])*(1.-trkScore[j][2]); - return res; + if(i==j)return 0.; + float res = trkScore.at(i)[0] * trkScore.at(j)[0]; + res *= (1.-trkScore[i][1])*(1.-trkScore[j][1]); + res *= (1.-trkScore[i][2])*(1.-trkScore[j][2]); + return res; } - const double c_vrtBCMassLimit=5500.; // Mass limit to consider a vertex not coming from B,C-decays + const double c_vrtBCMassLimit = 5500.; // Mass limit to consider a vertex not coming from B,C-decays xAOD::Vertex* InDetVKalVxInJetTool::getVrtSec(const std::vector& inpTrk, @@ -77,418 +77,467 @@ namespace InDet{ const { - ATH_MSG_DEBUG("getVrtSec() called with xAOD::TrackParticle=" < nothing to do! + ATH_MSG_DEBUG("getVrtSec() called with xAOD::TrackParticle=" < nothing to do! + + std::vector selectedTracks(0); + results.clear(); + listSecondTracks.clear(); + nRefPVTrk = 0; + + float evtWgt = 1.; + const EventContext & ctx = Gaudi::Hive::currentContext(); + SG::ReadHandle eventInfo{m_eventInfoKey, ctx}; + if (eventInfo.isValid()) { + if(eventInfo->hasBeamSpotWeight()) evtWgt *= eventInfo->beamSpotWeight(); + } else ATH_MSG_DEBUG("No event info object found!"); + + nRefPVTrk = selGoodTrkParticle( inpTrk, primVrt, jetDir, selectedTracks); + if(m_fillHist){ + Hists& h = getHists(); + h.m_hb_ntrkjet->Fill( static_cast( selectedTracks.size() ), evtWgt); + h.m_pr_NSelTrkMean->Fill(jetDir.Pt(), static_cast( selectedTracks.size() )); + } + long int NTracks = static_cast( selectedTracks.size() ); + if( NTracks < 2 ) { return nullptr;} // 0,1 selected track => nothing to do! - std::vector errorMatrix,Impact,ImpactError; - Amg::Vector3D fitVertex; - std::vector< std::vector > TrkAtVrt; - TLorentzVector Momentum; - double Signif3D=0., Chi2=0.; + ATH_MSG_DEBUG("Number of selected tracks inside jet= "< selectedTracks(0); - results.clear(); - listSecondTracks.clear(); - nRefPVTrk=0; + TLorentzVector MomentumJet = totalMom(selectedTracks); + if(m_fillHist){ + Hists& h = getHists(); + h.m_hb_jmom->Fill( MomentumJet.E(), evtWgt); + } - float evtWgt=1.; - const EventContext & ctx = Gaudi::Hive::currentContext(); - SG::ReadHandle eventInfo{m_eventInfoKey, ctx}; - if (eventInfo.isValid()) { - if(eventInfo->hasBeamSpotWeight()) evtWgt *= eventInfo->beamSpotWeight(); - } else ATH_MSG_DEBUG("No event info object found!"); - nRefPVTrk = selGoodTrkParticle( inpTrk, primVrt, jetDir, selectedTracks); - if(m_fillHist){ - Hists& h = getHists(); - h.m_hb_ntrkjet->Fill( (double)selectedTracks.size(), evtWgt); - h.m_pr_NSelTrkMean->Fill(jetDir.Pt(),(double)selectedTracks.size()); - } - long int NTracks = (int) (selectedTracks.size()); - if( NTracks < 2 ) { return nullptr;} // 0,1 selected track => nothing to do! + //-------------------------------------------------------------------------------------------- + // Initial xAOD::TrackParticle list ready - if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG) << "Number of selected tracks inside jet= " <Fill( MomentumJet.E(), evtWgt); + std::vector tracksForFit; + std::vector inpMass(NTracks,m_massPi); + int Vrt2TrackNumber = select2TrVrt(selectedTracks, tracksForFit, primVrt, jetDir, inpMass, nRefPVTrk, + trkFromV0, listSecondTracks, + compatibilityGraph, evtWgt); + + // + //--- Cleaning + // + if( trkFromV0.size() > 1) { + removeDoubleEntries(trkFromV0); + AnalysisUtils::Sort::pT(&trkFromV0); + } + + removeDoubleEntries(listSecondTracks); + AnalysisUtils::Sort::pT (&listSecondTracks); + for(const auto *iv0 : trkFromV0){ + auto itf = std::find(selectedTracks.begin(),selectedTracks.end(),iv0); + if(itf!=selectedTracks.end()) selectedTracks.erase(itf); + } + + ATH_MSG_DEBUG(" Found different xAOD tracks in pairs="<< listSecondTracks.size()); + if(listSecondTracks.size() < 2 ) return nullptr; + + //--Ranking of selected tracks + std::vector trkRank(0); + for(const auto *tk : listSecondTracks){ + trkRank.push_back( m_trackClassificator->trkTypeWgts(tk, primVrt, jetDir)[0] ); + } + while( median(trkRank)<0.3 && trkRank.size()>3 ) { + int Smallest = std::min_element(trkRank.begin(),trkRank.end()) - trkRank.begin(); + removeEntryInList(listSecondTracks,trkRank,Smallest); + } + + // + //----------------------------------------------------------------------------------------------------- + // Secondary track list is ready + // Now common vertex fit + // + std::vector errorMatrix; + Amg::Vector3D fitVertex; + std::vector< std::vector > TrkAtVrt; + TLorentzVector Momentum; + + double Chi2 = fitCommonVrt(listSecondTracks, trkRank, primVrt, jetDir, inpMass, fitVertex, errorMatrix, Momentum, TrkAtVrt); + + if( Chi2 < 0 && listSecondTracks.size()>2 ) { // Vertex not reconstructed. Try to remove one track with biggest pt. + double tpmax = 0.; + int ipmax = -1; + for(unsigned int it=0; itpt()){ + tpmax = listSecondTracks[it]->pt(); + ipmax = it; + } } + if(ipmax>=0) removeEntryInList(listSecondTracks,trkRank,ipmax); + Chi2 = fitCommonVrt(listSecondTracks, trkRank, primVrt, jetDir, inpMass, fitVertex, errorMatrix, Momentum, TrkAtVrt); + ATH_MSG_DEBUG("Second fitCommonVrt try="<< Chi2<<" Ntrk="<( i_ntrk->charge() ); vrtVrtDist(primVrt, fitVertex, errorMatrix, Signif3D); - if(Signif3D>8.){ - int hitL1=0, nLays=0, hitIBL=0, hitBL=0; - for (const auto *i_ntrk : selectedTracks) { - if( find( listSecondTracks.begin(), listSecondTracks.end(), i_ntrk) != listSecondTracks.end() ) continue; // Track is used already - std::vector trkScore=m_trackClassificator->trkTypeWgts(i_ntrk, primVrt, jetDir); - if( trkScore[0] < 0.1) continue; //Remove very low track HF score - Signif3DS = m_fitSvc->VKalGetImpact(i_ntrk, fitVertex , 1, Impact, ImpactError); - if( Signif3DS > 10.) continue; - getPixelLayers(i_ntrk , hitIBL , hitBL, hitL1, nLays ); - if( hitIBL<=0 && hitBL<=0 ) continue; // No IBL and BL pixel hits => non-precise track - Signif3DP = m_fitSvc->VKalGetImpact(i_ntrk, primVrt.position(), 1, Impact, ImpactError); - if(Signif3DP<1.)continue; - if(m_fillHist){ - Hists& h = getHists(); - h.m_hb_diffPS->Fill( Signif3DP-Signif3DS, evtWgt); - } - if(Signif3DP-Signif3DS>4.0) AdditionalTracks[Signif3DP-Signif3DS]=i_ntrk; - } + + // Check track pixel hit patterns vs vertex position. + if(m_useVertexCleaningPix){ + if(!check2TrVertexInPixel(listSecondTracks[0],listSecondTracks[1],fitVertex,errorMatrix)) return nullptr; } -// -// Add found tracks and refit -// - if( !AdditionalTracks.empty()){ - while (AdditionalTracks.size()>3) AdditionalTracks.erase(AdditionalTracks.begin());//Tracks are in increasing DIFF order. - for (auto atrk : AdditionalTracks) listSecondTracks.push_back(atrk.second); //3tracks with max DIFF are selected - trkRank.clear(); - for(const auto *tk : listSecondTracks) trkRank.push_back( m_trackClassificator->trkTypeWgts(tk, primVrt, jetDir)[0] ); - Chi2 = fitCommonVrt( listSecondTracks, trkRank, primVrt, jetDir, inpMass, fitVertex, errorMatrix, Momentum, TrkAtVrt); - if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<" Added track fitCommonVrt output="<< Chi2<radiusOfFirstHit(); + float hitR2 = listSecondTracks[1]->radiusOfFirstHit(); + float vrErr = vrtRadiusError(fitVertex, errorMatrix); + if(std::abs(hitR1-hitR2)>25.) return nullptr; // Hits in different pixel layers + if(fitVertex.perp()-std::min(hitR1,hitR2) > 2.*vrErr) return nullptr; // Vertex is behind hit in pixel } -// -// Saving of results -// -// - if( listSecondTracks.size()==2 ){ // If there are 2 only tracks - if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<" Start Ntr=2 vertex check"<charge();} - vrtVrtDist(primVrt, fitVertex, errorMatrix, Signif3D); -// Check track pixel hit patterns vs vertex position. - if(m_useVertexCleaningPix){ - if(!check2TrVertexInPixel(listSecondTracks[0],listSecondTracks[1],fitVertex,errorMatrix)) return nullptr; - } -// Check track first measured points vs vertex position. - if(m_useVertexCleaningFMP){ - float hitR1 = listSecondTracks[0]->radiusOfFirstHit(); - float hitR2 = listSecondTracks[1]->radiusOfFirstHit(); - float vrErr = vrtRadiusError(fitVertex, errorMatrix); - if(std::abs(hitR1-hitR2)>25.) return nullptr; // Hits in different pixel layers - if( fitVertex.perp()-std::min(hitR1,hitR2) > 2.*vrErr) return nullptr; // Vertex is behind hit in pixel - } -//-------- -// - if(m_fillHist){ - Hists& h = getHists(); - if(Charge){ - h.m_hb_totmass2T1->Fill(Momentum.M(),evtWgt); - } - else{ - h.m_hb_totmass2T0->Fill(Momentum.M(),evtWgt); - } - } - if( !Charge && std::abs(Momentum.M()-m_massK0)<15. ) { // Final rejection of K0 - trkFromV0.push_back(listSecondTracks[0]); - trkFromV0.push_back(listSecondTracks[1]); - if( trkFromV0.size() > 1) { - removeDoubleEntries(trkFromV0); - AnalysisUtils::Sort::pT (&trkFromV0); - } - return nullptr; - } - if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<" Ntr=2 vertex check passed"<Fill(Momentum.M(),evtWgt); + } + else{ + h.m_hb_totmass2T0->Fill(Momentum.M(),evtWgt); + } + } + + if( !Charge && std::abs(Momentum.M()-m_massK0)<15. ) { // Final rejection of K0 + trkFromV0.push_back(listSecondTracks[0]); + trkFromV0.push_back(listSecondTracks[1]); + if( trkFromV0.size() > 1) { + removeDoubleEntries(trkFromV0); + AnalysisUtils::Sort::pT (&trkFromV0); + } + return nullptr; } + ATH_MSG_DEBUG("Ntr=2 vertex check passed"); + } - double jetVrtDir = projSV_PV(fitVertex,primVrt,jetDir); - if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<"Combined SV neg.dir="<0. ) return nullptr; } - else if( m_getNegativeTail ) - { ; } - else - { if( jetVrtDir<0. ) return nullptr; } - - double xvt=fitVertex.x(); double yvt=fitVertex.y(); - double Dist2DBP=std::hypot( xvt-m_beampipeX, yvt-m_beampipeY); - double Dist2DBL=std::hypot( xvt-m_xLayerB, yvt-m_yLayerB); - double Dist2DL1=std::hypot( xvt-m_xLayer1, yvt-m_yLayer1); - double Dist2DL2=std::hypot( xvt-m_xLayer2, yvt-m_yLayer2); - double minDstMat=39.9; - minDstMat=TMath::Min(minDstMat,std::abs(Dist2DBP-m_beampipeR)); - minDstMat=TMath::Min(minDstMat,std::abs(Dist2DBL-m_rLayerB)); - minDstMat=TMath::Min(minDstMat,std::abs(Dist2DL1-m_rLayer1)); - minDstMat=TMath::Min(minDstMat,std::abs(Dist2DL2-m_rLayer2)); - if(m_existIBL) minDstMat=std::min(minDstMat,std::abs(Dist2DL2-m_rLayer3)); // 4-layer pixel detector - - - vrtVrtDist(primVrt, fitVertex, errorMatrix, Signif3D); - if(jetVrtDir < 0) Signif3D = -Signif3D; - - - results.push_back(Momentum.M()); //1st - double eRatio = Momentum.E()/MomentumJet.E(); - results.push_back( eRatio<0.99999 ? eRatio : 0.99999); //2nd - results.push_back((double)Vrt2TrackNumber); //3rd - results.push_back((double)NTracks); //4th - results.push_back((double)listSecondTracks.size()); //5th - results.push_back(Signif3D); //6th - results.push_back(MomentumJet.E()); //7th - results.push_back(minDstMat); //8th - double nRatio = Momentum.Et(jetDir.Vect())/std::sqrt(MomentumJet.Perp()); nRatio /= (nRatio+4.); - results.push_back( nRatio ); //9th New transverse energy ration - results.push_back((Momentum.M()-2.*m_massPi)*eRatio/m_massB); //10th "Product" variable - results.push_back((Momentum.Pt()/Momentum.M())*(m_massB/jetDir.Pt()) ); //11th "Boost" variable + double jetVrtDir = projSV_PV(fitVertex,primVrt,jetDir); + ATH_MSG_DEBUG("Combined SV neg.dir="< 0.) return nullptr; + } + else if(!m_getNegativeTail){ + if(jetVrtDir < 0.) return nullptr; + } - if(m_fillHist){ - // Find highest track Pt with respect to jet direction - double trackPt, trackPtMax=0.; - for (int tr=0; tr<(int)listSecondTracks.size(); tr++) { - if(listSecondTracks[tr]->pt()/jetDir.Pt()>0.5)continue; - trackPt=pTvsDir(Amg::Vector3D(jetDir.X(),jetDir.Y(),jetDir.Z()) , TrkAtVrt[tr]); - if(trackPt>trackPtMax)trackPtMax=trackPt; - } - Hists& h = getHists(); - h.m_hb_rNdc->Fill( fitVertex.perp(), evtWgt); - h.m_hb_trkPtMax->Fill( trackPtMax, evtWgt); - h.m_pr_effVrt->Fill((float)nRefPVTrk,1.); - h.m_pr_effVrtEta->Fill( jetDir.Eta(),1.); - h.m_hb_mom->Fill( MomentumJet.E(), evtWgt); - h.m_hb_ratio->Fill( results[1], evtWgt); - h.m_hb_totmass->Fill( results[0], evtWgt); - h.m_hb_nvrt2->Fill( results[2], evtWgt); - h.m_hb_sig3DTot->Fill( Signif3D, evtWgt); - h.m_hb_dstToMat->Fill( minDstMat, evtWgt); - float R=jetDir.DeltaR(TLorentzVector(fitVertex.x()-primVrt.x(),fitVertex.y()-primVrt.y(), - fitVertex.z()-primVrt.z(), 1.e4)); - h.m_hb_deltaRSVPV->Fill( R, evtWgt); - if(h.m_curTup){ - h.m_curTup->TotM=Momentum.M(); - if(!m_multiVertex){ - h.m_curTup->nNVrt=1; - h.m_curTup->NVrtNT[0] =listSecondTracks.size(); - h.m_curTup->NVrtDist2D[0] =fitVertex.perp(); - h.m_curTup->NVrtSig3D[0] =Signif3D; - h.m_curTup->NVrtM[0] =Momentum.M(); - h.m_curTup->NVrtChi2[0] =Chi2; - h.m_curTup->NVrtMaxW[0] =eRatio; - h.m_curTup->NVrtDR[0] =R; - } - } - } + double xvt = fitVertex.x(); + double yvt = fitVertex.y(); + double Dist2DBP = std::hypot( xvt-m_beampipeX, yvt-m_beampipeY); + double Dist2DBL = std::hypot( xvt-m_xLayerB, yvt-m_yLayerB); + double Dist2DL1 = std::hypot( xvt-m_xLayer1, yvt-m_yLayer1); + double Dist2DL2 = std::hypot( xvt-m_xLayer2, yvt-m_yLayer2); + double minDstMat = 39.9; + minDstMat = TMath::Min(minDstMat,std::abs(Dist2DBP-m_beampipeR)); + minDstMat = TMath::Min(minDstMat,std::abs(Dist2DBL-m_rLayerB)); + minDstMat = TMath::Min(minDstMat,std::abs(Dist2DL1-m_rLayer1)); + minDstMat = TMath::Min(minDstMat,std::abs(Dist2DL2-m_rLayer2)); + if(m_existIBL) minDstMat = std::min(minDstMat,std::abs(Dist2DL2-m_rLayer3)); // 4-layer pixel detector + + vrtVrtDist(primVrt, fitVertex, errorMatrix, Signif3D); + if(jetVrtDir < 0) Signif3D = -Signif3D; + + results.push_back(Momentum.M()); //1st + double eRatio = Momentum.E()/MomentumJet.E(); + results.push_back( eRatio<0.99999 ? eRatio : 0.99999 ); //2nd + results.push_back( static_cast(Vrt2TrackNumber) ); //3rd + results.push_back( static_cast(NTracks) ); //4th + results.push_back( static_cast(listSecondTracks.size()) ); //5th + results.push_back( Signif3D ); //6th + results.push_back( MomentumJet.E() ); //7th + results.push_back( minDstMat ); //8th + double nRatio = Momentum.Et(jetDir.Vect())/std::sqrt(MomentumJet.Perp()); + nRatio /= (nRatio+4.); + results.push_back( nRatio ); //9th New transverse energy ration + results.push_back( (Momentum.M()-2.*m_massPi) * eRatio/m_massB ); //10th "Product" variable + results.push_back( (Momentum.Pt()/Momentum.M()) * (m_massB/jetDir.Pt()) ); //11th "Boost" variable + + if(m_fillHist){ + // Find highest track Pt with respect to jet direction + double trackPt, trackPtMax = 0.; + for (unsigned int tr=0; trpt()/jetDir.Pt() > 0.5) continue; + trackPt = pTvsDir(Amg::Vector3D(jetDir.X(),jetDir.Y(),jetDir.Z()) , TrkAtVrt[tr]); + if(trackPt>trackPtMax) trackPtMax = trackPt; + } -//------------------------------------------------------------------------------------- -//Return xAOD::Vertex - xAOD::Vertex * tmpVertex=new (std::nothrow) xAOD::Vertex(); - if(!tmpVertex)return nullptr; - tmpVertex->makePrivateStore(); - tmpVertex->setPosition(fitVertex); - std::vector floatErrMtx; floatErrMtx.resize(errorMatrix.size()); - for(int i=0; i<(int)errorMatrix.size(); i++) floatErrMtx[i]=errorMatrix[i]; - tmpVertex->setCovariance(floatErrMtx); - tmpVertex->setFitQuality(Chi2, (float)(listSecondTracks.size()*2.-3.)); - - std::vector & tmpVTAV=tmpVertex->vxTrackAtVertex(); tmpVTAV.clear(); - for(int ii=0; ii<(int)listSecondTracks.size(); ii++) { - AmgSymMatrix(5) CovMtxP; - CovMtxP.setIdentity(); - Trk::Perigee * tmpMeasPer = new (std::nothrow) Trk::Perigee( 0.,0., TrkAtVrt[ii][0], TrkAtVrt[ii][1], TrkAtVrt[ii][2], - Trk::PerigeeSurface(fitVertex), std::move(CovMtxP) ); - tmpVTAV.emplace_back( 1., tmpMeasPer ); - ElementLink TEL; TEL.setElement( listSecondTracks[ii] ); - const xAOD::TrackParticleContainer* cont = (const xAOD::TrackParticleContainer* ) (listSecondTracks[ii]->container() ); - TEL.setStorableObject(*cont); - tmpVertex->addTrackAtVertex(TEL,1.); - } - return tmpVertex; + Hists& h = getHists(); + h.m_hb_rNdc->Fill( fitVertex.perp(), evtWgt ); + h.m_hb_trkPtMax->Fill( trackPtMax, evtWgt ); + h.m_hb_mom->Fill( MomentumJet.E(), evtWgt ); + h.m_hb_totmass->Fill( results[0], evtWgt ); + h.m_hb_ratio->Fill( results[1], evtWgt ); + h.m_hb_nvrt2->Fill( results[2], evtWgt ); + h.m_hb_sig3DTot->Fill( Signif3D, evtWgt ); + h.m_hb_dstToMat->Fill( minDstMat, evtWgt ); + h.m_pr_effVrt->Fill( static_cast(nRefPVTrk), 1. ); + h.m_pr_effVrtEta->Fill( jetDir.Eta(), 1. ); + + float R = jetDir.DeltaR(TLorentzVector(fitVertex.x()-primVrt.x(), fitVertex.y()-primVrt.y(), + fitVertex.z()-primVrt.z(), 1.e4)); + h.m_hb_deltaRSVPV->Fill( R, evtWgt ); + + if(h.m_curTup){ + h.m_curTup->TotM = Momentum.M(); + if(!m_multiVertex){ + h.m_curTup->nNVrt = 1; + h.m_curTup->NVrtNT[0] = listSecondTracks.size(); + h.m_curTup->NVrtDist2D[0] = fitVertex.perp(); + h.m_curTup->NVrtSig3D[0] = Signif3D; + h.m_curTup->NVrtM[0] = Momentum.M(); + h.m_curTup->NVrtChi2[0] = Chi2; + h.m_curTup->NVrtMaxW[0] = eRatio; + h.m_curTup->NVrtDR[0] = R; + } + } + } + //------------------------------------------------------------------------------------- + //Return xAOD::Vertex + xAOD::Vertex * tmpVertex = new (std::nothrow) xAOD::Vertex(); + if(!tmpVertex) return nullptr; + tmpVertex->makePrivateStore(); + tmpVertex->setPosition(fitVertex); + + std::vector floatErrMtx; + floatErrMtx.resize(errorMatrix.size()); + for(unsigned int i=0; isetCovariance(floatErrMtx); + tmpVertex->setFitQuality(Chi2, static_cast(listSecondTracks.size()*2.-3.)); + + for (const auto *i_ntrk : listSecondTracks){ + ElementLink TEL; + TEL.setElement(i_ntrk); + const xAOD::TrackParticleContainer* cont = (const xAOD::TrackParticleContainer* ) (i_ntrk->container() ); + TEL.setStorableObject(*cont); + tmpVertex->addTrackAtVertex(TEL,1.); + } + return tmpVertex; } -// -//-------------------------------------------------------- -// Template routine for global secondary vertex fitting -// + // + //-------------------------------------------------------- + // Template routine for global secondary vertex fitting + // template - double InDetVKalVxInJetTool::fitCommonVrt(std::vector& listSecondTracks, - std::vector & trkRank, - const xAOD::Vertex & primVrt, - const TLorentzVector & jetDir, - std::vector & inpMass, - Amg::Vector3D & fitVertex, - std::vector & errorMatrix, - TLorentzVector & Momentum, - std::vector< std::vector > & TrkAtVrt) + double InDetVKalVxInJetTool::fitCommonVrt(std::vector & listSecondTracks, + std::vector & trkRank, + const xAOD::Vertex & primVrt, + const TLorentzVector & jetDir, + std::vector & inpMass, + Amg::Vector3D & fitVertex, + std::vector & errorMatrix, + TLorentzVector & Momentum, + std::vector< std::vector > & TrkAtVrt) const { - if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG) << "fitCommonVrt() called " < Chi2PerTrk; - long int Charge; - double Chi2 = 0.; - Amg::Vector3D tmpVertex; - - int Outlier=1, i=0; -// -// Start of fit -// - std::unique_ptr state = m_fitSvc->makeState(); - m_fitSvc->setMassInputParticles( inpMass, *state ); // Use pions masses - sc=VKalVrtFitFastBase(listSecondTracks,fitVertex,*state); /* Fast crude estimation */ - if(sc.isFailure() || fitVertex.perp() > m_rLayer2*2. ) { /* No initial estimation */ - m_fitSvc->setApproximateVertex(primVrt.x(), primVrt.y(), primVrt.z(),*state); /* Use as starting point */ - } else { - m_fitSvc->setApproximateVertex(fitVertex.x(),fitVertex.y(),fitVertex.z(),*state); /*Use as starting point*/ - } -//fit itself - int NTracksVrt = listSecondTracks.size(); double FitProb=0.; - std::vector trkFitWgt(0); - for (i=0; i < NTracksVrt-1; i++) { - if(m_RobustFit)m_fitSvc->setRobustness(m_RobustFit, *state); - else m_fitSvc->setRobustness(0, *state); - sc=VKalVrtFitBase(listSecondTracks,fitVertex,Momentum,Charge, - errorMatrix,Chi2PerTrk,TrkAtVrt,Chi2, - *state, true); - if(sc.isFailure() || Chi2 > 1000000. ) { return -10000.;} // No fit - if(m_RobustFit){ - sc=GetTrkFitWeights(trkFitWgt, *state); - if(sc.isFailure()){ return -10000.;} // No weights - Outlier=std::min_element(trkFitWgt.begin(),trkFitWgt.end())-trkFitWgt.begin(); - }else{ - Outlier = findMax( Chi2PerTrk, trkRank ); - } - FitProb=TMath::Prob( Chi2, 2*listSecondTracks.size()-3); - if(listSecondTracks.size() == 2 ) break; // Only 2 tracks left -////////////////////////////// - double signif3Dproj=vrtVrtDist( primVrt, fitVertex, errorMatrix, jetDir); - if(signif3Dproj<0 && (!m_getNegativeTail) && (!m_getNegativeTag)){ - double maxDst=-1.e12; int maxT=-1; double minChi2=1.e12; - for(int it=0; it<(int)listSecondTracks.size(); it++){ - std::vector tmpList(listSecondTracks); - tmpList.erase(tmpList.begin()+it); - sc=VKalVrtFitBase(tmpList,tmpVertex,Momentum,Charge,errorMatrix,Chi2PerTrk,TrkAtVrt,Chi2,*state,true); - if(sc.isFailure())continue; - signif3Dproj=vrtVrtDist( primVrt, tmpVertex, errorMatrix, jetDir); - if(signif3Dproj>maxDst && maxDst<10. ){maxDst=signif3Dproj; maxT=it; minChi2=Chi2;} - else if(signif3Dproj>0. && maxDst>10. && Chi2=0){ Outlier=maxT; removeEntryInList(listSecondTracks,trkRank,Outlier); - m_fitSvc->setApproximateVertex(fitVertex.x(),fitVertex.y(),fitVertex.z(),*state); - if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<" Remove negative outlier="<< maxT<<" from " - < state = m_fitSvc->makeState(); + m_fitSvc->setMassInputParticles( inpMass, *state ); // Use pions masses + sc = VKalVrtFitFastBase(listSecondTracks, fitVertex, *state); // Fast crude estimation + if(sc.isFailure() || fitVertex.perp() > m_rLayer2*2. ) { // No initial estimation + m_fitSvc->setApproximateVertex(primVrt.x(), primVrt.y(), primVrt.z(), *state); // Use primary vertex as starting point + } else { + m_fitSvc->setApproximateVertex(fitVertex.x(), fitVertex.y(), fitVertex.z(), *state); // Use fitted vertex as starting point + } + + //fit itself + int NTracksVrt = listSecondTracks.size(); + double FitProb = 0.; + std::vector trkFitWgt(0); + std::vector Chi2PerTrk; + long int Charge; + double Chi2 = 0.; + int Outlier = 1; + Amg::Vector3D tmpVertex; + + for (int i = 0; i < NTracksVrt-1; i++) { + + if(m_RobustFit)m_fitSvc->setRobustness(m_RobustFit, *state); + else m_fitSvc->setRobustness(0, *state); + sc = VKalVrtFitBase(listSecondTracks, fitVertex, Momentum, Charge, + errorMatrix, Chi2PerTrk, TrkAtVrt, Chi2, + *state, true); + if(sc.isFailure() || Chi2 > 1000000.) return -10000.; // No fit + + if(m_RobustFit){ + sc = GetTrkFitWeights(trkFitWgt, *state); + if(sc.isFailure()) return -10000.; // No weights + Outlier = std::min_element(trkFitWgt.begin(), trkFitWgt.end()) - trkFitWgt.begin(); + } else { + Outlier = findMax(Chi2PerTrk, trkRank); + } + + FitProb = TMath::Prob(Chi2, 2*listSecondTracks.size()-3); + if(listSecondTracks.size()==2) break; // Only 2 tracks left + + double signif3Dproj = vrtVrtDist(primVrt, fitVertex, errorMatrix, jetDir); + if(signif3Dproj<0 && (!m_getNegativeTail) && (!m_getNegativeTag)){ + double maxDst = -1.e12; + int maxT = -1; + double minChi2 = 1.e12; + + for(unsigned int it=0; it tmpList(listSecondTracks); + tmpList.erase(tmpList.begin()+it); + sc = VKalVrtFitBase(tmpList, tmpVertex, Momentum, Charge, + errorMatrix, Chi2PerTrk, TrkAtVrt, Chi2, + *state,true); + if(sc.isFailure()) continue; + + signif3Dproj=vrtVrtDist(primVrt, tmpVertex, errorMatrix, jetDir); + if(signif3Dproj>maxDst && maxDst<10.){ + maxDst = signif3Dproj; + maxT = it; + minChi2 = Chi2; } -//////////////////////////////////////// -// if( Momentum.m() < c_vrtBCMassLimit) { -// if( Chi2PerTrk[Outlier] < m_secTrkChi2Cut && FitProb > 0.001) break; // Solution found -// } - if( FitProb > 0.001) { - if( Momentum.M() tmpList(listSecondTracks); - tmpList.erase(tmpList.begin()+it); - sc=VKalVrtFitBase(tmpList,tmpVertex,Momentum,Charge,errorMatrix,Chi2PerTrk,TrkAtVrt,Chi2,*state,true); - if(sc.isFailure())continue; - if(projSV_PV(tmpVertex,primVrt,jetDir)<0.)continue; // Drop negative direction - Chi2 += trkRank[it]; // Remove preferably non-HF-tracks - if(Momentum.M()c_vrtBCMassLimit){minM=Momentum.M(); minT=it; minChi2=Chi2;} - else if(Momentum.M() 0.001) { + if(Momentum.M() tmpList(listSecondTracks); + tmpList.erase(tmpList.begin()+it); + sc = VKalVrtFitBase(tmpList, tmpVertex, Momentum, Charge, + errorMatrix, Chi2PerTrk, TrkAtVrt, Chi2, + *state, true); + if(sc.isFailure()) continue; + if(projSV_PV(tmpVertex,primVrt,jetDir)<0.) continue; // Drop negative direction + + Chi2 += trkRank[it]; // Remove preferably non-HF-tracks + + if(Momentum.M()c_vrtBCMassLimit){ + minM = Momentum.M(); + minT = it; + minChi2 = Chi2; + } + else if(Momentum.M()setApproximateVertex(fitVertex.x(),fitVertex.y(),fitVertex.z(),*state); /*Use as starting point*/ - } -//-- - if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<" SecVrt fit converged. Ntr="<< listSecondTracks.size()<<" Chi2="<setApproximateVertex(fitVertex.x(), fitVertex.y(), fitVertex.z(), *state); // Use as starting point + } // end for (int i = 0; i < NTracksVrt-1; i++) + ATH_MSG_DEBUG("SecVrt fit converged. Ntr="<< listSecondTracks.size()<<" Chi2="<InpTrk.size(); xAODwrk->FoundSecondTracks.clear(); // Input clearing for failure return results.clear(); // Input clearing for failure return } - if (msgLvl(MSG::DEBUG)) - msg(MSG::DEBUG) << "InDet getVrtSecMulti() called with NPart=" << inpNPart - << endmsg; + ATH_MSG_DEBUG( "InDet getVrtSecMulti() called with NPart=" << inpNPart ); std::vector finalVertices(0); @@ -66,7 +61,7 @@ InDetVKalVxInJetTool::getVrtSecMulti(workVectorArrxAOD* xAODwrk, return finalVertices; } // 0,1 track => nothing to do! - float evtWgt=1.; + float evtWgt = 1.; const EventContext & ctx = Gaudi::Hive::currentContext(); SG::ReadHandle eventInfo{m_eventInfoKey,ctx}; if (eventInfo.isValid()) { @@ -80,8 +75,9 @@ InDetVKalVxInJetTool::getVrtSecMulti(workVectorArrxAOD* xAODwrk, if (xAODwrk) { nRefPVTrk = selGoodTrkParticle(xAODwrk->InpTrk, primVrt, jetDir, xAODwrk->listJetTracks,evtWgt); while (!xAODwrk->listJetTracks.empty() && - xAODwrk->listJetTracks[0]->pt() / jetDir.Pt() > 1.) + xAODwrk->listJetTracks[0]->pt() / jetDir.Pt() > 1.){ xAODwrk->listJetTracks.erase(xAODwrk->listJetTracks.begin()); + } nTracks = xAODwrk->listJetTracks.size(); momentumJet = totalMom(xAODwrk->listJetTracks); } @@ -96,7 +92,7 @@ InDetVKalVxInJetTool::getVrtSecMulti(workVectorArrxAOD* xAODwrk, if (m_fillHist) { Hists& h = getHists(); h.m_hb_jmom->Fill(momentumJet.Perp(), evtWgt); - h.m_hb_ntrkjet->Fill((double)nTracks, evtWgt); + h.m_hb_ntrkjet->Fill(static_cast(nTracks), evtWgt); } // @@ -147,53 +143,48 @@ InDetVKalVxInJetTool::getVrtSecMulti(workVectorArrxAOD* xAODwrk, newvrt.Good = true; std::unique_ptr state = m_fitSvc->makeState(); StatusCode sc; - long int NPTR = 0, nth = 2; // VK nth=2 to speed up PGRAPH when it's used - //================================================== Boost version (don't + //================================================== Boost version (don't //forget to uncomment addEdge in select2TrVrt() std::vector> allCliques; bron_kerbosch_all_cliques(compatibilityGraph, clique_visitor(allCliques)); - for (int cq = 0; cq < (int)allCliques.size(); cq++) { + + for (const auto& clique : allCliques) { + newvrt.selTrk.clear(); - NPTR = allCliques[cq].size(); - for (i = 0; i < NPTR; i++) { - newvrt.selTrk.push_back(allCliques[cq][i]); - } - //================================================== - if (xAODwrk) - xAODwrk->tmpListTracks.clear(); - for (i = 0; i < NPTR; i++) { - if (xAODwrk) - xAODwrk->tmpListTracks.push_back( - xAODwrk->listJetTracks.at(newvrt.selTrk[i])); + if (xAODwrk) xAODwrk->tmpListTracks.clear(); + + for (int i_trk : clique){ + newvrt.selTrk.push_back(i_trk); + if(xAODwrk) xAODwrk->tmpListTracks.push_back(xAODwrk->listJetTracks.at(i_trk)); } - if (xAODwrk) - sc = VKalVrtFitFastBase(xAODwrk->tmpListTracks, newvrt.vertex, *state); + + if (xAODwrk) sc = VKalVrtFitFastBase(xAODwrk->tmpListTracks, newvrt.vertex, *state); if (sc.isFailure() || - newvrt.vertex.perp() > m_rLayer2 * 2.) { /* No initial estimation */ + newvrt.vertex.perp() > m_rLayer2 * 2.) { + // No initial estimation m_fitSvc->setApproximateVertex(primVrt.x(), primVrt.y(), primVrt.z(), - *state); /*Use as starting point*/ + *state); // Use as starting point if (m_multiWithPrimary) m_fitSvc->setApproximateVertex(0., 0., 0., *state); } else { Amg::Vector3D vDist = newvrt.vertex - primVrt.position(); double jetVrtDir = jetDir.Px() * vDist.x() + jetDir.Py() * vDist.y() + jetDir.Pz() * vDist.z(); - if (m_multiWithPrimary) - jetVrtDir = std::abs( - jetVrtDir); /* Always positive when primary vertex is seeked for*/ - if (jetVrtDir > 0.) { /* Good initial estimation */ + if (m_multiWithPrimary) jetVrtDir = std::abs(jetVrtDir); // Always positive when primary vertex is seeked for + if (jetVrtDir > 0.) { + // Good initial estimation m_fitSvc->setApproximateVertex(newvrt.vertex.x(), newvrt.vertex.y(), newvrt.vertex.z(), - *state); /*Use as starting point*/ + *state); //Use as starting point } else { - m_fitSvc->setApproximateVertex( - primVrt.x(), primVrt.y(), primVrt.z(), *state); + m_fitSvc->setApproximateVertex(primVrt.x(), primVrt.y(), primVrt.z(), *state); } } + sc = StatusCode::FAILURE; if (xAODwrk) { sc = VKalVrtFitBase(xAODwrk->tmpListTracks, @@ -207,12 +198,10 @@ InDetVKalVxInJetTool::getVrtSecMulti(workVectorArrxAOD* xAODwrk, *state, false); } - if (sc.isFailure()){ - continue; /* Bad fit - goto next solution */ - } - if (NPTR == 2 && newvrt.chi2 > 10.){ - continue; /* Bad 2track vertex */ - } + if (sc.isFailure()) continue; // Bad fit - goto next solution + + if (clique.size() == 2 && newvrt.chi2 > 10.) continue; // Bad 2track vertex + if (newvrt.chi2PerTrk.size() == 2){ newvrt.chi2PerTrk[0] = newvrt.chi2PerTrk[1] = newvrt.chi2 / 2.; } @@ -223,933 +212,1157 @@ InDetVKalVxInJetTool::getVrtSecMulti(workVectorArrxAOD* xAODwrk, jetProjDist(newvrt.vertex, primVrt, jetDir); // 3D SV-PV distance wrkVrtSet->push_back(newvrt); } - // + + // //========= Initial cleaning of solutions //-Remove worst track from vertices with very bad Chi2 bool disassembled = false; - int NSoluI = 0; + do { disassembled = false; - NSoluI = (*wrkVrtSet).size(); + int NSoluI = (*wrkVrtSet).size(); for (int iv = 0; iv < NSoluI; iv++) { - if (!(*wrkVrtSet)[iv].Good || (*wrkVrtSet)[iv].selTrk.size() == 2) - continue; - if (TMath::Prob((*wrkVrtSet)[iv].chi2, - 2 * (*wrkVrtSet)[iv].selTrk.size() - 3) < 1.e-3) { - // printWrkSet(wrkVrtSet.get(),"BigChi2Vertex present"); - if (xAODwrk) - disassembleVertex(wrkVrtSet.get(), iv, xAODwrk->listJetTracks, *state); + WrkVrt vrt = (*wrkVrtSet)[iv]; + if (!vrt.Good || vrt.selTrk.size() == 2) continue; + if (TMath::Prob(vrt.chi2, 2 * vrt.selTrk.size() - 3) < 1.e-3) { + if (xAODwrk) disassembleVertex(wrkVrtSet.get(), iv, xAODwrk->listJetTracks, *state); disassembled = true; - } } - }while(disassembled); -//-Remove vertices fully contained in other vertices - while( (*wrkVrtSet).size()>1 ){ - int tmpN=(*wrkVrtSet).size(); int iv=0; - for(; iv> vrtWithCommonTrk; - std::multimap>::reverse_iterator icvrt; - do{ - NSoluI=(*wrkVrtSet).size(); - vrtWithCommonTrk.clear(); - for(int iv=0; ivlistJetTracks, *state); - } - if(probVnTrkI-nTCom || nTCom>nTrkJ-nTCom)){ //2 and more common tracks for NTr>=3 vertices. Merge anyway. - if (xAODwrk)mergeAndRefitOverlapVertices( wrkVrtSet.get(), iv, jv, xAODwrk->listJetTracks, *state); - break; //Vertex list is changed. Restart merging from scratch. - } - continue; //Continue merging loop - } - newvrt.Good = true; - (*wrkVrtSet).push_back(newvrt); - (*wrkVrtSet)[iv].Good=false; - (*wrkVrtSet)[jv].Good=false; - break; //Merging successful. Break merging loop and remake list of connected vertices - } - } while( icvrt != vrtWithCommonTrk.rend() ); - if(m_fillHist){ - int cvgood=0; for(int iv=0; iv<(int)(*wrkVrtSet).size(); iv++) if((*wrkVrtSet)[iv].Good)cvgood++; - Hists& h = getHists(); - h.m_hb_rawVrtN->Fill( (float)cvgood, evtWgt); + }while(disassembled); + + //-Remove vertices fully contained in other vertices + while( (*wrkVrtSet).size()>1 ){ + int tmpN = (*wrkVrtSet).size(); + + int iv = 0; + for(; iv 10.) (*wrkVrtSet)[iv].Good=false; -// if( (*wrkVrtSet)[iv].vertexMom.M()>c_vrtBCMassLimit) (*wrkVrtSet)[iv].Good=false; //VK B-tagging specific requirement -// } -// -//-Remove all bad vertices from the working set - for( auto &tmpV : (*wrkVrtSet) ) { - if(tmpV.vertex.perp()>m_rLayer3+10.)tmpV.Good=false; //Vertices outside Pixel detector - TLorentzVector SVPV(tmpV.vertex.x()-primVrt.x(),tmpV.vertex.y()-primVrt.y(),tmpV.vertex.z()-primVrt.z(),1.); - if(jetDir.DeltaR(SVPV)>m_coneForTag)tmpV.Good=false; // SV is outside of the jet cone + if(iv==tmpN-1) break; // No vertex deleted + + } // end while( (*wrkVrtSet).size()>1 ) + + + // + //- Try to merge all vertices with common tracks + std::multimap> vrtWithCommonTrk; + std::multimap>::reverse_iterator icvrt; + do{ + int NSoluI = (*wrkVrtSet).size(); + vrtWithCommonTrk.clear(); + for(int iv = 0; ivlistJetTracks, *state); + } + + if(probVnTrkI-nTCom || nTCom>nTrkJ-nTCom){ + //2 and more common tracks for NTr>=3 vertices. Merge anyway. + if(xAODwrk) mergeAndRefitOverlapVertices( wrkVrtSet.get(), iv, jv, xAODwrk->listJetTracks, *state); + break; //Vertex list is changed. Restart merging from scratch. + } + continue; //Continue merging loop + } + + newvrt.Good = true; + (*wrkVrtSet).push_back(newvrt); + (*wrkVrtSet)[iv].Good = false; + (*wrkVrtSet)[jv].Good = false; + break; //Merging successful. Break merging loop and remake list of connected vertices + } // end for(icvrt) + + } while( icvrt != vrtWithCommonTrk.rend() ); + + + if(m_fillHist){ + int cvgood=0; + for(const auto& vrt : (*wrkVrtSet)){ + if(vrt.Good) cvgood++; } - //------ - //printWrkSet(wrkVrtSet.get(),"Interm"); - //------ - std::vector< std::vector > trkScore(0); - if(xAODwrk){ for(auto &trk : xAODwrk->listJetTracks) trkScore.push_back(m_trackClassificator->trkTypeWgts(trk, primVrt, jetDir)); } - for( auto &tmpV : (*wrkVrtSet) ) tmpV.projectedVrt=jetProjDist(tmpV.vertex, primVrt, jetDir); //Setup ProjectedVrt -//---------------------------------------------------------------------------- -// Here we have the overlapping solutions. -// Vertices may have only 1 common track. -// Now solution cleaning - - int ngoodVertices=0; // Final number of good vertices - int n2trVrt=0; // N of vertices with 2 tracks - int nNtrVrt=0; // N vertices with 3 and more tracks - std::unique_ptr > > trkInVrt = std::make_unique>>(nTracks); - double foundMaxT; long int selectedTrack, selectedVertex; - int foundV1, foundV2; - - trackClassification( wrkVrtSet.get(), trkInVrt.get()); - - state = m_fitSvc->makeState(); - while((foundMaxT=MaxOfShared( wrkVrtSet.get(), trkInVrt.get(), selectedTrack, selectedVertex))>0) { - - double foundMinVrtDst = 1000000.; - if(foundMaxTlistJetTracks, *state); - if(probV>probVrtMergeLimit && newvrt.vertexMom.M()0.){ // only positive vertex directions are accepted as merging result - std::swap((*wrkVrtSet)[foundV1],newvrt); - (*wrkVrtSet)[foundV1].projectedVrt=tstDst; - (*wrkVrtSet)[foundV2].Good=false; //Drop vertex - (*wrkVrtSet)[foundV2].selTrk.clear(); //Clean dropped vertex - vrtMerged=true; - } - } - (*wrkVrtSet)[foundV1].nCloseVrt=-1; (*wrkVrtSet)[foundV1].dCloseVrt=1000000.; //For minVrtVrtDistNext optimisation(!) - (*wrkVrtSet)[foundV2].nCloseVrt=-1; (*wrkVrtSet)[foundV2].dCloseVrt=1000000.; //Exclude given pair - foundMinVrtDst=minVrtVrtDistNext( wrkVrtSet.get(), foundV1, foundV2); //Check other vertices - } - if(vrtMerged){ - trkInVrt->resize(nTracks); - trackClassification( wrkVrtSet.get(), trkInVrt.get()); - continue; // Something was merged => goto next cycle. Otherwise break the found track-vertex link - } + Hists& h = getHists(); + h.m_hb_rawVrtN->Fill( static_cast(cvgood), evtWgt); + } + + //-Remove all bad vertices from the working set + for(auto &tmpV : (*wrkVrtSet) ) { + if(tmpV.vertex.perp()>m_rLayer3+10.) tmpV.Good = false; //Vertices outside Pixel detector + TLorentzVector SVPV(tmpV.vertex.x()-primVrt.x(), + tmpV.vertex.y()-primVrt.y(), + tmpV.vertex.z()-primVrt.z(), 1.); + if(jetDir.DeltaR(SVPV)>m_coneForTag) tmpV.Good = false; // SV is outside of the jet cone + } + + unsigned int tmpV = 0; + while( tmpV<(*wrkVrtSet).size() ){ + if( !(*wrkVrtSet)[tmpV].Good ) (*wrkVrtSet).erase((*wrkVrtSet).begin()+tmpV); + else tmpV++; + } + + if((*wrkVrtSet).empty()){ // No vertices at all + return finalVertices; + } + + std::vector< std::vector > trkScore(0); + if(xAODwrk){ + for(auto &trk : xAODwrk->listJetTracks) trkScore.push_back(m_trackClassificator->trkTypeWgts(trk, primVrt, jetDir)); + } + + for(auto &tmpV : (*wrkVrtSet) ) tmpV.projectedVrt=jetProjDist(tmpV.vertex, primVrt, jetDir); //Setup ProjectedVrt + + //---------------------------------------------------------------------------- + // Here we have the overlapping solutions. + // Vertices may have only 1 common track. + // Now solution cleaning + + std::unique_ptr > > trkInVrt = std::make_unique>>(nTracks); + trackClassification(wrkVrtSet.get(), trkInVrt.get()); + + double foundMaxT; + long int selectedTrack, selectedVertex; + int foundV1, foundV2; + + state = m_fitSvc->makeState(); + while( ( foundMaxT = MaxOfShared(wrkVrtSet.get(), trkInVrt.get(), selectedTrack, selectedVertex) ) > 0) { + + double foundMinVrtDst = 1000000.; + if(foundMaxTlistJetTracks, *state); + + if(probV>probVrtMergeLimit && newvrt.vertexMom.M()0.){ + // only positive vertex directions are accepted as merging result + std::swap((*wrkVrtSet)[foundV1], newvrt); + (*wrkVrtSet)[foundV1].projectedVrt = tstDst; + (*wrkVrtSet)[foundV2].Good = false; //Drop vertex + (*wrkVrtSet)[foundV2].selTrk.clear(); //Clean dropped vertex + vrtMerged=true; } - removeTrackFromVertex(wrkVrtSet.get(), trkInVrt.get(), selectedTrack, selectedVertex); - sc = StatusCode::FAILURE; - if (xAODwrk)sc = refitVertex( wrkVrtSet.get(), selectedVertex, xAODwrk->listJetTracks, *state, false); - (*wrkVrtSet)[selectedVertex].projectedVrt=jetProjDist((*wrkVrtSet)[selectedVertex].vertex, primVrt, jetDir); - if( sc.isFailure() ) (*wrkVrtSet)[selectedVertex].Good=false; //bad vertex - if( (*wrkVrtSet)[selectedVertex].projectedVrt<0. && (*wrkVrtSet)[selectedVertex].selTrk.size()==2 ) - (*wrkVrtSet)[selectedVertex].Good=false; // 2track vertex migrates behind PV - drop it. + } + + (*wrkVrtSet)[foundV1].nCloseVrt = -1; + (*wrkVrtSet)[foundV1].dCloseVrt = 1000000.; //For minVrtVrtDistNext optimisation(!) + (*wrkVrtSet)[foundV2].nCloseVrt = -1; + (*wrkVrtSet)[foundV2].dCloseVrt = 1000000.; //Exclude given pair + foundMinVrtDst = minVrtVrtDistNext(wrkVrtSet.get(), foundV1, foundV2); //Check other vertices + + } // end while(foundMinVrtDstresize(nTracks); + trackClassification(wrkVrtSet.get(), trkInVrt.get()); + continue; // Something was merged => goto next cycle. Otherwise break the found track-vertex link + } + + } // end choice of action + + removeTrackFromVertex(wrkVrtSet.get(), trkInVrt.get(), selectedTrack, selectedVertex); + + sc = StatusCode::FAILURE; + if(xAODwrk) sc = refitVertex( wrkVrtSet.get(), selectedVertex, xAODwrk->listJetTracks, *state, false); + + (*wrkVrtSet)[selectedVertex].projectedVrt = jetProjDist((*wrkVrtSet)[selectedVertex].vertex, primVrt, jetDir); + + if( sc.isFailure() ) (*wrkVrtSet)[selectedVertex].Good = false; //bad vertex + if( (*wrkVrtSet)[selectedVertex].projectedVrt<0. + && (*wrkVrtSet)[selectedVertex].selTrk.size()==2 ){ + (*wrkVrtSet)[selectedVertex].Good = false; // 2track vertex migrates behind PV - drop it. } -// -// Final check/merge for close vertices -// - double minDistVV=minVrtVrtDist( wrkVrtSet.get(), foundV1, foundV2); //recalculate VV distances - while ( minDistVV < m_vertexMergeCut) { - if(foundV1listJetTracks, *state); - if(probV>probVrtMergeLimit && newvrt.vertexMom.M()0.){ // only positive vertex directions are accepted as merging result - std::swap((*wrkVrtSet)[foundV1],newvrt); - (*wrkVrtSet)[foundV1].projectedVrt=tstDst; - (*wrkVrtSet)[foundV2].Good=false; //Drop vertex - (*wrkVrtSet)[foundV2].selTrk.clear(); //Clean dropped vertex - } - } - (*wrkVrtSet)[foundV1].nCloseVrt=-1; (*wrkVrtSet)[foundV1].dCloseVrt=1000000.; //For minVrtVrtDistNext optimisation(!) - (*wrkVrtSet)[foundV2].nCloseVrt=-1; (*wrkVrtSet)[foundV2].dCloseVrt=1000000.; //Exclude given pair - minDistVV=minVrtVrtDistNext( wrkVrtSet.get(), foundV1, foundV2); + + } // end while( (foundMaxT = MaxOfShared)>0 ) + + + // + // Final check/merge for close vertices + // + double minDistVV = minVrtVrtDist( wrkVrtSet.get(), foundV1, foundV2); //recalculate VV distances + while ( minDistVV < m_vertexMergeCut) { + if(foundV1listJetTracks, *state); + + if(probV>probVrtMergeLimit && newvrt.vertexMom.M()0.){ + // only positive vertex directions are accepted as merging result + std::swap((*wrkVrtSet)[foundV1],newvrt); + (*wrkVrtSet)[foundV1].projectedVrt = tstDst; + (*wrkVrtSet)[foundV2].Good = false; //Drop vertex + (*wrkVrtSet)[foundV2].selTrk.clear(); //Clean dropped vertex + } } -// -// Try to improve vertices with big Chi2 if something went wrong. Just precaution. - for(int iv=0; iv<(int)wrkVrtSet->size(); iv++) { - if(!(*wrkVrtSet)[iv].Good ) continue; //don't work on vertex which is already bad - if( (*wrkVrtSet)[iv].selTrk.size()<3 ) continue; - double tmpProb=TMath::Prob( (*wrkVrtSet)[iv].chi2, 2*(*wrkVrtSet)[iv].selTrk.size()-3 ); //Chi2 of the original vertex - if(tmpProb<0.001){ - if (xAODwrk)tmpProb=improveVertexChi2( wrkVrtSet.get(), iv, xAODwrk->listJetTracks, *state, false); - if(tmpProb<0.001)(*wrkVrtSet)[iv].Good=false; - (*wrkVrtSet)[iv].projectedVrt=jetProjDist((*wrkVrtSet)[iv].vertex, primVrt, jetDir); - } + + (*wrkVrtSet)[foundV1].nCloseVrt = -1; + (*wrkVrtSet)[foundV1].dCloseVrt = 1000000.; //For minVrtVrtDistNext optimisation(!) + (*wrkVrtSet)[foundV2].nCloseVrt = -1; + (*wrkVrtSet)[foundV2].dCloseVrt = 1000000.; //Exclude given pair + minDistVV = minVrtVrtDistNext(wrkVrtSet.get(), foundV1, foundV2); + } + + // + // Try to improve vertices with big Chi2 if something went wrong. Just precaution. + for(unsigned int iv=0; ivsize(); iv++) { + WrkVrt vert_i = (*wrkVrtSet)[iv]; + if(!vert_i.Good) continue; //don't work on vertex which is already bad + if( vert_i.selTrk.size()<3 ) continue; + + double tmpProb = TMath::Prob( vert_i.chi2, 2*vert_i.selTrk.size()-3 ); //Chi2 of the original vertex + if(tmpProb<0.001){ + if(xAODwrk) tmpProb = improveVertexChi2(wrkVrtSet.get(), iv, xAODwrk->listJetTracks, *state, false); + if(tmpProb<0.001) vert_i.Good = false; + vert_i.projectedVrt = jetProjDist(vert_i.vertex, primVrt, jetDir); } - //printWrkSet(wrkVrtSet.get(),"Joined"); -//------------ Debug -// std::vector tempTrk(0); -// for(auto & iv : (*wrkVrtSet)){ if(iv.Good){for(auto & it : iv.selTrk)tempTrk.push_back(xAODwrk->listJetTracks.at(it));}} -// removeDoubleEntries(tempTrk); -//-------------------------------------------------------------------------------------------------------- -// Final vertex selection/cleaning -// - state = m_fitSvc->makeState(); - double Signif3D, vProb=0.; - //double Dist3D=0; - -//--------- Start with 1-track vertices -//=First check if the track was detached from a multitrack vertex. If so - reattach. - for(auto &ntrVrt : (*wrkVrtSet)){ if(!ntrVrt.Good || ntrVrt.selTrk.size()<=1) continue; - for(auto &onetVrt : (*wrkVrtSet)){ if(!onetVrt.Good || onetVrt.selTrk.size()!=1) continue; - if(ntrVrt.detachedTrack==onetVrt.selTrk[0]){ - WrkVrt newV(ntrVrt); newV.selTrk.push_back(ntrVrt.detachedTrack); - if (xAODwrk)vProb = refitVertex( newV, xAODwrk->listJetTracks, *state, true); - if(vProb>probVrtMergeLimit){ onetVrt.Good=false; ntrVrt=newV; ntrVrt.detachedTrack=-1;} - break; - } } } -//=Recheck if the track was detached from a 2track vertex. If so - reattach. - for(auto &iVrt : (*wrkVrtSet)){ if(!iVrt.Good || iVrt.selTrk.size()!=1) continue; - for(auto &jVrt : (*wrkVrtSet)){ if(!jVrt.Good || jVrt.selTrk.size()!=1) continue; - if(iVrt.detachedTrack==jVrt.selTrk[0]){ - WrkVrt newV(iVrt); newV.selTrk.push_back(iVrt.detachedTrack); - if (xAODwrk)vProb = refitVertex( newV, xAODwrk->listJetTracks, *state, true); - if(vProb>probVrtMergeLimit){ jVrt.Good=false; iVrt=newV; iVrt.detachedTrack=-1;} - break; - } } } - for(auto &ntrVrt : (*wrkVrtSet)){ if(!ntrVrt.Good || ntrVrt.selTrk.size()<=1) continue; - for(auto tr : ntrVrt.selTrk){ - for(auto &onetVrt : (*wrkVrtSet)){ if(!onetVrt.Good || onetVrt.selTrk.size()!=1) continue; - if(onetVrt.detachedTrack==tr){ - WrkVrt newV(ntrVrt); newV.selTrk.push_back(onetVrt.selTrk[0]); - if (xAODwrk)vProb = refitVertex( newV, xAODwrk->listJetTracks, *state, true); - if(vProb>probVrtMergeLimit){ onetVrt.Good=false; ntrVrt=newV;} - } } } } - for(auto & curVrt : (*wrkVrtSet) ) { - if(!curVrt.Good ) continue; //don't work on vertex which is already bad - if( std::abs(curVrt.vertex.z())>650. ){curVrt.Good=false; continue;} //vertex outside Pixel det. For ALL vertices - if(curVrt.selTrk.size() != 1) continue; - curVrt.Good=false; // Make them bad by default - if(m_multiWithOneTrkVrt){ /* 1track vertices left unassigned from good 2tr vertices */ - vrtVrtDist(primVrt,curVrt.vertex, curVrt.vertexCov, Signif3D); //VK non-projected Signif3D is worse - double tmpProb=TMath::Prob( curVrt.chi2, 1); //Chi2 of the original 2tr vertex - bool trkGood=false; - if(xAODwrk)trkGood=check1TrVertexInPixel(xAODwrk->listJetTracks[curVrt.selTrk[0]],curVrt.vertex,curVrt.vertexCov); - if(trkGood && tmpProb>0.01){ /* accept only good tracks coming from good 2tr vertex*/ - //if( useMaterialRejection && insideMatLayer(curVrt.vertex.x(),curVrt.vertex.y()) ) continue; - std::vector Impact,ImpactError; double Signif3DP = 0; - if (xAODwrk) Signif3DP=m_fitSvc->VKalGetImpact(xAODwrk->listJetTracks[curVrt.selTrk[0]],primVrt.position(), 1, Impact, ImpactError, *state); - if(m_fillHist&&curVrt.vertex.perp()>20.){ - Hists& h = getHists(); - h.m_hb_diffPS->Fill( Signif3DP, evtWgt); - } - if( Signif3DP>2.*m_trkSigCut && Signif3D>m_sel2VrtSigCut) curVrt.Good=true; // accept only tracks which are far from primary vertex - } - } + } + + // Final vertex selection/cleaning + state = m_fitSvc->makeState(); + + //--------- Start with 1-track vertices + //=First check if the track was detached from a multitrack vertex. If so - reattach. + for(auto &ntrVrt : (*wrkVrtSet)){ + if(!ntrVrt.Good || ntrVrt.selTrk.size()<=1) continue; + + for(auto &onetVrt : (*wrkVrtSet)){ + if(!onetVrt.Good || onetVrt.selTrk.size()!=1) continue; + + if(ntrVrt.detachedTrack==onetVrt.selTrk[0]){ + WrkVrt newV(ntrVrt); + newV.selTrk.push_back(ntrVrt.detachedTrack); + double vProb = 0.; + if(xAODwrk) vProb = refitVertex(newV, xAODwrk->listJetTracks, *state, true); + if(vProb>probVrtMergeLimit){ + onetVrt.Good=false; + ntrVrt=newV; + ntrVrt.detachedTrack=-1; + } + break; + } } -//------------ Debug -// std::vector tempTrk(0); -// for(auto & iv : (*wrkVrtSet)){ if(iv.Good){for(auto & it : iv.selTrk)tempTrk.push_back(xAODwrk->listJetTracks.at(it));}} -// removeDoubleEntries(tempTrk); -// -//----- Vertices with >1 tracks - for(int iv=0; iv<(int)wrkVrtSet->size(); iv++) { - WrkVrt & curVrt=(*wrkVrtSet)[iv]; - if(!curVrt.Good ) continue; //don't work on vertex which is already bad - nth=(*wrkVrtSet)[iv].selTrk.size(); if(nth == 1) continue; // 1track vertices are treated already - vrtVrtDist(primVrt,curVrt.vertex, curVrt.vertexCov, Signif3D); //VK non-projected Signif3D is worse - if(xAODwrk)xAODwrk->tmpListTracks.resize(nth); - for(i=0;itmpListTracks[i]=xAODwrk->listJetTracks[curVrt.selTrk[i]]; - } - (*wrkVrtSet)[iv].Good = false; /* Make all vertices bad for futher selection */ - if(nth <= 1) continue; /* Definitely bad vertices */ - if((*wrkVrtSet)[iv].projectedVrt<0.) continue; /* Remove vertices behind primary one */ - //VK Refitting is not needed here - done previously. Option for safety - //sc = StatusCode::FAILURE; - //if (xAODwrk)sc = refitVertex( wrkVrtSet, iv, xAODwrk->listJetTracks); - //else if(RECwork)sc = refitVertex( wrkVrtSet, iv, RECwork->listJetTracks); - //if( sc.isFailure() ) continue; /* Bad fit - goto next solution */ - //--------------------------------------------------------------------------- - if( TMath::Prob( curVrt.chi2, 2*nth-3)<0.001) continue; /* Bad Chi2 of refitted vertex */ -//---- -// Dist3D=((*wrkVrtSet)[iv].vertex-primVrt.position()).mag(); /* Not needed currently*/ -// if(PrmVrtAdded && iv==PrmVrtAdded && Dist3D<3.5) continue; /* Skip added primary vertex */ -//----------------------------------------------------------------------------------------- - if(nth==2 && xAODwrk){ -// Check track pixel hit patterns vs vertex position. - if(m_useVertexCleaningPix){ - if(!check2TrVertexInPixel(xAODwrk->tmpListTracks[0],xAODwrk->tmpListTracks[1],curVrt.vertex,curVrt.vertexCov))continue; - } -// Check track first measured points vs vertex position. - if(m_useVertexCleaningFMP){ - float ihitR = xAODwrk->tmpListTracks[0]->radiusOfFirstHit(); - float jhitR = xAODwrk->tmpListTracks[1]->radiusOfFirstHit(); - float vrErr = vrtRadiusError(curVrt.vertex, curVrt.vertexCov); - if(std::abs(ihitR-jhitR)>25.) continue; // Hits in different pixel layers - if( curVrt.vertex.perp()-std::min(ihitR,jhitR) > 2.*vrErr) continue; // Vertex is behind hit in pixel - } - } -// -//--- Check interactions on pixel layers - if(m_fillHist && nth==2){ - Hists& h = getHists(); - h.m_hb_r2d->Fill( curVrt.vertex.perp(), evtWgt); - } + } + + //=Recheck if the track was detached from a 2track vertex. If so - reattach. + for(auto &iVrt : (*wrkVrtSet)){ + if(!iVrt.Good || iVrt.selTrk.size()!=1) continue; + + for(auto &jVrt : (*wrkVrtSet)){ + if(!jVrt.Good || jVrt.selTrk.size()!=1) continue; + + if(iVrt.detachedTrack==jVrt.selTrk[0]){ + WrkVrt newV(iVrt); + newV.selTrk.push_back(iVrt.detachedTrack); + double vProb = 0.; + if(xAODwrk) vProb = refitVertex(newV, xAODwrk->listJetTracks, *state, true); + if(vProb>probVrtMergeLimit){ + jVrt.Good = false; + iVrt = newV; + iVrt.detachedTrack = -1; + } + break; + } + } + + } + - if(m_useITkMaterialRejection){ - double xvt = curVrt.vertex.x(); double yvt = curVrt.vertex.y(); - double zvt = curVrt.vertex.z(); double Rvt = std::hypot(xvt,yvt); - int bin = m_ITkPixMaterialMap->FindBin(zvt,Rvt); - if(m_ITkPixMaterialMap->GetBinContent(bin)>0) continue; + for(auto &ntrVrt : (*wrkVrtSet)){ + if(!ntrVrt.Good || ntrVrt.selTrk.size()<=1) continue; + + for(auto tr : ntrVrt.selTrk){ + for(auto &onetVrt : (*wrkVrtSet)){ + if(!onetVrt.Good || onetVrt.selTrk.size()!=1) continue; + + if(onetVrt.detachedTrack==tr){ + WrkVrt newV(ntrVrt); + newV.selTrk.push_back(onetVrt.selTrk[0]); + double vProb = 0.; + if(xAODwrk) vProb = refitVertex( newV, xAODwrk->listJetTracks, *state, true); + if(vProb>probVrtMergeLimit){ + onetVrt.Good = false; + ntrVrt = newV; } + } - if(m_fillHist && nth==2){ - Hists& h = getHists(); - h.m_hb_r2d->Fill( curVrt.vertex.perp(), evtWgt); - } -// -//--- Check V0s and conversions - if(nth==2 && curVrt.vertexCharge==0 && curVrt.detachedTrack<0){ - double mass_PiPi = curVrt.vertexMom.M(); - double mass_PPi = massV0(curVrt.trkAtVrt,m_massP,m_massPi); - double mass_EE = massV0(curVrt.trkAtVrt,m_massE,m_massE); - if(m_fillHist){ - Hists& h = getHists(); - h.m_hb_massPiPi->Fill( mass_PiPi, evtWgt); - h.m_hb_massPPi ->Fill( mass_PPi, evtWgt); - if( curVrt.vertex.perp()>20.)h.m_hb_massEE ->Fill( mass_EE, evtWgt); - } - if( std::abs(mass_PiPi-m_massK0) < 22.) continue; - if( std::abs(mass_PPi-m_massLam) < 8.) continue; - if( mass_EE < 60. && curVrt.vertex.perp() > 20.) continue; - } -//--- - if(m_fillHist){ - Hists& h = getHists(); - h.m_hb_sig3DTot->Fill( Signif3D, evtWgt); - } - if(Signif3D tempTrk(0); -// for(auto & iv : (*wrkVrtSet)){ if(iv.Good){for(auto & it : iv.selTrk)tempTrk.push_back(xAODwrk->listJetTracks.at(it));}} -// removeDoubleEntries(tempTrk); -//------------------------------------------- -//Checks - std::vector goodVertices(0); - ngoodVertices=0; // Final number of good vertices - n2trVrt=nNtrVrt=0; // N of vertices with different amount of tracks - for(auto & iv : (*wrkVrtSet) ) { - nth=iv.selTrk.size(); if(nth == 0) continue; /* Definitely bad vertices */ - if( iv.Good) { - ngoodVertices++; - goodVertices.emplace_back(iv); /* add it */ - if(nth==2)n2trVrt++; - if(nth>=3)nNtrVrt++; - } + + } // end for(auto &ntrVrt : (*wrkVrtSet)) + + + for(auto & curVrt : (*wrkVrtSet) ) { + if(!curVrt.Good ) continue; //don't work on vertex which is already bad + if( std::abs(curVrt.vertex.z())>650. ){ + curVrt.Good = false; + continue; + } //vertex outside Pixel det. For ALL vertices + if(curVrt.selTrk.size() != 1) continue; + + curVrt.Good = false; // Make them bad by default + + if(m_multiWithOneTrkVrt){ + // 1track vertices left unassigned from good 2tr vertices + double Signif3D = 0.; + vrtVrtDist(primVrt,curVrt.vertex, curVrt.vertexCov, Signif3D); //VK non-projected Signif3D is worse + double tmpProb = TMath::Prob(curVrt.chi2, 1); //Chi2 of the original 2tr vertex + + bool trkGood = false; + if(xAODwrk) trkGood = check1TrVertexInPixel(xAODwrk->listJetTracks[curVrt.selTrk[0]], curVrt.vertex, curVrt.vertexCov); + + if(trkGood && tmpProb>0.01){ + // accept only good tracks coming from good 2tr vertex + std::vector Impact,ImpactError; + double Signif3DP = 0; + if(xAODwrk) Signif3DP = m_fitSvc->VKalGetImpact(xAODwrk->listJetTracks[curVrt.selTrk[0]], primVrt.position(), 1, Impact, ImpactError, *state); + + if(m_fillHist && curVrt.vertex.perp()>20.){ + Hists& h = getHists(); + h.m_hb_diffPS->Fill(Signif3DP, evtWgt); + } + + if(Signif3DP>2.*m_trkSigCut && Signif3D>m_sel2VrtSigCut) curVrt.Good = true; // accept only tracks which are far from primary vertex + } + } - if(ngoodVertices == 0 || (n2trVrt+nNtrVrt)==0){ // No good vertices at all - return finalVertices; + + } // end for(auto & curVrt : (*wrkVrtSet) ) + + + for(auto& curVrt : (*wrkVrtSet)){ + if(!curVrt.Good ) continue; //don't work on vertex which is already bad + int nth = curVrt.selTrk.size(); + if(nth==1) continue; // 1track vertices are treated already + + double Signif3D = 0.; + vrtVrtDist(primVrt,curVrt.vertex, curVrt.vertexCov, Signif3D); //VK non-projected Signif3D is worse + if(xAODwrk) xAODwrk->tmpListTracks.resize(nth); + + for(int i = 0; i < nth; i++) { + if(xAODwrk) xAODwrk->tmpListTracks[i] = xAODwrk->listJetTracks[curVrt.selTrk[i]]; } -// -//sorting - while(1){ bool swapDone=false; // Sort on XY distance from (0.,0.) - for(int iv=0; iv<(int)goodVertices.size()-1; iv++) { - if( goodVertices[iv].vertex.perp() > goodVertices[iv+1].vertex.perp()){ - std::swap( goodVertices[iv], goodVertices[iv+1] ); - swapDone=true; - } - } if(!swapDone) break; + curVrt.Good = false; // Make all vertices bad for futher selection + + if(nth <= 1) continue; // Definitely bad vertices + if(curVrt.projectedVrt<0.) continue; // Remove vertices behind primary one + + if(TMath::Prob( curVrt.chi2, 2*nth-3)<0.001) continue; // Bad Chi2 of refitted vertex + + if(nth==2 && xAODwrk){ + // Check track pixel hit patterns vs vertex position. + if(m_useVertexCleaningPix){ + if(!check2TrVertexInPixel(xAODwrk->tmpListTracks[0],xAODwrk->tmpListTracks[1],curVrt.vertex,curVrt.vertexCov))continue; + } + + // Check track first measured points vs vertex position. + if(m_useVertexCleaningFMP){ + float ihitR = xAODwrk->tmpListTracks[0]->radiusOfFirstHit(); + float jhitR = xAODwrk->tmpListTracks[1]->radiusOfFirstHit(); + float vrErr = vrtRadiusError(curVrt.vertex, curVrt.vertexCov); + if(std::abs(ihitR-jhitR)>25.) continue; // Hits in different pixel layers + if(curVrt.vertex.perp()-std::min(ihitR,jhitR) > 2.*vrErr) continue; // Vertex is behind hit in pixel + } + } - while(1){ bool swapDone=false; // Then sort on Projected dist if R<20. - for(int iv=0; iv<(int)goodVertices.size()-1; iv++) { - if(goodVertices[iv+1].vertex.perp() > 400.) continue; - if(goodVertices[iv].projectedVrt > goodVertices[iv+1].projectedVrt){ - std::swap( goodVertices[iv], goodVertices[iv+1] ); - swapDone=true; - } - } if(!swapDone) break; + + //--- Check interactions on pixel layers + if(m_fillHist && nth==2){ + Hists& h = getHists(); + h.m_hb_r2d->Fill(curVrt.vertex.perp(), evtWgt); } - if(ngoodVertices>1){ - if( goodVertices[1].vertexMom.M()-goodVertices[0].vertexMom.M() > 5000.) std::swap( goodVertices[0], goodVertices[1] ); + + if(m_useITkMaterialRejection){ + double xvt = curVrt.vertex.x(); + double yvt = curVrt.vertex.y(); + double zvt = curVrt.vertex.z(); + double Rvt = std::hypot(xvt,yvt); + int bin = m_ITkPixMaterialMap->FindBin(zvt,Rvt); + if(m_ITkPixMaterialMap->GetBinContent(bin)>0) continue; } - if(m_fillHist){ + + if(m_fillHist && nth==2){ Hists& h = getHists(); - h.m_hb_distVV->Fill( minVrtVrtDist( wrkVrtSet.get(), foundV1, foundV2), evtWgt); - } -//---------------------------------------------------------------------------------- -// Nonused tracks for one-track-vertex search -// -// VK - It tries to recover tracks which were already rejected on previous stages of algorithm. -// Gain is negligible. The code is commented out to the end of this file for future... -// VK - 27.04.2017 - new try - std::vector nonusedTrk(0); - for(int trk=0; trkFill(curVrt.vertex.perp(), evtWgt); } - struct MatchedSV { int indVrt; double Signif3D;}; std::vector matchSV(0); - double Signif=0.; std::vector Impact,ImpactError; - for(int it=0; it<(int)nonusedTrk.size(); it++){ - MatchedSV tmpV = {0, 1.e9}; - for(int iv=0; iv<(int)goodVertices.size(); iv++){ //--Find vertex closest to the given track - if(!goodVertices[iv].Good) continue; - if(goodVertices[iv].selTrk.size()<2) continue; - if( vrtVrtDist(primVrt, goodVertices[iv].vertex, goodVertices[iv].vertexCov, jetDir) < 10.) continue; //--Too close to PV - else if(xAODwrk)Signif = m_fitSvc->VKalGetImpact(xAODwrk->listJetTracks[nonusedTrk[it]], goodVertices[iv].vertex, 1, Impact, ImpactError, *state); - if(SignifFill(mass_PiPi, evtWgt); + h.m_hb_massPPi ->Fill(mass_PPi, evtWgt); + if(curVrt.vertex.perp()>20.) h.m_hb_massEE->Fill(mass_EE, evtWgt); } - matchSV.push_back(tmpV); - } - for(int iv=0; iv<(int)goodVertices.size(); iv++){ - WrkVrt newV(goodVertices[iv]); - bool addedT=false; std::map addTrk; - for(int it=0; it<(int)nonusedTrk.size(); it++){ if(matchSV[it].indVrt==iv){addTrk[matchSV[it].Signif3D]=it;} } - std::map::iterator atrk=addTrk.begin(); - if(!addTrk.empty()){ if(atrk->first<4.){newV.selTrk.push_back(nonusedTrk[atrk->second]);addedT=true;}} - if(addTrk.size()>1){++atrk;if(atrk->first<4.){newV.selTrk.push_back(nonusedTrk[atrk->second]);}} - if(addedT){ if (xAODwrk)vProb = refitVertex( newV, xAODwrk->listJetTracks, *state, true); - if(vProb>0.01)goodVertices[iv]=newV; - else{ std::vector TestVertices(1,newV); - if (xAODwrk)vProb=improveVertexChi2( &TestVertices, 0, xAODwrk->listJetTracks, *state, true); - if(vProb>0.01)goodVertices[iv]=TestVertices[0]; - } - } - } -///// - //if(goodVertices.size()>=4) - //printWrkSet(&goodVertices,"FinalVrtSet"); -//------------------------------------------- -// Saving and final cleaning -// - ngoodVertices=0; // Final number of good vertices - int n1trVrt=0; // Final number of good 1-track vertices - TLorentzVector vertexMom; - for(int iv=0; iv<(int)goodVertices.size(); iv++) { - nth=goodVertices[iv].selTrk.size(); - if(xAODwrk)xAODwrk->tmpListTracks.clear(); - for(i=0;itmpListTracks.push_back( xAODwrk->listJetTracks[j] ); - } - if( m_fillHist ){ - Hists& h = getHists(); - if(nth==1)h.m_hb_r1dc->Fill( goodVertices[iv].vertex.perp(), evtWgt); - if(nth==2)h.m_hb_r2dc->Fill( goodVertices[iv].vertex.perp(), evtWgt); - if(nth==3)h.m_hb_r3dc->Fill( goodVertices[iv].vertex.perp(), evtWgt); - if(nth> 3)h.m_hb_rNdc->Fill( goodVertices[iv].vertex.perp(), evtWgt); - Signif3D=vrtVrtDist(primVrt, goodVertices[iv].vertex, goodVertices[iv].vertexCov, jetDir); - if( nth==2 ){ - if(goodVertices[iv].vertexCharge==0){ h.m_hb_totmass2T1->Fill( goodVertices[iv].vertexMom.M(), evtWgt);} - else { h.m_hb_totmass2T2->Fill( goodVertices[iv].vertexMom.M(), evtWgt);} - h.m_hb_sig3D2tr->Fill( Signif3D , evtWgt); - if(goodVertices[iv].vertexCharge==0)h.m_hb_totmassEE->Fill(massV0(goodVertices[iv].trkAtVrt,m_massE,m_massE),evtWgt); - //} else if( nth==1){ - } else if( goodVertices[iv].vertexMom.M()>6000.){ - h.m_hb_sig3D1tr->Fill( Signif3D, evtWgt); - } else { - h.m_hb_sig3DNtr->Fill( Signif3D, evtWgt); - } - } -// -// xAOD::Vertex creation----------------------------- - xAOD::Vertex * tmpVertex=new (std::nothrow) xAOD::Vertex(); - if(!tmpVertex){ //Premature stop due memory allocation failure - return finalVertices; - } - tmpVertex->makePrivateStore(); - tmpVertex->setPosition(goodVertices[iv].vertex); - int NERMS=goodVertices[iv].vertexCov.size(); - NERMS=6; - std::vector floatErrMtx; floatErrMtx.resize(NERMS); - for(int i=0; isetCovariance(floatErrMtx); - tmpVertex->setFitQuality(goodVertices[iv].chi2, (float)(nth*2-3)); - - std::vector & tmpVTAV=tmpVertex->vxTrackAtVertex(); tmpVTAV.clear(); - for(int ii=0; ii TEL; TEL.setElement( xAODwrk->tmpListTracks[ii] ); - const xAOD::TrackParticleContainer* cont = (const xAOD::TrackParticleContainer* ) (xAODwrk->tmpListTracks[ii]->container() ); - TEL.setStorableObject(*cont); - tmpVertex->addTrackAtVertex(TEL,1.); - } - } - finalVertices.push_back(tmpVertex); -//----- - ngoodVertices++; - if(nth==1)n1trVrt++; -//----- - if( iv==0 && m_multiWithPrimary ) continue; //skip primary vertex if present - vertexMom += goodVertices[iv].vertexMom; + + if(std::abs(mass_PiPi-m_massK0) < 22.) continue; + if(std::abs(mass_PPi-m_massLam) < 8.) continue; + if(mass_EE < 60. && curVrt.vertex.perp() > 20.) continue; } -//===================Fake vertex with list of all tracks for optimisation -// xAOD::Vertex * tmpVertex=new xAOD::Vertex(); tmpVertex->makePrivateStore(); -// tmpVertex->setPosition(Amg::Vector3D(0.,0.,0.)); -// std::vector & tmpVTAV=tmpVertex->vxTrackAtVertex(); tmpVTAV.clear(); -// for(auto ii : tempTrk) { tmpVTAV.push_back( Trk::VxTrackAtVertex(1, new Trk::Perigee( ii->perigeeParameters()) ) ); -// ElementLink TEL; TEL.setElement( ii ); -// const xAOD::TrackParticleContainer* cont = (const xAOD::TrackParticleContainer* ) (ii->container() ); -// TEL.setStorableObject(*cont); tmpVertex->addTrackAtVertex(TEL,1.); -// } finalVertices.push_back(tmpVertex); -//============================================== if(m_fillHist){ Hists& h = getHists(); - h.m_hb_goodvrtN->Fill( ngoodVertices+0.1, evtWgt); - h.m_curTup->ewgt=evtWgt; - if(n1trVrt)h.m_hb_goodvrtN->Fill( n1trVrt+15., evtWgt); - fillNVrtNTup( goodVertices, trkScore, primVrt, jetDir); + h.m_hb_sig3DTot->Fill(Signif3D, evtWgt); } - if(ngoodVertices == 0){ - return finalVertices; + if(Signif3D goodVertices(0); + + for(auto & iv : (*wrkVrtSet)) { + int nth = iv.selTrk.size(); + if(nth == 0) continue; // Definitely bad vertices + + if(iv.Good){ + ngoodVertices++; + goodVertices.emplace_back(iv); + if(nth==2) n2trVrt++; + if(nth>=3) nNtrVrt++; } + } -//----------------------------------------------------------------------------------- -// Saving of results -// -// - double totMass = vertexMom.M(); - results.push_back(totMass); //1st - double eRatio = vertexMom.E()/momentumJet.E(); - results.push_back( eRatio<1. ? eRatio : 1.); //2nd - results.push_back(vrt2TrackNumber); //3rd - results.push_back(nTracks); //4th - if (xAODwrk) results.push_back(xAODwrk->listSecondTracks.size()); //5th - results.push_back(0.); //6th - not clear what to use here -> return 0. - results.push_back(momentumJet.E()); //7th + if(ngoodVertices == 0 || (n2trVrt+nNtrVrt)==0){ // No good vertices at all + return finalVertices; + } - if(m_fillHist){ - Hists& h = getHists(); - h.m_hb_ratio->Fill( results[1], evtWgt); + //sorting + while(1){ + bool swapDone = false; // Sort on XY distance from (0.,0.) + for(unsigned int iv = 0; iv goodVertices[iv+1].vertex.perp()){ + std::swap( goodVertices[iv], goodVertices[iv+1] ); + swapDone = true; } - if(m_fillHist){ - Hists& h = getHists(); - h.m_hb_totmass->Fill( results[0], evtWgt); + } + if(!swapDone) break; + } + + while(1){ + bool swapDone = false; // Then sort on Projected dist if R<20. + for(unsigned int iv = 0; iv 400.) continue; + if(goodVertices[iv].projectedVrt > goodVertices[iv+1].projectedVrt){ + std::swap( goodVertices[iv], goodVertices[iv+1] ); + swapDone = true; } - if(m_fillHist){ - Hists& h = getHists(); - h.m_hb_nvrt2->Fill( results[2], evtWgt); + } + if(!swapDone) break; + } + + if(ngoodVertices>1){ + if( goodVertices[1].vertexMom.M()-goodVertices[0].vertexMom.M() > 5000.){ + std::swap( goodVertices[0], goodVertices[1] ); + } + } + + if(m_fillHist){ + Hists& h = getHists(); + h.m_hb_distVV->Fill(minVrtVrtDist(wrkVrtSet.get(), foundV1, foundV2), evtWgt); + } + + + //---------------------------------------------------------------------------------- + // Nonused tracks for one-track-vertex search + // + // VK - It tries to recover tracks which were already rejected on previous stages of algorithm. + + std::vector nonusedTrk(0); + for(int trk=0; trkFill( momentumJet.Perp(), evtWgt); - } + if(present) break; + } - return finalVertices; + if(!present) nonusedTrk.push_back(trk); + } + + struct MatchedSV{int indVrt; double Signif3D;}; + std::vector matchSV(0); + + for(const auto& i_trk : nonusedTrk){ + MatchedSV tmpV = {0, 1.e9}; + + for(unsigned int iv = 0; iv Impact, ImpactError; + if(xAODwrk) Signif = m_fitSvc->VKalGetImpact(xAODwrk->listJetTracks[i_trk], goodVertices[iv].vertex, 1, Impact, ImpactError, *state); + if(Signif(goodVertices.size()); iv++){ + WrkVrt newV(goodVertices[iv]); + bool addedT = false; + std::map addTrk; + for(unsigned int it = 0; it::iterator atrk=addTrk.begin(); + if(!addTrk.empty()){ + if(atrk->first<4.){ + newV.selTrk.push_back(nonusedTrk[atrk->second]); + addedT=true; + } + } + if(addTrk.size()>1){ + ++atrk; + if(atrk->first<4.){ + newV.selTrk.push_back(nonusedTrk[atrk->second]); + } + } + if(addedT){ + double vProb = 0.; + if(xAODwrk) vProb = refitVertex(newV, xAODwrk->listJetTracks, *state, true); + if(vProb>0.01) goodVertices[iv] = newV; + else{ + std::vector TestVertices(1,newV); + if(xAODwrk) vProb = improveVertexChi2(&TestVertices, 0, xAODwrk->listJetTracks, *state, true); + if(vProb>0.01) goodVertices[iv] = TestVertices[0]; + } + } + } // end for(unsigned int iv) + //------------------------------------------- + // Saving and final cleaning + // + int ngoodVertices_final = 0; // Final number of good vertices + int n1trVrt = 0; // Final number of good 1-track vertices + TLorentzVector vertexMom; + bool isPrimaryVertex = true; + + for(auto& vrt : goodVertices){ + int nth = vrt.selTrk.size(); + if(xAODwrk) xAODwrk->tmpListTracks.clear(); + + for(int i = 0; i < nth; i++) { + int j = vrt.selTrk[i]; // Track number + if(xAODwrk) xAODwrk->tmpListTracks.push_back( xAODwrk->listJetTracks[j] ); + } + if( m_fillHist ){ + Hists& h = getHists(); + if(nth==1) h.m_hb_r1dc->Fill(vrt.vertex.perp(), evtWgt); + if(nth==2) h.m_hb_r2dc->Fill(vrt.vertex.perp(), evtWgt); + if(nth==3) h.m_hb_r3dc->Fill(vrt.vertex.perp(), evtWgt); + if(nth> 3) h.m_hb_rNdc->Fill(vrt.vertex.perp(), evtWgt); + double Signif3D = vrtVrtDist(primVrt, vrt.vertex, vrt.vertexCov, jetDir); + + if(nth==2){ + if(vrt.vertexCharge==0) h.m_hb_totmass2T1->Fill(vrt.vertexMom.M(), evtWgt); + else h.m_hb_totmass2T2->Fill(vrt.vertexMom.M(), evtWgt); + h.m_hb_sig3D2tr->Fill(Signif3D , evtWgt); + if(vrt.vertexCharge==0) h.m_hb_totmassEE->Fill(massV0(vrt.trkAtVrt, m_massE, m_massE), evtWgt); + } + else if(vrt.vertexMom.M()>6000.) h.m_hb_sig3D1tr->Fill(Signif3D, evtWgt); + else h.m_hb_sig3DNtr->Fill(Signif3D, evtWgt); + } + // xAOD::Vertex creation----------------------------- + xAOD::Vertex * tmpVertex=new (std::nothrow) xAOD::Vertex(); + if(!tmpVertex){ //Premature stop due memory allocation failure + return finalVertices; + } + tmpVertex->makePrivateStore(); + tmpVertex->setPosition(vrt.vertex); + + std::vector floatErrMtx; + floatErrMtx.resize(6); + for(int i = 0; i<6; i++) floatErrMtx[i] = vrt.vertexCov[i]; + tmpVertex->setCovariance(floatErrMtx); + + tmpVertex->setFitQuality(vrt.chi2, (float)(nth*2-3)); + + std::vector & tmpVTAV = tmpVertex->vxTrackAtVertex(); + tmpVTAV.clear(); + + for(int ii = 0; ii TEL; + TEL.setElement( xAODwrk->tmpListTracks[ii] ); + const xAOD::TrackParticleContainer* cont = (const xAOD::TrackParticleContainer* ) (xAODwrk->tmpListTracks[ii]->container() ); + TEL.setStorableObject(*cont); + tmpVertex->addTrackAtVertex(TEL,1.); + } + } + finalVertices.push_back(tmpVertex); + ngoodVertices_final++; + if(nth==1) n1trVrt++; + if(isPrimaryVertex && m_multiWithPrimary ){ // skip primary vertex if present + isPrimaryVertex = false; // for next vertices in the loop + continue; + } + vertexMom += vrt.vertexMom; + } // end for(const auto& vrt : goodVertices) + if(m_fillHist){ + Hists& h = getHists(); + h.m_hb_goodvrtN->Fill(ngoodVertices_final+0.1, evtWgt); + h.m_curTup->ewgt = evtWgt; + if(n1trVrt) h.m_hb_goodvrtN->Fill(n1trVrt+15., evtWgt); + fillNVrtNTup(goodVertices, trkScore, primVrt, jetDir); + } + + if(ngoodVertices_final==0){ + return finalVertices; + } + + //----------------------------------------------------------------------------------- + // Saving of results + // + // + double totMass = vertexMom.M(); + results.push_back(totMass); //1st + double eRatio = vertexMom.E()/momentumJet.E(); + results.push_back(eRatio<1. ? eRatio : 1.); //2nd + results.push_back(vrt2TrackNumber); //3rd + results.push_back(nTracks); //4th + if(xAODwrk) results.push_back(xAODwrk->listSecondTracks.size()); //5th + results.push_back(0.); //6th - not clear what to use here -> return 0. + results.push_back(momentumJet.E()); //7th + + if(m_fillHist){ + Hists& h = getHists(); + h.m_hb_ratio->Fill( results[1], evtWgt); + h.m_hb_totmass->Fill( results[0], evtWgt); + h.m_hb_nvrt2->Fill( results[2], evtWgt); + h.m_hb_mom->Fill( momentumJet.Perp(), evtWgt); + } + + return finalVertices; + +} /* Service routines*/ -//----------------------------------------------------------------------------------- -// Detach the worst Chi2 track from the vertex and join it (if possible) with other track -// from the vertex into additional 2-track vertices -// + //----------------------------------------------------------------------------------- + // Detach the worst Chi2 track from the vertex and join it (if possible) with other track + // from the vertex into additional 2-track vertices + // template void InDetVKalVxInJetTool::disassembleVertex(std::vector *wrkVrtSet, int iv, std::vector AllTracks, Trk::IVKalState& istate) const { - WrkVrt newvrt; newvrt.Good=true; - std::vector ListBaseTracks; - int NTrk=(*wrkVrtSet)[iv].selTrk.size(), SelT=-1; - if(NTrk<3)return; + WrkVrt newvrt; + newvrt.Good = true; + std::vector ListBaseTracks; + int NTrk = (*wrkVrtSet)[iv].selTrk.size(); + int SelT = -1; + if(NTrk<3) return; + StatusCode sc; -//=== To get robust definition of most bad outlier + //=== To get robust definition of most bad outlier m_fitSvc->setRobustness(5, istate); - sc = refitVertex( wrkVrtSet, iv, AllTracks, istate, false); - if(sc.isFailure()){ (*wrkVrtSet)[iv].Good=false; return; } + sc = refitVertex(wrkVrtSet, iv, AllTracks, istate, false); + if(sc.isFailure()){ + (*wrkVrtSet)[iv].Good = false; + return; + } + m_fitSvc->setRobustness(0, istate); -//-------------------------------------------------- double Chi2Max=0.; - for(int i=0; iChi2Max) { Chi2Max=(*wrkVrtSet)[iv].chi2PerTrk[i]; SelT=i;} - } - int NVrtCur=wrkVrtSet->size(); - for(int i=0; i m_rLayer2*2. ) newvrt.vertex=Amg::Vector3D(0.,0.,0.); - m_fitSvc->setApproximateVertex(newvrt.vertex[0],newvrt.vertex[1],newvrt.vertex[2],istate); - sc=VKalVrtFitBase(ListBaseTracks, - newvrt.vertex, - newvrt.vertexMom, - newvrt.vertexCharge, - newvrt.vertexCov, - newvrt.chi2PerTrk, - newvrt.trkAtVrt, - newvrt.chi2, - istate, false); - if( sc.isFailure() ) continue; - if( newvrt.chi2>10.) continue; // Too bad 2-track vertex fit - newvrt.chi2PerTrk[0]=newvrt.chi2PerTrk[1]=newvrt.chi2/2.; - newvrt.nCloseVrt = 0; - newvrt.dCloseVrt = 1000000.; - newvrt.projectedVrt = 0.9999; - if((int)wrkVrtSet->size()==NVrtCur) { wrkVrtSet->push_back(newvrt); continue;} // just the first added vertex - if( (*wrkVrtSet).at(NVrtCur).chi2pop_back(); - wrkVrtSet->push_back(newvrt); + for(int i = 0; iChi2Max) { + Chi2Max = (*wrkVrtSet)[iv].chi2PerTrk[i]; + SelT = i; + } } + + unsigned int NVrtCur = wrkVrtSet->size(); + for(int i = 0; i m_rLayer2*2. ) newvrt.vertex = Amg::Vector3D(0.,0.,0.); + m_fitSvc->setApproximateVertex(newvrt.vertex[0], newvrt.vertex[1], newvrt.vertex[2], istate); + + sc=VKalVrtFitBase(ListBaseTracks, + newvrt.vertex, + newvrt.vertexMom, + newvrt.vertexCharge, + newvrt.vertexCov, + newvrt.chi2PerTrk, + newvrt.trkAtVrt, + newvrt.chi2, + istate, false); + if(sc.isFailure() ) continue; + if(newvrt.chi2>10.) continue; // Too bad 2-track vertex fit + + newvrt.chi2PerTrk[0] = newvrt.chi2PerTrk[1] = newvrt.chi2/2.; + newvrt.nCloseVrt = 0; + newvrt.dCloseVrt = 1000000.; + newvrt.projectedVrt = 0.9999; + + if(wrkVrtSet->size()==NVrtCur){ + wrkVrtSet->push_back(newvrt); + continue; + } // just the first added vertex + + if( (*wrkVrtSet).at(NVrtCur).chi2pop_back(); + wrkVrtSet->push_back(newvrt); + } // end for(int i = 0; i *wrkVrtSet) - { std::vector countVT(wrkVrtSet->size(),0); std::vector linkedVrt(wrkVrtSet->size(),0); -//--- Mark as bad the 1track vertex if the detached track is NOT present in any remaining good vertex (>=2tr) - for(int i1tv=0; i1tv<(int)wrkVrtSet->size(); i1tv++) { - if( (*wrkVrtSet)[i1tv].selTrk.size()!=1) continue; - if(!(*wrkVrtSet)[i1tv].Good) continue; - int Trk1=(*wrkVrtSet)[i1tv].detachedTrack; - int foundInGoodVrt=0; - for(int mtv=0; mtv<(int)wrkVrtSet->size(); mtv++) { //cycle over good vertices with many tracks - if( (*wrkVrtSet)[mtv].selTrk.size()<2) continue; - if(!(*wrkVrtSet)[mtv].Good) continue; - if( std::find((*wrkVrtSet)[mtv].selTrk.begin(),(*wrkVrtSet)[mtv].selTrk.end(), Trk1) != (*wrkVrtSet)[mtv].selTrk.end()){ - //double m2Vrt=((*wrkVrtSet)[mtv].vertexMom+(*wrkVrtSet)[i1tv].vertexMom).M(); //VK Commented. M cut in other places - //if(m2Vrt>c_vrtBCMassLimit){ (*wrkVrtSet)[i1tv].Good=false; break; } //1Tr + manyTr system is too heavy - foundInGoodVrt++; countVT[mtv]++; linkedVrt[i1tv]=mtv; //Linked vertex found + //--- Mark as bad the 1track vertex if the detached track is NOT present in any remaining good vertex (>=2tr) + + for(unsigned int i1tv = 0; i1tvsize(); i1tv++) { + WrkVrt vrt1 = (*wrkVrtSet)[i1tv]; + if( vrt1.selTrk.size()!=1) continue; + if(!vrt1.Good) continue; + int Trk1 = vrt1.detachedTrack; + + int foundInGoodVrt = 0; + for(unsigned int mtv=0; mtvsize(); mtv++) { //cycle over good vertices with many tracks + WrkVrt vrtm = (*wrkVrtSet)[mtv]; + if( vrtm.selTrk.size()<2) continue; + if(!vrtm.Good) continue; + + if( std::find(vrtm.selTrk.begin(), vrtm.selTrk.end(), Trk1) != vrtm.selTrk.end()){ + foundInGoodVrt++; + countVT[mtv]++; + linkedVrt[i1tv] = mtv; //Linked vertex found } } - if(!foundInGoodVrt)(*wrkVrtSet)[i1tv].Good=false; // Make the vertex bad + + if(!foundInGoodVrt) vrt1.Good=false; // Make the vertex bad } -// -//---Select SINGLE 1tr-vertex from many pointing to one multi-track vertex - for(int mtv=0; mtv<(int)wrkVrtSet->size(); mtv++) { - if( (*wrkVrtSet)[mtv].selTrk.size()<2 ) continue; - if(!(*wrkVrtSet)[mtv].Good ) continue; - if( countVT[mtv] < 1 ) continue; - double distM=1.e9; - int best1TVrt=-1; - for(int i1tv=0; i1tv<(int)wrkVrtSet->size(); i1tv++) { - if( (*wrkVrtSet)[i1tv].selTrk.size()!=1 ) continue; - if(!(*wrkVrtSet)[i1tv].Good ) continue; - if( linkedVrt[i1tv] != mtv ) continue; - //double dist=((*wrkVrtSet)[mtv].vertex - (*wrkVrtSet)[i1tv].vertex).mag(); - double dist=((*wrkVrtSet)[mtv].vertexMom+(*wrkVrtSet)[i1tv].vertexMom).M(); //Use - if( dist < distM ) {distM=dist; best1TVrt=i1tv;} - (*wrkVrtSet)[i1tv].Good=false; + + //---Select SINGLE 1tr-vertex from many pointing to one multi-track vertex + for(int mtv = 0; mtv(wrkVrtSet->size()); mtv++) { + WrkVrt vrtm = (*wrkVrtSet)[mtv]; + if(vrtm.selTrk.size()<2) continue; + if(!vrtm.Good) continue; + if(countVT[mtv] < 1) continue; + + double distM = 1.e9; + int best1TVrt = -1; + for(unsigned int i1tv = 0; i1tvsize(); i1tv++) { + WrkVrt vrt1 = (*wrkVrtSet)[i1tv]; + if(vrt1.selTrk.size()!=1) continue; + if(!vrt1.Good) continue; + if(linkedVrt[i1tv]!=mtv) continue; + + double dist = (vrtm.vertexMom+vrt1.vertexMom).M(); + if(dist < distM){ + distM = dist; + best1TVrt = i1tv; + } + vrt1.Good=false; } - if(best1TVrt>-1 && distM-1 && distM *wrkVrtSet, - std::vector< std::deque > *TrkInVrt) + std::vector< std::deque > *TrkInVrt) { - int NSet=wrkVrtSet->size(); - for(int iv=0; ivsize(); + for(int iv = 0; iv *wrkVrtSet, - std::vector< std::deque > *TrkInVrt, - long int & selectedTrack, - long int & selectedVertex) + std::vector< std::deque > *TrkInVrt, + long int & selectedTrack, + long int & selectedVertex) { - long int NTrack=TrkInVrt->size(); - int it, jv, itmp, NVrt, VertexNumber; - - double MaxOf=-999999999, Chi2Red=0., SelectedProb=-1.; -// - int NShareMax=0; - for( it=0; it NShareMax ) NShareMax=NVrt; + long int NTrack = TrkInVrt->size(); + double MaxOf = -999999999, SelectedProb = -1.; + int NShareMax = 0; + for(const auto& trk : (*TrkInVrt)){ + int NVrt = trk.size(); // Number of vertices for this track + if(NVrt > NShareMax) NShareMax=NVrt; } - if(NShareMax<=1)return MaxOf; /* No shared tracks */ -// - for( it=0; it0 && N2trVrt2) continue; // Mixture of multi-track and 2-track vrts. Skip multi-track then. - for( itmp=0; itmp0 && N2trVrt2) continue; // Mixture of multi-track and 2-track vrts. Skip multi-track then. + + for(int itmp = 0; itmpc_vrtBCMassLimit)Chi2Red=100.; //VK break immediately very heavy 2tr vertices + Chi2Red = vrt.chi2/2.; //VK 2track vertices with Normal Chi2Red + if(vrt.vertexMom.M()>c_vrtBCMassLimit) Chi2Red = 100.; //VK break immediately very heavy 2tr vertices } - double prob_vrt = TMath::Prob( (*wrkVrtSet)[VertexNumber].chi2, 2*(*wrkVrtSet)[VertexNumber].selTrk.size()-3); + + double prob_vrt = TMath::Prob(vrt.chi2, 2*vrt.selTrk.size()-3); if( MaxOf < Chi2Red ){ - if(MaxOf>0 && prob_vrt>0.01 && SelectedProb<0.01 ) continue; // Don't disassemble good vertices if a bad one is present + if(MaxOf>0 && prob_vrt>0.01 && SelectedProb<0.01) continue; // Don't disassemble good vertices if a bad one is present MaxOf = Chi2Red; - selectedTrack=it; selectedVertex=VertexNumber; + selectedTrack = it; + selectedVertex = VertexNumber; SelectedProb = prob_vrt; } - } + } } - } - } -//-- Additional check for a common track in 2tr-2tr/Ntr vertex topology + + } // end for(const auto& VertexNumber) + + } // end for(int it = 0; it0.05 && prb2>0.05){ - if( (*wrkVrtSet)[v1].selTrk.size()==2 && (*wrkVrtSet)[v2].selTrk.size()==2){ - if (selectedVertex==v1 && dst2c_vrtBCMassLimit && M2c_vrtBCMassLimit ) selectedVertex=v2; + if(vrt1.selTrk.size()==2 && vrt2.selTrk.size()==2){ + if (selectedVertex==v1 && dst2c_vrtBCMassLimit && M2c_vrtBCMassLimit ) selectedVertex = v2; } - if( (*wrkVrtSet)[v1].selTrk.size()+(*wrkVrtSet)[v2].selTrk.size() > 4){ - if( (*wrkVrtSet)[v1].selTrk.size()==2 && dst1>dst2) selectedVertex=v2; - if( (*wrkVrtSet)[v2].selTrk.size()==2 && dst2>dst1) selectedVertex=v1; - } } + + if( vrt1.selTrk.size()+vrt2.selTrk.size() > 4){ + if( vrt1.selTrk.size()==2 && dst1>dst2) selectedVertex = v2; + if( vrt2.selTrk.size()==2 && dst2>dst1) selectedVertex = v1; + } + } } -// + return MaxOf; } void InDetVKalVxInJetTool::removeTrackFromVertex(std::vector *wrkVrtSet, - std::vector< std::deque > *TrkInVrt, - long int & selectedTrack, - long int & selectedVertex) + std::vector< std::deque > *TrkInVrt, + long int & selectedTrack, + long int & selectedVertex) const { - int posInVrtFit=0; //Position of selectedTrack in vertex fit track list. + int posInVrtFit = 0; //Position of selectedTrack in vertex fit track list. std::deque::iterator it; - for(it=(*wrkVrtSet).at(selectedVertex).selTrk.begin(); - it!=(*wrkVrtSet)[selectedVertex].selTrk.end(); ++it) { + WrkVrt vrt = (*wrkVrtSet)[selectedVertex]; + std::deque trk = (*TrkInVrt).at(selectedTrack); + + for(it = vrt.selTrk.begin(); it!=vrt.selTrk.end(); ++it) { if( (*it) == selectedTrack ) { - (*wrkVrtSet)[selectedVertex].selTrk.erase(it); break; - } + vrt.selTrk.erase(it); break; + } posInVrtFit++; - } + } - for(it=(*TrkInVrt).at(selectedTrack).begin(); - it!=(*TrkInVrt)[selectedTrack].end(); ++it) { + for(it = trk.begin(); it!=trk.end(); ++it) { if( (*it) == selectedVertex ) { - (*TrkInVrt)[selectedTrack].erase(it); break; - } - } - (*wrkVrtSet)[selectedVertex].detachedTrack=selectedTrack; -//Check if track is removed from 2tr vertex => then sharing of track left should also be decreased - if( (*wrkVrtSet)[selectedVertex].selTrk.size() == 1){ - long int LeftTrack=(*wrkVrtSet)[selectedVertex].selTrk[0]; // track left in 1tr vertex - for(it=(*TrkInVrt).at(LeftTrack).begin(); it!=(*TrkInVrt)[LeftTrack].end(); ++it) { - if( (*it) == selectedVertex ) { + trk.erase(it); break; + } + } + + vrt.detachedTrack = selectedTrack; + + //Check if track is removed from 2tr vertex => then sharing of track left should also be decreased + if( vrt.selTrk.size() == 1){ + long int LeftTrack = vrt.selTrk[0]; // track left in 1tr vertex + for(it = (*TrkInVrt).at(LeftTrack).begin(); it!=(*TrkInVrt)[LeftTrack].end(); ++it) { + if( (*it) == selectedVertex ) { (*TrkInVrt)[LeftTrack].erase(it); break; - } - } - if( TMath::Prob( (*wrkVrtSet)[selectedVertex].chi2, 1) < 0.05 ) (*wrkVrtSet)[selectedVertex].Good=false; // Not really good Chi2 for one-track vertex - if( (*wrkVrtSet)[selectedVertex].vertexMom.M()>c_vrtBCMassLimit)(*wrkVrtSet)[selectedVertex].Good=false; // Vertex is too heavy - int ipos=0; if(posInVrtFit==0)ipos=1; // Position of remaining track in previous 2track vertex fit - (*wrkVrtSet)[selectedVertex].vertexMom=momAtVrt((*wrkVrtSet)[selectedVertex].trkAtVrt[ipos]); //Redefine vertexMom using remaining track - if(!(*TrkInVrt)[LeftTrack].empty())(*wrkVrtSet)[selectedVertex].Good=false; //Vertex is declared false only if remaining track - // is still linked to another vertex - (*wrkVrtSet)[selectedVertex].trkAtVrt.erase((*wrkVrtSet)[selectedVertex].trkAtVrt.begin()+posInVrtFit); //Remove also TrkAtVrt + } + } + + if( TMath::Prob(vrt.chi2, 1) < 0.05 ) vrt.Good = false; // Not really good Chi2 for one-track vertex + if( vrt.vertexMom.M()>c_vrtBCMassLimit) vrt.Good = false; // Vertex is too heavy + + int ipos = 0; + if(posInVrtFit==0) ipos = 1; // Position of remaining track in previous 2track vertex fit + vrt.vertexMom = momAtVrt(vrt.trkAtVrt[ipos]); //Redefine vertexMom using remaining track + if(!(*TrkInVrt)[LeftTrack].empty()) vrt.Good = false; //Vertex is declared false only if remaining track is still linked to another vertex + vrt.trkAtVrt.erase(vrt.trkAtVrt.begin()+posInVrtFit); //Remove also TrkAtVrt } } -// -// Number of common tracks for 2 vertices -// + + // + // Number of common tracks for 2 vertices + // int InDetVKalVxInJetTool::nTrkCommon( std::vector *wrkVrtSet, int V1, int V2) { - int NTrk_V1 = (*wrkVrtSet).at(V1).selTrk.size(); if( NTrk_V1< 2) return 0; /* Bad vertex */ - int NTrk_V2 = (*wrkVrtSet).at(V2).selTrk.size(); if( NTrk_V2< 2) return 0; /* Bad vertex */ - int nTrkCom=0; + WrkVrt vrt1 = (*wrkVrtSet).at(V1); + WrkVrt vrt2 = (*wrkVrtSet).at(V2); + int NTrk_V1 = vrt1.selTrk.size(); if( NTrk_V1< 2) return 0; // Bad vertex + int NTrk_V2 = vrt2.selTrk.size(); if( NTrk_V2< 2) return 0; // Bad vertex + + int nTrkCom = 0; if(NTrk_V1 < NTrk_V2){ - for(int i=0; i *wrkVrtSet, int & V1, int & V2) + + // + // Minimal normalized vertex-vertex distance + // + double InDetVKalVxInJetTool::minVrtVrtDist(std::vector *wrkVrtSet, int & V1, int & V2) const { - V1=V2=0; - for(int iv=0; iv<(int)wrkVrtSet->size(); iv++) { (*wrkVrtSet).at(iv).dCloseVrt=1000000.; (*wrkVrtSet)[iv].nCloseVrt=-1;} - double foundMinVrtDst=1000000.; - - for(int iv=0; iv<(int)wrkVrtSet->size()-1; iv++) { - if( (*wrkVrtSet)[iv].selTrk.size()< 2) continue; /* Bad vertices */ - if(!(*wrkVrtSet)[iv].Good ) continue; /* Bad vertices */ - for(int jv=iv+1; jv<(int)wrkVrtSet->size(); jv++) { - if( (*wrkVrtSet)[jv].selTrk.size()< 2) continue; /* Bad vertices */ - if(!(*wrkVrtSet)[jv].Good ) continue; /* Bad vertices */ - //if(!nTrkCommon(wrkVrtSet, V1, V2)) continue; /* No common tracks*/ - double tmp= std::abs((*wrkVrtSet)[iv].vertex.x()-(*wrkVrtSet)[jv].vertex.x()) - +std::abs((*wrkVrtSet)[iv].vertex.y()-(*wrkVrtSet)[jv].vertex.y()) - +std::abs((*wrkVrtSet)[iv].vertex.z()-(*wrkVrtSet)[jv].vertex.z()); + V1 = V2 = 0; + for(auto& vrt : (*wrkVrtSet)){ + vrt.dCloseVrt = 1000000.; + vrt.nCloseVrt = -1; + } + double foundMinVrtDst = 1000000.; + + for(unsigned int iv = 0; ivsize()-1; iv++) { + WrkVrt vrt_i = (*wrkVrtSet)[iv]; + if( vrt_i.selTrk.size()< 2) continue; // Bad vertices + if(!vrt_i.Good ) continue; // Bad vertices + + for(unsigned int jv = iv+1; jvsize(); jv++) { + WrkVrt vrt_j = (*wrkVrtSet)[jv]; + if( vrt_j.selTrk.size()< 2) continue; // Bad vertices + if(!vrt_j.Good ) continue; // Bad vertices + double tmp = std::abs(vrt_i.vertex.x()-vrt_j.vertex.x()) + + std::abs(vrt_i.vertex.y()-vrt_j.vertex.y()) + + std::abs(vrt_i.vertex.z()-vrt_j.vertex.z()); if(tmp>20.) continue; - double tmpDst = vrtVrtDist((*wrkVrtSet)[iv].vertex,(*wrkVrtSet)[iv].vertexCov, - (*wrkVrtSet)[jv].vertex,(*wrkVrtSet)[jv].vertexCov); - if( tmpDst < foundMinVrtDst){foundMinVrtDst = tmpDst; V1=iv; V2=jv;} - if( tmpDst < (*wrkVrtSet)[iv].dCloseVrt ) {(*wrkVrtSet)[iv].dCloseVrt=tmpDst; (*wrkVrtSet)[iv].nCloseVrt=jv;} - if( tmpDst < (*wrkVrtSet)[jv].dCloseVrt ) {(*wrkVrtSet)[jv].dCloseVrt=tmpDst; (*wrkVrtSet)[jv].nCloseVrt=iv;} + + double tmpDst = vrtVrtDist(vrt_i.vertex, vrt_i.vertexCov, + vrt_j.vertex, vrt_j.vertexCov); + if(tmpDst < foundMinVrtDst){ + foundMinVrtDst = tmpDst; + V1 = iv; + V2 = jv; + } + if(tmpDst < vrt_i.dCloseVrt){ + vrt_i.dCloseVrt = tmpDst; + vrt_i.nCloseVrt = jv; + } + if(tmpDst < vrt_j.dCloseVrt){ + vrt_j.dCloseVrt=tmpDst; + vrt_j.nCloseVrt=iv; + } + } } + return foundMinVrtDst; } -// -// Give minimal distance between nonmodifed yet vertices -// - double InDetVKalVxInJetTool::minVrtVrtDistNext( std::vector *wrkVrtSet, int & V1, int & V2) - + + // + // Give minimal distance between nonmodifed yet vertices + // + double InDetVKalVxInJetTool::minVrtVrtDistNext(std::vector *wrkVrtSet, int & V1, int & V2) { - V1=0; V2=0; - double foundMinVrtDst=1000000.; - for(int iv=0; iv<(int)wrkVrtSet->size()-1; iv++) { - if( (*wrkVrtSet)[iv].selTrk.size()< 2) continue; /* Bad vertex */ - if( (*wrkVrtSet)[iv].nCloseVrt==-1) continue; /* Used vertex */ - if( (*wrkVrtSet)[iv].dCloseVrt size()-1; iv++) { + WrkVrt vrt_i = (*wrkVrtSet)[iv]; + if(vrt_i.selTrk.size()< 2) continue; // Bad vertex + if(vrt_i.nCloseVrt==-1) continue; // Used vertex + + if(vrt_i.dCloseVrt - double InDetVKalVxInJetTool::mergeAndRefitVertices( std::vector *wrkVrtSet, int V1, int V2, WrkVrt & newvrt, - std::vector & AllTrackList, - Trk::IVKalState& istate) + double InDetVKalVxInJetTool::mergeAndRefitVertices(std::vector *wrkVrtSet, int V1, int V2, WrkVrt & newvrt, + std::vector & AllTrackList, + Trk::IVKalState& istate) const { - if(!(*wrkVrtSet).at(V1).Good)return -1.; //bad vertex - if(!(*wrkVrtSet).at(V2).Good)return -1.; //bad vertex - newvrt.Good=true; - int NTrk_V1=(*wrkVrtSet)[V1].selTrk.size(); - int NTrk_V2=(*wrkVrtSet)[V2].selTrk.size(); + WrkVrt vrt1 = (*wrkVrtSet)[V1]; + WrkVrt vrt2 = (*wrkVrtSet)[V2]; + if(!vrt1.Good) return -1.; //bad vertex + if(!vrt2.Good) return -1.; //bad vertex + + newvrt.Good = true; + int NTrk_V1 = vrt1.selTrk.size(); + int NTrk_V2 = vrt2.selTrk.size(); newvrt.selTrk.resize(NTrk_V1+NTrk_V2); - std::copy((*wrkVrtSet)[V1].selTrk.begin(),(*wrkVrtSet)[V1].selTrk.end(), newvrt.selTrk.begin()); - std::copy((*wrkVrtSet)[V2].selTrk.begin(),(*wrkVrtSet)[V2].selTrk.end(), newvrt.selTrk.begin()+NTrk_V1); + std::copy(vrt1.selTrk.begin(), vrt1.selTrk.end(), newvrt.selTrk.begin()); + std::copy(vrt2.selTrk.begin(), vrt2.selTrk.end(), newvrt.selTrk.begin()+NTrk_V1); - std::deque::iterator TransfEnd ; + std::deque::iterator TransfEnd ; sort( newvrt.selTrk.begin(), newvrt.selTrk.end() ); - TransfEnd = unique( newvrt.selTrk.begin(), newvrt.selTrk.end() ); + TransfEnd = unique( newvrt.selTrk.begin(), newvrt.selTrk.end() ); newvrt.selTrk.erase( TransfEnd, newvrt.selTrk.end()); - std::vector fitTrackList(0); - for(int it=0; it<(int)newvrt.selTrk.size(); it++)fitTrackList.push_back( AllTrackList[newvrt.selTrk[it]] ); - m_fitSvc->setApproximateVertex( 0.5*((*wrkVrtSet)[V1].vertex[0]+(*wrkVrtSet)[V2].vertex[0]), - 0.5*((*wrkVrtSet)[V1].vertex[1]+(*wrkVrtSet)[V2].vertex[1]), - 0.5*((*wrkVrtSet)[V1].vertex[2]+(*wrkVrtSet)[V2].vertex[2]), + + std::vector fitTrackList(0); + for(const auto& trk : newvrt.selTrk) fitTrackList.push_back( AllTrackList[trk] ); + + m_fitSvc->setApproximateVertex( 0.5*(vrt1.vertex[0]+vrt2.vertex[0]), + 0.5*(vrt1.vertex[1]+vrt2.vertex[1]), + 0.5*(vrt1.vertex[2]+vrt2.vertex[2]), istate); StatusCode sc=VKalVrtFitBase(fitTrackList, @@ -1164,224 +1377,234 @@ InDetVKalVxInJetTool::getVrtSecMulti(workVectorArrxAOD* xAODwrk, false); if( sc.isFailure() ) return -1.; if( newvrt.chi2>500. ) return -1.; //VK protection - if( newvrt.chi2PerTrk.size()==2) newvrt.chi2PerTrk[0]=newvrt.chi2PerTrk[1]=newvrt.chi2/2.; - return TMath::Prob( newvrt.chi2, 2*newvrt.selTrk.size()-3); + if( newvrt.chi2PerTrk.size()==2) newvrt.chi2PerTrk[0] = newvrt.chi2PerTrk[1] = newvrt.chi2/2.; + return TMath::Prob(newvrt.chi2, 2*newvrt.selTrk.size()-3); } + + //================== Intelligent merge of multitrack vertices with 2 and more common tracks template - void InDetVKalVxInJetTool::mergeAndRefitOverlapVertices( std::vector *wrkVrtSet, int V1, int V2, - std::vector & AllTrackList, - Trk::IVKalState& istate) const + void InDetVKalVxInJetTool::mergeAndRefitOverlapVertices(std::vector *wrkVrtSet, int V1, int V2, + std::vector & AllTrackList, + Trk::IVKalState& istate) const { - if(!(*wrkVrtSet).at(V1).Good)return; //bad vertex - if(!(*wrkVrtSet).at(V2).Good)return; //bad vertex + WrkVrt vrt1 = (*wrkVrtSet)[V1]; + WrkVrt vrt2 = (*wrkVrtSet)[V2]; + if(!vrt1.Good)return; //bad vertex + if(!vrt2.Good)return; //bad vertex + WrkVrt newvrt; - newvrt.Good=true; + newvrt.Good = true; if( nTrkCommon( wrkVrtSet, V1, V2)<2 )return; //No overlap //- V1 should become ref. vertex. Another Vrt tracks will be added to it. - if( (*wrkVrtSet)[V1].selTrk.size() < (*wrkVrtSet)[V2].selTrk.size() ) - {int itmp=V2; V2=V1; V1=itmp;} //Vertex with NTrk=max is chosen - else if( (*wrkVrtSet)[V1].selTrk.size() == (*wrkVrtSet)[V2].selTrk.size() ) - { if( (*wrkVrtSet)[V1].chi2 > (*wrkVrtSet)[V2].chi2 ) {int itmp=V2; V2=V1; V1=itmp;} } // Vertex with minimal Chi2 is chosen + if( vrt1.selTrk.size() < vrt2.selTrk.size() ) std::swap(V1,V2); //Vertex with NTrk=max is chosen + else if( vrt1.selTrk.size() == vrt2.selTrk.size() ){ + if( vrt1.chi2 > vrt2.chi2 ) std::swap(V1,V2); // Vertex with minimal Chi2 is chosen + } + //- Fill base track list for new vertex - newvrt.selTrk.resize( (*wrkVrtSet)[V1].selTrk.size() ); - std::copy((*wrkVrtSet)[V1].selTrk.begin(),(*wrkVrtSet)[V1].selTrk.end(), newvrt.selTrk.begin()); + newvrt.selTrk.resize( vrt1.selTrk.size() ); + std::copy(vrt1.selTrk.begin(), vrt1.selTrk.end(), newvrt.selTrk.begin()); //- Identify non-common tracks in second vertex std::vector noncommonTrk(0); - for(auto &it : (*wrkVrtSet)[V2].selTrk){ - if( std::find((*wrkVrtSet)[V1].selTrk.begin(), (*wrkVrtSet)[V1].selTrk.end(), it) == (*wrkVrtSet)[V1].selTrk.end() ) - noncommonTrk.push_back(it); + for(auto &it : vrt2.selTrk){ + if( std::find(vrt1.selTrk.begin(), vrt1.selTrk.end(), it) == vrt1.selTrk.end() ) noncommonTrk.push_back(it); } - // + // Try to add non-common tracks one by one std::vector fitTrackList(0); std::vector detachedTrk(0); StatusCode sc; WrkVrt bestVrt; - bool foundMerged=false; - for( auto nct : noncommonTrk){ + bool foundMerged = false; + + for(auto nct : noncommonTrk){ fitTrackList.clear(); - for(int it=0; it<(int)newvrt.selTrk.size(); it++)fitTrackList.push_back( AllTrackList[newvrt.selTrk[it]] ); + for(const auto& trk : newvrt.selTrk) fitTrackList.push_back( AllTrackList[trk] ); fitTrackList.push_back( AllTrackList.at(nct) ); - m_fitSvc->setApproximateVertex( (*wrkVrtSet)[V1].vertex[0],(*wrkVrtSet)[V1].vertex[1],(*wrkVrtSet)[V1].vertex[2],istate); - sc=VKalVrtFitBase(fitTrackList, newvrt.vertex, newvrt.vertexMom, newvrt.vertexCharge, newvrt.vertexCov, - newvrt.chi2PerTrk, newvrt.trkAtVrt, newvrt.chi2, - istate, false); - if( sc.isFailure() || TMath::Prob( newvrt.chi2, 2*newvrt.selTrk.size()+2-3)<0.001 ) { + + m_fitSvc->setApproximateVertex(vrt1.vertex[0], vrt1.vertex[1], vrt1.vertex[2], istate); + sc = VKalVrtFitBase(fitTrackList, newvrt.vertex, newvrt.vertexMom, + newvrt.vertexCharge, newvrt.vertexCov, + newvrt.chi2PerTrk, newvrt.trkAtVrt, newvrt.chi2, + istate, false); + if( sc.isFailure() || TMath::Prob(newvrt.chi2, 2*newvrt.selTrk.size()+2-3)<0.001 ) { detachedTrk.push_back(nct); continue; } + newvrt.selTrk.push_back(nct); // Compatible track. Add to common vertex. - bestVrt=newvrt; - foundMerged=true; + bestVrt = newvrt; + foundMerged = true; } - if(foundMerged)(*wrkVrtSet)[V1]=bestVrt; - (*wrkVrtSet)[V2].Good=false; - // + + if(foundMerged) vrt1=bestVrt; + vrt2.Good=false; + // Now detached tracks if(detachedTrk.size()>1){ WrkVrt nVrt; - fitTrackList.clear(); nVrt.selTrk.clear(); - for(auto nct : detachedTrk){ fitTrackList.push_back( AllTrackList[nct] ); nVrt.selTrk.push_back(nct); } - m_fitSvc->setApproximateVertex( (*wrkVrtSet)[V2].vertex[0],(*wrkVrtSet)[V2].vertex[1],(*wrkVrtSet)[V2].vertex[2],istate); - sc=VKalVrtFitBase(fitTrackList, nVrt.vertex, nVrt.vertexMom, nVrt.vertexCharge, nVrt.vertexCov, - nVrt.chi2PerTrk, nVrt.trkAtVrt, nVrt.chi2, - istate, false); + fitTrackList.clear(); + nVrt.selTrk.clear(); + + for(auto nct : detachedTrk){ + fitTrackList.push_back( AllTrackList[nct] ); + nVrt.selTrk.push_back(nct); + } + + m_fitSvc->setApproximateVertex(vrt2.vertex[0], vrt2.vertex[1], vrt2.vertex[2], istate); + sc = VKalVrtFitBase(fitTrackList, nVrt.vertex, nVrt.vertexMom, + nVrt.vertexCharge, nVrt.vertexCov, + nVrt.chi2PerTrk, nVrt.trkAtVrt, nVrt.chi2, + istate, false); if(sc.isSuccess()) (*wrkVrtSet).push_back(nVrt); + } else if( detachedTrk.size()==1 ){ - bool tFound=false; - for( auto &vrt : (*wrkVrtSet) ){ - if( !vrt.Good || vrt.selTrk.size()<2 )continue; - if( std::find(vrt.selTrk.begin(), vrt.selTrk.end(), detachedTrk[0]) != vrt.selTrk.end() ) { tFound=true; break; } + bool tFound = false; + for( auto &vrt : (*wrkVrtSet) ){ + if( !vrt.Good || vrt.selTrk.size()<2 ) continue; + if( std::find(vrt.selTrk.begin(), vrt.selTrk.end(), detachedTrk[0]) != vrt.selTrk.end() ) { + tFound=true; break; + } } - if( !tFound ) { //Track is not present in other vertices. - double Chi2min=1.e9; int selectedTrk=-1; + + if(!tFound) { //Track is not present in other vertices. + double Chi2min = 1.e9; + int selectedTrk = -1; WrkVrt saveVrt; fitTrackList.resize(2); fitTrackList[0]= AllTrackList[detachedTrk[0]]; - for(auto trk : (*wrkVrtSet)[V2].selTrk){ - if(trk==detachedTrk[0])continue; - WrkVrt nVrt; nVrt.Good=true; - fitTrackList[1]=AllTrackList[trk]; - m_fitSvc->setApproximateVertex( (*wrkVrtSet)[V2].vertex[0],(*wrkVrtSet)[V2].vertex[1],(*wrkVrtSet)[V2].vertex[2],istate); - sc=VKalVrtFitBase(fitTrackList, nVrt.vertex, nVrt.vertexMom, nVrt.vertexCharge, nVrt.vertexCov, - nVrt.chi2PerTrk, nVrt.trkAtVrt, nVrt.chi2, - istate, false); - if(sc.isSuccess() && nVrt.chi2setApproximateVertex(vrt2.vertex[0], vrt2.vertex[1], vrt2.vertex[2], istate); + sc = VKalVrtFitBase(fitTrackList, nVrt.vertex, nVrt.vertexMom, + nVrt.vertexCharge, nVrt.vertexCov, + nVrt.chi2PerTrk, nVrt.trkAtVrt, nVrt.chi2, + istate, false); + if(sc.isSuccess() && nVrt.chi2 - double InDetVKalVxInJetTool::improveVertexChi2( std::vector *wrkVrtSet, int V, std::vector & AllTrackList, - Trk::IVKalState& istate, - bool ifCovV0) + double InDetVKalVxInJetTool::improveVertexChi2(std::vector *wrkVrtSet, int V, std::vector & AllTrackList, + Trk::IVKalState& istate, + bool ifCovV0) const { + WrkVrt vrt = (*wrkVrtSet)[V]; + int NTrk = vrt.selTrk.size(); + if( NTrk<2 ) return 0.; - int NTrk=(*wrkVrtSet)[V].selTrk.size(); - if( NTrk<2 )return 0.; - double Prob=TMath::Prob( (*wrkVrtSet)[V].chi2, 2*NTrk-3); - // + double Prob=TMath::Prob(vrt.chi2, 2*NTrk-3); //----Start track removal iterations while(Prob<0.01){ - NTrk=(*wrkVrtSet)[V].selTrk.size(); - if(NTrk==2)return Prob; - int SelT=-1; double Chi2Max=0.; - for(int i=0; iChi2Max) { - Chi2Max=(*wrkVrtSet)[V].chi2PerTrk[i]; - SelT=i; + NTrk = vrt.selTrk.size(); + if(NTrk==2) return Prob; + + int SelT = -1; + double Chi2Max = 0.; + for(int i = 0; iChi2Max){ + Chi2Max = Chi2; + SelT = i; } } + if (SelT<0) return 0; - (*wrkVrtSet)[V].detachedTrack=(*wrkVrtSet)[V].selTrk[SelT]; - (*wrkVrtSet)[V].selTrk.erase( (*wrkVrtSet)[V].selTrk.begin() + SelT ); //remove track - StatusCode sc = refitVertex( wrkVrtSet, V, AllTrackList, istate, ifCovV0); - if(sc.isFailure())return 0.; - Prob=TMath::Prob( (*wrkVrtSet)[V].chi2, 2*(NTrk-1)-3); + vrt.detachedTrack=vrt.selTrk[SelT]; + vrt.selTrk.erase( vrt.selTrk.begin() + SelT ); //remove track + StatusCode sc = refitVertex(wrkVrtSet, V, AllTrackList, istate, ifCovV0); + if(sc.isFailure()) return 0.; + + Prob = TMath::Prob(vrt.chi2, 2*(NTrk-1)-3); } return Prob; } - - - template - StatusCode InDetVKalVxInJetTool::refitVertex( std::vector *wrkVrtSet, - int selectedVertex, - std::vector & selectedTracks, - Trk::IVKalState& istate, - bool ifCovV0) const + StatusCode InDetVKalVxInJetTool::refitVertex(std::vector *wrkVrtSet, + int selectedVertex, + std::vector & selectedTracks, + Trk::IVKalState& istate, + bool ifCovV0) const { - int i,j; - int nth = (*wrkVrtSet)[selectedVertex].selTrk.size(); - + WrkVrt vrt = (*wrkVrtSet)[selectedVertex]; + int nth = vrt.selTrk.size(); if(nth<2) return StatusCode::SUCCESS; - std::vector ListTracks(0); - for(i=0;isetApproximateVertex((*wrkVrtSet)[selectedVertex].vertex[0], - (*wrkVrtSet)[selectedVertex].vertex[1], - (*wrkVrtSet)[selectedVertex].vertex[2], - istate); - StatusCode SC=VKalVrtFitBase(ListTracks, - (*wrkVrtSet)[selectedVertex].vertex, - (*wrkVrtSet)[selectedVertex].vertexMom, - (*wrkVrtSet)[selectedVertex].vertexCharge, - (*wrkVrtSet)[selectedVertex].vertexCov, - (*wrkVrtSet)[selectedVertex].chi2PerTrk, - (*wrkVrtSet)[selectedVertex].trkAtVrt, - (*wrkVrtSet)[selectedVertex].chi2, - istate, ifCovV0); - if(SC.isSuccess())(*wrkVrtSet)[selectedVertex].Good = true; - if((*wrkVrtSet)[selectedVertex].chi2PerTrk.size()==2) - (*wrkVrtSet)[selectedVertex].chi2PerTrk[0]= - (*wrkVrtSet)[selectedVertex].chi2PerTrk[1]=(*wrkVrtSet)[selectedVertex].chi2/2.; - return SC; + double vProb = refitVertex(vrt, selectedTracks, istate, ifCovV0); + if(vProb<0) return StatusCode::FAILURE; + else return StatusCode::SUCCESS; } + template double InDetVKalVxInJetTool::refitVertex(WrkVrt &Vrt, std::vector & selectedTracks, Trk::IVKalState& istate, bool ifCovV0) const { - int i,j; - int nth = Vrt.selTrk.size(); - + int nth = Vrt.selTrk.size(); if(nth<2) return -1.; std::vector ListTracks(0); - for(i=0;isetApproximateVertex(Vrt.vertex[0],Vrt.vertex[1],Vrt.vertex[2],istate); - StatusCode SC=VKalVrtFitBase(ListTracks,Vrt.vertex,Vrt.vertexMom,Vrt.vertexCharge, - Vrt.vertexCov,Vrt.chi2PerTrk, Vrt.trkAtVrt,Vrt.chi2, - istate, ifCovV0); - if(SC.isSuccess())Vrt.Good = true; - else {Vrt.Good = false; return -1.;} - if(Vrt.chi2PerTrk.size()==2) Vrt.chi2PerTrk[0]=Vrt.chi2PerTrk[1]=Vrt.chi2/2.; - return TMath::Prob( Vrt.chi2, 2*nth-1); + for(int i = 0; i < nth; i++) Vrt.chi2PerTrk[i]=100000.+i; //VK safety + + m_fitSvc->setApproximateVertex(Vrt.vertex[0], Vrt.vertex[1], Vrt.vertex[2], istate); + StatusCode SC = VKalVrtFitBase(ListTracks, Vrt.vertex, Vrt.vertexMom, + Vrt.vertexCharge, Vrt.vertexCov, + Vrt.chi2PerTrk, Vrt.trkAtVrt, Vrt.chi2, + istate, ifCovV0); + if(SC.isSuccess()) Vrt.Good = true; + else{ + Vrt.Good = false; + return -1.; + } + + if(Vrt.chi2PerTrk.size()==2) Vrt.chi2PerTrk[0] = Vrt.chi2PerTrk[1] = Vrt.chi2/2.; + return TMath::Prob(Vrt.chi2, 2*nth-1); } - bool InDetVKalVxInJetTool::isPart( std::deque test, std::deque base) - + bool InDetVKalVxInJetTool::isPart(std::deque test, std::deque base) { - std::deque::iterator trk=test.begin(); - for(trk=test.begin(); trk!=test.end(); ++trk) + std::deque::iterator trk = test.begin(); + for(trk = test.begin(); trk!=test.end(); ++trk){ if(std::find(base.begin(), base.end(), (*trk)) == base.end()) return false; //element not found => test is not part of base + } return true; } - double InDetVKalVxInJetTool::jetProjDist( Amg::Vector3D & SecVrt,const xAOD::Vertex &primVrt,const TLorentzVector &jetDir) - + double InDetVKalVxInJetTool::jetProjDist(Amg::Vector3D & SecVrt,const xAOD::Vertex &primVrt,const TLorentzVector &jetDir) { - Amg::Vector3D vv=SecVrt-primVrt.position(); + Amg::Vector3D vv = SecVrt-primVrt.position(); return ( vv.x()*jetDir.X()+vv.y()*jetDir.Y()+vv.z()*jetDir.Z() )/ jetDir.P(); } diff --git a/LArCalorimeter/LArDigitization/python/LArDigitizationConfig.py b/LArCalorimeter/LArDigitization/python/LArDigitizationConfig.py index 369ee11c797df93a8ee2df97f54a5855ce234fe8..65cfda0c919b409fba3748b279c65eb4bf9ef2ea 100644 --- a/LArCalorimeter/LArDigitization/python/LArDigitizationConfig.py +++ b/LArCalorimeter/LArDigitization/python/LArDigitizationConfig.py @@ -88,7 +88,7 @@ def LArPileUpToolCfg(flags, name="LArPileUpTool", **kwargs): # No noise should be added during Data Overlay kwargs.setdefault("NoiseOnOff", not flags.Overlay.DataOverlay) kwargs.setdefault("NoiseOnOff", flags.Digitization.DoCaloNoise) # For other jobs go with the noise flag setting. - kwargs.setdefault("DoDigiTruthReconstruction", flags.Digitization.DoDigiTruth) + kwargs.setdefault("DoDigiTruthReconstruction", flags.Digitization.DoHardScatterTruth) kwargs.setdefault("RandomSeedOffset", flags.Digitization.RandomSeedOffset) if flags.Digitization.PileUp: intervals = [] @@ -187,7 +187,7 @@ def LArHitEMapToDigitAlgCfg(flags, name="LArHitEMapToDigitAlgCfg", **kwargs): kwargs.setdefault("NoiseOnOff", not flags.Overlay.DataOverlay) else : kwargs.setdefault("NoiseOnOff", flags.Digitization.DoCaloNoise) - kwargs.setdefault("DoDigiTruthReconstruction", flags.Digitization.DoDigiTruth) + kwargs.setdefault("DoDigiTruthReconstruction", flags.Digitization.DoHardScatterTruth) kwargs.setdefault("RandomSeedOffset", flags.Digitization.RandomSeedOffset) if (not flags.Digitization.HighGainFCal) and (not flags.Common.isOverlay): kwargs.setdefault("HighGainThreshFCAL", 0) @@ -221,7 +221,7 @@ def LArOutputCfg(flags): ItemList.append("LArDigitContainer#LArDigitContainer_MC_Thinned") if flags.Common.ProductionStep != ProductionStep.PileUpPresampling: ItemList.append("LArRawChannelContainer#LArRawChannels") - if flags.Digitization.TruthOutput: + if flags.Digitization.EnableTruth: ItemList.append("CaloCalibrationHitContainer#*") acc.merge(TruthDigitizationOutputCfg(flags)) acc.merge(OutputStreamCfg(flags, "RDO", ItemList)) diff --git a/MuonSpectrometer/MuonConfig/python/CSC_DigitizationConfig.py b/MuonSpectrometer/MuonConfig/python/CSC_DigitizationConfig.py index ed0161c6875420d1148fb2dab1a4bd154e76d945..7fba8188529f3d34f9fc65842e98bfc1c0a03260 100644 --- a/MuonSpectrometer/MuonConfig/python/CSC_DigitizationConfig.py +++ b/MuonSpectrometer/MuonConfig/python/CSC_DigitizationConfig.py @@ -94,7 +94,7 @@ def CSC_OutputCfg(flags): acc = ComponentAccumulator() if flags.Output.doWriteRDO: ItemList = ["CscRawDataContainer#*"] - if flags.Digitization.TruthOutput: + if flags.Digitization.EnableTruth: ItemList += ["CscSimDataCollection#*CSC_SDO"] acc.merge(TruthDigitizationOutputCfg(flags)) acc.merge(OutputStreamCfg(flags, "RDO", ItemList)) diff --git a/MuonSpectrometer/MuonConfig/python/CSC_OverlayConfig.py b/MuonSpectrometer/MuonConfig/python/CSC_OverlayConfig.py index 981a647e7171abb251ff2c395f3251bda01ea261..edaf056666b2c2a94f5cd4d6617524a668a0f0d3 100644 --- a/MuonSpectrometer/MuonConfig/python/CSC_OverlayConfig.py +++ b/MuonSpectrometer/MuonConfig/python/CSC_OverlayConfig.py @@ -110,6 +110,7 @@ def CSC_OverlayCfg(flags): # Add CSC overlay algorithm acc.merge(CSC_OverlayAlgCfg(flags)) # Add CSC truth overlay - acc.merge(CSC_TruthOverlayCfg(flags)) + if flags.Digitization.EnableTruth: + acc.merge(CSC_TruthOverlayCfg(flags)) return acc diff --git a/MuonSpectrometer/MuonConfig/python/MDT_DigitizationConfig.py b/MuonSpectrometer/MuonConfig/python/MDT_DigitizationConfig.py index 152a24c3428988787b0a090b324fb8491ed01813..f5012e001b8ba4cfc784f9a5d397645913e69db1 100644 --- a/MuonSpectrometer/MuonConfig/python/MDT_DigitizationConfig.py +++ b/MuonSpectrometer/MuonConfig/python/MDT_DigitizationConfig.py @@ -115,7 +115,7 @@ def MDT_OutputCfg(flags): acc = ComponentAccumulator() if flags.Output.doWriteRDO: ItemList = ["MdtCsmContainer#*"] - if flags.Digitization.TruthOutput: + if flags.Digitization.EnableTruth: ItemList += ["MuonSimDataCollection#*"] acc.merge(TruthDigitizationOutputCfg(flags)) acc.merge(OutputStreamCfg(flags, "RDO", ItemList)) diff --git a/MuonSpectrometer/MuonConfig/python/MDT_OverlayConfig.py b/MuonSpectrometer/MuonConfig/python/MDT_OverlayConfig.py index b5860f15eb711cfe0a85f82f784d57fed0d9a620..6a89f272c7afe3c8a513625c5edd6036eaa9d3e9 100644 --- a/MuonSpectrometer/MuonConfig/python/MDT_OverlayConfig.py +++ b/MuonSpectrometer/MuonConfig/python/MDT_OverlayConfig.py @@ -101,7 +101,8 @@ def MDT_OverlayCfg(flags): # Add MDT overlay algorithm acc.merge(MDT_OverlayAlgCfg(flags)) # Add MDT truth overlay - acc.merge(MDT_TruthOverlayCfg(flags)) + if flags.Digitization.EnableTruth: + acc.merge(MDT_TruthOverlayCfg(flags)) # Add MDT digit to RDO config from MuonConfig.MuonByteStreamCnvTestConfig import MdtDigitToMdtRDOCfg acc.merge(MdtDigitToMdtRDOCfg(flags)) diff --git a/MuonSpectrometer/MuonConfig/python/MM_DigitizationConfig.py b/MuonSpectrometer/MuonConfig/python/MM_DigitizationConfig.py index d9e715ddd48f3e20cf5b12511fbb0f95a68cc66f..e7da65495e6350c008688d65751e0e72f2b756d5 100644 --- a/MuonSpectrometer/MuonConfig/python/MM_DigitizationConfig.py +++ b/MuonSpectrometer/MuonConfig/python/MM_DigitizationConfig.py @@ -91,7 +91,7 @@ def MM_OutputCfg(flags): acc = ComponentAccumulator() if flags.Output.doWriteRDO: ItemList = ["Muon::MM_RawDataContainer#*"] - if flags.Digitization.TruthOutput: + if flags.Digitization.EnableTruth: ItemList += ["MuonSimDataCollection#*"] acc.merge(TruthDigitizationOutputCfg(flags)) acc.merge(OutputStreamCfg(flags, "RDO", ItemList)) diff --git a/MuonSpectrometer/MuonConfig/python/MM_OverlayConfig.py b/MuonSpectrometer/MuonConfig/python/MM_OverlayConfig.py index 5c6f082f90fc4afc5d83d5e7868354e92bc3dc5c..b6ef33f06ff39ea6b960afa67da9e0e0ec64bc40 100644 --- a/MuonSpectrometer/MuonConfig/python/MM_OverlayConfig.py +++ b/MuonSpectrometer/MuonConfig/python/MM_OverlayConfig.py @@ -101,7 +101,8 @@ def MM_OverlayCfg(flags): # Add MM overlay algorithm acc.merge(MM_OverlayAlgCfg(flags)) # Add MM truth overlay - acc.merge(MM_TruthOverlayCfg(flags)) + if flags.Digitization.EnableTruth: + acc.merge(MM_TruthOverlayCfg(flags)) # Add MM digit to RDO config from MuonConfig.MuonByteStreamCnvTestConfig import MM_DigitToRDOCfg acc.merge(MM_DigitToRDOCfg(flags)) diff --git a/MuonSpectrometer/MuonConfig/python/RPC_DigitizationConfig.py b/MuonSpectrometer/MuonConfig/python/RPC_DigitizationConfig.py index 07e2e888dc4d9982eb2232914b8317c077aafdff..00dd83d70a38b53437de220e9fec0881fc873320 100644 --- a/MuonSpectrometer/MuonConfig/python/RPC_DigitizationConfig.py +++ b/MuonSpectrometer/MuonConfig/python/RPC_DigitizationConfig.py @@ -120,7 +120,7 @@ def RPC_OutputCfg(flags): acc = ComponentAccumulator() if flags.Output.doWriteRDO: ItemList = ["RpcPadContainer#*"] - if flags.Digitization.TruthOutput: + if flags.Digitization.EnableTruth: ItemList += ["MuonSimDataCollection#*"] acc.merge(TruthDigitizationOutputCfg(flags)) acc.merge(OutputStreamCfg(flags, "RDO", ItemList)) diff --git a/MuonSpectrometer/MuonConfig/python/RPC_OverlayConfig.py b/MuonSpectrometer/MuonConfig/python/RPC_OverlayConfig.py index ccaf88d5ebdc2ae7f776003873cd4bf20d328491..844cff7a43b181229bc52082fe91d8040593b8ae 100644 --- a/MuonSpectrometer/MuonConfig/python/RPC_OverlayConfig.py +++ b/MuonSpectrometer/MuonConfig/python/RPC_OverlayConfig.py @@ -99,7 +99,8 @@ def RPC_OverlayCfg(flags): # Add RPC overlay algorithm acc.merge(RPC_OverlayAlgCfg(flags)) # Add RPC truth overlay - acc.merge(RPC_TruthOverlayCfg(flags)) + if flags.Digitization.EnableTruth: + acc.merge(RPC_TruthOverlayCfg(flags)) # Add RPC digit to RDO config from MuonConfig.MuonByteStreamCnvTestConfig import RpcDigitToRpcRDOCfg acc.merge(RpcDigitToRpcRDOCfg(flags)) diff --git a/MuonSpectrometer/MuonConfig/python/TGC_DigitizationConfig.py b/MuonSpectrometer/MuonConfig/python/TGC_DigitizationConfig.py index 390ed386ebd8264a5135ac602e06131a642be393..816f121e6b3df77d07336c8932f8ad0937f1c1f4 100644 --- a/MuonSpectrometer/MuonConfig/python/TGC_DigitizationConfig.py +++ b/MuonSpectrometer/MuonConfig/python/TGC_DigitizationConfig.py @@ -104,7 +104,7 @@ def TGC_OutputCfg(flags): acc = ComponentAccumulator() if flags.Output.doWriteRDO: ItemList = ["TgcRdoContainer#*"] - if flags.Digitization.TruthOutput: + if flags.Digitization.EnableTruth: ItemList += ["MuonSimDataCollection#*"] acc.merge(TruthDigitizationOutputCfg(flags)) acc.merge(OutputStreamCfg(flags, "RDO", ItemList)) diff --git a/MuonSpectrometer/MuonConfig/python/TGC_OverlayConfig.py b/MuonSpectrometer/MuonConfig/python/TGC_OverlayConfig.py index 1d95b0c8111770aaa3512e919fc96fe641966d6f..0ddd90c559df2806b8265516421a69efd370c3d7 100644 --- a/MuonSpectrometer/MuonConfig/python/TGC_OverlayConfig.py +++ b/MuonSpectrometer/MuonConfig/python/TGC_OverlayConfig.py @@ -99,7 +99,8 @@ def TGC_OverlayCfg(flags): # Add TGC overlay algorithm acc.merge(TGC_OverlayAlgCfg(flags)) # Add TGC truth overlay - acc.merge(TGC_TruthOverlayCfg(flags)) + if flags.Digitization.EnableTruth: + acc.merge(TGC_TruthOverlayCfg(flags)) # Add TGC digit to RDO config from MuonConfig.MuonByteStreamCnvTestConfig import TgcDigitToTgcRDOCfg acc.merge(TgcDigitToTgcRDOCfg(flags)) diff --git a/MuonSpectrometer/MuonConfig/python/sTGC_DigitizationConfig.py b/MuonSpectrometer/MuonConfig/python/sTGC_DigitizationConfig.py index 28f547e59550ff729ed0511dc031f5776d16a54b..a2e6911b7ffff0052208519e3128250b0918bfc4 100644 --- a/MuonSpectrometer/MuonConfig/python/sTGC_DigitizationConfig.py +++ b/MuonSpectrometer/MuonConfig/python/sTGC_DigitizationConfig.py @@ -94,7 +94,7 @@ def sTGC_OutputCfg(flags): acc = ComponentAccumulator() if flags.Output.doWriteRDO: ItemList = ["Muon::STGC_RawDataContainer#*"] - if flags.Digitization.TruthOutput: + if flags.Digitization.EnableTruth: ItemList += ["MuonSimDataCollection#*"] acc.merge(TruthDigitizationOutputCfg(flags)) acc.merge(OutputStreamCfg(flags, "RDO", ItemList)) diff --git a/MuonSpectrometer/MuonConfig/python/sTGC_OverlayConfig.py b/MuonSpectrometer/MuonConfig/python/sTGC_OverlayConfig.py index 86e6340229497bfb8ef8b7159037c38de5973275..43e3cb6210ab9ddb924cc0cd12b12dccf0d4bd1f 100644 --- a/MuonSpectrometer/MuonConfig/python/sTGC_OverlayConfig.py +++ b/MuonSpectrometer/MuonConfig/python/sTGC_OverlayConfig.py @@ -99,7 +99,8 @@ def sTGC_OverlayCfg(flags): # Add sTGC overlay algorithm acc.merge(sTGC_OverlayAlgCfg(flags)) # Add sTGC truth overlay - acc.merge(sTGC_TruthOverlayCfg(flags)) + if flags.Digitization.EnableTruth: + acc.merge(sTGC_TruthOverlayCfg(flags)) # Add sTGC digit to RDO config from MuonConfig.MuonByteStreamCnvTestConfig import STGC_DigitToRDOCfg acc.merge(STGC_DigitToRDOCfg(flags)) diff --git a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/CathodeBoardElement.h b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/CathodeBoardElement.h index 7c4acf8cb1eb99980e10f2fcfb77d1fd36ac3c71..cc9c04eb595df8967969f9ff70c2a2a7b2c7dfcd 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/CathodeBoardElement.h +++ b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/CathodeBoardElement.h @@ -31,12 +31,12 @@ namespace NswAsBuilt { * separately from second or any i-strip */ struct stgcStripPoint_t { - Amg::Vector3D pos; // a point along the strip - Amg::Vector3D pitch; // the pitch vector to add in order to get the other strips + Amg::Vector3D pos{Amg::Vector3D::Zero()}; // a point along the strip + Amg::Vector3D pitch{Amg::Vector3D::Zero()}; // the pitch vector to add in order to get the other strips }; struct stgcStripConfiguration_t { - int lastStripNumber; // the strip number of the last strip i.e the number of strips + int lastStripNumber{0}; // the strip number of the last strip i.e the number of strips stgcStripPoint_t fCenterPoint; // the center of the first strip stgcStripPoint_t fLeftPoint; // the left (X<0) point of the first strip stgcStripPoint_t fRightPoint; // the right(X>0) point of the first strip @@ -52,16 +52,16 @@ namespace NswAsBuilt { /** * Constructor */ - CathodeBoardElement(stgcStripConfiguration_t config, std::reference_wrapper element); + CathodeBoardElement(stgcStripConfiguration_t config, const Element& element); /** * The return type of the getStrip method: three points along the strip, * in quadruplet coordinate */ struct stgcStrip_t { - Amg::Vector3D center; - Amg::Vector3D left; - Amg::Vector3D right; + Amg::Vector3D center{Amg::Vector3D::Zero()}; + Amg::Vector3D left{Amg::Vector3D::Zero()}; + Amg::Vector3D right{Amg::Vector3D::Zero()}; }; /** @@ -79,7 +79,7 @@ namespace NswAsBuilt { private: stgcStripConfiguration_t m_config_stgc; - std::reference_wrapper m_element_stgc; // reference element of a PCB + const Element& m_element_stgc; // reference element of a PCB }; } diff --git a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/Element.h b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/Element.h index c77adef811a0ffb715c041fc282e14bd6ab1911d..2b3a8b4e63ed3df5d3d47bcf3e7989c635d2769e 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/Element.h +++ b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/Element.h @@ -84,7 +84,7 @@ namespace NswAsBuilt { /* Repeatedly call the transform method using all mothers up to frame. * Set frame to nullptr to loop on all mothers. */ - void transformToFrame(ParameterClass iclass, VectorSetRef local, Element* frame) const; + void transformToFrame(ParameterClass iclass, VectorSetRef local, const Element* frame) const; /* Cache the rigid component of the transform, for quicker access */ void cacheTransforms(); @@ -113,9 +113,9 @@ namespace NswAsBuilt { ParameterVector m_correctedPar; // The parameter vector for the CORRECTION class daughterVec_t m_daughters; // The list of daughter Elements - Element* m_mother = nullptr; // The mother Element + Element* m_mother{nullptr}; // The mother Element - std::string m_asapId; // Optional string identifier (imported from ASAP) + std::string m_asapId{""}; // Optional string identifier (imported from ASAP) }; } diff --git a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/ElementModel.h b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/ElementModel.h index 1043e87f72e29733aaeebde605502c5f91ef3680..9df144d523ba7d95d13d3235274e999728b8147a 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/ElementModel.h +++ b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/ElementModel.h @@ -35,24 +35,23 @@ namespace NswAsBuilt { using ipar_t = unsigned int; using VectorSet = Eigen::Matrix; using VectorSetRef = Eigen::Ref; - - virtual ~ElementModel() = default; + virtual ~ElementModel() = default; /* The ParameterVector: a wrapper around a std::vector containing * the actual model parameters. * In addition, this struct may save the cache-able rigid component of the * transformation represented by the parameter vector */ struct ParameterVector { - std::vector parameters; - Eigen::Affine3d transformCache; - bool transformCacheValid = false; + std::vector parameters{}; + Eigen::Affine3d transformCache{Eigen::Affine3d::Identity()}; + bool transformCacheValid{false}; // Contructed: provide the number of parameters ParameterVector(size_t npars) : parameters(npars, 0.0) {} // accessors - double operator[] (size_t ipar) const { return parameters[ipar]; } - double& operator[] (size_t ipar) { return parameters[ipar]; } + double operator[] (size_t ipar) const { return parameters.at(ipar); } + double& operator[] (size_t ipar) { return parameters.at(ipar); } }; /* The number of parameters used */ diff --git a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/ElementModelSTGC.h b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/ElementModelSTGC.h index ef075b9142c09b62f98edf749248adbd1d415c04..a1818bc142416bafbf6c793a198320be61397333 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/ElementModelSTGC.h +++ b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/ElementModelSTGC.h @@ -75,9 +75,9 @@ namespace NswAsBuilt { Amg::Vector3D stgcNonPar(double npar, Amg::Vector3D d0) const; // Properties and scales needed for the calculation - double m_lenX = 0.0; - double m_lenY = 0.0; - Amg::Vector3D m_defo0 = Amg::Vector3D::Zero(); + double m_lenX{0.}; + double m_lenY{0.}; + Amg::Vector3D m_defo0 {Amg::Vector3D::Zero()}; }; } diff --git a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/ElementModelScaleSag.h b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/ElementModelScaleSag.h index a032626899144668b258b9dea5391b46fbfb6702..1e1e3ac096032adea300fb101973c5e6b9154abf 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/ElementModelScaleSag.h +++ b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/ElementModelScaleSag.h @@ -91,9 +91,9 @@ namespace NswAsBuilt { Amg::Vector3D DPgY(double pgy, const Amg::Vector3D& d0) const; // Properties and scales needed for the calculation - double m_lenX = 0.0; - double m_lenY = 0.0; - Amg::Vector3D m_defo0 = Amg::Vector3D::Zero(); + double m_lenX {0.}; + double m_lenY {0.}; + Amg::Vector3D m_defo0 {Amg::Vector3D::Zero()}; }; } diff --git a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/PcbElement.h b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/PcbElement.h index 6f446489303f5a9734fa76c3bae6dadfe7b838cf..d2e95efffbafcbd93208e26ebe4c6b10e6182135 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/PcbElement.h +++ b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/PcbElement.h @@ -30,8 +30,8 @@ namespace NswAsBuilt { /* A reference point along a strip, and the pitchvector to be added to find the neighbouring strips */ struct stripPoint_t { - Amg::Vector3D pos{0,0,0}; // a point along the central strip - Amg::Vector3D pitchvector{0,0,0}; // the pitch vector to add to get the other strips + Amg::Vector3D pos{Amg::Vector3D::Zero()}; // a point along the central strip + Amg::Vector3D pitchvector{Amg::Vector3D::Zero()}; // the pitch vector to add to get the other strips }; /* The strip configuration: three reference points along the central strip of this PCB. */ @@ -43,13 +43,13 @@ namespace NswAsBuilt { }; /* Constructor */ - PcbElement(stripConfiguration_t config, std::reference_wrapper element); + PcbElement(stripConfiguration_t config, const Element& element); /* The return type of the getStrip method: three points along the strip, in quadruplet coordinate */ struct strip_t { - Amg::Vector3D center{0,0,0}; - Amg::Vector3D left{0,0,0}; - Amg::Vector3D right{0,0,0}; + Amg::Vector3D center{Amg::Vector3D::Zero()}; + Amg::Vector3D left{Amg::Vector3D::Zero()}; + Amg::Vector3D right{Amg::Vector3D::Zero()}; }; /* Returns three points (center, left, right) of a given strip, in quadruplet coordinates. */ @@ -60,7 +60,7 @@ namespace NswAsBuilt { private: stripConfiguration_t m_config; - std::reference_wrapper m_element; // reference element of a PCB + const Element& m_element; // reference element of a PCB }; } diff --git a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/StgcStripCalculator.h b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/StgcStripCalculator.h index b5423d8c8f852b82bb8a2f638abe172bcde9b3c4..604c335391ac2249a5e3f2aaa8410136f87e6330 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/StgcStripCalculator.h +++ b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/StgcStripCalculator.h @@ -35,7 +35,7 @@ namespace NswAsBuilt { /** * VALID: strip is found, INVALID: strip is not found */ - enum IsValid { + enum class IsValid { INVALID=0, VALID=1 }; @@ -45,10 +45,10 @@ namespace NswAsBuilt { * strip are provided, in the coordinate system of the quadruplet. */ struct stgcStrip_t { - IsValid isvalid; - Amg::Vector3D center; - Amg::Vector3D left; - Amg::Vector3D right; + IsValid isvalid{IsValid::INVALID}; + Amg::Vector3D center{Amg::Vector3D::Zero()}; + Amg::Vector3D left{Amg::Vector3D::Zero()}; + Amg::Vector3D right{Amg::Vector3D::Zero()}; }; /** @@ -65,8 +65,8 @@ namespace NswAsBuilt { * coordinate system of the quadruplet */ struct position_t { - IsValid isvalid; - Amg::Vector3D pos; + IsValid isvalid{IsValid::INVALID}; + Amg::Vector3D pos{Amg::Vector3D::Zero()}; }; /** diff --git a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/StripCalculator.h b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/StripCalculator.h index b4ea3a7d753608e195f44ffc26a30acd9aae0259..d2a03379723f8a9878550d1a4ffe6dabcc64c27a 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/StripCalculator.h +++ b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/StripCalculator.h @@ -32,7 +32,7 @@ namespace NswAsBuilt { using ParameterClass = Element::ParameterClass; /* VALID: strip is found, INVALID: strip is not found */ - enum IsValid { + enum class IsValid { INVALID=0, VALID=1 }; @@ -41,9 +41,9 @@ namespace NswAsBuilt { * strip are provided, in the coordinate system of the quadruplet.*/ struct strip_t { IsValid isvalid{IsValid::INVALID}; - Amg::Vector3D center{0,0,0}; - Amg::Vector3D left{0,0,0}; - Amg::Vector3D right{0,0,0}; + Amg::Vector3D center{Amg::Vector3D::Zero()}; + Amg::Vector3D left{Amg::Vector3D::Zero()}; + Amg::Vector3D right{Amg::Vector3D::Zero()}; }; /* Computes 3 reference points along a strip identified by strip_id, in @@ -57,7 +57,7 @@ namespace NswAsBuilt { * coordinate system of the quadruplet */ struct position_t { IsValid isvalid{IsValid::INVALID}; - Amg::Vector3D pos{0,0,0}; + Amg::Vector3D pos{Amg::Vector3D::Zero()}; }; /* Returns a the position of a point within a band of 1 pitch around the strip (sx in [-0.5,0.5]), diff --git a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/CathodeBoardElement.cxx b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/CathodeBoardElement.cxx index 7a8b474646a5d038f08cd440e7d48352e4ff912a..ef0a4729e4532be9d785a6bc80c3db9e77752299 100755 --- a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/CathodeBoardElement.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/CathodeBoardElement.cxx @@ -5,7 +5,7 @@ #include "MuonNSWAsBuilt/CathodeBoardElement.h" using namespace NswAsBuilt; -CathodeBoardElement::CathodeBoardElement(stgcStripConfiguration_t config, std::reference_wrapper element) +CathodeBoardElement::CathodeBoardElement(stgcStripConfiguration_t config, const Element& element) : m_config_stgc(config), m_element_stgc(element) { } @@ -14,7 +14,7 @@ CathodeBoardElement::CathodeBoardElement(stgcStripConfiguration_t config, std::r * separately from second or any i-strip */ CathodeBoardElement::stgcStrip_t CathodeBoardElement::getStgcStrip(ParameterClass iclass, int stripNumber) const { - Eigen::Matrix3d vectorset; + Eigen::Matrix3d vectorset{Eigen::Matrix3d::Identity()}; if (stripNumber == 1){ vectorset.col(0) = m_config_stgc.fCenterPoint.pos; vectorset.col(1) = m_config_stgc.fLeftPoint.pos; @@ -31,8 +31,7 @@ CathodeBoardElement::stgcStrip_t CathodeBoardElement::getStgcStrip(ParameterClas vectorset.col(2) = m_config_stgc.sRightPoint.pos + (stripNumber - 2) * m_config_stgc.sRightPoint.pitch; } - Element& element = m_element_stgc; - element.transformToFrame(iclass, vectorset, nullptr); + m_element_stgc.transformToFrame(iclass, vectorset, nullptr); stgcStrip_t ret; ret.center = vectorset.col(0); @@ -42,8 +41,7 @@ CathodeBoardElement::stgcStrip_t CathodeBoardElement::getStgcStrip(ParameterClas } Amg::Vector3D CathodeBoardElement::getPositionAlongStgcStrip(ParameterClass iclass, int stripNumber, double s) const { - Eigen::Matrix3d vectorset; - Amg::Vector3D center, left, right; + Amg::Vector3D center{Amg::Vector3D::Zero()}, left{Amg::Vector3D::Zero()}, right{Amg::Vector3D::Zero()}; if (stripNumber == 1){ center = m_config_stgc.fCenterPoint.pos; left = m_config_stgc.fLeftPoint.pos; @@ -70,8 +68,7 @@ Amg::Vector3D CathodeBoardElement::getPositionAlongStgcStrip(ParameterClass icla ret = (1.0-s)*center + s*right; } - Element& element = m_element_stgc; - element.transformToFrame(iclass, ret, nullptr); + m_element_stgc.transformToFrame(iclass, ret, nullptr); return ret; } diff --git a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/Element.cxx b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/Element.cxx index 27d786c7a0629709995cb86b9b23998e3e6b4622..9c7e08ba7d8efa68d3d7e163e710502932e96566 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/Element.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/Element.cxx @@ -37,7 +37,7 @@ void Element::transform(ParameterClass iclass, VectorSetRef local) const //=============================================================================== -void Element::transformToFrame(ParameterClass iclass, VectorSetRef local, Element* frame) const +void Element::transformToFrame(ParameterClass iclass, VectorSetRef local, const Element* frame) const { const Element* el = this; while ((el!=nullptr) && (el!=frame)) { @@ -103,8 +103,11 @@ void Element::addDaughter(std::unique_ptr daughter) void Element::traverseTree(std::function callback) { struct tree_t { - daughterVec_t::iterator it; - daughterVec_t::iterator end; + using iter = daughterVec_t::iterator; + tree_t(iter _it, iter _end): + it{_it},end{_end}{} + iter it; + iter end; }; std::list dtree; callback(*this); @@ -114,7 +117,7 @@ void Element::traverseTree(std::function callback) if (it != dtree.back().end) { Element& el = **it; callback(el); - dtree.push_back({el.m_daughters.begin(), el.m_daughters.end()}); + dtree.emplace_back(el.m_daughters.begin(), el.m_daughters.end()); ++it; } else { dtree.pop_back(); diff --git a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/ElementModelSTGC.cxx b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/ElementModelSTGC.cxx index 437dd7f38177bc812e997c8674ddf581af1473fa..233103c46b5ef021a57d9751b00a3980a99cfed1 100755 --- a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/ElementModelSTGC.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/ElementModelSTGC.cxx @@ -92,7 +92,8 @@ Amg::Vector3D ElementModelSTGC::stgcScale(double scl, Amg::Vector3D d0) const { Amg::Vector3D ElementModelSTGC::stgcNonPar(double npar, Amg::Vector3D d0) const { // Non-parallelism measured by CMM/Faro at construction sites double npar_eff = npar * d0[1]/(0.5*m_lenY); - double delta = npar_eff * d0[0]/1000.; + constexpr double DivBy1k = 1.e-3; + double delta = npar_eff * d0[0]*DivBy1k; return Amg::Vector3D(0., delta, 0.); } diff --git a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/ElementModelScaleSag.cxx b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/ElementModelScaleSag.cxx index 5be6fb0571110a29e28b02c399137eadd53703ae..6ac3fc1de97f80efe892fa9e22a193077245ca69 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/ElementModelScaleSag.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/ElementModelScaleSag.cxx @@ -6,7 +6,9 @@ #include using namespace NswAsBuilt; - +namespace { + constexpr double DivBy1k = 1.e-3; +} //=============================================================================== ElementModelScaleSag::ElementModelScaleSag(double lenX, double lenY, Amg::Vector3D defo0) : m_lenX(lenX), m_lenY(lenY), m_defo0(defo0) @@ -104,7 +106,7 @@ std::string ElementModelScaleSag::getParameterName(ipar_t ipar) const Amg::Vector3D ElementModelScaleSag::DEg( double egx, double egy, double egz, const Amg::Vector3D& d0) const { // Calculate thermal expansion - return d0.array() * Eigen::Array3d{egx*0.001, egy*0.001, egz*0.001}; + return d0.array() * Eigen::Array3d{egx*DivBy1k, egy*DivBy1k, egz*DivBy1k}; } @@ -158,7 +160,7 @@ Amg::Vector3D ElementModelScaleSag::DDSagY(double dsagy, const Amg::Vector3D& d0 Amg::Vector3D ElementModelScaleSag::DDegX(double degx, const Amg::Vector3D& d0) const { double egx_eff = degx * d0[1]/(0.5*m_lenY); - double delta = egx_eff * d0[0]/1000.; + double delta = egx_eff * d0[0]*DivBy1k; return Amg::Vector3D(delta, 0., 0.); } @@ -167,7 +169,7 @@ Amg::Vector3D ElementModelScaleSag::DDegX(double degx, const Amg::Vector3D& d0) Amg::Vector3D ElementModelScaleSag::DDegY(double degy, const Amg::Vector3D& d0) const { double egy_eff = degy * d0[0]/(0.5*m_lenX); - double delta = egy_eff * d0[1]/1000.; + double delta = egy_eff * d0[1]*DivBy1k; return Amg::Vector3D(0., delta, 0.); } @@ -240,7 +242,7 @@ void ElementModelScaleSag::applyDeformation2(const ParameterVector& parvec, Vect // EGX, EGY, EGZ: // d0.{x,y,z} * {egx, egy, egz} - local.array() += d0.array().colwise() * Eigen::Array3d{egx*0.001, egy*0.001, egz*0.001}; + local.array() += d0.array().colwise() * Eigen::Array3d{egx*DivBy1k, egy*DivBy1k, egz*DivBy1k}; // SAGX, SAGY: // p2.{y,x} * {sagx, sagy} @@ -252,7 +254,7 @@ void ElementModelScaleSag::applyDeformation2(const ParameterVector& parvec, Vect // DEGX, DEGY: // d0.{x,y} * {degx*r.y, degy*r.x} - local.topRows<2>().array() += (d0.topRows<2>().array() * r.topRows<2>().array().colwise().reverse()).colwise() * Eigen::Array2d{degx*0.001, degy*0.001}; + local.topRows<2>().array() += (d0.topRows<2>().array() * r.topRows<2>().array().colwise().reverse()).colwise() * Eigen::Array2d{degx*DivBy1k, degy*DivBy1k}; // PGX, PGY: // r.{y,x} * {pgx, pgy} diff --git a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/PcbElement.cxx b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/PcbElement.cxx index 164ef22a6db93fdffa4b230191280cb2ed1b17c9..10c57046a33a55edb1d08fb59e10bd4c28fe6076 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/PcbElement.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/PcbElement.cxx @@ -7,7 +7,7 @@ using namespace NswAsBuilt; //=============================================================================== -PcbElement::PcbElement(stripConfiguration_t config, std::reference_wrapper element) +PcbElement::PcbElement(stripConfiguration_t config, const Element& element) : m_config(config), m_element(element) { } @@ -21,8 +21,7 @@ PcbElement::strip_t PcbElement::getStrip(ParameterClass iclass, int stripNumber) vectorset.col(1) = m_config.leftPoint.pos + npitch * m_config.leftPoint.pitchvector; vectorset.col(2) = m_config.rightPoint.pos + npitch * m_config.rightPoint.pitchvector; - Element& element = m_element; - element.transformToFrame(iclass, vectorset, nullptr); + m_element.transformToFrame(iclass, vectorset, nullptr); strip_t ret; ret.center = vectorset.col(0); @@ -45,14 +44,13 @@ Amg::Vector3D PcbElement::getPositionAlongStrip(ParameterClass iclass, int strip // Get strip-local coordinate of point along strip // Note: left, center and right are exactly in line in local coordinates // (i.e. strip is not deformed in local coordinates) - Amg::Vector3D ret; + Amg::Vector3D ret{Amg::Vector3D::Zero()}; if (sx < 0.0) ret = (sx+1.0)*center - sx*left; else ret = (1.0-sx)*center + sx*right; - Element& element = m_element; - element.transformToFrame(iclass, ret, nullptr); + m_element.transformToFrame(iclass, ret, nullptr); return ret; } diff --git a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/StgcStripCalculator.cxx b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/StgcStripCalculator.cxx index 958382e90b2d4174b3b23efe8b23af55a26192f4..4c4c69361cc21509410310ab7d49cfb2d95d564b 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/StgcStripCalculator.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/StgcStripCalculator.cxx @@ -25,11 +25,11 @@ StgcStripCalculator::stgcStrip_t StgcStripCalculator::getStgcStrip(ParameterClas auto it = m_pcbMap.find(pcb_id); if (it == m_pcbMap.end()) { - return { INVALID, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0} }; + return {}; } auto strip = it->second.getStgcStrip(iclass, strip_id.istrip); - return { VALID, strip.center, strip.left, strip.right }; + return { IsValid::VALID, strip.center, strip.left, strip.right }; } StgcStripCalculator::position_t StgcStripCalculator::getPositionAlongStgcStrip(ParameterClass iclass, stripIdentifier_t strip_id, double s) const { int ipcb = 9; // since sTGC strip boards are identical @@ -37,10 +37,10 @@ StgcStripCalculator::position_t StgcStripCalculator::getPositionAlongStgcStrip(P auto it = m_pcbMap.find(pcb_id); if (it == m_pcbMap.end()) { - return { INVALID, {0.0,0.0,0.0} }; + return {}; } - return { VALID, it->second.getPositionAlongStgcStrip(iclass, strip_id.istrip, s) }; + return { IsValid::VALID, it->second.getPositionAlongStgcStrip(iclass, strip_id.istrip, s) }; } void StgcStripCalculator::parseJSON(std::string& in) { @@ -50,7 +50,7 @@ void StgcStripCalculator::parseJSON(std::string& in) { for (const json& jmodule : jroot.at("elementarray")) { parseRootElement(jmodule); } - } catch (std::exception& e) { + } catch (const std::exception& e) { throw std::runtime_error(e.what()); } } diff --git a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/StripCalculator.cxx b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/StripCalculator.cxx index 30cfbd6153295dbedcfa3076b7da07c632b8eec9..4dc8327aeb68e923b6b16f92a482d4c7c748a234 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/StripCalculator.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/src/StripCalculator.cxx @@ -30,11 +30,11 @@ StripCalculator::strip_t StripCalculator::getStrip(ParameterClass iclass, stripI auto it = m_pcbMap.find(pcb_id); if (it == m_pcbMap.end()) { - return { INVALID, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0} }; + return {}; } auto strip = it->second.getStrip(iclass, strip_id.istrip); - return { VALID, strip.center, strip.left, strip.right }; + return { IsValid::VALID, strip.center, strip.left, strip.right }; } @@ -48,10 +48,10 @@ StripCalculator::position_t StripCalculator::getPositionAlongStrip(ParameterClas auto it = m_pcbMap.find(pcb_id); if (it == m_pcbMap.end()) { - return { INVALID, {0.0,0.0,0.0} }; + return {}; } - return { VALID, it->second.getPositionAlongStrip(iclass, strip_id.istrip, sx, sy) }; + return { IsValid::VALID, it->second.getPositionAlongStrip(iclass, strip_id.istrip, sx, sy) }; } diff --git a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/DCMathSegmentMaker/src/MuonClusterSegmentFinderTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/DCMathSegmentMaker/src/MuonClusterSegmentFinderTool.cxx index aa4c369be6c8b5d3056460d2357aaa4acf136f66..73b44c08b8b71b14f65b73c1f4851edcfc59357d 100755 --- a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/DCMathSegmentMaker/src/MuonClusterSegmentFinderTool.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/DCMathSegmentMaker/src/MuonClusterSegmentFinderTool.cxx @@ -1029,7 +1029,8 @@ namespace Muon { //vector of 3D points of all phi obtained from the stereo-stereo combination std::vector phiStereo; - /// loop on the clusters and look for the stereo + /// loop on the clusters and look for the stereo + if (clusters.empty()) return phiStereo; for ( unsigned int iclu1 = 0; iclu1 < clusters.size()-1; ++iclu1 ) { Identifier id1 = clusters[iclu1]->identify(); if ( !m_idHelperSvc->isMM(id1) ) continue; diff --git a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_Run3_asymmetric_fullChain.sh b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_Run3_asymmetric_fullChain.sh index 94752b80e17439c28f4d6d1ef87a2a94645ae9da..379cdecec337410bd782b924c312624d24c89b8b 100755 --- a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_Run3_asymmetric_fullChain.sh +++ b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_Run3_asymmetric_fullChain.sh @@ -4,6 +4,7 @@ # # art-type: grid # art-include: master/Athena +# art-include: 22.0/Athena # art-athena-mt: 5 # art-output: OUT_HITS.root # art-output: NSWPRDValAlg.sim.ntuple.root diff --git a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_Run3_symmetric_fullChain.sh b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_Run3_symmetric_fullChain.sh index a8ec7bedda9cd96ab042ab184dbab4c143f444a5..b1085b9deb4f83aa8428bb7137da6df34fb965f4 100755 --- a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_Run3_symmetric_fullChain.sh +++ b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_Run3_symmetric_fullChain.sh @@ -4,6 +4,7 @@ # # art-type: grid # art-include: master/Athena +# art-include: 22.0/Athena # art-athena-mt: 5 # art-output: OUT_HITS.root # art-output: NSWPRDValAlg.sim.ntuple.root diff --git a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_Run4_muon_fullChain.sh b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_Run4_muon_fullChain.sh index fa328e65555591891cbbe6366b758c808fd96d85..f0decb09f9632b70a6163bf2732210e95f6882e8 100755 --- a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_Run4_muon_fullChain.sh +++ b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_Run4_muon_fullChain.sh @@ -4,6 +4,7 @@ # # art-type: grid # art-include: master/Athena +# art-include: 22.0/Athena # art-output: OUT_HITS.root # art-output: OUT_RDO.root # art-output: OUT_ESD.root diff --git a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_digi_phase2.sh b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_digi_phase2.sh index 52940107688dbbaf16ac0d4fa9182e60eef4ff8c..613f29b1d26b468624cfadbf7827c9b197c86a57 100755 --- a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_digi_phase2.sh +++ b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_digi_phase2.sh @@ -4,6 +4,7 @@ # # art-type: grid # art-include: master/Athena +# art-include: 22.0/Athena # art-include: 21.3/Athena # art-include: 21.9/Athena # art-output: log.HITtoRDO diff --git a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_muonrec_Run3_asymmetric.sh b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_muonrec_Run3_asymmetric.sh index 18e6b8a68e0c58b86cba85f34cbec6a8d93781ad..634490b17af63ecc4ccd6b65454b82429857cec3 100755 --- a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_muonrec_Run3_asymmetric.sh +++ b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_muonrec_Run3_asymmetric.sh @@ -4,6 +4,7 @@ # # art-type: grid # art-include: master/Athena +# art-include: 22.0/Athena # art-include: 21.3/Athena # art-include: 21.9/Athena # art-output: trkPerformance_MuonSpectrometerTracks.txt diff --git a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_muonrec_Run3_symmetric.sh b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_muonrec_Run3_symmetric.sh index 0a36238df20aaad29c32a08a4a879e36bd3f52e7..c77f183e34dfda52d361e2d8898a06fe5fb81014 100755 --- a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_muonrec_Run3_symmetric.sh +++ b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_muonrec_Run3_symmetric.sh @@ -4,6 +4,7 @@ # # art-type: grid # art-include: master/Athena +# art-include: 22.0/Athena # art-include: 21.3/Athena # art-include: 21.9/Athena # art-output: trkPerformance_MuonSpectrometerTracks.txt diff --git a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_muonrec_phase2.sh b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_muonrec_phase2.sh index 56e7d8f92019ee4f9d3b5b3b79fecbf712a9eb06..8b64506636a7342fae9ac07172d7ace4e984a17e 100755 --- a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_muonrec_phase2.sh +++ b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_muonrec_phase2.sh @@ -4,6 +4,7 @@ # # art-type: grid # art-include: master/Athena +# art-include: 22.0/Athena # art-include: 21.3/Athena # art-include: 21.9/Athena # art-output: trkPerformance_MuonSpectrometerTracks.txt @@ -50,4 +51,4 @@ then fi ##################################################################### -echo "art-result: $?" \ No newline at end of file +echo "art-result: $?" diff --git a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_muonrecrtt_cosmic.sh b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_muonrecrtt_cosmic.sh index f80d60ca92302d7431eb1cc06db02cdacc3af423..b863b4cd8f6da2568bb7ac7b51c9f47672fd56ce 100755 --- a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_muonrecrtt_cosmic.sh +++ b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_muonrecrtt_cosmic.sh @@ -4,6 +4,7 @@ # # art-type: grid # art-include: master/Athena +# art-include: 22.0/Athena # art-include: 21.0/Athena # art-input: user.zhidong.data17_cos.00342172.physics_CosmicMuons.merge.RAW_subset01 # art-input-nfiles: 1 diff --git a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q442_RAWtoESD_MT.sh b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q442_RAWtoESD_MT.sh index cdfcf3d64c9423005d95ea86f78e7b411d6abecc..8f45892dcc3998adebb2d0234cebd548fbe8603a 100755 --- a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q442_RAWtoESD_MT.sh +++ b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q442_RAWtoESD_MT.sh @@ -4,6 +4,7 @@ # # art-type: grid # art-include: master/Athena +# art-include: 22.0/Athena # art-athena-mt: 8 # art-output: OUT_ESD.root # art-output: OUT_ESD_1thread.root diff --git a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q443_RAWtoESD_MT.sh b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q443_RAWtoESD_MT.sh index f235270af016f63a2192f7624eed96bf29090aa8..0a88341f119aa3ed3ca2f0066906ccbb0ef531fb 100755 --- a/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q443_RAWtoESD_MT.sh +++ b/MuonSpectrometer/MuonValidation/MuonRecValidation/MuonRecRTT/test/test_q443_RAWtoESD_MT.sh @@ -4,6 +4,7 @@ # # art-type: grid # art-include: master/Athena +# art-include: 22.0/Athena # art-athena-mt: 8 # art-output: OUT_ESD.root # art-output: OUT_ESD_1thread.root diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/InDetVKalVxInJetToolConfig.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/InDetVKalVxInJetToolConfig.py deleted file mode 100644 index 18172a894ea93b3fbae8bced6c5ada31f9da3fb4..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/InDetVKalVxInJetToolConfig.py +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration - -from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator -from AthenaConfiguration.ComponentFactory import CompFactory -from AthenaConfiguration.Enums import LHCPeriod -from AtlasGeoModel.InDetGMJobProperties import InDetGeometryFlags as geoFlags -from InDetConfig.InDetEtaDependentCutsConfig import IDEtaDependentCuts_SV1_SvcCfg - - -def InDetVKalVxInJetToolCfg(ConfigFlags, name, MSV = False, useBTagFlagsDefaults = True, **options): - """Sets up a InDetVKalVxInJetTool tool and returns it. - - The following options have BTaggingFlags defaults: - - TrackSummaryTool default: None (not needed for b-tagging) - - input: name: The name of the tool (should be unique). - useBTagFlagsDefaults : Whether to use BTaggingFlags defaults for options that are not specified. - **options: Python dictionary with options for the tool. - output: The actual tool, which can then by added to ToolSvc via ToolSvc += output. Note however - that this tool also needs to be added to the main B-tagging tool.""" - acc = ComponentAccumulator() - if useBTagFlagsDefaults: - if MSV: - defaults = { - 'getNegativeTail' : False, - 'ExistIBL' : geoFlags.isIBL(), - 'ConeForTag' : 1.0, - 'MultiVertex' : True, - } - else: - defaults = { - 'ExistIBL' : geoFlags.isIBL(), - } - if 'Flip' in name: - defaults['getNegativeTag'] = True - - for option in defaults: - options.setdefault(option, defaults[option]) - - if ConfigFlags.GeoModel.Run >= LHCPeriod.Run4: - acc.merge(IDEtaDependentCuts_SV1_SvcCfg(ConfigFlags, name="IDEtaDepCutsSvc_" + name)) - options.setdefault("InDetEtaDependentCutsSvc", acc.getService("IDEtaDepCutsSvc_" + name)) - options.setdefault("useVertexCleaningPix", False) # Would use hardcoded InDet Pixel geometry - options.setdefault("useITkMaterialRejection", True) - - options['name'] = name - acc.setPrivateTools(CompFactory.InDet.InDetVKalVxInJetTool(**options)) - - return acc diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetSecVtxFindingAlgConfig.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetSecVtxFindingAlgConfig.py index bfdc71f785cddd9c0b06d9bd02192e3d23c79ab9..7ad6adf26f5d00a6cdbf2b694c0e7098c806c281 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetSecVtxFindingAlgConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/JetSecVtxFindingAlgConfig.py @@ -1,9 +1,9 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory from BTagging.InDetImprovedJetFitterVxFinderConfig import InDetImprovedJetFitterVxFinderCfg -from BTagging.InDetVKalVxInJetToolConfig import InDetVKalVxInJetToolCfg +from InDetConfig.InDetVKalVxInJetToolConfig import InDetVKalVxInJetToolCfg, MSV_InDetVKalVxInJetToolCfg def JetSecVtxFindingAlgCfg(ConfigFlags, BTagVxSecVertexInfoName, SVAlgName, JetCollection, PrimaryVertexCollectionName="", SVFinder="", TracksToTag="", **options): @@ -26,7 +26,7 @@ def JetSecVtxFindingAlgCfg(ConfigFlags, BTagVxSecVertexInfoName, SVAlgName, JetC elif SVFinder == 'SV1Flip': secVtxFinder = acc.popToolsAndMerge(InDetVKalVxInJetToolCfg(ConfigFlags, "IDVKalVxInJetFlip")) elif SVFinder == 'MSV': - secVtxFinder = acc.popToolsAndMerge(InDetVKalVxInJetToolCfg(ConfigFlags, "IDVKalMultiVxInJet", MSV = True)) + secVtxFinder = acc.popToolsAndMerge(MSV_InDetVKalVxInJetToolCfg(ConfigFlags, "IDVKalMultiVxInJet")) else: return acc diff --git a/Simulation/Digitization/python/DigitizationConfigFlags.py b/Simulation/Digitization/python/DigitizationConfigFlags.py index 6487b31ca5df30ce03519e5379318a6dc94ede6a..e8b5b1918e559dbbe5329ac7307692d26b5dce56 100644 --- a/Simulation/Digitization/python/DigitizationConfigFlags.py +++ b/Simulation/Digitization/python/DigitizationConfigFlags.py @@ -47,8 +47,8 @@ def createDigitizationCfgFlags(): flags.addFlag("Digitization.DoXingByXingPileUp", False) # Run Calorimeter noise simulation flags.addFlag("Digitization.DoCaloNoise", True) - # Compute and store DigiTruth information - flags.addFlag("Digitization.DoDigiTruth", False) + # Compute and store hard scatter truth information + flags.addFlag("Digitization.DoHardScatterTruth", False) # Use high-gain Forward Calorimeters flags.addFlag("Digitization.HighGainFCal", False) # Use high-gain ElectroMagnetic EndCap Inner Wheel @@ -58,8 +58,8 @@ def createDigitizationCfgFlags(): lambda prevFlags: GetFileMD(prevFlags.Input.Files).get("pileUp", "False") != "False") # Temporary TGC flag flags.addFlag("Digitization.UseUpdatedTGCConditions", False) - # Write out truth information? - flags.addFlag("Digitization.TruthOutput", False) + # Write out truth information + flags.addFlag("Digitization.EnableTruth", True) # Write out calorimeter digits flags.addFlag("Digitization.AddCaloDigi", False) # Write out thinned calorimeter digits diff --git a/Simulation/Digitization/python/DigitizationFlagsHelpers.py b/Simulation/Digitization/python/DigitizationFlagsHelpers.py index 7332d6ef84e12062ca2add41e1896cb3190a8fb4..f7b7329ac6443d39c63e660f187d0bec73cfbee3 100644 --- a/Simulation/Digitization/python/DigitizationFlagsHelpers.py +++ b/Simulation/Digitization/python/DigitizationFlagsHelpers.py @@ -15,8 +15,6 @@ def setupDigitizationLegacyDetectorFlags(detectors): # Other subdetectors if not detectors or 'BCM' in detectors or 'ID' in detectors: DetFlags.BCM_setOn() - if not detectors or 'DBM' in detectors or 'ID' in detectors: - DetFlags.DBM_setOn() if not detectors or 'Pixel' in detectors or 'ID' in detectors: DetFlags.pixel_setOn() if not detectors or 'SCT' in detectors or 'ID' in detectors: diff --git a/Simulation/Digitization/python/DigitizationSteering.py b/Simulation/Digitization/python/DigitizationSteering.py index dff673458c174dc3955c23805e9636c530103853..001ac70e4588d880484e7076296feaf379fb00bf 100644 --- a/Simulation/Digitization/python/DigitizationSteering.py +++ b/Simulation/Digitization/python/DigitizationSteering.py @@ -89,7 +89,6 @@ def DigitizationMainContentCfg(flags): acc.merge(NoPileUpMuWriterCfg(flags)) # Signal-only truth information - # TODO: is another flag needed for this? if flags.Digitization.PileUp: from MCTruthSimAlgs.MCTruthSimAlgsConfig import ( SignalOnlyMcEventCollCfg, @@ -99,17 +98,18 @@ def DigitizationMainContentCfg(flags): MergeMuonEntryLayerCfg, MergeCalibHitsCfg, ) - if flags.Common.ProductionStep!=ProductionStep.FastChain: + if flags.Common.ProductionStep is not ProductionStep.FastChain: acc.merge(SignalOnlyMcEventCollCfg(flags)) - puCollections = pileupInputCollections(flags.Digitization.PU.LowPtMinBiasInputCols) - if "AntiKt4TruthJets" in puCollections: - acc.merge(MergeAntiKt4TruthJetsCfg(flags)) - if "AntiKt6TruthJets" in puCollections: - acc.merge(MergeAntiKt6TruthJetsCfg(flags)) - if "TruthPileupParticles" in puCollections: - acc.merge(MergeTruthParticlesCfg(flags)) - acc.merge(MergeMuonEntryLayerCfg(flags)) - acc.merge(MergeCalibHitsCfg(flags)) + if flags.Digitization.EnableTruth: + puCollections = pileupInputCollections(flags.Digitization.PU.LowPtMinBiasInputCols) + if "AntiKt4TruthJets" in puCollections: + acc.merge(MergeAntiKt4TruthJetsCfg(flags)) + if "AntiKt6TruthJets" in puCollections: + acc.merge(MergeAntiKt6TruthJetsCfg(flags)) + if "TruthPileupParticles" in puCollections: + acc.merge(MergeTruthParticlesCfg(flags)) + acc.merge(MergeMuonEntryLayerCfg(flags)) + acc.merge(MergeCalibHitsCfg(flags)) from Digitization.TruthDigitizationOutputConfig import TruthDigitizationOutputCfg acc.merge(TruthDigitizationOutputCfg(flags)) @@ -182,7 +182,9 @@ def DigitizationMainContentCfg(flags): acc.merge(PerfMonMTSvcCfg(flags)) # Timing - acc.merge(MergeRecoTimingObjCfg(flags)) + # TODO: do we even care about this anymore? + if flags.Digitization.EnableTruth: + acc.merge(MergeRecoTimingObjCfg(flags)) return acc diff --git a/Simulation/Digitization/test/DigitizationConfig_test.py b/Simulation/Digitization/test/DigitizationConfig_test.py index 7ed6b80ce5451051ad334d522bcb8c63fcb0c293..0285c34d78b1621a07ab5a606fa018be087fa078 100755 --- a/Simulation/Digitization/test/DigitizationConfig_test.py +++ b/Simulation/Digitization/test/DigitizationConfig_test.py @@ -22,9 +22,6 @@ ConfigFlags.Concurrency.NumThreads = 1 ConfigFlags.Concurrency.NumConcurrentEvents=1 ConfigFlags.Beam.NumberOfCollisions = 0. -# TODO: temporary -ConfigFlags.Digitization.TruthOutput = True - ConfigFlags.lock() # Construct our accumulator to run diff --git a/Simulation/Digitization/test/DigitizationPUConfig_test.py b/Simulation/Digitization/test/DigitizationPUConfig_test.py index 1943192d76b78ab2aebefdbeac6ea5342f7e0f5c..1240f699142c93359dc8aa4a2c83930c7ee8f370 100755 --- a/Simulation/Digitization/test/DigitizationPUConfig_test.py +++ b/Simulation/Digitization/test/DigitizationPUConfig_test.py @@ -38,7 +38,7 @@ ConfigFlags.Tile.BestPhaseFromCOOL = False ConfigFlags.Tile.correctTime = False ConfigFlags.Digitization.PileUp = True -ConfigFlags.Digitization.DoDigiTruth = False +ConfigFlags.Digitization.DoHardScatterTruth = False ConfigFlags.Digitization.RandomSeedOffset = 170 ConfigFlags.Digitization.DigiSteeringConf = 'StandardSignalOnlyTruthPileUpToolsAlg' @@ -50,9 +50,6 @@ ConfigFlags.Digitization.PU.NumberOfCavern = 0.0 ConfigFlags.Digitization.PU.NumberOfHighPtMinBias = 0.2099789464 ConfigFlags.Digitization.PU.NumberOfLowPtMinBias = 80.290021063135 -# TODO: temporary -ConfigFlags.Digitization.TruthOutput = True - cols = generateBackgroundInputCollections(ConfigFlags, defaultTestFiles.HITS_RUN2_MINBIAS_HIGH, ConfigFlags.Digitization.PU.NumberOfHighPtMinBias, True) ConfigFlags.Digitization.PU.HighPtMinBiasInputCols = cols diff --git a/Simulation/G4Atlas/G4AtlasApps/python/G4Atlas_Metadata.py b/Simulation/G4Atlas/G4AtlasApps/python/G4Atlas_Metadata.py index 017d3fdf90ebcefbc999bcbd72de5db4bd18bac9..6d1bc1e3ad77d2c0339b64c96d51ef3510106a02 100644 --- a/Simulation/G4Atlas/G4AtlasApps/python/G4Atlas_Metadata.py +++ b/Simulation/G4Atlas/G4AtlasApps/python/G4Atlas_Metadata.py @@ -150,7 +150,7 @@ def fillAtlasMetadata(dbFiller): ## Simulated detector flags: add each enabled detector to the simulatedDetectors list from AthenaCommon.DetFlags import DetFlags simDets = [] - for det in ['pixel','SCT','TRT','BCM','DBM','Lucid','FwdRegion','ZDC','ALFA','AFP','LAr','HGTD','Tile','MDT','CSC','TGC','RPC','MM','sTGC','Truth']: + for det in ['pixel','SCT','TRT','BCM','Lucid','FwdRegion','ZDC','ALFA','AFP','LAr','HGTD','Tile','MDT','CSC','TGC','RPC','MM','sTGC','Truth']: attrname = det+"_on" checkfn = getattr(DetFlags.geometry, attrname, None) if checkfn is None: diff --git a/Simulation/G4Atlas/G4AtlasApps/python/SimAtlasKernel.py b/Simulation/G4Atlas/G4AtlasApps/python/SimAtlasKernel.py index 99de1fc7c167e837df99646d635c2822769add8f..5be164f3b2b330c5561066909adfb13e9928ddbc 100644 --- a/Simulation/G4Atlas/G4AtlasApps/python/SimAtlasKernel.py +++ b/Simulation/G4Atlas/G4AtlasApps/python/SimAtlasKernel.py @@ -43,9 +43,6 @@ class AtlasSimSkeleton(SimSkeleton): AtlasG4Eng.G4Eng.log.verbose('AtlasSimSkeleton._do_jobproperties :: starting') - ## Tidy up DBM DetFlags: temporary measure - DetFlags.DBM_setOff() - from AtlasGeoModel.MuonGMJobProperties import MuonGeometryFlags if not MuonGeometryFlags.hasCSC(): DetFlags.CSC_setOff() if not MuonGeometryFlags.hasSTGC(): DetFlags.sTGC_setOff() diff --git a/Simulation/G4Atlas/G4AtlasApps/share/G4Atlas.flat.configuration.py b/Simulation/G4Atlas/G4AtlasApps/share/G4Atlas.flat.configuration.py index b7d16b2881fb39206a60a70efbfe83c0bf1f53b8..e9e514a1dec60b838cff93bdd06afcc0bf3577dc 100644 --- a/Simulation/G4Atlas/G4AtlasApps/share/G4Atlas.flat.configuration.py +++ b/Simulation/G4Atlas/G4AtlasApps/share/G4Atlas.flat.configuration.py @@ -24,8 +24,6 @@ else: globalflags.DetDescrVersion = simFlags.SimLayout.get_Value() from AthenaCommon.DetFlags import DetFlags -## Tidy up DBM DetFlags: temporary measure -DetFlags.DBM_setOff() from AtlasGeoModel.MuonGMJobProperties import MuonGeometryFlags if not MuonGeometryFlags.hasSTGC(): DetFlags.sTGC_setOff() diff --git a/Simulation/G4Atlas/G4AtlasTools/python/G4AtlasToolsConfigLegacy.py b/Simulation/G4Atlas/G4AtlasTools/python/G4AtlasToolsConfigLegacy.py index 4d912fb00ce0c349576ab5502166099c7ff07ac3..e2762656a771c0d65f3ab6a5433d98fdd088108f 100644 --- a/Simulation/G4Atlas/G4AtlasTools/python/G4AtlasToolsConfigLegacy.py +++ b/Simulation/G4Atlas/G4AtlasTools/python/G4AtlasToolsConfigLegacy.py @@ -84,7 +84,7 @@ def generateCaloCellContainerSensitiveDetectorList(): def generateInDetSensitiveDetectorList(): SensitiveDetectorList=[] from AthenaCommon.DetFlags import DetFlags - #if isRUN2 and DetFlags.simulation.DBM_on(): + # DBM is disabled # SensitiveDetectorList += [ 'DBMSensorSD' ] if DetFlags.simulate.pixel_on(): if DetFlags.simulate.BCM_on(): diff --git a/Simulation/G4Atlas/G4AtlasTools/test/G4GeometryToolConfig_Simtest.py b/Simulation/G4Atlas/G4AtlasTools/test/G4GeometryToolConfig_Simtest.py index 8cb07c29fb22799aac5273463d99e321cf508de3..dea734cb5a5d2c4e906bb44643991ca476cd8161 100755 --- a/Simulation/G4Atlas/G4AtlasTools/test/G4GeometryToolConfig_Simtest.py +++ b/Simulation/G4Atlas/G4AtlasTools/test/G4GeometryToolConfig_Simtest.py @@ -22,9 +22,9 @@ if __name__ == '__main__': ConfigFlags.Input.Files = defaultTestFiles.EVNT if ConfigFlags.Common.Project is Project.AthSimulation: - detectors =['Bpipe', 'BCM', 'DBM', 'Pixel', 'SCT', 'TRT', 'LAr', 'Tile', 'CSC', 'MDT', 'RPC', 'TGC'] # FwdRegion geometry not currently included in AthSimulation + detectors =['Bpipe', 'BCM', 'Pixel', 'SCT', 'TRT', 'LAr', 'Tile', 'CSC', 'MDT', 'RPC', 'TGC'] # FwdRegion geometry not currently included in AthSimulation else: - detectors =['Bpipe', 'BCM', 'DBM', 'Pixel', 'SCT', 'TRT', 'LAr', 'Tile', 'CSC', 'MDT', 'RPC', 'TGC', 'FwdRegion'] + detectors =['Bpipe', 'BCM', 'Pixel', 'SCT', 'TRT', 'LAr', 'Tile', 'CSC', 'MDT', 'RPC', 'TGC', 'FwdRegion'] # Setup detector flags from AthenaConfiguration.DetectorConfigFlags import setupDetectorsFromList diff --git a/Simulation/G4Atlas/G4AtlasTools/test/G4GeometryToolConfig_test.py b/Simulation/G4Atlas/G4AtlasTools/test/G4GeometryToolConfig_test.py index 2463d9c6753164fbe2ad906948da7a3b62a3b385..3d7c082391f0987dc4c31ce9af8c3e742b8ae528 100755 --- a/Simulation/G4Atlas/G4AtlasTools/test/G4GeometryToolConfig_test.py +++ b/Simulation/G4Atlas/G4AtlasTools/test/G4GeometryToolConfig_test.py @@ -22,9 +22,9 @@ if __name__ == '__main__': ConfigFlags.Input.Files = defaultTestFiles.EVNT if ConfigFlags.Common.Project is Project.AthSimulation: - detectors =['Bpipe', 'BCM', 'DBM', 'Pixel', 'SCT', 'TRT', 'LAr', 'Tile', 'CSC', 'MDT', 'RPC', 'TGC'] # Forward Detector geometry not currently included in AthSimulation + detectors = ['Bpipe', 'BCM', 'Pixel', 'SCT', 'TRT', 'LAr', 'Tile', 'CSC', 'MDT', 'RPC', 'TGC'] # Forward Detector geometry not currently included in AthSimulation else: - detectors =['Bpipe', 'BCM', 'DBM', 'Pixel', 'SCT', 'TRT', 'LAr', 'Tile', 'CSC', 'MDT', 'RPC', 'TGC', 'FwdRegion', 'Lucid', 'ZDC', 'ALFA', 'AFP'] + detectors = ['Bpipe', 'BCM', 'Pixel', 'SCT', 'TRT', 'LAr', 'Tile', 'CSC', 'MDT', 'RPC', 'TGC', 'FwdRegion', 'Lucid', 'ZDC', 'ALFA', 'AFP'] # Setup detector flags from AthenaConfiguration.DetectorConfigFlags import setupDetectorsFromList diff --git a/Simulation/ISF/ISF_Config/python/FlagSetters.py b/Simulation/ISF/ISF_Config/python/FlagSetters.py index 6691320c885bc3f00a9a952fe5061f9bedf500be..5f15fe722abad683f2071d5ddd9f3d98d89c8e7f 100644 --- a/Simulation/ISF/ISF_Config/python/FlagSetters.py +++ b/Simulation/ISF/ISF_Config/python/FlagSetters.py @@ -14,7 +14,6 @@ def configureFlagsBase(): DetFlags.Truth_setOn() # FIXME redundant? DetFlags.LVL1_setOff() # LVL1 is not part of G4 sim DetFlags.Forward_setOff() # Forward dets are off by default - DetFlags.geometry.DBM_setOff() ## Configure tasks DetFlags.digitize.all_setOff() diff --git a/Simulation/ISF/ISF_Config/test/ISF_MainConfig_Test.py b/Simulation/ISF/ISF_Config/test/ISF_MainConfig_Test.py index d9222012ba8a09dbbe102369ec5e5a330f6ea3e3..faf0cccd961d1d996a62a91c504f4c46abaac09e 100644 --- a/Simulation/ISF/ISF_Config/test/ISF_MainConfig_Test.py +++ b/Simulation/ISF/ISF_Config/test/ISF_MainConfig_Test.py @@ -51,7 +51,7 @@ if __name__ == '__main__': ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-14" ConfigFlags.GeoModel.Align.Dynamic = False - detectors =['Bpipe', 'BCM', 'DBM', 'Pixel', 'SCT', 'TRT', 'LAr', 'Tile', 'CSC', 'MDT', 'RPC', 'TGC', 'FwdRegion'] + detectors = ['Bpipe', 'BCM', 'Pixel', 'SCT', 'TRT', 'LAr', 'Tile', 'CSC', 'MDT', 'RPC', 'TGC', 'FwdRegion'] # Setup detector flags from AthenaConfiguration.DetectorConfigFlags import setupDetectorsFromList setupDetectorsFromList(ConfigFlags, detectors, toggle_geometry=True) diff --git a/Simulation/ISF/ISF_Core/ISF_Services/test/ISF_ServicesConfig_test.py b/Simulation/ISF/ISF_Core/ISF_Services/test/ISF_ServicesConfig_test.py index b94432d1b1dd81d0fdfe9104744f5269174a6e84..5170239e47207fba50105ce16e416fc2ccf1ca3b 100755 --- a/Simulation/ISF/ISF_Core/ISF_Services/test/ISF_ServicesConfig_test.py +++ b/Simulation/ISF/ISF_Core/ISF_Services/test/ISF_ServicesConfig_test.py @@ -21,7 +21,7 @@ if __name__ == '__main__': ConfigFlags.Sim.WorldRRange = 15000 ConfigFlags.Sim.WorldZRange = 27000 #change defaults? - detectors =['Bpipe', 'BCM', 'DBM', 'Pixel', 'SCT', 'TRT', 'LAr', 'Tile', 'CSC', 'MDT', 'RPC', 'TGC'] + detectors = ['Bpipe', 'BCM', 'Pixel', 'SCT', 'TRT', 'LAr', 'Tile', 'CSC', 'MDT', 'RPC', 'TGC'] # Setup detector flags from AthenaConfiguration.DetectorConfigFlags import setupDetectorsFromList setupDetectorsFromList(ConfigFlags, detectors, toggle_geometry=True) diff --git a/Simulation/ISF/ISF_Example/python/ISF_Metadata.py b/Simulation/ISF/ISF_Example/python/ISF_Metadata.py index 4da7074a545d1537e23420d881e8c586aa784ee5..fb0f4e89649c27d0c3a32af753ffd2986a4b4e1c 100644 --- a/Simulation/ISF/ISF_Example/python/ISF_Metadata.py +++ b/Simulation/ISF/ISF_Example/python/ISF_Metadata.py @@ -154,7 +154,7 @@ def fillAtlasMetadata(dbFiller): ## Simulated detector flags: add each enabled detector to the simulatedDetectors list from AthenaCommon.DetFlags import DetFlags simDets = [] - for det in ['pixel','SCT','TRT','BCM','DBM','Lucid','FwdRegion','ZDC','ALFA','AFP','LAr','HGTD','Tile','MDT','CSC','TGC','RPC','MM','sTGC','Truth']: + for det in ['pixel','SCT','TRT','BCM','Lucid','FwdRegion','ZDC','ALFA','AFP','LAr','HGTD','Tile','MDT','CSC','TGC','RPC','MM','sTGC','Truth']: attrname = det+"_on" checkfn = getattr(DetFlags.geometry, attrname, None) if checkfn is None: diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpersLegacy.py b/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpersLegacy.py index 83e36f1a17b82de5db36ef7318219dd9af7b6a16..8d16211f8ac5e77be2f49bf26c1a4493b9afed62 100644 --- a/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpersLegacy.py +++ b/Simulation/Overlay/OverlayConfiguration/python/OverlayHelpersLegacy.py @@ -20,8 +20,6 @@ def setupOverlayLegacyDetectorFlags(detectors): # Other subdetectors if not detectors or 'BCM' in detectors or 'ID' in detectors: DetFlags.BCM_setOn() - if not detectors or 'DBM' in detectors or 'ID' in detectors: - DetFlags.DBM_setOn() if not detectors or 'Pixel' in detectors or 'ID' in detectors: DetFlags.pixel_setOn() if not detectors or 'SCT' in detectors or 'ID' in detectors: diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlaySkeleton.py b/Simulation/Overlay/OverlayConfiguration/python/OverlaySkeleton.py index 9c1d9828d85bb90cda3a2dbde4cd026345a07a43..d4258af9222d561f899f77e8440f922a34febae1 100644 --- a/Simulation/Overlay/OverlayConfiguration/python/OverlaySkeleton.py +++ b/Simulation/Overlay/OverlayConfiguration/python/OverlaySkeleton.py @@ -15,7 +15,7 @@ def defaultOverlayFlags(configFlags): configFlags.GeoModel.Align.Dynamic = False configFlags.Digitization.DoCaloNoise = False configFlags.Digitization.DoInnerDetectorNoise = False - configFlags.Digitization.DoDigiTruth = False + configFlags.Digitization.DoHardScatterTruth = False configFlags.LAr.OFCShapeFolder = "4samples1phase" configFlags.LAr.ROD.DoOFCPileupOptimization = True configFlags.LAr.ROD.nSamples = 4 diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlaySteering.py b/Simulation/Overlay/OverlayConfiguration/python/OverlaySteering.py index 555370e1e6e1f36b50ffa4bae622cb2c35707a8b..dd41cf5d2fb273230618d7a8c86c6b55f1c304e5 100644 --- a/Simulation/Overlay/OverlayConfiguration/python/OverlaySteering.py +++ b/Simulation/Overlay/OverlayConfiguration/python/OverlaySteering.py @@ -60,11 +60,12 @@ def OverlayMainContentCfg(configFlags): # Add truth overlay (needed downstream) if not configFlags.Overlay.FastChain: acc.merge(CopyMcEventCollectionCfg(configFlags)) - acc.merge(CopyJetTruthInfoCfg(configFlags)) - acc.merge(CopyPileupParticleTruthInfoCfg(configFlags)) - acc.merge(CopyTimingsCfg(configFlags)) - acc.merge(CopyCaloCalibrationHitContainersCfg(configFlags)) - acc.merge(CopyTrackRecordCollectionsCfg(configFlags)) + if configFlags.Digitization.EnableTruth: + acc.merge(CopyJetTruthInfoCfg(configFlags)) + acc.merge(CopyPileupParticleTruthInfoCfg(configFlags)) + acc.merge(CopyTimingsCfg(configFlags)) + acc.merge(CopyCaloCalibrationHitContainersCfg(configFlags)) + acc.merge(CopyTrackRecordCollectionsCfg(configFlags)) # Beam spot reweighting if configFlags.Digitization.InputBeamSigmaZ > 0: @@ -130,7 +131,7 @@ def OverlayMainContentCfg(configFlags): from PerfMonComps.PerfMonCompsConfig import PerfMonMTSvcCfg acc.merge(PerfMonMTSvcCfg(configFlags)) - #track overlay + # Track overlay if configFlags.Overlay.doTrackOverlay: #need this to ensure that the ElementLinks to the PRDs are handled correctly (since the name is hardcoded in the converters) from TrkEventCnvTools.TrkEventCnvToolsConfigCA import TrkEventCnvSuperToolCfg diff --git a/Simulation/Overlay/OverlayConfiguration/python/OverlayTestHelpers.py b/Simulation/Overlay/OverlayConfiguration/python/OverlayTestHelpers.py index 45527134e7090534d9e6c002cbae43e5b4cf1e81..b617e593f4d9f3bd740d8f0a3489c7753e314eae 100644 --- a/Simulation/Overlay/OverlayConfiguration/python/OverlayTestHelpers.py +++ b/Simulation/Overlay/OverlayConfiguration/python/OverlayTestHelpers.py @@ -45,7 +45,7 @@ def defaultTestFlags(configFlags, args): configFlags.GeoModel.Align.Dynamic = False configFlags.Digitization.DoCaloNoise = False configFlags.Digitization.DoInnerDetectorNoise = False - configFlags.Digitization.DoDigiTruth = False + configFlags.Digitization.DoHardScatterTruth = False configFlags.LAr.OFCShapeFolder = "4samples1phase" configFlags.LAr.ROD.DoOFCPileupOptimization = True configFlags.LAr.ROD.nSamples = 4 diff --git a/Simulation/SimuJobTransforms/python/HITtoRDO_Skeleton.py b/Simulation/SimuJobTransforms/python/HITtoRDO_Skeleton.py index 04fa5635004dbaa712d705fdd498d89c5502da02..c61ccd0a40055edc05d2a7515ab0d7f7c8a0aafd 100644 --- a/Simulation/SimuJobTransforms/python/HITtoRDO_Skeleton.py +++ b/Simulation/SimuJobTransforms/python/HITtoRDO_Skeleton.py @@ -53,7 +53,6 @@ def fromRunArgs(runArgs): log.info('Running with pile-up: %s', ConfigFlags.Digitization.PileUp) # Setup detector flags - ConfigFlags.Digitization.TruthOutput = True # TODO: temporary if detectors: from AthenaConfiguration.DetectorConfigFlags import setupDetectorsFromList setupDetectorsFromList(ConfigFlags, detectors) diff --git a/TileCalorimeter/TileSimAlgs/python/TileDigitizationConfig.py b/TileCalorimeter/TileSimAlgs/python/TileDigitizationConfig.py index 93e900134893ff709b0df8c517b610535a30a82a..b5099a5413070bd19b999ebe7628cb7ddc6b29f7 100644 --- a/TileCalorimeter/TileSimAlgs/python/TileDigitizationConfig.py +++ b/TileCalorimeter/TileSimAlgs/python/TileDigitizationConfig.py @@ -53,7 +53,7 @@ def TileDigitizationCfg(flags): from TileRecUtils.TileRawChannelMakerConfig import TileRawChannelMakerCfg acc.merge( TileRawChannelMakerCfg(flags) ) - if flags.Digitization.DoDigiTruth: + if flags.Digitization.DoHardScatterTruth: if flags.Output.doWriteRDO: from TileRecUtils.TileRawChannelMakerConfig import TileRawChannelMakerDigiHSTruthOutputCfg acc.merge( TileRawChannelMakerDigiHSTruthOutputCfg(flags, streamName = 'RDO') ) diff --git a/TileCalorimeter/TileSimAlgs/python/TileDigitsMakerConfig.py b/TileCalorimeter/TileSimAlgs/python/TileDigitsMakerConfig.py index 935d15aa574a519cdfe16eae44e334644a980546..3825b8fcc9eb605b842a95cae0965ee8d13111bb 100644 --- a/TileCalorimeter/TileSimAlgs/python/TileDigitsMakerConfig.py +++ b/TileCalorimeter/TileSimAlgs/python/TileDigitsMakerConfig.py @@ -97,7 +97,7 @@ def TileDigitsMakerCfg(flags, **kwargs): kwargs.setdefault('TileDigitsContainer', 'TileDigitsCnt') - kwargs.setdefault('DoHSTruthReconstruction', flags.Digitization.DoDigiTruth) + kwargs.setdefault('DoHSTruthReconstruction', flags.Digitization.DoHardScatterTruth) if kwargs['DoHSTruthReconstruction']: kwargs.setdefault('TileHitContainer_DigiHSTruth', 'TileHitCnt_DigiHSTruth') kwargs.setdefault('TileDigitsContainer_DigiHSTruth', 'TileDigitsCnt_DigiHSTruth') @@ -149,7 +149,7 @@ def TileDigitsMakerOutputCfg(flags, **kwargs): outputItemList = ['TileDigitsContainer#' + tileDigitsContainer] if flags.Output.doWriteRDO: - if flags.Digitization.TruthOutput: + if flags.Digitization.EnableTruth: outputItemList += ["CaloCalibrationHitContainer#*"] from Digitization.TruthDigitizationOutputConfig import TruthDigitizationOutputCfg acc.merge(TruthDigitizationOutputCfg(flags)) diff --git a/TileCalorimeter/TileSimAlgs/python/TileHitToTTL1Config.py b/TileCalorimeter/TileSimAlgs/python/TileHitToTTL1Config.py index 21dbc2cea381e30743b8bab0ce45783facd226dc..4d420079608c6dce3e7abafde1ab325cabc83a3a 100644 --- a/TileCalorimeter/TileSimAlgs/python/TileHitToTTL1Config.py +++ b/TileCalorimeter/TileSimAlgs/python/TileHitToTTL1Config.py @@ -103,7 +103,7 @@ def TileTTL1OutputCfg(flags, TileHitToTTL1): acc = ComponentAccumulator() if flags.Output.doWriteRDO: - if flags.Digitization.TruthOutput: + if flags.Digitization.EnableTruth: outputItemList += ["CaloCalibrationHitContainer#*"] from Digitization.TruthDigitizationOutputConfig import TruthDigitizationOutputCfg acc.merge(TruthDigitizationOutputCfg(flags)) diff --git a/TileCalorimeter/TileSimAlgs/python/TileHitVecToCntConfig.py b/TileCalorimeter/TileSimAlgs/python/TileHitVecToCntConfig.py index 9adeb058769759c2bcd411964fdf66819fc7d001..9ca25183f79dc8cb9fc0e2cfde5d8aac2d17e07c 100644 --- a/TileCalorimeter/TileSimAlgs/python/TileHitVecToCntConfig.py +++ b/TileCalorimeter/TileSimAlgs/python/TileHitVecToCntConfig.py @@ -65,7 +65,7 @@ def TileHitVecToCntToolCfg(flags, **kwargs): from SGComps.SGInputLoaderConfig import SGInputLoaderCfg acc.merge(SGInputLoaderCfg(flags, [f'TileHitVector#{vec}' for vec in kwargs['TileHitVectors']])) - kwargs.setdefault('DoHSTruthReconstruction', flags.Digitization.DoDigiTruth) + kwargs.setdefault('DoHSTruthReconstruction', flags.Digitization.DoHardScatterTruth) if kwargs['DoHSTruthReconstruction']: kwargs.setdefault('TileHitContainer_DigiHSTruth', 'TileHitCnt_DigiHSTruth') else: diff --git a/Tools/FullChainTransforms/python/FastChain_Skeleton.py b/Tools/FullChainTransforms/python/FastChain_Skeleton.py index 75a8b1e81db6ba825c5820a94fb081c26fbd6c5e..950f56f1721fbaa0bcf61bc0dd4951ce60698cee 100644 --- a/Tools/FullChainTransforms/python/FastChain_Skeleton.py +++ b/Tools/FullChainTransforms/python/FastChain_Skeleton.py @@ -77,9 +77,8 @@ def fromRunArgs(runArgs): # Setup common digitization flags from Digitization.DigitizationConfigFlags import setupDigitizationFlags setupDigitizationFlags(runArgs, ConfigFlags) - ConfigFlags.Digitization.TruthOutput = True + log.info('Running with pile-up: %s', ConfigFlags.Digitization.PileUp) - # ConfigFlags.dump() # Pre-include processPreInclude(runArgs, ConfigFlags) diff --git a/Tools/FullChainTransforms/share/FastChainSkeleton.EVGENtoRDO.py b/Tools/FullChainTransforms/share/FastChainSkeleton.EVGENtoRDO.py index 2385f6356d55e4a284aaa879ab82a769ee8b4679..3e775400f9dca4c8728b898a5b8c8a2d8185ce24 100644 --- a/Tools/FullChainTransforms/share/FastChainSkeleton.EVGENtoRDO.py +++ b/Tools/FullChainTransforms/share/FastChainSkeleton.EVGENtoRDO.py @@ -289,9 +289,6 @@ checkHGTDOff = getattr(DetFlags, 'HGTD_setOff', None) if checkHGTDOff is not None: checkHGTDOff() #Default for now - ## Tidy up DBM DetFlags: temporary measure -DetFlags.DBM_setOff() - # turn off DetFlags for muon detectors which are not part of the layout if not MuonGeometryFlags.hasCSC(): DetFlags.CSC_setOff() if not MuonGeometryFlags.hasSTGC(): DetFlags.sTGC_setOff() diff --git a/Tools/PROCTools/data/q449_AOD_content.ref b/Tools/PROCTools/data/q449_AOD_content.ref index a48f4e875cac719778af16b2e06903a4e9635cbf..4f9edea94ff4e4d084b537c320ed2fc6af526a84 100644 --- a/Tools/PROCTools/data/q449_AOD_content.ref +++ b/Tools/PROCTools/data/q449_AOD_content.ref @@ -77,8 +77,58 @@ CombinedMuonTrackParticlesAuxDyn.trackLink CombinedMuonTrackParticlesAuxDyn.trackParameterCovarianceMatrices CombinedMuonsLRTTrackParticles CombinedMuonsLRTTrackParticlesAux. +CombinedMuonsLRTTrackParticlesAuxDyn.TRTdEdx +CombinedMuonsLRTTrackParticlesAuxDyn.TRTdEdxUsedHits +CombinedMuonsLRTTrackParticlesAuxDyn.alignEffectChId +CombinedMuonsLRTTrackParticlesAuxDyn.alignEffectDeltaAngle +CombinedMuonsLRTTrackParticlesAuxDyn.alignEffectDeltaTrans +CombinedMuonsLRTTrackParticlesAuxDyn.alignEffectSigmaDeltaAngle +CombinedMuonsLRTTrackParticlesAuxDyn.alignEffectSigmaDeltaTrans +CombinedMuonsLRTTrackParticlesAuxDyn.deltaphi_0 +CombinedMuonsLRTTrackParticlesAuxDyn.deltaphi_1 +CombinedMuonsLRTTrackParticlesAuxDyn.deltatheta_0 +CombinedMuonsLRTTrackParticlesAuxDyn.deltatheta_1 +CombinedMuonsLRTTrackParticlesAuxDyn.eProbabilityNN +CombinedMuonsLRTTrackParticlesAuxDyn.parameterPX +CombinedMuonsLRTTrackParticlesAuxDyn.parameterPY +CombinedMuonsLRTTrackParticlesAuxDyn.parameterPZ +CombinedMuonsLRTTrackParticlesAuxDyn.parameterPosition +CombinedMuonsLRTTrackParticlesAuxDyn.parameterX +CombinedMuonsLRTTrackParticlesAuxDyn.parameterY +CombinedMuonsLRTTrackParticlesAuxDyn.parameterZ +CombinedMuonsLRTTrackParticlesAuxDyn.sigmadeltaphi_0 +CombinedMuonsLRTTrackParticlesAuxDyn.sigmadeltaphi_1 +CombinedMuonsLRTTrackParticlesAuxDyn.sigmadeltatheta_0 +CombinedMuonsLRTTrackParticlesAuxDyn.sigmadeltatheta_1 +CombinedMuonsLRTTrackParticlesAuxDyn.trackLink +CombinedMuonsLRTTrackParticlesAuxDyn.trackParameterCovarianceMatrices CombinedStauTrackParticles CombinedStauTrackParticlesAux. +CombinedStauTrackParticlesAuxDyn.TRTdEdx +CombinedStauTrackParticlesAuxDyn.TRTdEdxUsedHits +CombinedStauTrackParticlesAuxDyn.alignEffectChId +CombinedStauTrackParticlesAuxDyn.alignEffectDeltaAngle +CombinedStauTrackParticlesAuxDyn.alignEffectDeltaTrans +CombinedStauTrackParticlesAuxDyn.alignEffectSigmaDeltaAngle +CombinedStauTrackParticlesAuxDyn.alignEffectSigmaDeltaTrans +CombinedStauTrackParticlesAuxDyn.deltaphi_0 +CombinedStauTrackParticlesAuxDyn.deltaphi_1 +CombinedStauTrackParticlesAuxDyn.deltatheta_0 +CombinedStauTrackParticlesAuxDyn.deltatheta_1 +CombinedStauTrackParticlesAuxDyn.eProbabilityNN +CombinedStauTrackParticlesAuxDyn.parameterPX +CombinedStauTrackParticlesAuxDyn.parameterPY +CombinedStauTrackParticlesAuxDyn.parameterPZ +CombinedStauTrackParticlesAuxDyn.parameterPosition +CombinedStauTrackParticlesAuxDyn.parameterX +CombinedStauTrackParticlesAuxDyn.parameterY +CombinedStauTrackParticlesAuxDyn.parameterZ +CombinedStauTrackParticlesAuxDyn.sigmadeltaphi_0 +CombinedStauTrackParticlesAuxDyn.sigmadeltaphi_1 +CombinedStauTrackParticlesAuxDyn.sigmadeltatheta_0 +CombinedStauTrackParticlesAuxDyn.sigmadeltatheta_1 +CombinedStauTrackParticlesAuxDyn.trackLink +CombinedStauTrackParticlesAuxDyn.trackParameterCovarianceMatrices ConditionsRun DataHeader DataHeaderForm @@ -86,6 +136,18 @@ DiTauJets DiTauJetsAux. EMEO_CombinedMuonTrackParticles EMEO_CombinedMuonTrackParticlesAux. +EMEO_CombinedMuonTrackParticlesAuxDyn.TRTdEdx +EMEO_CombinedMuonTrackParticlesAuxDyn.TRTdEdxUsedHits +EMEO_CombinedMuonTrackParticlesAuxDyn.eProbabilityNN +EMEO_CombinedMuonTrackParticlesAuxDyn.parameterPX +EMEO_CombinedMuonTrackParticlesAuxDyn.parameterPY +EMEO_CombinedMuonTrackParticlesAuxDyn.parameterPZ +EMEO_CombinedMuonTrackParticlesAuxDyn.parameterPosition +EMEO_CombinedMuonTrackParticlesAuxDyn.parameterX +EMEO_CombinedMuonTrackParticlesAuxDyn.parameterY +EMEO_CombinedMuonTrackParticlesAuxDyn.parameterZ +EMEO_CombinedMuonTrackParticlesAuxDyn.trackLink +EMEO_CombinedMuonTrackParticlesAuxDyn.trackParameterCovarianceMatrices EMEO_ExtrapolatedMuonTrackParticles EMEO_ExtrapolatedMuonTrackParticlesAux. EMEO_ExtrapolatedMuonTrackParticlesAuxDyn.TRTdEdx @@ -102,6 +164,18 @@ EMEO_ExtrapolatedMuonTrackParticlesAuxDyn.trackLink EMEO_ExtrapolatedMuonTrackParticlesAuxDyn.trackParameterCovarianceMatrices EMEO_MSOnlyExtrapolatedMuonTrackParticles EMEO_MSOnlyExtrapolatedMuonTrackParticlesAux. +EMEO_MSOnlyExtrapolatedMuonTrackParticlesAuxDyn.TRTdEdx +EMEO_MSOnlyExtrapolatedMuonTrackParticlesAuxDyn.TRTdEdxUsedHits +EMEO_MSOnlyExtrapolatedMuonTrackParticlesAuxDyn.eProbabilityNN +EMEO_MSOnlyExtrapolatedMuonTrackParticlesAuxDyn.parameterPX +EMEO_MSOnlyExtrapolatedMuonTrackParticlesAuxDyn.parameterPY +EMEO_MSOnlyExtrapolatedMuonTrackParticlesAuxDyn.parameterPZ +EMEO_MSOnlyExtrapolatedMuonTrackParticlesAuxDyn.parameterPosition +EMEO_MSOnlyExtrapolatedMuonTrackParticlesAuxDyn.parameterX +EMEO_MSOnlyExtrapolatedMuonTrackParticlesAuxDyn.parameterY +EMEO_MSOnlyExtrapolatedMuonTrackParticlesAuxDyn.parameterZ +EMEO_MSOnlyExtrapolatedMuonTrackParticlesAuxDyn.trackLink +EMEO_MSOnlyExtrapolatedMuonTrackParticlesAuxDyn.trackParameterCovarianceMatrices EMEO_MuonSpectrometerTrackParticles EMEO_MuonSpectrometerTrackParticlesAux. EMEO_MuonSpectrometerTrackParticlesAuxDyn.TRTdEdx @@ -225,6 +299,31 @@ EventTimeNanoSec EventWeight ExtraPolatedMuonsLRTTrackParticles ExtraPolatedMuonsLRTTrackParticlesAux. +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.TRTdEdx +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.TRTdEdxUsedHits +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.alignEffectChId +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.alignEffectDeltaAngle +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.alignEffectDeltaTrans +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.alignEffectSigmaDeltaAngle +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.alignEffectSigmaDeltaTrans +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.deltaphi_0 +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.deltaphi_1 +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.deltatheta_0 +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.deltatheta_1 +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.eProbabilityNN +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.parameterPX +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.parameterPY +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.parameterPZ +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.parameterPosition +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.parameterX +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.parameterY +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.parameterZ +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.sigmadeltaphi_0 +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.sigmadeltaphi_1 +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.sigmadeltatheta_0 +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.sigmadeltatheta_1 +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.trackLink +ExtraPolatedMuonsLRTTrackParticlesAuxDyn.trackParameterCovarianceMatrices ExtrapolatedMuonTrackParticles ExtrapolatedMuonTrackParticlesAux. ExtrapolatedMuonTrackParticlesAuxDyn.TRTdEdx @@ -263,9 +362,61 @@ FileMetaDataAuxDyn.geometryVersion FileMetaDataAuxDyn.mcProcID ForwardElectronClusters ForwardElectronClustersAux. +ForwardElectronClustersAuxDyn.AVG_LAR_Q +ForwardElectronClustersAuxDyn.AVG_TILE_Q +ForwardElectronClustersAuxDyn.BADLARQ_FRAC +ForwardElectronClustersAuxDyn.BAD_CELLS_CORR_E +ForwardElectronClustersAuxDyn.BadChannelList +ForwardElectronClustersAuxDyn.CELL_SIGNIFICANCE +ForwardElectronClustersAuxDyn.CELL_SIG_SAMPLING +ForwardElectronClustersAuxDyn.CENTER_LAMBDA +ForwardElectronClustersAuxDyn.CENTER_MAG +ForwardElectronClustersAuxDyn.CENTER_X +ForwardElectronClustersAuxDyn.CENTER_Y +ForwardElectronClustersAuxDyn.CENTER_Z +ForwardElectronClustersAuxDyn.CellLink +ForwardElectronClustersAuxDyn.DELTA_ALPHA +ForwardElectronClustersAuxDyn.DELTA_PHI +ForwardElectronClustersAuxDyn.DELTA_THETA +ForwardElectronClustersAuxDyn.DM_WEIGHT +ForwardElectronClustersAuxDyn.EM_PROBABILITY +ForwardElectronClustersAuxDyn.ENG_BAD_CELLS +ForwardElectronClustersAuxDyn.ENG_BAD_HV_CELLS +ForwardElectronClustersAuxDyn.ENG_FRAC_CORE +ForwardElectronClustersAuxDyn.ENG_FRAC_EM +ForwardElectronClustersAuxDyn.ENG_FRAC_MAX +ForwardElectronClustersAuxDyn.ENG_POS +ForwardElectronClustersAuxDyn.FIRST_ENG_DENS +ForwardElectronClustersAuxDyn.FIRST_ETA +ForwardElectronClustersAuxDyn.FIRST_PHI +ForwardElectronClustersAuxDyn.HAD_WEIGHT +ForwardElectronClustersAuxDyn.ISOLATION +ForwardElectronClustersAuxDyn.LATERAL +ForwardElectronClustersAuxDyn.LONGITUDINAL +ForwardElectronClustersAuxDyn.MASS +ForwardElectronClustersAuxDyn.NCELL_SAMPLING +ForwardElectronClustersAuxDyn.N_BAD_CELLS +ForwardElectronClustersAuxDyn.N_BAD_CELLS_CORR +ForwardElectronClustersAuxDyn.N_BAD_HV_CELLS +ForwardElectronClustersAuxDyn.OOC_WEIGHT +ForwardElectronClustersAuxDyn.PTD +ForwardElectronClustersAuxDyn.SECOND_ENG_DENS +ForwardElectronClustersAuxDyn.SECOND_LAMBDA +ForwardElectronClustersAuxDyn.SECOND_R +ForwardElectronClustersAuxDyn.SECOND_TIME +ForwardElectronClustersAuxDyn.SIGNIFICANCE +ForwardElectronClustersAuxDyn.constituentClusterLinks +ForwardElectronClustersAuxDyn.emax_sampl +ForwardElectronClustersAuxDyn.eta_sampl +ForwardElectronClustersAuxDyn.etamax_sampl +ForwardElectronClustersAuxDyn.phi_sampl +ForwardElectronClustersAuxDyn.phimax_sampl ForwardElectronClusters_links ForwardElectrons ForwardElectronsAux. +ForwardElectronsAuxDyn.Loose +ForwardElectronsAuxDyn.Medium +ForwardElectronsAuxDyn.Tight GSFConversionVertices GSFConversionVerticesAux. GSFConversionVerticesAuxDyn.DR1R2 @@ -323,8 +474,46 @@ HLT_AFPVertexContainer HLT_AFPVertexContainerAux. HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftf HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAux. +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.ActiveArea +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.ActiveArea4vec_eta +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.ActiveArea4vec_m +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.ActiveArea4vec_phi +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.ActiveArea4vec_pt +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.AlgorithmType +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.DetectorEta +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.DetectorPhi +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.GhostTrack_ftf +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.InputType +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.JVFCorr +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.JetConstitScaleMomentum_eta +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.JetConstitScaleMomentum_m +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.JetConstitScaleMomentum_phi +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.JetConstitScaleMomentum_pt +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.Jvt +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.JvtRpt +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.NumTrkPt1000 +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.NumTrkPt500 +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.SizeParameter +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.SumPtChargedPFOPt500 +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.SumPtTrkPt1000 +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.SumPtTrkPt500 +HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftfAuxDyn.TrackWidthPt1000 HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftf HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAux. +HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAuxDyn.AlgorithmType +HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAuxDyn.DetectorEta +HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAuxDyn.DetectorPhi +HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAuxDyn.GhostTrack_ftf +HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAuxDyn.InputType +HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAuxDyn.JetConstitScaleMomentum_eta +HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAuxDyn.JetConstitScaleMomentum_m +HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAuxDyn.JetConstitScaleMomentum_phi +HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAuxDyn.JetConstitScaleMomentum_pt +HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAuxDyn.JetEtaJESScaleMomentum_eta +HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAuxDyn.JetEtaJESScaleMomentum_m +HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAuxDyn.JetEtaJESScaleMomentum_phi +HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAuxDyn.JetEtaJESScaleMomentum_pt +HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAuxDyn.SizeParameter HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_nojcalib_ftf HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_nojcalib_ftfAux. HLT_AntiKt10EMPFlowJets_nojcalib_ftf @@ -333,58 +522,407 @@ HLT_AntiKt10EMPFlowSoftDropBeta100Zcut10Jets_nojcalib_ftf HLT_AntiKt10EMPFlowSoftDropBeta100Zcut10Jets_nojcalib_ftfAux. HLT_AntiKt10EMTopoJets_nojcalib HLT_AntiKt10EMTopoJets_nojcalibAux. +HLT_AntiKt10EMTopoJets_nojcalibAuxDyn.ActiveArea +HLT_AntiKt10EMTopoJets_nojcalibAuxDyn.ActiveArea4vec_eta +HLT_AntiKt10EMTopoJets_nojcalibAuxDyn.ActiveArea4vec_m +HLT_AntiKt10EMTopoJets_nojcalibAuxDyn.ActiveArea4vec_phi +HLT_AntiKt10EMTopoJets_nojcalibAuxDyn.ActiveArea4vec_pt +HLT_AntiKt10EMTopoJets_nojcalibAuxDyn.AlgorithmType +HLT_AntiKt10EMTopoJets_nojcalibAuxDyn.DetectorEta +HLT_AntiKt10EMTopoJets_nojcalibAuxDyn.DetectorPhi +HLT_AntiKt10EMTopoJets_nojcalibAuxDyn.InputType +HLT_AntiKt10EMTopoJets_nojcalibAuxDyn.JetConstitScaleMomentum_eta +HLT_AntiKt10EMTopoJets_nojcalibAuxDyn.JetConstitScaleMomentum_m +HLT_AntiKt10EMTopoJets_nojcalibAuxDyn.JetConstitScaleMomentum_phi +HLT_AntiKt10EMTopoJets_nojcalibAuxDyn.JetConstitScaleMomentum_pt +HLT_AntiKt10EMTopoJets_nojcalibAuxDyn.SizeParameter HLT_AntiKt10EMTopoRCJets_subjesIS HLT_AntiKt10EMTopoRCJets_subjesISAux. +HLT_AntiKt10EMTopoRCJets_subjesISAuxDyn.ActiveArea +HLT_AntiKt10EMTopoRCJets_subjesISAuxDyn.ActiveArea4vec_eta +HLT_AntiKt10EMTopoRCJets_subjesISAuxDyn.ActiveArea4vec_m +HLT_AntiKt10EMTopoRCJets_subjesISAuxDyn.ActiveArea4vec_phi +HLT_AntiKt10EMTopoRCJets_subjesISAuxDyn.ActiveArea4vec_pt +HLT_AntiKt10EMTopoRCJets_subjesISAuxDyn.AlgorithmType +HLT_AntiKt10EMTopoRCJets_subjesISAuxDyn.InputType +HLT_AntiKt10EMTopoRCJets_subjesISAuxDyn.JetConstitScaleMomentum_eta +HLT_AntiKt10EMTopoRCJets_subjesISAuxDyn.JetConstitScaleMomentum_m +HLT_AntiKt10EMTopoRCJets_subjesISAuxDyn.JetConstitScaleMomentum_phi +HLT_AntiKt10EMTopoRCJets_subjesISAuxDyn.JetConstitScaleMomentum_pt +HLT_AntiKt10EMTopoRCJets_subjesISAuxDyn.SizeParameter HLT_AntiKt10LCTopoJets_nojcalib HLT_AntiKt10LCTopoJets_nojcalibAux. +HLT_AntiKt10LCTopoJets_nojcalibAuxDyn.ActiveArea +HLT_AntiKt10LCTopoJets_nojcalibAuxDyn.ActiveArea4vec_eta +HLT_AntiKt10LCTopoJets_nojcalibAuxDyn.ActiveArea4vec_m +HLT_AntiKt10LCTopoJets_nojcalibAuxDyn.ActiveArea4vec_phi +HLT_AntiKt10LCTopoJets_nojcalibAuxDyn.ActiveArea4vec_pt +HLT_AntiKt10LCTopoJets_nojcalibAuxDyn.AlgorithmType +HLT_AntiKt10LCTopoJets_nojcalibAuxDyn.DetectorEta +HLT_AntiKt10LCTopoJets_nojcalibAuxDyn.DetectorPhi +HLT_AntiKt10LCTopoJets_nojcalibAuxDyn.InputType +HLT_AntiKt10LCTopoJets_nojcalibAuxDyn.JetConstitScaleMomentum_eta +HLT_AntiKt10LCTopoJets_nojcalibAuxDyn.JetConstitScaleMomentum_m +HLT_AntiKt10LCTopoJets_nojcalibAuxDyn.JetConstitScaleMomentum_phi +HLT_AntiKt10LCTopoJets_nojcalibAuxDyn.JetConstitScaleMomentum_pt +HLT_AntiKt10LCTopoJets_nojcalibAuxDyn.SizeParameter HLT_AntiKt10LCTopoJets_subjes HLT_AntiKt10LCTopoJets_subjesAux. +HLT_AntiKt10LCTopoJets_subjesAuxDyn.JetEtaJESScaleMomentum_eta +HLT_AntiKt10LCTopoJets_subjesAuxDyn.JetEtaJESScaleMomentum_m +HLT_AntiKt10LCTopoJets_subjesAuxDyn.JetEtaJESScaleMomentum_phi +HLT_AntiKt10LCTopoJets_subjesAuxDyn.JetEtaJESScaleMomentum_pt +HLT_AntiKt10LCTopoJets_subjesAuxDyn.JetPileupScaleMomentum_eta +HLT_AntiKt10LCTopoJets_subjesAuxDyn.JetPileupScaleMomentum_m +HLT_AntiKt10LCTopoJets_subjesAuxDyn.JetPileupScaleMomentum_phi +HLT_AntiKt10LCTopoJets_subjesAuxDyn.JetPileupScaleMomentum_pt +HLT_AntiKt10LCTopoJets_subjesAuxDyn.eta +HLT_AntiKt10LCTopoJets_subjesAuxDyn.m +HLT_AntiKt10LCTopoJets_subjesAuxDyn.phi +HLT_AntiKt10LCTopoJets_subjesAuxDyn.pt HLT_AntiKt10LCTopoSoftDropBeta100Zcut10Jets_nojcalib HLT_AntiKt10LCTopoSoftDropBeta100Zcut10Jets_nojcalibAux. HLT_AntiKt10LCTopoTrimmedPtFrac4SmallR20Jets_jes HLT_AntiKt10LCTopoTrimmedPtFrac4SmallR20Jets_jesAux. +HLT_AntiKt10LCTopoTrimmedPtFrac4SmallR20Jets_jesAuxDyn.AlgorithmType +HLT_AntiKt10LCTopoTrimmedPtFrac4SmallR20Jets_jesAuxDyn.DetectorEta +HLT_AntiKt10LCTopoTrimmedPtFrac4SmallR20Jets_jesAuxDyn.DetectorPhi +HLT_AntiKt10LCTopoTrimmedPtFrac4SmallR20Jets_jesAuxDyn.InputType +HLT_AntiKt10LCTopoTrimmedPtFrac4SmallR20Jets_jesAuxDyn.JetConstitScaleMomentum_eta +HLT_AntiKt10LCTopoTrimmedPtFrac4SmallR20Jets_jesAuxDyn.JetConstitScaleMomentum_m +HLT_AntiKt10LCTopoTrimmedPtFrac4SmallR20Jets_jesAuxDyn.JetConstitScaleMomentum_phi +HLT_AntiKt10LCTopoTrimmedPtFrac4SmallR20Jets_jesAuxDyn.JetConstitScaleMomentum_pt +HLT_AntiKt10LCTopoTrimmedPtFrac4SmallR20Jets_jesAuxDyn.JetEtaJESScaleMomentum_eta +HLT_AntiKt10LCTopoTrimmedPtFrac4SmallR20Jets_jesAuxDyn.JetEtaJESScaleMomentum_m +HLT_AntiKt10LCTopoTrimmedPtFrac4SmallR20Jets_jesAuxDyn.JetEtaJESScaleMomentum_phi +HLT_AntiKt10LCTopoTrimmedPtFrac4SmallR20Jets_jesAuxDyn.JetEtaJESScaleMomentum_pt +HLT_AntiKt10LCTopoTrimmedPtFrac4SmallR20Jets_jesAuxDyn.SizeParameter HLT_AntiKt10LCTopoTrimmedPtFrac4SmallR20Jets_nojcalib HLT_AntiKt10LCTopoTrimmedPtFrac4SmallR20Jets_nojcalibAux. HLT_AntiKt4EMPFlowCSSKJets_nojcalib_ftf HLT_AntiKt4EMPFlowCSSKJets_nojcalib_ftfAux. HLT_AntiKt4EMPFlowJets_nojcalib_ftf HLT_AntiKt4EMPFlowJets_nojcalib_ftfAux. +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.ActiveArea +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.ActiveArea4vec_eta +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.ActiveArea4vec_m +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.ActiveArea4vec_phi +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.ActiveArea4vec_pt +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.AlgorithmType +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.DetectorEta +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.DetectorPhi +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.EMFrac +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.EnergyPerSampling +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.GhostTrack_ftf +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.HECFrac +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.InputType +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.JVFCorr +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.JetConstitScaleMomentum_eta +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.JetConstitScaleMomentum_m +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.JetConstitScaleMomentum_phi +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.JetConstitScaleMomentum_pt +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.Jvt +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.JvtRpt +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.NumTrkPt1000 +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.NumTrkPt500 +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.SizeParameter +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.SumPtChargedPFOPt500 +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.SumPtTrkPt1000 +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.SumPtTrkPt500 +HLT_AntiKt4EMPFlowJets_nojcalib_ftfAuxDyn.TrackWidthPt1000 HLT_AntiKt4EMPFlowJets_subjesIS_ftf HLT_AntiKt4EMPFlowJets_subjesIS_ftfAux. HLT_AntiKt4EMPFlowJets_subjesgscIS_ftf HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAux. +HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAuxDyn.JetEtaJESScaleMomentum_eta +HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAuxDyn.JetEtaJESScaleMomentum_m +HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAuxDyn.JetEtaJESScaleMomentum_phi +HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAuxDyn.JetEtaJESScaleMomentum_pt +HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAuxDyn.JetGSCScaleMomentum_eta +HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAuxDyn.JetGSCScaleMomentum_m +HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAuxDyn.JetGSCScaleMomentum_phi +HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAuxDyn.JetGSCScaleMomentum_pt +HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAuxDyn.JetPileupScaleMomentum_eta +HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAuxDyn.JetPileupScaleMomentum_m +HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAuxDyn.JetPileupScaleMomentum_phi +HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAuxDyn.JetPileupScaleMomentum_pt +HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAuxDyn.Jvt +HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAuxDyn.JvtRpt +HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAuxDyn.Timing +HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAuxDyn.eta +HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAuxDyn.m +HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAuxDyn.phi +HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAuxDyn.pt HLT_AntiKt4EMPFlowJets_subjesgsc_ftf HLT_AntiKt4EMPFlowJets_subjesgsc_ftfAux. HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAux. +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.JetEtaJESScaleMomentum_eta +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.JetEtaJESScaleMomentum_m +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.JetEtaJESScaleMomentum_phi +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.JetEtaJESScaleMomentum_pt +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.JetGSCScaleMomentum_eta +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.JetGSCScaleMomentum_m +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.JetGSCScaleMomentum_phi +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.JetGSCScaleMomentum_pt +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.JetPileupScaleMomentum_eta +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.JetPileupScaleMomentum_m +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.JetPileupScaleMomentum_phi +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.JetPileupScaleMomentum_pt +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.Jvt +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.JvtRpt +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.Timing +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.TracksForMinimalJetTag +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.dips20211116_pb +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.dips20211116_pc +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.dips20211116_pu +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.eta +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.fastDIPS20211215_pb +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.fastDIPS20211215_pc +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.fastDIPS20211215_pu +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.m +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.phi +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAuxDyn.pt HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTagging HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAux. +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.BTagTrackToJetAssociator +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.DL1_pb +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.DL1_pc +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.DL1_pu +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.DL1bb20220331_pb +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.DL1d20210519r22_pb +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.DL1d20210519r22_pc +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.DL1d20210519r22_pu +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.DL1d20210528r22_pb +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.DL1d20210528r22_pc +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.DL1d20210528r22_pu +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.DL1d20211216_pb +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.DL1d20211216_pc +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.DL1d20211216_pu +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.DL1r_pb +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.DL1r_pc +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.DL1r_pu +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.IP2D_TrackParticleLinks +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.IP2D_bc +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.IP2D_bu +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.IP2D_cu +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.IP2D_isDefaults +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.IP2D_nTrks +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.IP2D_pb +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.IP2D_pc +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.IP2D_pu +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.IP3D_TrackParticleLinks +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.IP3D_bc +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.IP3D_bu +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.IP3D_cu +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.IP3D_isDefaults +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.IP3D_nTrks +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.IP3D_pb +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.IP3D_pc +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.IP3D_pu +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitterSecondaryVertex_averageAllJetTrackRelativeEta +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitterSecondaryVertex_averageTrackRelativeEta +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitterSecondaryVertex_displacement2d +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitterSecondaryVertex_displacement3d +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitterSecondaryVertex_energy +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitterSecondaryVertex_energyFraction +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitterSecondaryVertex_isDefaults +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitterSecondaryVertex_mass +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitterSecondaryVertex_maximumAllJetTrackRelativeEta +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitterSecondaryVertex_maximumTrackRelativeEta +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitterSecondaryVertex_minimumAllJetTrackRelativeEta +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitterSecondaryVertex_minimumTrackRelativeEta +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitterSecondaryVertex_nTracks +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_JFvertices +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_N2Tpair +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_chi2 +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_dRFlightDir +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_deltaR +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_deltaeta +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_deltaphi +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_energyFraction +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_fittedCov +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_fittedPosition +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_isDefaults +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_mass +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_massUncorr +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_nSingleTracks +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_nTracksAtVtx +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_nVTX +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_ndof +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_significance3d +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_tracksAtPVchi2 +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_tracksAtPVlinks +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.JetFitter_tracksAtPVndf +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.Muons +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.SV1_L3d +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.SV1_Lxy +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.SV1_N2Tpair +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.SV1_NGTinSvx +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.SV1_TrackParticleLinks +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.SV1_badTracksIP +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.SV1_deltaR +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.SV1_dstToMatLay +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.SV1_efracsvx +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.SV1_energyTrkInJet +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.SV1_isDefaults +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.SV1_masssvx +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.SV1_normdist +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.SV1_significance3d +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.SV1_vertices +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.dips20210517_pb +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.dips20210517_pc +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.dips20210517_pu +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.dipsLoose20210517_pb +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.dipsLoose20210517_pc +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.dipsLoose20210517_pu +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.dipsLoose20210729_pb +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.dipsLoose20210729_pc +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.dipsLoose20210729_pu +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.jetLink +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.rnnip_isDefaults +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.rnnip_pb +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.rnnip_pc +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.rnnip_ptau +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.rnnip_pu +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAuxDyn.viewIndex HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingJFVtx HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingJFVtxAux. +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingJFVtxAuxDyn.viewIndex HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingSecVtx HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingSecVtxAux. +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingSecVtxAuxDyn.viewIndex HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJets HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJetsAux. +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJetsAuxDyn.JVFCorr +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJetsAuxDyn.Jvt +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJetsAuxDyn.SumPtTrkPt500 +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJetsAuxDyn.btaggingLink +HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJetsAuxDyn.viewIndex HLT_AntiKt4EMPFlowJets_subresjesgsc_ftf HLT_AntiKt4EMPFlowJets_subresjesgsc_ftfAux. HLT_AntiKt4EMTopoCSSKJets_nojcalib HLT_AntiKt4EMTopoCSSKJets_nojcalibAux. HLT_AntiKt4EMTopoJets_nojcalib HLT_AntiKt4EMTopoJets_nojcalibAux. +HLT_AntiKt4EMTopoJets_nojcalibAuxDyn.ActiveArea +HLT_AntiKt4EMTopoJets_nojcalibAuxDyn.ActiveArea4vec_eta +HLT_AntiKt4EMTopoJets_nojcalibAuxDyn.ActiveArea4vec_m +HLT_AntiKt4EMTopoJets_nojcalibAuxDyn.ActiveArea4vec_phi +HLT_AntiKt4EMTopoJets_nojcalibAuxDyn.ActiveArea4vec_pt +HLT_AntiKt4EMTopoJets_nojcalibAuxDyn.AlgorithmType +HLT_AntiKt4EMTopoJets_nojcalibAuxDyn.DetectorEta +HLT_AntiKt4EMTopoJets_nojcalibAuxDyn.DetectorPhi +HLT_AntiKt4EMTopoJets_nojcalibAuxDyn.EMFrac +HLT_AntiKt4EMTopoJets_nojcalibAuxDyn.EnergyPerSampling +HLT_AntiKt4EMTopoJets_nojcalibAuxDyn.HECFrac +HLT_AntiKt4EMTopoJets_nojcalibAuxDyn.InputType +HLT_AntiKt4EMTopoJets_nojcalibAuxDyn.JetConstitScaleMomentum_eta +HLT_AntiKt4EMTopoJets_nojcalibAuxDyn.JetConstitScaleMomentum_m +HLT_AntiKt4EMTopoJets_nojcalibAuxDyn.JetConstitScaleMomentum_phi +HLT_AntiKt4EMTopoJets_nojcalibAuxDyn.JetConstitScaleMomentum_pt +HLT_AntiKt4EMTopoJets_nojcalibAuxDyn.SizeParameter HLT_AntiKt4EMTopoJets_nojcalib_ftf HLT_AntiKt4EMTopoJets_nojcalib_ftfAux. +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.ActiveArea +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.ActiveArea4vec_eta +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.ActiveArea4vec_m +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.ActiveArea4vec_phi +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.ActiveArea4vec_pt +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.AlgorithmType +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.DetectorEta +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.DetectorPhi +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.EMFrac +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.EnergyPerSampling +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.GhostTrack_ftf +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.HECFrac +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.InputType +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.JVFCorr +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.JetConstitScaleMomentum_eta +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.JetConstitScaleMomentum_m +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.JetConstitScaleMomentum_phi +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.JetConstitScaleMomentum_pt +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.Jvt +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.JvtRpt +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.NumTrkPt1000 +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.NumTrkPt500 +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.SizeParameter +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.SumPtTrkPt1000 +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.SumPtTrkPt500 +HLT_AntiKt4EMTopoJets_nojcalib_ftfAuxDyn.TrackWidthPt1000 HLT_AntiKt4EMTopoJets_subjes HLT_AntiKt4EMTopoJets_subjesAux. HLT_AntiKt4EMTopoJets_subjesIS HLT_AntiKt4EMTopoJets_subjesISAux. +HLT_AntiKt4EMTopoJets_subjesISAuxDyn.JetEtaJESScaleMomentum_eta +HLT_AntiKt4EMTopoJets_subjesISAuxDyn.JetEtaJESScaleMomentum_m +HLT_AntiKt4EMTopoJets_subjesISAuxDyn.JetEtaJESScaleMomentum_phi +HLT_AntiKt4EMTopoJets_subjesISAuxDyn.JetEtaJESScaleMomentum_pt +HLT_AntiKt4EMTopoJets_subjesISAuxDyn.JetGSCScaleMomentum_eta +HLT_AntiKt4EMTopoJets_subjesISAuxDyn.JetGSCScaleMomentum_m +HLT_AntiKt4EMTopoJets_subjesISAuxDyn.JetGSCScaleMomentum_phi +HLT_AntiKt4EMTopoJets_subjesISAuxDyn.JetGSCScaleMomentum_pt +HLT_AntiKt4EMTopoJets_subjesISAuxDyn.JetPileupScaleMomentum_eta +HLT_AntiKt4EMTopoJets_subjesISAuxDyn.JetPileupScaleMomentum_m +HLT_AntiKt4EMTopoJets_subjesISAuxDyn.JetPileupScaleMomentum_phi +HLT_AntiKt4EMTopoJets_subjesISAuxDyn.JetPileupScaleMomentum_pt +HLT_AntiKt4EMTopoJets_subjesISAuxDyn.Timing +HLT_AntiKt4EMTopoJets_subjesISAuxDyn.eta +HLT_AntiKt4EMTopoJets_subjesISAuxDyn.m +HLT_AntiKt4EMTopoJets_subjesISAuxDyn.phi +HLT_AntiKt4EMTopoJets_subjesISAuxDyn.pt +HLT_AntiKt4EMTopoJets_subjesIS_fastftag +HLT_AntiKt4EMTopoJets_subjesIS_fastftagAux. +HLT_AntiKt4EMTopoJets_subjesIS_fastftagAuxDyn.TracksForMinimalJetTag +HLT_AntiKt4EMTopoJets_subjesIS_fastftagAuxDyn.fastDips_pb +HLT_AntiKt4EMTopoJets_subjesIS_fastftagAuxDyn.fastDips_pc +HLT_AntiKt4EMTopoJets_subjesIS_fastftagAuxDyn.fastDips_pu HLT_AntiKt4EMTopoJets_subjesIS_ftf HLT_AntiKt4EMTopoJets_subjesIS_ftfAux. HLT_AntiKt4EMTopoJets_subjesgscIS_ftf HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAux. +HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAuxDyn.JetEtaJESScaleMomentum_eta +HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAuxDyn.JetEtaJESScaleMomentum_m +HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAuxDyn.JetEtaJESScaleMomentum_phi +HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAuxDyn.JetEtaJESScaleMomentum_pt +HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAuxDyn.JetGSCScaleMomentum_eta +HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAuxDyn.JetGSCScaleMomentum_m +HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAuxDyn.JetGSCScaleMomentum_phi +HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAuxDyn.JetGSCScaleMomentum_pt +HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAuxDyn.JetPileupScaleMomentum_eta +HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAuxDyn.JetPileupScaleMomentum_m +HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAuxDyn.JetPileupScaleMomentum_phi +HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAuxDyn.JetPileupScaleMomentum_pt +HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAuxDyn.Jvt +HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAuxDyn.JvtRpt +HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAuxDyn.Timing +HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAuxDyn.eta +HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAuxDyn.m +HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAuxDyn.phi +HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAuxDyn.pt HLT_AntiKt4EMTopoJets_subjesgsc_ftf HLT_AntiKt4EMTopoJets_subjesgsc_ftfAux. HLT_AntiKt4EMTopoJets_subresjesgscIS_ftf HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAux. +HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAuxDyn.JetEtaJESScaleMomentum_eta +HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAuxDyn.JetEtaJESScaleMomentum_m +HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAuxDyn.JetEtaJESScaleMomentum_phi +HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAuxDyn.JetEtaJESScaleMomentum_pt +HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAuxDyn.JetGSCScaleMomentum_eta +HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAuxDyn.JetGSCScaleMomentum_m +HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAuxDyn.JetGSCScaleMomentum_phi +HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAuxDyn.JetGSCScaleMomentum_pt +HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAuxDyn.JetPileupScaleMomentum_eta +HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAuxDyn.JetPileupScaleMomentum_m +HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAuxDyn.JetPileupScaleMomentum_phi +HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAuxDyn.JetPileupScaleMomentum_pt +HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAuxDyn.Jvt +HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAuxDyn.JvtRpt +HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAuxDyn.Timing +HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAuxDyn.eta +HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAuxDyn.m +HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAuxDyn.phi +HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAuxDyn.pt HLT_AntiKt4EMTopoJets_subresjesgscIS_ftf_BTagging HLT_AntiKt4EMTopoJets_subresjesgscIS_ftf_BTaggingAux. HLT_AntiKt4EMTopoJets_subresjesgscIS_ftf_BTaggingJFVtx @@ -413,18 +951,24 @@ HLT_Bmux HLT_BmuxAux. HLT_CBCombinedMuon_FSTrackParticles HLT_CBCombinedMuon_FSTrackParticlesAux. +HLT_CBCombinedMuon_FSTrackParticlesAuxDyn.viewIndex HLT_CBCombinedMuon_LRTTrackParticles HLT_CBCombinedMuon_LRTTrackParticlesAux. +HLT_CBCombinedMuon_LRTTrackParticlesAuxDyn.viewIndex HLT_CBCombinedMuon_RoITrackParticles HLT_CBCombinedMuon_RoITrackParticlesAux. +HLT_CBCombinedMuon_RoITrackParticlesAuxDyn.viewIndex HLT_CaloEMClusters_Electron HLT_CaloEMClusters_ElectronAux. +HLT_CaloEMClusters_ElectronAuxDyn.viewIndex HLT_CaloEMClusters_FWD HLT_CaloEMClusters_FWDAux. HLT_CaloEMClusters_LRT HLT_CaloEMClusters_LRTAux. +HLT_CaloEMClusters_LRTAuxDyn.viewIndex HLT_CaloEMClusters_Photon HLT_CaloEMClusters_PhotonAux. +HLT_CaloEMClusters_PhotonAuxDyn.viewIndex HLT_DiElecPrecision HLT_DiElecPrecisionAux. HLT_DiElecPrecisionGSF @@ -433,8 +977,101 @@ HLT_DimuEF HLT_DimuEFAux. HLT_DisTrkBDTSel HLT_DisTrkBDTSelAux. +HLT_DisTrkBDTSelAuxDyn.disTrk_bdtscore +HLT_DisTrkBDTSelAuxDyn.disTrk_category +HLT_DisTrkBDTSelAuxDyn.disTrk_chi2 +HLT_DisTrkBDTSelAuxDyn.disTrk_chi2ndof_pix +HLT_DisTrkBDTSelAuxDyn.disTrk_d0_wrtVtx +HLT_DisTrkBDTSelAuxDyn.disTrk_eta +HLT_DisTrkBDTSelAuxDyn.disTrk_is_fail +HLT_DisTrkBDTSelAuxDyn.disTrk_iso3_dr01 +HLT_DisTrkBDTSelAuxDyn.disTrk_iso3_dr02 +HLT_DisTrkBDTSelAuxDyn.disTrk_n_hits_innermost +HLT_DisTrkBDTSelAuxDyn.disTrk_n_hits_pix +HLT_DisTrkBDTSelAuxDyn.disTrk_n_hits_sct +HLT_DisTrkBDTSelAuxDyn.disTrk_ndof +HLT_DisTrkBDTSelAuxDyn.disTrk_phi +HLT_DisTrkBDTSelAuxDyn.disTrk_pt +HLT_DisTrkBDTSelAuxDyn.disTrk_refit_chi2 +HLT_DisTrkBDTSelAuxDyn.disTrk_refit_d0_wrtVtx +HLT_DisTrkBDTSelAuxDyn.disTrk_refit_ndof +HLT_DisTrkBDTSelAuxDyn.disTrk_refit_pt +HLT_DisTrkBDTSelAuxDyn.disTrk_refit_z0_wrtVtx +HLT_DisTrkBDTSelAuxDyn.disTrk_z0_wrtVtx HLT_DisTrkCand HLT_DisTrkCandAux. +HLT_DisTrkCandAuxDyn.disTrkCand_category +HLT_DisTrkCandAuxDyn.disTrkCand_chi2 +HLT_DisTrkCandAuxDyn.disTrkCand_chi2sum_br_ibl +HLT_DisTrkCandAuxDyn.disTrkCand_chi2sum_br_pix1 +HLT_DisTrkCandAuxDyn.disTrkCand_chi2sum_br_pix2 +HLT_DisTrkCandAuxDyn.disTrkCand_chi2sum_br_pix3 +HLT_DisTrkCandAuxDyn.disTrkCand_chi2sum_br_sct1 +HLT_DisTrkCandAuxDyn.disTrkCand_chi2sum_br_sct2 +HLT_DisTrkCandAuxDyn.disTrkCand_chi2sum_br_sct3 +HLT_DisTrkCandAuxDyn.disTrkCand_chi2sum_br_sct4 +HLT_DisTrkCandAuxDyn.disTrkCand_d0 +HLT_DisTrkCandAuxDyn.disTrkCand_d0_wrtVtx +HLT_DisTrkCandAuxDyn.disTrkCand_eta +HLT_DisTrkCandAuxDyn.disTrkCand_eta_wrtVtx +HLT_DisTrkCandAuxDyn.disTrkCand_is_fail +HLT_DisTrkCandAuxDyn.disTrkCand_iso1_dr01 +HLT_DisTrkCandAuxDyn.disTrkCand_iso1_dr02 +HLT_DisTrkCandAuxDyn.disTrkCand_iso2_dr01 +HLT_DisTrkCandAuxDyn.disTrkCand_iso2_dr02 +HLT_DisTrkCandAuxDyn.disTrkCand_iso3_dr01 +HLT_DisTrkCandAuxDyn.disTrkCand_iso3_dr02 +HLT_DisTrkCandAuxDyn.disTrkCand_n_hits_inner +HLT_DisTrkCandAuxDyn.disTrkCand_n_hits_innermost +HLT_DisTrkCandAuxDyn.disTrkCand_n_hits_pix +HLT_DisTrkCandAuxDyn.disTrkCand_n_hits_sct +HLT_DisTrkCandAuxDyn.disTrkCand_ndof +HLT_DisTrkCandAuxDyn.disTrkCand_ndofsum_br_ibl +HLT_DisTrkCandAuxDyn.disTrkCand_ndofsum_br_pix1 +HLT_DisTrkCandAuxDyn.disTrkCand_ndofsum_br_pix2 +HLT_DisTrkCandAuxDyn.disTrkCand_ndofsum_br_pix3 +HLT_DisTrkCandAuxDyn.disTrkCand_ndofsum_br_sct1 +HLT_DisTrkCandAuxDyn.disTrkCand_ndofsum_br_sct2 +HLT_DisTrkCandAuxDyn.disTrkCand_ndofsum_br_sct3 +HLT_DisTrkCandAuxDyn.disTrkCand_ndofsum_br_sct4 +HLT_DisTrkCandAuxDyn.disTrkCand_phi +HLT_DisTrkCandAuxDyn.disTrkCand_phi_wrtVtx +HLT_DisTrkCandAuxDyn.disTrkCand_pt +HLT_DisTrkCandAuxDyn.disTrkCand_pt_wrtVtx +HLT_DisTrkCandAuxDyn.disTrkCand_refit_chi2 +HLT_DisTrkCandAuxDyn.disTrkCand_refit_chi2sum_br_ibl +HLT_DisTrkCandAuxDyn.disTrkCand_refit_chi2sum_br_pix1 +HLT_DisTrkCandAuxDyn.disTrkCand_refit_chi2sum_br_pix2 +HLT_DisTrkCandAuxDyn.disTrkCand_refit_chi2sum_br_pix3 +HLT_DisTrkCandAuxDyn.disTrkCand_refit_chi2sum_br_sct1 +HLT_DisTrkCandAuxDyn.disTrkCand_refit_chi2sum_br_sct2 +HLT_DisTrkCandAuxDyn.disTrkCand_refit_chi2sum_br_sct3 +HLT_DisTrkCandAuxDyn.disTrkCand_refit_chi2sum_br_sct4 +HLT_DisTrkCandAuxDyn.disTrkCand_refit_d0 +HLT_DisTrkCandAuxDyn.disTrkCand_refit_d0_wrtVtx +HLT_DisTrkCandAuxDyn.disTrkCand_refit_eta +HLT_DisTrkCandAuxDyn.disTrkCand_refit_eta_wrtVtx +HLT_DisTrkCandAuxDyn.disTrkCand_refit_n_hits_inner +HLT_DisTrkCandAuxDyn.disTrkCand_refit_n_hits_innermost +HLT_DisTrkCandAuxDyn.disTrkCand_refit_n_hits_pix +HLT_DisTrkCandAuxDyn.disTrkCand_refit_n_hits_sct +HLT_DisTrkCandAuxDyn.disTrkCand_refit_ndof +HLT_DisTrkCandAuxDyn.disTrkCand_refit_ndofsum_br_ibl +HLT_DisTrkCandAuxDyn.disTrkCand_refit_ndofsum_br_pix1 +HLT_DisTrkCandAuxDyn.disTrkCand_refit_ndofsum_br_pix2 +HLT_DisTrkCandAuxDyn.disTrkCand_refit_ndofsum_br_pix3 +HLT_DisTrkCandAuxDyn.disTrkCand_refit_ndofsum_br_sct1 +HLT_DisTrkCandAuxDyn.disTrkCand_refit_ndofsum_br_sct2 +HLT_DisTrkCandAuxDyn.disTrkCand_refit_ndofsum_br_sct3 +HLT_DisTrkCandAuxDyn.disTrkCand_refit_ndofsum_br_sct4 +HLT_DisTrkCandAuxDyn.disTrkCand_refit_phi +HLT_DisTrkCandAuxDyn.disTrkCand_refit_phi_wrtVtx +HLT_DisTrkCandAuxDyn.disTrkCand_refit_pt +HLT_DisTrkCandAuxDyn.disTrkCand_refit_pt_wrtVtx +HLT_DisTrkCandAuxDyn.disTrkCand_refit_z0 +HLT_DisTrkCandAuxDyn.disTrkCand_refit_z0_wrtVtx +HLT_DisTrkCandAuxDyn.disTrkCand_z0 +HLT_DisTrkCandAuxDyn.disTrkCand_z0_wrtVtx HLT_DrellYan HLT_DrellYanAux. HLT_EMRoIs @@ -443,30 +1080,74 @@ HLT_FSLRT_TrackCountAux. HLT_FSRoI HLT_FastCaloEMClusters HLT_FastCaloEMClustersAux. +HLT_FastCaloEMClustersAuxDyn.viewIndex HLT_FastCaloEMClusters_FWD HLT_FastCaloEMClusters_FWDAux. HLT_FastCaloRinger HLT_FastCaloRingerAux. +HLT_FastCaloRingerAuxDyn.viewIndex HLT_FastElectrons HLT_FastElectronsAux. +HLT_FastElectronsAuxDyn.viewIndex HLT_FastElectrons_LRT HLT_FastElectrons_LRTAux. +HLT_FastElectrons_LRTAuxDyn.viewIndex HLT_FastPhotons HLT_FastPhotonsAux. +HLT_FastPhotonsAuxDyn.viewIndex HLT_HICaloEMClusters HLT_HICaloEMClustersAux. HLT_HIEventShapeEG HLT_HIEventShapeEGAux. HLT_HPtdEdxTrk HLT_HPtdEdxTrkAux. +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_a0beam +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_dedx +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_eta +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hdedx_hits_1p45 +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hdedx_hits_1p50 +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hdedx_hits_1p55 +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hdedx_hits_1p60 +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hdedx_hits_1p65 +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hdedx_hits_1p70 +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hdedx_hits_1p75 +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hdedx_hits_1p80 +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hits_inner +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hits_innermost +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hits_pix +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hits_sct +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_phi +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_pt HLT_HitDV HLT_HitDVAux. +HLT_HitDVAuxDyn.hitDV_bdt_score +HLT_HitDVAuxDyn.hitDV_ly0_sp_frac +HLT_HitDVAuxDyn.hitDV_ly1_sp_frac +HLT_HitDVAuxDyn.hitDV_ly2_sp_frac +HLT_HitDVAuxDyn.hitDV_ly3_sp_frac +HLT_HitDVAuxDyn.hitDV_ly4_sp_frac +HLT_HitDVAuxDyn.hitDV_ly5_sp_frac +HLT_HitDVAuxDyn.hitDV_ly6_sp_frac +HLT_HitDVAuxDyn.hitDV_ly7_sp_frac +HLT_HitDVAuxDyn.hitDV_n_track_qual +HLT_HitDVAuxDyn.hitDV_seed_eta +HLT_HitDVAuxDyn.hitDV_seed_phi +HLT_HitDVAuxDyn.hitDV_seed_type HLT_IDTrack_Bjet_FTF HLT_IDTrack_Bjet_FTFAux. +HLT_IDTrack_Bjet_FTFAuxDyn.viewIndex HLT_IDTrack_Bjet_IDTrig HLT_IDTrack_Bjet_IDTrigAux. +HLT_IDTrack_Bjet_IDTrigAuxDyn.btagIp_d0 +HLT_IDTrack_Bjet_IDTrigAuxDyn.btagIp_d0Uncertainty +HLT_IDTrack_Bjet_IDTrigAuxDyn.btagIp_trackDisplacement +HLT_IDTrack_Bjet_IDTrigAuxDyn.btagIp_trackMomentum +HLT_IDTrack_Bjet_IDTrigAuxDyn.btagIp_z0SinTheta +HLT_IDTrack_Bjet_IDTrigAuxDyn.btagIp_z0SinThetaUncertainty +HLT_IDTrack_Bjet_IDTrigAuxDyn.viewIndex HLT_IDTrack_Bmumux_IDTrig HLT_IDTrack_Bmumux_IDTrigAux. +HLT_IDTrack_Bmumux_IDTrigAuxDyn.viewIndex HLT_IDTrack_Cosmic_EFID HLT_IDTrack_Cosmic_EFIDAux. HLT_IDTrack_Cosmic_FTF @@ -477,45 +1158,69 @@ HLT_IDTrack_DJLRT_FTF HLT_IDTrack_DJLRT_FTFAux. HLT_IDTrack_ElecLRT_FTF HLT_IDTrack_ElecLRT_FTFAux. +HLT_IDTrack_ElecLRT_FTFAuxDyn.viewIndex HLT_IDTrack_ElecLRT_IDTrig HLT_IDTrack_ElecLRT_IDTrigAux. +HLT_IDTrack_ElecLRT_IDTrigAuxDyn.viewIndex HLT_IDTrack_Electron_FTF HLT_IDTrack_Electron_FTFAux. +HLT_IDTrack_Electron_FTFAuxDyn.viewIndex HLT_IDTrack_Electron_GSF HLT_IDTrack_Electron_GSFAux. +HLT_IDTrack_Electron_GSFAuxDyn.parameterPX +HLT_IDTrack_Electron_GSFAuxDyn.parameterPY +HLT_IDTrack_Electron_GSFAuxDyn.parameterPZ +HLT_IDTrack_Electron_GSFAuxDyn.viewIndex HLT_IDTrack_Electron_IDTrig HLT_IDTrack_Electron_IDTrigAux. +HLT_IDTrack_Electron_IDTrigAuxDyn.viewIndex HLT_IDTrack_Electron_LRTGSF HLT_IDTrack_Electron_LRTGSFAux. +HLT_IDTrack_Electron_LRTGSFAuxDyn.viewIndex HLT_IDTrack_FSLRT_FTF HLT_IDTrack_FSLRT_FTFAux. HLT_IDTrack_FSLRT_IDTrig HLT_IDTrack_FSLRT_IDTrigAux. HLT_IDTrack_FS_FTF HLT_IDTrack_FS_FTFAux. +HLT_IDTrack_FS_FTFAuxDyn.passPFTrackPresel HLT_IDTrack_JetSuper_FTF HLT_IDTrack_JetSuper_FTFAux. +HLT_IDTrack_JetSuper_FTFAuxDyn.viewIndex HLT_IDTrack_MinBias_IDTrig HLT_IDTrack_MinBias_IDTrigAux. -HLT_IDTrack_MinBias_IDTrigAuxDyn.viewIndex HLT_IDTrack_MuonIso_FTF HLT_IDTrack_MuonIso_FTFAux. +HLT_IDTrack_MuonIso_FTFAuxDyn.viewIndex HLT_IDTrack_MuonIso_IDTrig HLT_IDTrack_MuonIso_IDTrigAux. +HLT_IDTrack_MuonIso_IDTrigAuxDyn.viewIndex HLT_IDTrack_MuonLRT_FTF HLT_IDTrack_MuonLRT_FTFAux. +HLT_IDTrack_MuonLRT_FTFAuxDyn.viewIndex HLT_IDTrack_MuonLRT_IDTrig HLT_IDTrack_MuonLRT_IDTrigAux. +HLT_IDTrack_MuonLRT_IDTrigAuxDyn.viewIndex HLT_IDTrack_Muon_FTF HLT_IDTrack_Muon_FTFAux. +HLT_IDTrack_Muon_FTFAuxDyn.viewIndex HLT_IDTrack_Muon_IDTrig HLT_IDTrack_Muon_IDTrigAux. +HLT_IDTrack_Muon_IDTrigAuxDyn.viewIndex HLT_IDTrack_TauCore_FTF HLT_IDTrack_TauCore_FTFAux. +HLT_IDTrack_TauCore_FTFAuxDyn.viewIndex HLT_IDTrack_TauIso_FTF HLT_IDTrack_TauIso_FTFAux. +HLT_IDTrack_TauIso_FTFAuxDyn.viewIndex +HLT_IDTrack_TauLRT_FTF +HLT_IDTrack_TauLRT_FTFAux. +HLT_IDTrack_TauLRT_IDTrig +HLT_IDTrack_TauLRT_IDTrigAux. HLT_IDTrack_Tau_IDTrig HLT_IDTrack_Tau_IDTrigAux. +HLT_IDTrack_Tau_IDTrigAuxDyn.eProbabilityNN +HLT_IDTrack_Tau_IDTrigAuxDyn.viewIndex HLT_IDVertex_FS HLT_IDVertex_FSAux. HLT_IDVertex_FSJet @@ -524,13 +1229,12 @@ HLT_IDVertex_FSLRT HLT_IDVertex_FSLRTAux. HLT_IDVertex_Tau HLT_IDVertex_TauAux. +HLT_IDVertex_TauAuxDyn.viewIndex HLT_JETRoI HLT_LArPS_AllCaloClusters HLT_LArPS_AllCaloClustersAux. -HLT_LArPS_AllCaloClustersAuxDyn.viewIndex HLT_LArPS_AllCaloEMClusters HLT_LArPS_AllCaloEMClustersAux. -HLT_LArPS_AllCaloEMClustersAuxDyn.viewIndex HLT_METRoI HLT_MET_cell HLT_MET_cellAux. @@ -570,8 +1274,10 @@ HLT_MET_trkmht HLT_MET_trkmhtAux. HLT_MSExtrapolatedMuons_FSTrackParticles HLT_MSExtrapolatedMuons_FSTrackParticlesAux. +HLT_MSExtrapolatedMuons_FSTrackParticlesAuxDyn.viewIndex HLT_MSExtrapolatedMuons_RoITrackParticles HLT_MSExtrapolatedMuons_RoITrackParticlesAux. +HLT_MSExtrapolatedMuons_RoITrackParticlesAuxDyn.viewIndex HLT_MSOnlyExtrapolatedMuons_FSTrackParticles HLT_MSOnlyExtrapolatedMuons_FSTrackParticlesAux. HLT_MURoIs @@ -579,36 +1285,52 @@ HLT_MbtsBitsContainer HLT_MbtsBitsContainerAux. HLT_MuonL2CBInfo HLT_MuonL2CBInfoAux. +HLT_MuonL2CBInfoAuxDyn.viewIndex HLT_MuonL2CBInfoIOmode HLT_MuonL2CBInfoIOmodeAux. +HLT_MuonL2CBInfoIOmodeAuxDyn.viewIndex HLT_MuonL2CBInfoLRT HLT_MuonL2CBInfoLRTAux. +HLT_MuonL2CBInfoLRTAuxDyn.viewIndex HLT_MuonL2CBInfol2mtmode HLT_MuonL2CBInfol2mtmodeAux. +HLT_MuonL2CBInfol2mtmodeAuxDyn.viewIndex HLT_MuonL2SAInfo HLT_MuonL2SAInfoAux. +HLT_MuonL2SAInfoAuxDyn.viewIndex HLT_MuonL2SAInfoIOmode HLT_MuonL2SAInfoIOmodeAux. +HLT_MuonL2SAInfoIOmodeAuxDyn.viewIndex HLT_MuonL2SAInfol2mtmode HLT_MuonL2SAInfol2mtmodeAux. +HLT_MuonL2SAInfol2mtmodeAuxDyn.viewIndex HLT_MuonsCB_FS HLT_MuonsCB_FSAux. +HLT_MuonsCB_FSAuxDyn.viewIndex HLT_MuonsCB_LRT HLT_MuonsCB_LRTAux. +HLT_MuonsCB_LRTAuxDyn.viewIndex HLT_MuonsCB_RoI HLT_MuonsCB_RoIAux. +HLT_MuonsCB_RoIAuxDyn.viewIndex HLT_MuonsIso HLT_MuonsIsoAux. +HLT_MuonsIsoAuxDyn.ptcone02 +HLT_MuonsIsoAuxDyn.ptcone03 +HLT_MuonsIsoAuxDyn.viewIndex HLT_Muons_FS HLT_Muons_FSAux. +HLT_Muons_FSAuxDyn.viewIndex HLT_Muons_RoI HLT_Muons_RoIAux. +HLT_Muons_RoIAuxDyn.viewIndex HLT_NoMuonDiElecPrecision HLT_NoMuonDiElecPrecisionAux. HLT_NoMuonDiElecPrecisionGSF HLT_NoMuonDiElecPrecisionGSFAux. HLT_Roi_Bjet HLT_Roi_DJ +HLT_Roi_FS HLT_Roi_FastElectron HLT_Roi_FastElectron_LRT HLT_Roi_FastPhoton @@ -623,50 +1345,69 @@ HLT_Roi_Tau HLT_Roi_TauCore HLT_Roi_TauIso HLT_Roi_TauIsoBDT +HLT_Roi_TauLRT HLT_SpacePointCounts HLT_SpacePointCountsAux. -HLT_SpacePointCountsAuxDyn.pixCL -HLT_SpacePointCountsAuxDyn.pixCLBarrel -HLT_SpacePointCountsAuxDyn.pixCLEndcapA -HLT_SpacePointCountsAuxDyn.pixCLEndcapC -HLT_SpacePointCountsAuxDyn.pixCL_1 -HLT_SpacePointCountsAuxDyn.pixCL_2 -HLT_SpacePointCountsAuxDyn.pixCLmin3 -HLT_SpacePointCountsAuxDyn.sctSP -HLT_SpacePointCountsAuxDyn.sctSPBarrel -HLT_SpacePointCountsAuxDyn.sctSPEndcapA -HLT_SpacePointCountsAuxDyn.sctSPEndcapC -HLT_SpacePointCountsAuxDyn.viewIndex HLT_TAURoI HLT_TopoCaloClusters HLT_TopoCaloClustersAux. HLT_TopoCaloClustersFS HLT_TopoCaloClustersFSAux. +HLT_TopoCaloClustersFSAuxDyn.nCells HLT_TopoCaloClustersHIRoI HLT_TopoCaloClustersHIRoIAux. HLT_TopoCaloClustersLC HLT_TopoCaloClustersLCAux. +HLT_TopoCaloClustersLCAuxDyn.CENTER_MAG +HLT_TopoCaloClustersLCAuxDyn.nCells HLT_TopoCaloClustersLCFS HLT_TopoCaloClustersLCFSAux. +HLT_TopoCaloClustersLCFSAuxDyn.calE +HLT_TopoCaloClustersLCFSAuxDyn.calEta +HLT_TopoCaloClustersLCFSAuxDyn.calPhi HLT_TopoCaloClustersRoI HLT_TopoCaloClustersRoIAux. +HLT_TopoCaloClustersRoIAuxDyn.nCells +HLT_TopoCaloClustersRoIAuxDyn.viewIndex HLT_TopoCaloClustersRoI_LRT HLT_TopoCaloClustersRoI_LRTAux. +HLT_TopoCaloClustersRoI_LRTAuxDyn.nCells +HLT_TopoCaloClustersRoI_LRTAuxDyn.viewIndex HLT_TrackCount HLT_TrackCountAux. -HLT_TrackCountAuxDyn.counts -HLT_TrackCountAuxDyn.ntrks -HLT_TrackCountAuxDyn.pTcuts -HLT_TrackCountAuxDyn.vertexZcuts -HLT_TrackCountAuxDyn.z0cuts +HLT_TrigDV_VSITrkPair +HLT_TrigDV_VSITrkPairAux. +HLT_TrigDV_VSIVertex +HLT_TrigDV_VSIVertexAux. +HLT_TrigDV_VtxCount +HLT_TrigDV_VtxCountAux. +HLT_TrigEMClusters_Electrons +HLT_TrigEMClusters_ElectronsAux. +HLT_TrigEMClusters_ElectronsAuxDyn.viewIndex +HLT_TrigEMClusters_Electrons_GSF +HLT_TrigEMClusters_Electrons_GSFAux. +HLT_TrigEMClusters_Electrons_GSFAuxDyn.viewIndex +HLT_TrigEMClusters_Electrons_LRT +HLT_TrigEMClusters_Electrons_LRTAux. +HLT_TrigEMClusters_Electrons_LRTGSF +HLT_TrigEMClusters_Electrons_LRTGSFAux. +HLT_TrigEMClusters_Electrons_LRTGSFAuxDyn.viewIndex +HLT_TrigEMClusters_Photons +HLT_TrigEMClusters_PhotonsAux. +HLT_TrigEMClusters_PhotonsAuxDyn.viewIndex HLT_TrigTRTHTCounts HLT_TrigTRTHTCountsAux. HLT_TrigTauRecMerged_CaloMVAOnly HLT_TrigTauRecMerged_CaloMVAOnlyAux. +HLT_TrigTauRecMerged_CaloMVAOnlyAuxDyn.viewIndex HLT_TrigTauRecMerged_LLP HLT_TrigTauRecMerged_LLPAux. +HLT_TrigTauRecMerged_LLPAuxDyn.viewIndex +HLT_TrigTauRecMerged_LRT +HLT_TrigTauRecMerged_LRTAux. HLT_TrigTauRecMerged_MVA HLT_TrigTauRecMerged_MVAAux. +HLT_TrigTauRecMerged_MVAAuxDyn.viewIndex HLT_TrigVSITrkPair HLT_TrigVSITrkPairAux. HLT_TrigVSIVertex @@ -676,37 +1417,92 @@ HLT_TrigVSI_VtxCountAux. HLT_cTAURoIs HLT_dEdxTrk HLT_dEdxTrkAux. +HLT_dEdxTrkAuxDyn.dEdxTrk_a0beam +HLT_dEdxTrkAuxDyn.dEdxTrk_dedx +HLT_dEdxTrkAuxDyn.dEdxTrk_dedx_n_usedhits +HLT_dEdxTrkAuxDyn.dEdxTrk_eta +HLT_dEdxTrkAuxDyn.dEdxTrk_id +HLT_dEdxTrkAuxDyn.dEdxTrk_n_hits_inner +HLT_dEdxTrkAuxDyn.dEdxTrk_n_hits_innermost +HLT_dEdxTrkAuxDyn.dEdxTrk_n_hits_pix +HLT_dEdxTrkAuxDyn.dEdxTrk_n_hits_sct +HLT_dEdxTrkAuxDyn.dEdxTrk_phi +HLT_dEdxTrkAuxDyn.dEdxTrk_pt HLT_eEMRoIs HLT_eTAURoIs HLT_egamma_Electrons HLT_egamma_ElectronsAux. +HLT_egamma_ElectronsAuxDyn.cl_eta2 +HLT_egamma_ElectronsAuxDyn.cl_phi2 +HLT_egamma_ElectronsAuxDyn.deltaEta1PearDistortion +HLT_egamma_ElectronsAuxDyn.ptcone20 +HLT_egamma_ElectronsAuxDyn.ptcone30 +HLT_egamma_ElectronsAuxDyn.ptvarcone20 +HLT_egamma_ElectronsAuxDyn.ptvarcone30 +HLT_egamma_ElectronsAuxDyn.trk_d0 +HLT_egamma_ElectronsAuxDyn.viewIndex HLT_egamma_Electrons_GSF HLT_egamma_Electrons_GSFAux. +HLT_egamma_Electrons_GSFAuxDyn.cl_eta2 +HLT_egamma_Electrons_GSFAuxDyn.cl_phi2 +HLT_egamma_Electrons_GSFAuxDyn.deltaEta1PearDistortion +HLT_egamma_Electrons_GSFAuxDyn.ptcone20 +HLT_egamma_Electrons_GSFAuxDyn.ptcone30 +HLT_egamma_Electrons_GSFAuxDyn.ptvarcone20 +HLT_egamma_Electrons_GSFAuxDyn.ptvarcone30 +HLT_egamma_Electrons_GSFAuxDyn.trk_d0 +HLT_egamma_Electrons_GSFAuxDyn.viewIndex HLT_egamma_Electrons_LRT HLT_egamma_Electrons_LRTAux. HLT_egamma_Electrons_LRTGSF HLT_egamma_Electrons_LRTGSFAux. +HLT_egamma_Electrons_LRTGSFAuxDyn.cl_eta2 +HLT_egamma_Electrons_LRTGSFAuxDyn.cl_phi2 +HLT_egamma_Electrons_LRTGSFAuxDyn.deltaEta1PearDistortion +HLT_egamma_Electrons_LRTGSFAuxDyn.ptcone20 +HLT_egamma_Electrons_LRTGSFAuxDyn.ptcone30 +HLT_egamma_Electrons_LRTGSFAuxDyn.ptvarcone20 +HLT_egamma_Electrons_LRTGSFAuxDyn.ptvarcone30 +HLT_egamma_Electrons_LRTGSFAuxDyn.trk_d0 +HLT_egamma_Electrons_LRTGSFAuxDyn.viewIndex HLT_egamma_Photons HLT_egamma_PhotonsAux. +HLT_egamma_PhotonsAuxDyn.topoetcone20 +HLT_egamma_PhotonsAuxDyn.viewIndex HLT_gJRoIs HLT_gLJRoIs +HLT_jEMRoIs HLT_jJRoIs HLT_jLJRoIs HLT_jTAURoIs HLT_jet_seed HLT_jet_seedAux. +HLT_jet_seedAuxDyn.viewIndex HLT_tautrack_LLP HLT_tautrack_LLPAux. +HLT_tautrack_LLPAuxDyn.d0SigTJVA +HLT_tautrack_LLPAuxDyn.d0TJVA +HLT_tautrack_LLPAuxDyn.viewIndex +HLT_tautrack_LLPAuxDyn.z0sinthetaSigTJVA +HLT_tautrack_LLPAuxDyn.z0sinthetaTJVA +HLT_tautrack_LRT +HLT_tautrack_LRTAux. HLT_tautrack_MVA HLT_tautrack_MVAAux. +HLT_tautrack_MVAAuxDyn.d0SigTJVA +HLT_tautrack_MVAAuxDyn.d0TJVA +HLT_tautrack_MVAAuxDyn.viewIndex +HLT_tautrack_MVAAuxDyn.z0sinthetaSigTJVA +HLT_tautrack_MVAAuxDyn.z0sinthetaTJVA HLT_vtx_z HLT_vtx_zAux. -HLT_vtx_zAuxDyn.viewIndex -HLT_vtx_zAuxDyn.zfinder_tool -HLT_vtx_zAuxDyn.zfinder_vtx_weight -HLT_vtx_zAuxDyn.zfinder_vtx_z InDetDisappearingTrackParticles InDetDisappearingTrackParticlesAux. +InDetDisappearingTrackParticlesAuxDyn.TRTdEdx +InDetDisappearingTrackParticlesAuxDyn.TRTdEdxUsedHits +InDetDisappearingTrackParticlesAuxDyn.eProbabilityNN +InDetDisappearingTrackParticlesAuxDyn.nBC_meas +InDetDisappearingTrackParticlesAuxDyn.trackLink InDetForwardTrackParticles InDetForwardTrackParticlesAux. InDetForwardTrackParticlesAuxDyn.TRTdEdx @@ -819,12 +1615,22 @@ L1_gFexSRJetRoI L1_gFexSRJetRoIAux. L1_gMETComponentsJwoj L1_gMETComponentsJwojAux. +L1_gMETComponentsNoiseCut +L1_gMETComponentsNoiseCutAux. +L1_gMETComponentsRms +L1_gMETComponentsRmsAux. L1_gMHTComponentsJwoj L1_gMHTComponentsJwojAux. L1_gMSTComponentsJwoj L1_gMSTComponentsJwojAux. L1_gScalarEJwoj L1_gScalarEJwojAux. +L1_gScalarENoiseCut +L1_gScalarENoiseCutAux. +L1_gScalarERms +L1_gScalarERmsAux. +L1_jFexFwdElRoI +L1_jFexFwdElRoIAux. L1_jFexLRJetRoI L1_jFexLRJetRoIAux. L1_jFexMETRoI @@ -1043,6 +1849,33 @@ MuonsAuxDyn.topoetconecoreConeEnergyCorrection MuonsAuxDyn.z0_staco MuonsLRT MuonsLRTAux. +MuonsLRTAuxDyn.CT_EL_Type +MuonsLRTAuxDyn.CT_ET_FSRCandidateEnergy +MuonsLRTAuxDyn.ET_Core +MuonsLRTAuxDyn.ET_EMCore +MuonsLRTAuxDyn.ET_HECCore +MuonsLRTAuxDyn.ET_TileCore +MuonsLRTAuxDyn.FSR_CandidateEnergy +MuonsLRTAuxDyn.combinedTrackOutBoundsPrecisionHits +MuonsLRTAuxDyn.d0_staco +MuonsLRTAuxDyn.extendedClosePrecisionHits +MuonsLRTAuxDyn.extendedOutBoundsPrecisionHits +MuonsLRTAuxDyn.innerClosePrecisionHits +MuonsLRTAuxDyn.innerOutBoundsPrecisionHits +MuonsLRTAuxDyn.isEndcapGoodLayers +MuonsLRTAuxDyn.isSmallGoodSectors +MuonsLRTAuxDyn.middleClosePrecisionHits +MuonsLRTAuxDyn.middleOutBoundsPrecisionHits +MuonsLRTAuxDyn.nUnspoiledCscHits +MuonsLRTAuxDyn.numEnergyLossPerTrack +MuonsLRTAuxDyn.numberOfGoodPrecisionLayers +MuonsLRTAuxDyn.outerClosePrecisionHits +MuonsLRTAuxDyn.outerOutBoundsPrecisionHits +MuonsLRTAuxDyn.phi0_staco +MuonsLRTAuxDyn.qOverPErr_staco +MuonsLRTAuxDyn.qOverP_staco +MuonsLRTAuxDyn.theta_staco +MuonsLRTAuxDyn.z0_staco NeutralParticleFlowIsoCentralEventShape NeutralParticleFlowIsoCentralEventShapeAux. NeutralParticleFlowIsoCentralEventShapeAuxDyn.Density @@ -1095,10 +1928,55 @@ PrimaryVerticesAuxDyn.sumPt2 RunNumber SlowMuons SlowMuonsAux. +SlowMuonsAuxDyn.hitEnergy +SlowMuonsAuxDyn.hitError +SlowMuonsAuxDyn.hitIdentifier +SlowMuonsAuxDyn.hitPositionX +SlowMuonsAuxDyn.hitPositionY +SlowMuonsAuxDyn.hitPositionZ +SlowMuonsAuxDyn.hitPropagationTime +SlowMuonsAuxDyn.hitShift +SlowMuonsAuxDyn.hitTOF +SlowMuonsAuxDyn.hitTechnology StauSegments StauSegmentsAux. +StauSegmentsAuxDyn.N_MicromegaEtaHits +StauSegmentsAuxDyn.N_MicromegaStereoHits +StauSegmentsAuxDyn.N_StgcEtaHits +StauSegmentsAuxDyn.N_StgcPhiHits +StauSegmentsAuxDyn.clusterTime +StauSegmentsAuxDyn.clusterTimeError +StauSegmentsAuxDyn.clusterTimeValid +StauSegmentsAuxDyn.muonSegment Staus StausAux. +StausAuxDyn.CT_EL_Type +StausAuxDyn.CT_ET_FSRCandidateEnergy +StausAuxDyn.ET_Core +StausAuxDyn.ET_EMCore +StausAuxDyn.ET_HECCore +StausAuxDyn.ET_TileCore +StausAuxDyn.FSR_CandidateEnergy +StausAuxDyn.combinedTrackOutBoundsPrecisionHits +StausAuxDyn.d0_staco +StausAuxDyn.extendedClosePrecisionHits +StausAuxDyn.extendedOutBoundsPrecisionHits +StausAuxDyn.innerClosePrecisionHits +StausAuxDyn.innerOutBoundsPrecisionHits +StausAuxDyn.isEndcapGoodLayers +StausAuxDyn.isSmallGoodSectors +StausAuxDyn.middleClosePrecisionHits +StausAuxDyn.middleOutBoundsPrecisionHits +StausAuxDyn.nUnspoiledCscHits +StausAuxDyn.numEnergyLossPerTrack +StausAuxDyn.numberOfGoodPrecisionLayers +StausAuxDyn.outerClosePrecisionHits +StausAuxDyn.outerOutBoundsPrecisionHits +StausAuxDyn.phi0_staco +StausAuxDyn.qOverPErr_staco +StausAuxDyn.qOverP_staco +StausAuxDyn.theta_staco +StausAuxDyn.z0_staco StreamAOD SuspectLumiBlocks SuspectLumiBlocksAux. @@ -1292,5 +2170,13 @@ egammaClusters_links index_ref xAODNSWSegments xAODNSWSegmentsAux. +xAODNSWSegmentsAuxDyn.N_MicromegaEtaHits +xAODNSWSegmentsAuxDyn.N_MicromegaStereoHits +xAODNSWSegmentsAuxDyn.N_StgcEtaHits +xAODNSWSegmentsAuxDyn.N_StgcPhiHits +xAODNSWSegmentsAuxDyn.clusterTime +xAODNSWSegmentsAuxDyn.clusterTimeError +xAODNSWSegmentsAuxDyn.clusterTimeValid +xAODNSWSegmentsAuxDyn.muonSegment xTrigDecision xTrigDecisionAux. diff --git a/Tools/PROCTools/data/q449_AOD_digest.ref b/Tools/PROCTools/data/q449_AOD_digest.ref index ea7b50826839e5cc35477daa12bd67a1077f1981..87df8cd269abe5c68ecdda92c94a1c19f79670fa 100644 --- a/Tools/PROCTools/data/q449_AOD_digest.ref +++ b/Tools/PROCTools/data/q449_AOD_digest.ref @@ -1,210 +1,101 @@ run event nTopo nIdTracks nTauTracks nTaus nMuons nElec nTrueElec nFakeElec nPhot nTruePhot nFakePhot - 424070 2381606 9 0 0 0 0 0 0 0 0 0 0 - 424070 2381837 113 9 0 0 0 0 0 0 0 0 0 - 424070 2382051 97 20 0 0 0 0 0 0 0 0 0 - 424070 2382831 9 0 0 0 0 0 0 0 0 0 0 - 424070 2382840 5 0 0 0 0 0 0 0 0 0 0 - 424070 2383072 9 0 0 0 0 0 0 0 0 0 0 - 424070 2384142 10 0 0 0 0 0 0 0 0 0 0 - 424070 2384525 69 3 0 0 0 0 0 0 0 0 0 - 424070 2385283 12 0 0 0 0 0 0 0 0 0 0 - 424070 2386394 10 0 0 0 0 0 0 0 0 0 0 - 424070 2387991 6 0 0 0 0 0 0 0 0 0 0 - 424070 2388535 7 0 0 0 0 0 0 0 0 0 0 - 424070 2388923 14 0 0 0 0 0 0 0 0 0 0 - 424070 2389236 10 0 0 0 0 0 0 0 0 0 0 - 424070 2389384 39 0 0 0 0 0 0 0 0 0 0 - 424070 2389498 9 0 0 0 0 0 0 0 0 0 0 - 424070 2389551 11 0 0 0 0 0 0 0 0 0 0 - 424070 2389854 9 0 0 0 0 0 0 0 0 0 0 - 424070 2390043 7 0 0 0 0 0 0 0 0 0 0 - 424070 2390759 11 0 0 0 0 0 0 0 0 0 0 - 424070 2390913 58 9 0 0 0 0 0 0 1 0 1 - 424070 2390944 9 0 0 0 0 0 0 0 0 0 0 - 424070 2391011 9 0 0 0 0 0 0 0 0 0 0 - 424070 2391204 16 0 0 0 0 0 0 0 0 0 0 - 424070 2391435 7 0 0 0 0 0 0 0 0 0 0 - 424070 2391578 11 0 0 0 0 0 0 0 0 0 0 - 424070 2391877 83 11 0 0 0 0 0 0 0 0 0 - 424070 2391954 10 0 0 0 0 0 0 0 0 0 0 - 424070 2392030 17 0 0 0 0 0 0 0 0 0 0 - 424070 2392285 7 0 0 0 0 0 0 0 0 0 0 - 424070 2393543 10 0 0 0 0 0 0 0 0 0 0 - 424070 2394020 121 11 0 0 0 0 0 0 0 0 0 - 424070 2394402 10 0 0 0 0 0 0 0 0 0 0 - 424070 2394484 6 0 0 0 0 0 0 0 0 0 0 - 424070 2394518 8 0 0 0 1 0 0 0 0 0 0 - 424070 2395133 17 0 0 0 0 0 0 0 0 0 0 - 424070 2396126 10 0 0 0 0 0 0 0 0 0 0 - 424070 2396547 94 14 1 1 0 0 0 0 1 0 1 - 424070 2396930 49 4 0 0 0 0 0 0 0 0 0 - 424070 2397091 8 0 0 0 0 0 0 0 0 0 0 - 424070 2397735 9 0 0 0 0 0 0 0 0 0 0 - 424070 2398065 12 0 0 0 0 0 0 0 0 0 0 - 424070 2398150 13 0 0 0 0 0 0 0 0 0 0 - 424070 2398288 108 16 6 2 0 1 0 1 4 0 4 - 424070 2398603 95 15 5 2 0 2 0 2 3 0 3 - 424070 2399196 6 0 0 0 0 0 0 0 0 0 0 - 424070 2399243 7 0 0 0 0 0 0 0 0 0 0 - 424070 2399304 54 1 0 0 0 0 0 0 0 0 0 - 424070 2400375 13 0 0 0 0 0 0 0 0 0 0 - 424070 2400479 5 0 0 0 0 0 0 0 0 0 0 - 424070 2401474 10 0 0 0 0 0 0 0 0 0 0 - 424070 2402046 14 0 0 0 0 0 0 0 0 0 0 - 424070 2402407 63 2 0 0 0 0 0 0 0 0 0 - 424070 2403353 12 0 0 0 0 0 0 0 0 0 0 - 424070 2403400 12 0 0 0 0 0 0 0 0 0 0 - 424070 2403832 45 1 0 1 0 0 0 0 0 0 0 - 424070 2403962 7 0 0 0 0 0 0 0 0 0 0 - 424070 2404425 12 0 0 0 0 0 0 0 0 0 0 - 424070 2405320 12 0 0 1 0 0 0 0 0 0 0 - 424070 2405370 13 0 0 0 0 0 0 0 0 0 0 - 424070 2405729 8 0 0 0 0 0 0 0 0 0 0 - 424070 2405978 135 22 11 2 0 2 0 2 4 0 4 - 424070 2406779 8 0 0 0 0 0 0 0 0 0 0 - 424070 2407001 88 8 0 0 0 0 0 0 0 0 0 - 424070 2407459 6 0 0 0 0 0 0 0 0 0 0 - 424070 2408234 10 0 0 0 0 0 0 0 0 0 0 - 424070 2408348 9 0 0 0 0 0 0 0 0 0 0 - 424070 2408448 107 5 0 0 0 0 0 0 1 0 1 - 424070 2409115 14 0 0 0 0 0 0 0 0 0 0 - 424070 2409712 128 21 0 0 1 0 0 0 1 0 1 - 424070 2410284 6 0 0 0 0 0 0 0 0 0 0 - 424070 2410471 50 4 0 0 0 0 0 0 0 0 0 - 424070 2411052 7 0 0 0 0 0 0 0 0 0 0 - 424070 2411134 15 0 0 0 0 0 0 0 0 0 0 - 424070 2411172 15 0 0 0 0 0 0 0 0 0 0 - 424070 2411306 13 0 0 0 0 0 0 0 0 0 0 - 424070 2411876 11 0 0 0 0 0 0 0 0 0 0 - 424070 2412570 6 0 0 0 0 0 0 0 0 0 0 - 424070 2412668 56 0 0 0 0 0 0 0 0 0 0 - 424070 2412813 11 0 0 1 0 0 0 0 2 0 2 - 424070 2412936 54 2 0 0 0 0 0 0 0 0 0 - 424070 2413677 8 0 0 0 0 0 0 0 0 0 0 - 424070 2413764 7 0 0 0 0 0 0 0 0 0 0 - 424070 2415056 9 0 0 0 0 0 0 0 0 0 0 - 424070 2415220 35 1 0 0 0 0 0 0 0 0 0 - 424070 2415224 10 0 0 0 0 0 0 0 0 0 0 - 424070 2415758 82 3 0 0 0 0 0 0 0 0 0 - 424070 2416469 9 0 0 0 0 0 0 0 0 0 0 - 424070 2416587 65 0 0 0 0 0 0 0 0 0 0 - 424070 2416892 9 0 0 0 0 0 0 0 0 0 0 - 424070 2417623 10 0 0 0 0 0 0 0 0 0 0 - 424070 2419363 6 0 0 0 0 0 0 0 0 0 0 - 424070 2419418 61 9 0 0 0 0 0 0 0 0 0 - 424070 2419542 106 9 0 0 0 0 0 0 0 0 0 - 424070 2419545 5 0 0 0 0 0 0 0 0 0 0 - 424070 2419613 6 0 0 0 0 0 0 0 0 0 0 - 424070 2420170 9 0 0 0 0 0 0 0 0 0 0 - 424070 2420710 6 0 0 0 0 0 0 0 0 0 0 - 424070 2420920 7 0 0 0 0 0 0 0 0 0 0 - 424070 2421137 9 0 0 0 0 0 0 0 0 0 0 - 424070 2421638 111 5 0 0 0 0 0 0 0 0 0 - 424070 2422746 65 0 0 0 0 0 0 0 0 0 0 - 424070 2422920 95 6 0 0 0 0 0 0 0 0 0 - 424070 2423491 10 0 0 0 0 0 0 0 0 0 0 - 424070 2423940 7 0 0 0 0 0 0 0 0 0 0 - 424070 2424014 30 2 0 0 0 0 0 0 0 0 0 - 424070 2424206 9 0 0 0 0 0 0 0 0 0 0 - 424070 2424571 130 16 1 1 0 1 0 1 3 0 3 - 424070 2424650 6 0 0 0 0 0 0 0 0 0 0 - 424070 2425269 70 6 0 0 0 0 0 0 0 0 0 - 424070 2425354 112 8 0 0 0 0 0 0 0 0 0 - 424070 2426068 6 0 0 0 0 0 0 0 0 0 0 - 424070 2427662 54 5 0 0 0 0 0 0 0 0 0 - 424070 2427988 17 0 0 0 0 0 0 0 0 0 0 - 424070 2428473 75 8 0 0 0 0 0 0 0 0 0 - 424070 2428766 6 0 0 0 0 0 0 0 0 0 0 - 424070 2428776 6 0 0 0 0 0 0 0 0 0 0 - 424070 2430614 3 0 0 0 0 0 0 0 0 0 0 - 424070 2431185 34 1 0 0 0 0 0 0 0 0 0 - 424070 2431345 12 0 0 1 0 0 0 0 0 0 0 - 424070 2431428 6 0 0 0 0 0 0 0 0 0 0 - 424070 2431696 6 0 0 0 0 0 0 0 0 0 0 - 424070 2431845 96 3 0 0 0 0 0 0 0 0 0 - 424070 2431890 8 0 0 0 0 0 0 0 0 0 0 - 424070 2431928 8 0 0 0 0 0 0 0 0 0 0 - 424070 2432844 256 34 0 0 0 0 0 0 0 0 0 - 424070 2433227 10 0 0 0 0 0 0 0 0 0 0 - 424070 2433922 11 0 0 0 0 0 0 0 0 0 0 - 424070 2434306 8 0 0 0 0 0 0 0 0 0 0 - 424070 2434314 3 0 0 0 0 0 0 0 0 0 0 - 424070 2435594 12 0 0 0 0 0 0 0 0 0 0 - 424070 2435642 6 0 0 0 0 0 0 0 0 0 0 - 424070 2435729 62 0 0 1 0 0 0 0 2 0 2 - 424070 2436678 79 5 0 0 0 0 0 0 0 0 0 - 424070 2436750 22 0 0 0 0 0 0 0 0 0 0 - 424070 2437211 59 1 0 0 0 0 0 0 0 0 0 - 424070 2437213 6 0 0 0 0 0 0 0 0 0 0 - 424070 2437345 8 0 0 0 0 0 0 0 0 0 0 - 424070 2437765 11 0 0 0 1 0 0 0 0 0 0 - 424070 2438391 7 0 0 0 0 0 0 0 0 0 0 - 424070 2438834 7 0 0 0 0 0 0 0 0 0 0 - 424070 2439011 7 0 0 0 0 0 0 0 0 0 0 - 424070 2439750 15 0 0 0 0 0 0 0 0 0 0 - 424070 2440097 11 0 0 0 0 0 0 0 0 0 0 - 424070 2440776 94 11 0 0 0 0 0 0 0 0 0 - 424070 2440904 7 0 0 0 0 0 0 0 0 0 0 - 424070 2441024 140 19 1 1 0 0 0 0 1 0 1 - 424070 2441795 12 0 0 0 0 0 0 0 0 0 0 - 424070 2441995 12 0 0 0 1 0 0 0 0 0 0 - 424070 2442573 64 0 0 0 0 0 0 0 0 0 0 - 424070 2442589 13 0 0 1 0 0 0 0 1 0 1 - 424070 2443549 16 0 0 0 0 0 0 0 0 0 0 - 424070 2443556 9 0 0 1 0 0 0 0 0 0 0 - 424070 2443626 16 0 0 0 0 0 0 0 0 0 0 - 424070 2444618 138 18 1 1 0 0 0 0 1 0 1 - 424070 2446871 12 0 0 0 0 0 0 0 0 0 0 - 424070 2447130 11 0 0 0 0 0 0 0 0 0 0 - 424070 2447328 10 0 0 0 0 0 0 0 0 0 0 - 424070 2447353 6 0 0 0 0 0 0 0 0 0 0 - 424070 2447367 7 0 0 0 0 0 0 0 0 0 0 - 424070 2448247 12 0 0 0 0 0 0 0 0 0 0 - 424070 2448360 57 3 0 0 0 0 0 0 0 0 0 - 424070 2448883 78 6 0 0 0 0 0 0 0 0 0 - 424070 2448940 7 0 0 0 0 0 0 0 0 0 0 - 424070 2448976 88 17 3 1 0 1 0 1 3 0 3 - 424070 2449430 11 0 0 0 0 0 0 0 0 0 0 - 424070 2449769 11 0 0 0 0 0 0 0 0 0 0 - 424070 2449788 14 0 0 0 0 0 0 0 0 0 0 - 424070 2449955 81 16 5 1 0 1 0 1 1 0 1 - 424070 2450521 11 0 0 0 0 0 0 0 0 0 0 - 424070 2450659 12 0 0 0 0 0 0 0 0 0 0 - 424070 2451059 31 1 0 0 0 0 0 0 0 0 0 - 424070 2451260 10 0 0 0 0 0 0 0 0 0 0 - 424070 2451529 11 0 0 0 1 0 0 0 0 0 0 - 424070 2452224 8 0 0 0 0 0 0 0 0 0 0 - 424070 2452441 6 0 0 0 0 0 0 0 0 0 0 - 424070 2452897 89 14 0 0 0 0 0 0 0 0 0 - 424070 2453229 173 32 4 2 0 0 0 0 3 0 3 - 424070 2453608 12 0 0 0 0 0 0 0 0 0 0 - 424070 2454047 8 0 0 0 0 0 0 0 0 0 0 - 424070 2454861 8 0 0 0 0 0 0 0 0 0 0 - 424070 2455315 117 15 0 0 0 0 0 0 0 0 0 - 424070 2455686 86 5 0 0 0 0 0 0 0 0 0 - 424070 2456121 8 0 0 0 0 0 0 0 0 0 0 - 424070 2456312 119 11 7 3 0 1 0 1 3 0 3 - 424070 2456614 106 12 1 2 0 0 0 0 2 0 2 - 424070 2457668 13 0 0 0 0 0 0 0 0 0 0 - 424070 2457699 48 2 0 0 0 0 0 0 0 0 0 - 424070 2458945 8 0 0 0 0 0 0 0 0 0 0 - 424070 2459032 14 0 0 0 0 0 0 0 0 0 0 - 424070 2459763 9 0 0 0 0 0 0 0 0 0 0 - 424070 2459878 11 0 0 0 0 0 0 0 0 0 0 - 424070 2459991 6 0 0 0 0 0 0 0 0 0 0 - 424070 2460060 10 0 0 0 0 0 0 0 0 0 0 - 424070 2460367 34 4 0 0 0 0 0 0 0 0 0 - 424070 2460989 31 3 0 0 0 0 0 0 0 0 0 - 424070 2461729 13 0 0 0 0 0 0 0 0 0 0 - 424070 2462293 6 0 0 0 0 0 0 0 0 0 0 - 424070 2462710 8 0 0 0 0 0 0 0 0 0 0 - 424070 2464549 43 0 0 0 0 0 0 0 0 0 0 - 424070 2464609 7 0 0 0 0 0 0 0 0 0 0 - 424070 2465388 8 0 0 0 0 0 0 0 0 0 0 - 424070 2465983 11 0 0 0 0 0 0 0 0 0 0 - 424070 2466194 6 0 0 0 0 0 0 0 0 0 0 - 424070 2466354 9 0 0 0 0 0 0 0 0 0 0 - 424070 2467307 9 0 0 0 0 0 0 0 0 0 0 - 424070 2467473 122 10 0 0 0 0 0 0 0 0 0 - 424070 2467656 9 0 0 0 0 0 0 0 0 0 0 - 424070 2467808 8 0 0 0 0 0 0 0 0 0 0 + 431493 1096110158 315 445 75 5 1 15 0 15 13 0 13 + 431493 1096111916 301 319 49 6 0 10 0 10 15 0 15 + 431493 1096112143 278 389 37 3 0 1 0 1 2 0 2 + 431493 1096113011 375 400 75 9 0 9 0 9 12 0 12 + 431493 1096113187 286 317 64 7 1 8 0 8 14 0 14 + 431493 1096113771 301 401 72 6 0 10 0 10 12 0 12 + 431493 1096114154 365 566 81 6 1 7 0 7 17 0 17 + 431493 1096114168 138 153 25 5 0 2 0 2 6 0 6 + 431493 1096115980 399 521 149 13 0 21 0 21 22 0 22 + 431493 1096116200 317 407 35 4 1 4 0 4 12 0 12 + 431493 1096118782 298 354 87 6 1 11 0 11 23 0 23 + 431493 1096119418 318 340 83 5 0 5 0 5 9 0 9 + 431493 1096119460 238 312 4 1 0 2 0 2 6 0 6 + 431493 1096120001 392 576 118 8 0 14 0 14 19 0 19 + 431493 1096122174 306 412 71 8 0 5 0 5 24 0 24 + 431493 1096123090 433 539 144 10 0 20 0 20 29 0 29 + 431493 1096123254 488 681 131 9 1 14 0 14 27 0 27 + 431493 1096123504 273 339 48 4 0 8 0 8 11 0 11 + 431493 1096125003 357 450 84 7 0 10 0 10 17 0 17 + 431493 1096125237 366 492 74 6 2 8 0 8 15 0 15 + 431493 1096125348 308 346 64 6 1 8 0 8 10 0 10 + 431493 1096125522 264 303 56 8 1 7 0 7 17 0 17 + 431493 1096127413 405 576 95 6 1 9 0 9 23 0 23 + 431493 1096127722 222 418 54 7 1 7 0 7 7 0 7 + 431493 1096128475 171 251 31 5 0 1 0 1 11 0 11 + 431493 1096128958 310 361 88 8 0 14 0 14 23 0 23 + 431493 1096129516 311 433 15 2 1 2 0 2 12 0 12 + 431493 1096130319 331 517 72 5 0 11 0 11 15 0 15 + 431493 1096130794 349 449 105 7 2 15 0 15 20 0 20 + 431493 1096131620 409 575 122 9 0 14 0 14 27 0 27 + 431493 1096131904 334 439 78 8 0 12 0 12 9 0 9 + 431493 1096132044 285 303 19 3 1 2 0 2 9 0 9 + 431493 1096132412 341 387 85 9 2 5 0 5 12 0 12 + 431493 1096132653 351 371 65 9 0 7 0 7 15 0 15 + 431493 1096133511 1 0 0 0 0 0 0 0 0 0 0 + 431493 1096133828 290 376 81 6 3 14 0 14 11 0 11 + 431493 1096134918 637 930 294 14 1 19 0 19 35 0 35 + 431493 1096137274 263 281 30 4 1 5 0 5 8 0 8 + 431493 1096137322 426 584 113 8 0 4 0 4 9 0 9 + 431493 1096137395 367 431 51 5 0 5 0 5 11 0 11 + 431493 1096137906 167 179 20 4 2 5 0 5 7 0 7 + 431493 1096139648 234 203 28 5 3 2 0 2 7 0 7 + 431493 1096139847 253 367 27 4 2 1 0 1 7 0 7 + 431493 1096142414 371 507 125 9 1 7 0 7 23 0 23 + 431493 1096143027 413 500 66 8 2 3 0 3 11 0 11 + 431493 1096144036 273 343 65 5 0 12 0 12 14 0 14 + 431493 1096145110 249 258 18 2 0 4 0 4 8 0 8 + 431493 1096146639 287 417 62 5 0 3 0 3 18 0 18 + 431493 1096146735 325 376 97 10 2 20 0 20 26 0 26 + 431493 1096147568 399 601 45 4 2 4 0 4 14 0 14 + 431493 1096150983 281 318 44 7 0 2 0 2 14 0 14 + 431493 1096152978 372 501 85 8 3 9 0 9 12 0 12 + 431493 1096153967 550 658 68 7 3 7 0 7 33 0 33 + 431493 1096155046 246 372 29 4 1 1 0 1 3 0 3 + 431493 1096155387 337 483 67 7 1 7 0 7 15 0 15 + 431493 1096155429 382 453 97 9 1 7 0 7 18 0 18 + 431493 1096155463 363 460 70 6 0 4 0 4 14 0 14 + 431493 1096156230 356 451 86 6 0 10 0 10 15 0 15 + 431493 1096157777 255 357 52 5 1 2 0 2 10 0 10 + 431493 1096159760 378 459 47 4 0 7 0 7 15 0 15 + 431493 1096159903 238 277 59 8 0 9 0 9 14 0 14 + 431493 1096160558 256 365 47 4 0 2 0 2 11 0 11 + 431493 1096161183 249 316 60 5 0 12 0 12 9 0 9 + 431493 1096162191 356 390 15 2 2 1 0 1 8 0 8 + 431493 1096163035 354 446 116 9 0 15 0 15 25 0 25 + 431493 1096163900 336 461 62 6 0 12 0 12 19 0 19 + 431493 1096164842 312 435 53 6 1 3 0 3 9 0 9 + 431493 1096167556 341 426 75 7 2 9 0 9 13 0 13 + 431493 1096168429 311 412 95 8 0 6 0 6 9 0 9 + 431493 1096171532 354 415 87 9 0 13 0 13 14 0 14 + 431493 1096171788 314 441 58 4 0 7 0 7 12 0 12 + 431493 1096171838 423 603 129 9 1 10 0 10 24 0 24 + 431493 1096173554 322 423 52 6 1 4 0 4 9 0 9 + 431493 1096173910 365 569 74 6 1 11 0 11 12 0 12 + 431493 1096176781 374 441 95 11 1 11 0 11 24 0 24 + 431493 1096177006 315 384 39 4 0 7 0 7 11 0 11 + 431493 1096177862 261 284 13 2 0 2 0 2 13 0 13 + 431493 1096177918 381 497 75 5 1 7 0 7 13 0 13 + 431493 1096178101 370 437 27 3 0 1 0 1 11 0 11 + 431493 1096178859 355 362 43 6 2 7 0 7 14 0 14 + 431493 1096180059 387 437 34 4 1 2 0 2 22 0 22 + 431493 1096181059 230 262 34 4 1 6 0 6 10 0 10 + 431493 1096181128 370 556 91 9 1 6 0 6 14 0 14 + 431493 1096182354 315 314 51 4 1 13 0 13 17 0 17 + 431493 1096182555 247 356 57 7 0 6 0 6 10 0 10 + 431493 1096183473 223 254 49 5 0 13 0 13 9 0 9 + 431493 1096184610 387 420 89 6 1 17 0 17 10 0 10 + 431493 1096185473 346 478 62 5 0 9 0 9 14 0 14 + 431493 1096188650 207 289 35 3 0 5 0 5 12 0 12 + 431493 1096190892 296 396 77 6 0 6 0 6 11 0 11 + 431493 1096191815 275 350 47 5 1 6 0 6 16 0 16 + 431493 1096194353 316 450 65 6 1 9 0 9 11 0 11 + 431493 1096199978 282 444 91 8 0 9 0 9 12 0 12 + 431493 1096205163 244 317 39 3 0 4 0 4 13 0 13 + 431493 1096207298 400 462 48 4 0 2 0 2 16 0 16 + 431493 1096209204 412 546 76 9 0 9 0 9 20 0 20 + 431493 1096211915 345 371 70 8 0 7 0 7 18 0 18 + 431493 1096218966 309 392 16 2 1 4 0 4 11 0 11 + 431493 1096226529 330 398 101 10 0 11 0 11 14 0 14 + 431493 1096229568 186 244 57 8 1 5 0 5 16 0 16 diff --git a/Tools/PyJobTransforms/python/trfExe.py b/Tools/PyJobTransforms/python/trfExe.py index ad93d97953b85b1af27328385a4ae46ee4420da9..6e79751054745ecca39da8642994aedaedde81a4 100755 --- a/Tools/PyJobTransforms/python/trfExe.py +++ b/Tools/PyJobTransforms/python/trfExe.py @@ -191,9 +191,9 @@ class transformExecutor(object): self._memLeakResult = {} self._memFullFile = None self._eventCount = None - self._athenaMP = None - self._athenaMT = None - self._athenaConcurrentEvents = None + self._athenaMP = 0 + self._athenaMT = 0 + self._athenaConcurrentEvents = 0 self._dbMonitor = None self._resimevents = None @@ -1014,26 +1014,20 @@ class athenaExecutor(scriptExecutor): ('ATHENA_CORE_NUMBER' not in os.environ)): # At least one of the parallel command-line flags has been provided but ATHENA_CORE_NUMBER environment has not been set msg.warning('either --multithreaded or --multiprocess argument used but ATHENA_CORE_NUMBER environment not set. Athena will continue in Serial mode') - self._athenaMP = 0 - self._athenaMT = 0 - self._athenaConcurrentEvents = 0 else: # Try to detect AthenaMT mode, number of threads and number of concurrent events - if self._disableMT: - self._athenaMT = 0 - else: + if not self._disableMT: self._athenaMT, self._athenaConcurrentEvents = detectAthenaMTThreads(self.conf.argdict, self.name, legacyThreadingRelease) # Try to detect AthenaMP mode and number of workers - if self._disableMP: - self._athenaMP = 0 - else: + if not self._disableMP: self._athenaMP = detectAthenaMPProcs(self.conf.argdict, self.name, legacyThreadingRelease) # Check that we actually support MT - if self._onlyMP and self._athenaMT and not self._athenaMP: + if self._onlyMP and self._athenaMT > 0: msg.info("This configuration does not support MT, falling back to MP") - self._athenaMP = self._athenaMT + if self._athenaMP == 0: + self._athenaMP = self._athenaMT self._athenaMT = 0 self._athenaConcurrentEvents = 0 @@ -1055,7 +1049,7 @@ class athenaExecutor(scriptExecutor): msg.info("Updated athena output filename for {0} to {1}".format(dataType, self.conf._dataDictionary[dataType].value[0])) # And if this is (still) athenaMP, then set some options for workers and output file report - if self._athenaMP: + if self._athenaMP > 0: self._athenaMPWorkerTopDir = 'athenaMP-workers-{0}-{1}'.format(self._name, self._substep) self._athenaMPFileReport = 'athenaMP-outputs-{0}-{1}'.format(self._name, self._substep) self._athenaMPEventOrdersFile = 'athenamp_eventorders.txt.{0}'.format(self._name) @@ -1190,14 +1184,14 @@ class athenaExecutor(scriptExecutor): # Handle executor substeps if self.conf.totalExecutorSteps > 1: - if self._athenaMP: + if self._athenaMP > 0: outputDataDictionary = dict([ (dataType, self.conf.dataDictionary[dataType]) for dataType in self._output ]) athenaMPOutputHandler(self._athenaMPFileReport, self._athenaMPWorkerTopDir, outputDataDictionary, self._athenaMP, False, self.conf.argdict) if self.conf.executorStep == self.conf.totalExecutorSteps - 1: # first loop over datasets for the output for dataType in self._output: newValue = [] - if self._athenaMP: + if self._athenaMP > 0: # assume the same number of workers all the time for i in range(self.conf.totalExecutorSteps): for v in self.conf.dataDictionary[dataType].value: @@ -1215,7 +1209,7 @@ class athenaExecutor(scriptExecutor): self._smartMerge(self.conf.dataDictionary[dataType]) # If this was an athenaMP run then we need to update output files - elif self._athenaMP: + elif self._athenaMP > 0: outputDataDictionary = dict([ (dataType, self.conf.dataDictionary[dataType]) for dataType in self._output ]) ## @note Update argFile values to have the correct outputs from the MP workers skipFileChecks=False @@ -1473,13 +1467,13 @@ class athenaExecutor(scriptExecutor): msg.info('Skipping test for "--drop-and-reload" in this executor') # For AthenaMT apply --threads=N if threads have been configured via ATHENA_CORE_NUMBER + multithreaded - if self._athenaMT != 0 and not self._disableMT: + if self._athenaMT > 0 and not self._disableMT: if not ('athenaopts' in self.conf.argdict and any('--threads' in opt for opt in self.conf.argdict['athenaopts'].value[currentSubstep])): self._cmd.append('--threads=%s' % str(self._athenaMT)) # For AthenaMP apply --nprocs=N if threads have been configured via ATHENA_CORE_NUMBER + multiprocess - if self._athenaMP != 0 and not self._disableMP: + if self._athenaMP > 0 and not self._disableMP: if not ('athenaopts' in self.conf.argdict and any('--nprocs' in opt for opt in self.conf.argdict['athenaopts'].value[currentSubstep])): self._cmd.append('--nprocs=%s' % str(self._athenaMP)) diff --git a/Tools/WorkflowTestRunner/python/References.py b/Tools/WorkflowTestRunner/python/References.py index 46056bfb67eb5881d7731a0b2ad924ec61ff0c95..e9d753bc52aa0830fdf78d2494870d8ff154bece 100644 --- a/Tools/WorkflowTestRunner/python/References.py +++ b/Tools/WorkflowTestRunner/python/References.py @@ -21,5 +21,5 @@ references_map = { # Reco "q442": "v5", "q445": "v14", - "q449": "v9", + "q449": "v10", } diff --git a/Tools/WorkflowTestRunner/python/StandardTests.py b/Tools/WorkflowTestRunner/python/StandardTests.py index 5e353136ff2c7cc326d696a55720534d7e55d261..f78d6371061165f5981409e82e962e63fab609ed 100644 --- a/Tools/WorkflowTestRunner/python/StandardTests.py +++ b/Tools/WorkflowTestRunner/python/StandardTests.py @@ -40,8 +40,8 @@ class QTest(WorkflowTest): # TODO: disable RDO comparison for now # if type == WorkflowType.MCReco: # self.output_checks.append(FrozenTier0PolicyCheck(setup, "RDO", 10)) - self.output_checks.append(FrozenTier0PolicyCheck(setup, "ESD", 10)) - self.output_checks.append(FrozenTier0PolicyCheck(setup, "AOD", 30)) + self.output_checks.append(FrozenTier0PolicyCheck(setup, "ESD", 20)) + self.output_checks.append(FrozenTier0PolicyCheck(setup, "AOD", 60)) self.digest_checks = [] if "--CA" not in extra_args: diff --git a/Trigger/TrigAlgorithms/TrigLongLivedParticles/python/TrigLongLivedParticlesConfig.py b/Trigger/TrigAlgorithms/TrigLongLivedParticles/python/TrigLongLivedParticlesConfig.py index 4c3913600c64693f227cc31a9dca5f46be3fefb5..00dc02a87834acee1d93124f8628c5c2f53dfdfb 100755 --- a/Trigger/TrigAlgorithms/TrigLongLivedParticles/python/TrigLongLivedParticlesConfig.py +++ b/Trigger/TrigAlgorithms/TrigLongLivedParticles/python/TrigLongLivedParticlesConfig.py @@ -8,8 +8,10 @@ class MuonClusterConfig(MuonCluster): super(MuonClusterConfig, self).__init__(name) from TrigLongLivedParticles.TrigLongLivedParticlesMonitoring import TrigMuonClusterAlgorithmMonitoring + from TrigEDMConfig.TriggerEDMRun3 import recordable self.MonTool = TrigMuonClusterAlgorithmMonitoring() + self.TrigRoIs_CompositeContainer = recordable("HLT_MuRoICluster_Composites") # muClu Parameters self.DeltaR = 0.4 diff --git a/Trigger/TrigAlgorithms/TrigLongLivedParticles/python/TrigLongLivedParticlesMonitoring.py b/Trigger/TrigAlgorithms/TrigLongLivedParticles/python/TrigLongLivedParticlesMonitoring.py index 4a5e220f9d377a3a3ef0d5330a0e20941b8e8fe8..ff6ebfc8c9d724fc69a208e8622963b6bb3837f0 100755 --- a/Trigger/TrigAlgorithms/TrigLongLivedParticles/python/TrigLongLivedParticlesMonitoring.py +++ b/Trigger/TrigAlgorithms/TrigLongLivedParticles/python/TrigLongLivedParticlesMonitoring.py @@ -19,6 +19,9 @@ class TrigMuonClusterAlgorithmMonitoring(GenericMonitoringTool_v1): self.defineHistogram('RoiPhi', path='EXPERT', type='TH1F', title="MuClu: Phi of all Input Muon RoIs (From Vectors); phi; nevents", xbins=32, xmin=-math.pi*1.05, xmax=math.pi*1.05) self.defineHistogram('CluPhi,CluEta', path='EXPERT', type='TH2F', title='MuClu: 2D Phi vs Eta of RoI clusters; phi; eta', xbins=128, xmin=-math.pi*1.05, xmax=math.pi*1.05, ybins=120, ymin=-3., ymax=3.) + self.defineHistogram('nL1RoIs,nRoIinClusters', path='EXPERT', type='TH2F', title='MuClu: Number of L1 RoIs vs Number of RoI in Clusters;nL1RoIs;nCluRoIs', xbins=20, xmin=0, xmax=20, ybins=20, ymin=0, ymax=20) + self.defineHistogram('nL1RoIs,nClusters', path='EXPERT', type='TH2F', title='MuClu: Number of L1 RoIs vs Number of RoI-Clusters;nL1RoIs;nClusters', xbins=20, xmin=0, xmax=20, ybins=20, ymin=0, ymax=20) + self.defineHistogram('nRoIinClusters,nClusters', path='EXPERT', type='TH2F', title='MuClu: Number of RoI in Clusters vs Number of RoI-Clusters;nCluRoIs;nClusters', xbins=20, xmin=0, xmax=20, ybins=20, ymin=0, ymax=20) self.defineHistogram('dPhiCluSeed', path='EXPERT', type='TH1F', title='MuClu: dPhi between Cluster & Seed RoI; dPhi; nClusters', xbins=64, xmin=-0.8, xmax=0.8) self.defineHistogram('dEtaCluSeed', path='EXPERT', type='TH1F', title='MuClu: dEta between Cluster & Seed RoI; dEta; nClusters', xbins=60, xmin=-1., xmax=1.) diff --git a/Trigger/TrigAlgorithms/TrigLongLivedParticles/src/MuonCluster.cxx b/Trigger/TrigAlgorithms/TrigLongLivedParticles/src/MuonCluster.cxx index 3cc0f7a57c2556a9625e00efd54a11dd3e5d744d..685cb21d9ecea040dfe4d6aa347c167e1e12bcd6 100644 --- a/Trigger/TrigAlgorithms/TrigLongLivedParticles/src/MuonCluster.cxx +++ b/Trigger/TrigAlgorithms/TrigLongLivedParticles/src/MuonCluster.cxx @@ -14,6 +14,7 @@ #include "GaudiKernel/ITHistSvc.h" #include "StoreGate/ReadHandle.h" #include "StoreGate/WriteHandle.h" +#include "StoreGate/WriteDecorHandle.h" //LVL1 ROIS #include "TrigSteeringEvent/TrigRoiDescriptor.h" @@ -55,6 +56,10 @@ StatusCode MuonCluster::initialize(){ ATH_CHECK( m_outputCompositesKey.initialize() ); ATH_CHECK( m_outputRoiDescriptorKey.initialize() ); + ATH_CHECK( m_muRoiClusEtaKey.initialize() ); + ATH_CHECK( m_muRoiClusPhiKey.initialize() ); + ATH_CHECK( m_muRoiClusNRoiKey.initialize() ); + if (!m_monTool.empty()) ATH_CHECK(m_monTool.retrieve()); ATH_MSG_INFO("initialize() success"); @@ -74,6 +79,10 @@ StatusCode MuonCluster::execute(const EventContext& ctx) const auto CluPhi = Monitored::Scalar("CluPhi", -99.); auto CluNum = Monitored::Scalar("NumRoi", 0); + auto nL1RoIs = Monitored::Scalar("nL1RoIs",-99); + auto nRoIinClusters = Monitored::Scalar("nRoIinClusters",-99); + auto nClusters = Monitored::Scalar("nClusters",-99); + auto dPhi_cluSeed = Monitored::Scalar("dPhiCluSeed", -99.); auto dEta_cluSeed = Monitored::Scalar("dEtaCluSeed", -99.); auto dR_cluSeed = Monitored::Scalar("dRCluSeed", -99.); @@ -90,6 +99,7 @@ StatusCode MuonCluster::execute(const EventContext& ctx) const auto mon = Monitored::Group(m_monTool, mon_roiEta, mon_roiPhi, CluEta, CluPhi, CluNum, + nL1RoIs, nRoIinClusters, nClusters, dPhi_cluSeed, dR_cluSeed, dEta_cluSeed, t1, t2); @@ -101,6 +111,11 @@ StatusCode MuonCluster::execute(const EventContext& ctx) const trigCompColl.record(std::make_unique(),std::make_unique()) ); + //Setup Decorator Handlers + SG::WriteDecorHandle muRoiClusEta(m_muRoiClusEtaKey, ctx); + SG::WriteDecorHandle muRoiClusPhi(m_muRoiClusPhiKey, ctx); + SG::WriteDecorHandle muRoiClusNRoi(m_muRoiClusNRoiKey, ctx); + //Setup the RoI Descriptor container we will put the MuonRoIDescriptors in SG::WriteHandle trigDescColl = TrigCompositeUtils::createAndStoreNoAux(m_outputRoiDescriptorKey, ctx); @@ -124,6 +139,8 @@ StatusCode MuonCluster::execute(const EventContext& ctx) const ATH_MSG_WARNING("Can't get any TrigRoiDescriptor from m_roiCollectionKey!"); return StatusCode::FAILURE; } else { + nL1RoIs = roiCollection->size(); + nRoIinClusters = 0; for (const TrigRoiDescriptor *roi : *roiCollection) { if(iter_cl>= kMAX_ROI) { @@ -217,7 +234,9 @@ StatusCode MuonCluster::execute(const EventContext& ctx) const // find the cluster with max number of rois int ncl_max = 0; int sel_cl = -1; + int nRoisInClu = 0; for(int i_cl=0; i_clncl_max){ CluEta = muonClu[i_cl].eta; CluPhi = muonClu[i_cl].phi; @@ -227,6 +246,8 @@ StatusCode MuonCluster::execute(const EventContext& ctx) const ATH_MSG_DEBUG(" -- ncl_max loop: i_cl = " << i_cl << " with ncl_max = " << ncl_max); } } + nRoIinClusters = nRoisInClu; + nClusters = n_cl; dPhi_cluSeed = CxxUtils::wrapToPi(muonClu0[sel_cl].phi)-CxxUtils::wrapToPi(muonClu[sel_cl].phi); dEta_cluSeed = muonClu0[sel_cl].eta-muonClu[sel_cl].eta; @@ -248,9 +269,9 @@ StatusCode MuonCluster::execute(const EventContext& ctx) const compClu->setName("Cluster"); - compClu->setDetail( "ClusterEta", static_cast(CluEta) ); - compClu->setDetail( "ClusterPhi", static_cast(CluPhi) ); - compClu->setDetail( "nRoIs", static_cast(CluNum) ); + muRoiClusEta(*compClu) = static_cast(CluEta); + muRoiClusPhi(*compClu) = static_cast(CluPhi); + muRoiClusNRoi(*compClu) = static_cast(CluNum); //create a TrigRoiDescriptor to send to ID tracking, to seed track-finding diff --git a/Trigger/TrigAlgorithms/TrigLongLivedParticles/src/MuonCluster.h b/Trigger/TrigAlgorithms/TrigLongLivedParticles/src/MuonCluster.h index 01890edab88a78f4ca82a398c222dbd4f8485cc0..46536a1a9cf3c59dc3a8dc4d006e64ceeed6a807 100644 --- a/Trigger/TrigAlgorithms/TrigLongLivedParticles/src/MuonCluster.h +++ b/Trigger/TrigAlgorithms/TrigLongLivedParticles/src/MuonCluster.h @@ -56,15 +56,30 @@ public: "input RoICollection"}; SG::WriteHandleKey m_outputCompositesKey{ this, - "TrigCompositeContainer", // property name - "HLT_RoICluster_Composites", // default value of StoreGatekey + "TrigRoIs_CompositeContainer", // property name + "HLT_MuRoICluster_Composites", // default value of StoreGatekey "output Composites container"}; SG::WriteHandleKey m_outputRoiDescriptorKey{ this, "TrigRoiDescriptorDataVector", - "HLT_RoICluster_Descriptors", + "HLT_MuRoICluster_Descriptors", "output RoI Descriptor container with descriptor for cluster with maximum number of RoIs. For ID."}; + SG::WriteDecorHandleKey m_muRoiClusEtaKey{ this, + "MuonRoiClusterEta", + "HLT_MuRoICluster_Composites.ClusterEta", + "Average Eta of the muon RoI Cluster"}; + + SG::WriteDecorHandleKey m_muRoiClusPhiKey{ this, + "MuonRoiClusterPhi", + "HLT_MuRoICluster_Composites.ClusterPhi", + "Average Phi of the muonRoI Cluster"}; + + SG::WriteDecorHandleKey m_muRoiClusNRoiKey{ this, + "MuonRoiClusterNRoIs", + "HLT_MuRoICluster_Composites.nRoIs", + "Number of muon RoIs used to construct this muon RoI cluster"}; + /** hltInitialize() */ virtual StatusCode initialize() override; /** hltExecute(), main code of the algorithm */ @@ -78,8 +93,8 @@ private: protected: typedef struct { - double eta; - double phi; + float eta; + float phi; int nroi; } lvl1_muclu_roi; diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/AnalysisConfig_Ntuple.h b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/AnalysisConfig_Ntuple.h index f0f88ac5bd72f8edf3b947637ad563de81a8af5b..230d23d7abd3a5171f259c6e16af920fb1b6791d 100644 --- a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/AnalysisConfig_Ntuple.h +++ b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/AnalysisConfig_Ntuple.h @@ -57,8 +57,10 @@ public: m_doMuons(false), m_doMuonsSP(false), m_muonType(), + m_muonIsLRT(), m_electronType(), m_rawElectrons(), + m_electronIsLRT(), m_tauType(), m_tauProngs(), m_vertexType(), @@ -74,7 +76,7 @@ public: { /// leave in this debug printout ... /// std::cout << "AnalysisConfig_Ntuple::AnalysisConfig_Ntuple() " << chainNames.size() << std::endl; - + this->keepAllEvents( _keepAllEvents ); /// this is now i nthe base class for ( unsigned i=0 ; i m_muonType; + std::vector m_muonIsLRT; std::vector m_electronType; std::vector m_rawElectrons; + std::vector m_electronIsLRT; std::vector m_tauType; std::vector m_tauProngs; diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfigMT_Ntuple.cxx b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfigMT_Ntuple.cxx index 334c0abb3659b87b35fbd8b27c5887be69ea7ca5..a224a07888acc02854c5ace5a71483cfc388a8d2 100644 --- a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfigMT_Ntuple.cxx +++ b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfigMT_Ntuple.cxx @@ -401,7 +401,7 @@ void AnalysisConfigMT_Ntuple::loop() { int Noff = 0; int Nmu = 0; int Nel = 0; - int Ntau = 0; + int Ntau = 0; /// now add the offline tracks @@ -552,14 +552,16 @@ void AnalysisConfigMT_Ntuple::loop() { std::vector elevec; - int Nel_ = processElectrons( selectorRef, &elevec, itype, ( m_rawElectrons[ielec]=="raw" ? true : false ) ); + std::string echain = std::string("Electrons"); + if (m_electronIsLRT[ielec]) echain = std::string("LRTElectrons"); + + int Nel_ = processElectrons( selectorRef, &elevec, itype, ( m_rawElectrons[ielec]=="raw" ? true : false ), 0.0, echain ); - if ( Nel_ < 1 ) continue; + if ( Nel_ < 1 ) continue; - Nel += Nel_; + Nel += Nel_; - std::string echain = std::string("Electrons"); - if ( m_electronType[ielec]!="" ) echain += "_" + m_electronType[ielec]; + if ( m_electronType[ielec]!="" ) echain += "_" + m_electronType[ielec]; if ( m_rawElectrons[ielec]=="raw" ) echain += "_raw"; m_event->addChain( echain ); @@ -577,7 +579,6 @@ void AnalysisConfigMT_Ntuple::loop() { } - std::string MuonRef[5] = { "", "Tight", "Medium", "Loose", "VeryLoose" }; @@ -590,7 +591,10 @@ void AnalysisConfigMT_Ntuple::loop() { for ( int it=0 ; it<5 ; it++ ) if ( m_muonType[imuon] == MuonRef[it] ) muonType=it; if ( muonType<0 ) continue; - int Nmu_ = processMuons( selectorRef, muonType ); + std::string mchain = "Muons"; + if (m_muonIsLRT[imuon]) mchain = "MuonsLRT"; + + int Nmu_ = processMuons( selectorRef, muonType, 0, mchain ); if ( Nmu_ < 1 ) continue; @@ -598,7 +602,6 @@ void AnalysisConfigMT_Ntuple::loop() { m_provider->msg(MSG::DEBUG) << "found " << Nmu << " offline muons " << endmsg; - std::string mchain = "Muons"; if ( m_muonType[imuon]!="" ) mchain += "_" + m_muonType[imuon]; m_event->addChain(mchain); @@ -616,8 +619,6 @@ void AnalysisConfigMT_Ntuple::loop() { m_provider->msg(MSG::DEBUG) << "ref muon tracks.size() " << selectorRef.tracks().size() << endmsg; for ( int ii=selectorRef.tracks().size() ; ii-- ; ) m_provider->msg(MSG::DEBUG) << " ref muon track " << ii << " " << *selectorRef.tracks()[ii] << endmsg; } - - /// get muons diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx index 2850f1ddc74fb06f1c143160620b8e1f347c83c7..40d5f001fdcce28a76ec993e0259218f9366585a 100644 --- a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx +++ b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx @@ -734,7 +734,6 @@ void AnalysisConfig_Ntuple::loop() { m_provider->msg(MSG::INFO) << " Offline tracks " << endmsg; selectorRef.clear(); - #ifdef XAODTRACKING_TRACKPARTICLE_H if (m_provider->evtStore()->contains("InDetTrackParticles")) { selectTracks( &selectorRef, "InDetTrackParticles" ); @@ -826,8 +825,8 @@ void AnalysisConfig_Ntuple::loop() { } } -#endif - +#endif + /// add offline Vertices to the Offline chain @@ -853,10 +852,10 @@ void AnalysisConfig_Ntuple::loop() { /// offline object counters - int Noff = 0; - int Nmu = 0; - int Nel = 0; - int Ntau = 0; + int Noff = 0; + int Nmu = 0; + int Nel = 0; + int Ntau = 0; /// now add the offline vertices @@ -982,15 +981,17 @@ void AnalysisConfig_Ntuple::loop() { // std::cout << "\tElectrons selection " << ielec << " " << m_electronType[ielec] // << "\t" << itype << " " << ElectronRef[itype] << "\t" << m_rawElectrons[ielec] << std::endl; - int Nel_ = processElectrons( selectorRef, &elevec, itype, ( m_rawElectrons[ielec]=="raw" ? true : false ) ); + std::string echain = std::string("Electrons"); + if (m_electronIsLRT[ielec]) echain = std::string("LRTElectrons"); + + int Nel_ = processElectrons( selectorRef, &elevec, itype, ( m_rawElectrons[ielec]=="raw" ? true : false ), 0.0, echain ); - if ( Nel_ < 1 ) continue; + if ( Nel_ < 1 ) continue; - Nel += Nel_; + Nel += Nel_; - std::string echain = std::string("Electrons"); - if ( m_electronType[ielec]!="" ) echain += "_" + m_electronType[ielec]; + if ( m_electronType[ielec]!="" ) echain += "_" + m_electronType[ielec]; if ( m_rawElectrons[ielec]=="raw" ) echain += "_raw"; m_event->addChain( echain ); @@ -1012,7 +1013,6 @@ void AnalysisConfig_Ntuple::loop() { } - std::string MuonRef[5] = { "", "Tight", "Medium", "Loose", "VeryLoose" }; @@ -1025,7 +1025,10 @@ void AnalysisConfig_Ntuple::loop() { for ( int it=0 ; it<5 ; it++ ) if ( m_muonType[imuon] == MuonRef[it] ) muonType=it; if ( muonType<0 ) continue; - int Nmu_ = processMuons( selectorRef, muonType ); + std::string mchain = "Muons"; + if (m_muonIsLRT[imuon]) mchain = "MuonsLRT"; + + int Nmu_ = processMuons( selectorRef, muonType, 0, mchain ); if ( Nmu_ < 1 ) continue; @@ -1033,7 +1036,6 @@ void AnalysisConfig_Ntuple::loop() { m_provider->msg(MSG::INFO) << "found " << Nmu << " offline muons " << endmsg; - std::string mchain = "Muons"; if ( m_muonType[imuon]!="" ) mchain += "_" + m_muonType[imuon]; m_event->addChain(mchain); @@ -1054,8 +1056,6 @@ void AnalysisConfig_Ntuple::loop() { } - - /// get muons if ( m_doMuonsSP ) { diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisUser/Analysis/src/rmain.cxx b/Trigger/TrigAnalysis/TrigInDetAnalysisUser/Analysis/src/rmain.cxx index adb58a25519ff34eb2e1c167cd0ccf211beafb4c..f013dc54c4e54b6e1f7010f31c7e5167336d4158 100644 --- a/Trigger/TrigAnalysis/TrigInDetAnalysisUser/Analysis/src/rmain.cxx +++ b/Trigger/TrigAnalysis/TrigInDetAnalysisUser/Analysis/src/rmain.cxx @@ -16,6 +16,7 @@ #include #include #include +#include /// stack trace headers #include @@ -333,7 +334,7 @@ int usage(const std::string& name, int status) { s << "\nOptions: \n"; s << " -o, -f, --file value\toutput filename, \n"; s << " -b, --binConfig value\tconfig file for histogram configuration, \n"; - s << " -r, --refChain value\treference chain, \n"; + s << " -r, --refChain value\treference chain. + separated keys will be merged, \n"; s << " -t, --testChain value\ttest chain, \n"; s << " -p, --pdgId value\tpdg ID of truth particle if requiring truth particle processing,\n"; s << " --vt value\tuse value as the test vertex selector - overrides value in the config file,\n"; @@ -418,6 +419,7 @@ int main(int argc, char** argv) std::string datafile = ""; + std::vector refChains = {}; std::string refChain = ""; int pdgId = 0; @@ -450,6 +452,18 @@ int main(int argc, char** argv) else if ( std::string(argv[i])=="-r" || std::string(argv[i])=="--refChain" ) { if ( ++i>=argc ) return usage(argv[0], -1); refChain = argv[i]; + + // Merge multiple references + if (refChain.find("+") != string::npos){ + std::istringstream iss(refChain); + std::string token; + while (std::getline(iss, token, '+')){ // tokenize string based on '+' delimeter + refChains.push_back(token); + } + } + else { + refChains.push_back(argv[i]); // standard single reference + } } else if ( std::string(argv[i])=="--rms" ) useoldrms = false; else if ( std::string(argv[i])=="-n" || std::string(argv[i])=="--nofit" ) nofit = true; @@ -650,7 +664,10 @@ int main(int argc, char** argv) /// only if not set from the command line if ( refChain=="" ) { - if ( inputdata.isTagDefined("refChain") ) refChain = inputdata.GetString("refChain"); + if ( inputdata.isTagDefined("refChain") ) { + refChain = inputdata.GetString("refChain"); + refChains.push_back(refChain); + } else { std::cerr << "Error: no reference chain defined\n" << std::endl; // return usage(argv[0], -1); @@ -658,6 +675,11 @@ int main(int argc, char** argv) } } + if (refChains.size() == 0){ + std::cerr << "Error: refChains is empty\n" < 1 ) std::cout<<"Multiple reference chains split to: " << refChains <tag(tag); TnP_tool->probe(probe); std::cout << "Tag and probe pair found! \nTag : " << tag << "\nProbe: " << probe < vertices; // keep for now as needed for line 1709 @@ -1719,28 +1746,30 @@ int main(int argc, char** argv) TrigObjectMatcher tom; - for (unsigned int ic=0 ; ic0 ) { - tom = TrigObjectMatcher( &refTracks, chains[ic].rois()[0].objects(), SelectObjectETovPT ); - } + if ( chains[ic].rois()[0].objects().size()>0 ) { + tom = TrigObjectMatcher( &refTracks, chains[ic].rois()[0].objects(), SelectObjectETovPT ); + } - break; + break; + } } } - + if ( !foundReference ) continue; if ( debugPrintout ) { diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisUser/share/TIDAdata-chains-run3.dat b/Trigger/TrigAnalysis/TrigInDetAnalysisUser/share/TIDAdata-chains-run3.dat index 29f4b14a71b4d07c72037d0e9398e1d4418d917e..99e8f1a580e814f1acb26d418627054a74df73c6 100644 --- a/Trigger/TrigAnalysis/TrigInDetAnalysisUser/share/TIDAdata-chains-run3.dat +++ b/Trigger/TrigAnalysis/TrigInDetAnalysisUser/share/TIDAdata-chains-run3.dat @@ -5,7 +5,7 @@ testChains = { // "Electrons", // "Truth", -#ifndef VTXANALYSIS +#if !defined VTXANALYSIS && !defined LRT "HLT_mu6_idperf_L1MU5VF:HLT_IDTrack_Muon_FTF:HLT_Roi_L2SAMuon", "HLT_mu6_idperf_L1MU5VF:HLT_IDTrack_Muon_IDTrig:HLT_Roi_L2SAMuon", @@ -21,10 +21,6 @@ testChains = { "HLT_mu26_ivarperf_L1MU14FCH:HLT_IDTrack_MuonIso_FTF:HLT_Roi_MuonIso", "HLT_mu26_ivarperf_L1MU14FCH:HLT_IDTrack_MuonIso_IDTrig:HLT_Roi_MuonIso", - "HLT_mu20_LRT_idperf_L1MU14FCH:HLT_IDTrack_MuonLRT_FTF:HLT_Roi_L2SAMuon_LRT", - "HLT_mu20_LRT_idperf_L1MU14FCH:HLT_IDTrack_MuonLRT_IDTrig:HLT_Roi_L2SAMuon_LRT", - "HLT_mu6_LRT_idperf_L1MU5VF:HLT_IDTrack_MuonLRT_IDTrig:HLT_Roi_L2SAMuon_LRT", - "HLT_mu6_LRT_idperf_L1MU5VF:HLT_IDTrack_MuonLRT_FTF:HLT_Roi_L2SAMuon_LRT", "HLT_mu6_idperf_L1MU5VF:HLT_IDTrack_Muon_IDTrig:HLT_Roi_L2SAMuon", "HLT_mu4_cosmic_L1MU3V:HLT_IDTrack_Cosmic_FTF", @@ -54,17 +50,6 @@ testChains = { "HLT_e5_idperf_tight_L1EM3:HLT_IDTrack_Electron_FTF:HLT_Roi_FastElectron", "HLT_e5_idperf_tight_L1EM3:HLT_IDTrack_Electron_IDTrig", - "HLT_e20_idperf_loose_lrtloose_L1EM15VH:HLT_IDTrack_ElecLRT_FTF:HLT_Roi_FastElectron_LRT", - "HLT_e30_idperf_loose_lrtloose_L1EM22VHI:HLT_IDTrack_ElecLRT_FTF:HLT_Roi_FastElectron_LRT", - "HLT_e20_idperf_loose_lrtloose_L1EM15VH:HLT_IDTrack_ElecLRT_IDTrig:HLT_Roi_FastElectron_LRT", - "HLT_e30_idperf_loose_lrtloose_L1EM22VHI:HLT_IDTrack_ElecLRT_IDTrig:HLT_Roi_FastElectron_LRT", - - "HLT_e26_lhtight_ivarloose_e5_lhvloose_nopix_lrtloose_idperf_probe_L1EM22VHI:HLT_IDTrack_ElecLRT_FTF:HLT_Roi_FastElectron_LRT:1", - "HLT_e26_lhtight_ivarloose_e5_lhvloose_nopix_lrtloose_idperf_probe_L1EM22VHI:HLT_IDTrack_ElecLRT_IDTrig:HLT_Roi_FastElectron_LRT:1", - - "HLT_e5_lhvloose_nopix_lrtloose_idperf_probe_g25_medium_L1EM20VH:HLT_IDTrack_ElecLRT_FTF:HLT_Roi_FastElectron_LRT:0", - "HLT_e5_lhvloose_nopix_lrtloose_idperf_probe_g25_medium_L1EM20VH:HLT_IDTrack_ElecLRT_IDTrig:HLT_Roi_FastElectron_LRT:0", - "HLT_e26_lhtight_e14_etcut_idperf_nogsf_probe_50invmAB130_L1EM22VHI:key=HLT_IDTrack_Electron_FTF:extra=el_tag:roi=HLT_Roi_FastElectron:te=0", "HLT_e26_lhtight_e14_etcut_idperf_nogsf_probe_50invmAB130_L1EM22VHI:key=HLT_IDTrack_Electron_FTF:extra=el_probe:roi=HLT_Roi_FastElectron:te=1", @@ -88,11 +73,6 @@ testChains = { "HLT_tau25_idperf_tracktwoMVA_L1TAU12IM:HLT_IDTrack_Tau_IDTrig:HLT_Roi_TauIso", "HLT_tau25_idperf_tracktwoMVA_L1TAU12IM:HLT_IDTrack_Tau_IDTrig:HLT_Roi_TauIso:HLT_IDVertex_Tau:post:rvtx=HLT_IDVertex_Tau", - "HLT_tau25_idperf_tracktwoLLP_L1TAU12IM:HLT_IDTrack_TauCore_FTF:HLT_Roi_TauCore", - "HLT_tau25_idperf_tracktwoLLP_L1TAU12IM:HLT_IDTrack_TauIso_FTF:HLT_Roi_TauIso", - "HLT_tau25_idperf_tracktwoLLP_L1TAU12IM:HLT_IDTrack_Tau_IDTrig:HLT_Roi_TauIso", - "HLT_tau25_idperf_tracktwoLLP_L1TAU12IM:HLT_IDTrack_Tau_IDTrig:HLT_Roi_TauIso:HLT_IDVertex_Tau:post:rvtx=HLT_IDVertex_Tau", - "HLT_tau25_idperf_trackLRT_L1TAU12IM:HLT_IDTrack_TauLRT_FTF:HLT_Roi_TauLRT", "HLT_tau25_idperf_trackLRT_L1TAU12IM:HLT_IDTrack_TauLRT_IDTrig:HLT_Roi_TauLRT", @@ -101,15 +81,47 @@ testChains = { "HLT_mb_sptrk_L1RD0_FILLED:HLT_IDTrack_MinBias_IDTrig", - "HLT_fslrt0_L1J100:HLT_IDTrack_FSLRT_FTF;DTE", - "HLT_fslrt0_L1J100:HLT_IDTrack_FS_FTF;DTE", - "HLT_fslrt0_L1J100:HLT_IDTrack_FSLRT_IDTrig;DTE", - "HLT_2mu4_bBmumux_BsmumuPhi_L12MU3V:HLT_IDTrack_Bmumux_FTF", "HLT_2mu4_bBmumux_BsmumuPhi_L12MU3V:HLT_IDTrack_Bmumux_IDTrig", #endif + + +#ifdef LRT + "HLT_mu20_LRT_idperf_L1MU14FCH:HLT_IDTrack_MuonLRT_FTF:HLT_Roi_L2SAMuon_LRT", + "HLT_mu20_LRT_idperf_L1MU14FCH:HLT_IDTrack_MuonLRT_IDTrig:HLT_Roi_L2SAMuon_LRT", + "HLT_mu6_LRT_idperf_L1MU5VF:HLT_IDTrack_MuonLRT_IDTrig:HLT_Roi_L2SAMuon_LRT", + "HLT_mu6_LRT_idperf_L1MU5VF:HLT_IDTrack_MuonLRT_FTF:HLT_Roi_L2SAMuon_LRT", + + "HLT_e20_idperf_loose_lrtloose_L1EM15VH:HLT_IDTrack_ElecLRT_FTF:HLT_Roi_FastElectron_LRT", + "HLT_e30_idperf_loose_lrtloose_L1EM22VHI:HLT_IDTrack_ElecLRT_FTF:HLT_Roi_FastElectron_LRT", + "HLT_e20_idperf_loose_lrtloose_L1EM15VH:HLT_IDTrack_ElecLRT_IDTrig:HLT_Roi_FastElectron_LRT", + "HLT_e30_idperf_loose_lrtloose_L1EM22VHI:HLT_IDTrack_ElecLRT_IDTrig:HLT_Roi_FastElectron_LRT", + + "HLT_e26_lhtight_ivarloose_e5_lhvloose_nopix_lrtloose_idperf_probe_L1EM22VHI:HLT_IDTrack_ElecLRT_FTF:HLT_Roi_FastElectron_LRT:1", + "HLT_e26_lhtight_ivarloose_e5_lhvloose_nopix_lrtloose_idperf_probe_L1EM22VHI:HLT_IDTrack_ElecLRT_IDTrig:HLT_Roi_FastElectron_LRT:1", + + "HLT_e5_lhvloose_nopix_lrtloose_idperf_probe_g25_medium_L1EM20VH:HLT_IDTrack_ElecLRT_FTF:HLT_Roi_FastElectron_LRT:0", + "HLT_e5_lhvloose_nopix_lrtloose_idperf_probe_g25_medium_L1EM20VH:HLT_IDTrack_ElecLRT_IDTrig:HLT_Roi_FastElectron_LRT:0", + + "HLT_tau25_idperf_tracktwoLLP_L1TAU12IM:HLT_IDTrack_TauCore_FTF:HLT_Roi_TauCore", + "HLT_tau25_idperf_tracktwoLLP_L1TAU12IM:HLT_IDTrack_TauIso_FTF:HLT_Roi_TauIso", + "HLT_tau25_idperf_tracktwoLLP_L1TAU12IM:HLT_IDTrack_Tau_IDTrig:HLT_Roi_TauIso", + "HLT_tau25_idperf_tracktwoLLP_L1TAU12IM:HLT_IDTrack_Tau_IDTrig:HLT_Roi_TauIso:HLT_IDVertex_Tau:post:rvtx=HLT_IDVertex_Tau", + + "HLT_tau25_idperf_trackLRT_L1TAU12IM:HLT_IDTrack_TauLRT_FTF:HLT_Roi_TauLRT", + "HLT_tau25_idperf_trackLRT_L1TAU12IM:HLT_IDTrack_TauLRT_IDTrig:HLT_Roi_TauLRT", + "HLT_tau80_idperf_trackLRT_L1TAU60:HLT_IDTrack_TauLRT_FTF:HLT_Roi_TauLRT", + "HLT_tau80_idperf_trackLRT_L1TAU60:HLT_IDTrack_TauLRT_IDTrig:HLT_Roi_TauLRT", + "HLT_tau160_idperf_trackLRT_L1TAU100:HLT_IDTrack_TauLRT_FTF:HLT_Roi_TauLRT", + "HLT_tau160_idperf_trackLRT_L1TAU100:HLT_IDTrack_TauLRT_IDTrig:HLT_Roi_TauLRT", + + + "HLT_fslrt0_L1J100:HLT_IDTrack_FSLRT_FTF;DTE", + "HLT_fslrt0_L1J100:HLT_IDTrack_FS_FTF;DTE", + "HLT_fslrt0_L1J100:HLT_IDTrack_FSLRT_IDTrig;DTE" +#else "HLT_j45_subjesgscIS_ftf_boffperf_split_L1J20:HLT_IDTrack_FS_FTF:HLT_FSRoI:HLT_IDVertex_FS:post:rvtx=HLT_IDVertex_FS", "HLT_j45_subjesgscIS_ftf_boffperf_split_L1J20:HLT_IDTrack_FS_FTF:HLT_FSRoI:HLT_IDVertex_FSJet:post:rvtx=HLT_IDVertex_FSJet", @@ -125,4 +137,10 @@ testChains = { "HLT_j80_pf_ftf_preselj20b95_L1J20:HLT_IDTrack_JetSuper_FTF:HLT_Roi_JetSuper", "HLT_j45_pf_ftf_preselj20_L1jJ40:HLT_IDTrack_JetSuper_FTF:HLT_Roi_JetSuper", "HLT_j20_roiftf_preselj20_L1RD0_FILLED:HLT_IDTrack_JetSuper_FTF:HLT_Roi_JetSuper" +#endif + + + + + }; diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/python/TrigLongLivedParticlesHypoMonitoring.py b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/python/TrigLongLivedParticlesHypoMonitoring.py index 2f706a698746fe45803c1247bff1160bc2559431..2b60acc07cf12ba53c236f82033691ef76801e39 100644 --- a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/python/TrigLongLivedParticlesHypoMonitoring.py +++ b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/python/TrigLongLivedParticlesHypoMonitoring.py @@ -38,9 +38,12 @@ class TrigMuonClusterHypoToolMonitoring(GenericMonitoringTool_v1): self.defineHistogram('nRoIBarrel,nRoIBarrelPass', path='EXPERT', type='TH2F', title="MuCluHypoTool: nRoI in All Barrel Clusters vs nRoI in all Passing Clusters; number of Barrel RoI; number of Passing Barrel RoI", xbins=25, xmin=0., xmax=25., ybins=25, ymin=0., ymax=25.) self.defineHistogram('nRoIEndcap,nRoIEndcapPass', path='EXPERT', type='TH2F', title="MuCluHypoTool: nRoI in All Endcap Clusters vs nRoI in all Passing Clusters; number of Endcap RoI; number of Passing Endcap RoI", xbins=25, xmin=0., xmax=25., ybins=25, ymin=0., ymax=25.) self.defineHistogram('result', path='EXPERT', type='TH1F', title="MuCluHypoTool: Number of MuonRoIClusters accepted by the trigger; bool; nclusters", xbins=2, xmin=0., xmax=2.) + self.defineHistogram('chainActive', path='EXPERT', type='TH1F', title='MuCluHypoTool: Bool if number of previous Decision IDs matching this cahin > 0; bool; nCallsToHypoTool', xbins=2, xmin=0., xmax=2.) self.defineHistogram('phiClust,etaClust', path='EXPERT', type='TH2F', title="MuCluHypoTool: 2D Phi vs Eta of All muon RoI clusters; phi; eta", xbins=128, xmin=-math.pi, xmax=math.pi, ybins=120, ymin=-3., ymax=3.) self.defineHistogram('phiClustPass,etaClustPass', path='EXPERT', type='TH2F', title="MuCluHypoTool: 2D Phi vs Eta of Passing muon RoI clusters; phi; eta", xbins=128, xmin=-math.pi, xmax=math.pi, ybins=120, ymin=-3., ymax=3.) + self.defineHistogram('numberRoI,etaClustPass', path='EXPERT', type='TH2F', title="MuCluHypoTool: 2D Number of RoIs in Passing muon RoI clusters vs Eta of Passing muon RoI clusters; nRoIs; eta", xbins=10, xmin=0., xmax=10., ybins=60, ymin=-3., ymax=3.) + self.defineHistogram('TIME_HypoTool', path='EXPERT', type='TH1F', title='MuClusHypoTool: Timing Variable for entire HypoTool Execution; time (us); nTools', xbins=100, xmin=-20., xmax=1500.) self.defineHistogram('TIME_HypoTool_GetCluster', path='EXPERT', type='TH1F', title='MuClusHypoTool: Timing Variable for HypoTool to Locate MuonRoICluster Object; time (us); nTools', xbins=100, xmin=-20., xmax=1500.) self.defineHistogram('TIME_HypoTool_Selection', path='EXPERT', type='TH1F', title='MuClusHypoTool: Timing Variable for HypoTool to Decide Pass/Fail; time (us); nTools', xbins=100, xmin=-20., xmax=1500.) diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/MuonClusterHypoAlg.cxx b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/MuonClusterHypoAlg.cxx index e494f43f18edefa547447469ae44a03465fffcf2..1d79de3ed4b565ff9afba1cf8ff161a09f8ff143 100644 --- a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/MuonClusterHypoAlg.cxx +++ b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/MuonClusterHypoAlg.cxx @@ -69,12 +69,12 @@ StatusCode MuonClusterHypoAlg::execute(const EventContext& ctx) const auto CluNum = Monitored::Scalar("NumClu", 3); - auto acceptAll = Monitored::Scalar("AcceptAll", false); - auto nRoIEndCap = Monitored::Scalar("nRoIEndCap", 4); - auto nRoIBarrel = Monitored::Scalar("nRoIBarrel", 3); - auto etaMax = Monitored::Scalar("maxEta", 2.5); - auto etaMid = Monitored::Scalar("midEta", 1.0); - auto isPass = Monitored::Scalar("isPass", 0); + auto acceptAll = Monitored::Scalar("AcceptAll", false); + auto nRoIEndCap = Monitored::Scalar("nRoIEndCap", 4); + auto nRoIBarrel = Monitored::Scalar("nRoIBarrel", 3); + auto etaMax = Monitored::Scalar("maxEta", 2.5); + auto etaMid = Monitored::Scalar("midEta", 1.0); + auto isPass = Monitored::Scalar("isPass", 0); auto t1 = Monitored::Timer("TIME_HypoAlg"); auto t2 = Monitored::Timer("TIME_HypoAlg_DecisionLoop"); @@ -107,6 +107,7 @@ StatusCode MuonClusterHypoAlg::execute(const EventContext& ctx) const // Creating a DecisionIDContainer to hold all active chain IDs DecisionIDContainer prev; + decisionIDs(previousDecision, prev); // Create new decisions and link to previous decision Decision* d = newDecisionIn(decisions, previousDecision, hypoAlgNodeName(), ctx); @@ -125,7 +126,7 @@ StatusCode MuonClusterHypoAlg::execute(const EventContext& ctx) const t2.start(); // We only have 1 decision. If more decisions are needed in the future, wrap 'if' in a loop over the decision container. - if (!allFailed(d)) {isPass = 1;} + if (!allFailed(d)) {isPass = 1;} // allFailed returns true is d is empty, else returns false. t2.stop(); return StatusCode::SUCCESS; diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/MuonClusterHypoAlg.h b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/MuonClusterHypoAlg.h index fab1ae6503da90829b5eb1b7828f90a2672d1623..45422bbfa64c54a91ee2082b6143d58b271dbfda 100644 --- a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/MuonClusterHypoAlg.h +++ b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/MuonClusterHypoAlg.h @@ -64,7 +64,7 @@ class MuonClusterHypoAlg: public HypoBase { SG::ReadHandleKey m_outputCompositesKey{ this, "TrigCluCompositeContainer", // property name - "HLT_RoICluster_Composites", // default value of StoreGatekey + "HLT_MuRoICluster_Composites", // default value of StoreGatekey "output Composites container"}; /** method to initialize. */ diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/MuonClusterHypoTool.cxx b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/MuonClusterHypoTool.cxx index 5856c16f082f3bebe842642e913f534165fd4515..f5b85306065be1dc1cda2cc0a9f8f02fdb5699e2 100644 --- a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/MuonClusterHypoTool.cxx +++ b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/MuonClusterHypoTool.cxx @@ -52,10 +52,10 @@ StatusCode MuonClusterHypoTool::decide( DecisionInfo& input ) const { auto monNumberRoI = Monitored::Scalar( "numberRoI", -99 ); - auto monEtaClust = Monitored::Scalar( "etaClust", -99 ); - auto monPhiClust = Monitored::Scalar( "phiClust", -99 ); - auto monEtaClustPass = Monitored::Scalar( "etaClustPass", -99 ); - auto monPhiClustPass = Monitored::Scalar( "phiClustPass", -99 ); + auto monEtaClust = Monitored::Scalar( "etaClust", -99 ); + auto monPhiClust = Monitored::Scalar( "phiClust", -99 ); + auto monEtaClustPass = Monitored::Scalar( "etaClustPass", -99 ); + auto monPhiClustPass = Monitored::Scalar( "phiClustPass", -99 ); auto monNumRoIB = Monitored::Scalar( "nRoIBarrel", -99 ); auto monNumRoIE = Monitored::Scalar( "nRoIEndcap", -99 ); @@ -63,6 +63,7 @@ StatusCode MuonClusterHypoTool::decide( DecisionInfo& input ) const auto monNumRoIEPass = Monitored::Scalar( "nRoIEndcapPass", -99 ); auto result = Monitored::Scalar( "result", false ); + auto chainActive = Monitored::Scalar( "chainActive", false ); auto t1 = Monitored::Timer("TIME_HypoTool"); // microseconds auto t2 = Monitored::Timer("TIME_HypoTool_GetCluster"); @@ -70,7 +71,7 @@ StatusCode MuonClusterHypoTool::decide( DecisionInfo& input ) const auto monitorIt = Monitored::Group( m_monTool, monNumberRoI, monEtaClust, monPhiClust, monNumRoIB, monNumRoIE, monEtaClustPass, monPhiClustPass, - result, monNumRoIBPass, monNumRoIEPass, + result, monNumRoIBPass, monNumRoIEPass, chainActive, t1, t2, t3 ); const xAOD::TrigCompositeContainer *compCont = input.Composites; @@ -80,8 +81,8 @@ StatusCode MuonClusterHypoTool::decide( DecisionInfo& input ) const ATH_MSG_DEBUG("Found " << compCont->size() << " TrigComposite objects"); int numberRoI = 0; - double etaClust = -99; - double phiClust = -99; + float etaClust = -99; + float phiClust = -99; bool foundMuonRoICluster = false; @@ -159,7 +160,7 @@ StatusCode MuonClusterHypoTool::decide( DecisionInfo& input ) const } } else { - ATH_MSG_DEBUG("Cluster does not satisfy all the conditions... event not accepted"); + ATH_MSG_DEBUG("Cluster location past maximum permitted eta... event not accepted"); result = false; } @@ -167,8 +168,15 @@ StatusCode MuonClusterHypoTool::decide( DecisionInfo& input ) const } + ATH_MSG_INFO( "Writing out active chains:" ); + for (DecisionID activeChain : prev) + { + ATH_MSG_INFO( HLT::Identifier( activeChain ) ); + } + // Checking if this HypoTool's chain is active in this event... - if( (prev.count(m_decisionId.numeric() ) > 0 ) ) + chainActive = prev.count(m_decisionId.numeric()) > 0; + if( (prev.count(m_decisionId.numeric()) > 0 ) ) { // If it's active, then check selection. ie nothing should pass if its not active. if( result ) { diff --git a/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitCategoryMT.py b/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitCategoryMT.py index fa14280ce36c633ff43600692398620073a41f4e..2e82270a2f4aa55d38dedb1929b5870d624d1866 100644 --- a/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitCategoryMT.py +++ b/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitCategoryMT.py @@ -156,3 +156,28 @@ monitoring_topo = [ ] +###### For Offine EGamma DQ purposes: Offline EGamma Trigger aware implementation ###### +# Temporary: This will be deleted in the future when mongroups are implemented. +# When mongroups are ok, triggers retrieved from offline EGamma Monitoring will be automatically remapped. + +# Chains retrived in the egammaPerformance/SetupEgammaMonitoring +# Chains inside the ​Physics_pp_run3_v1.py menu: +###### + +primary_single_ele = monitoringTP_electron + +primary_double_pho = [ + 'HLT_2g20_tight_icaloloose_L12EM15VHI', + 'HLT_2g22_tight_L12EM15VHI', + 'HLT_g35_medium_g25_medium_L12EM20VH', + 'HLT_2g50_loose_L12EM20VH', + ] + +monitoring_Jpsiee = [ + 'HLT_e10_lhvloose_L1EM7', + 'HLT_e14_lhvloose_L1EM10VH', + 'HLT_e5_lhtight_e9_etcut_1invmAB5_L1JPSI-1M5-EM7', + 'HLT_e5_lhtight_e14_etcut_1invmAB5_L1JPSI-1M5-EM12', + 'HLT_e9_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-EM7', + 'HLT_e14_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-EM12' + ] \ No newline at end of file diff --git a/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitoringMTConfig.py b/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitoringMTConfig.py index 7923f3f02eeeacf9d4802e54738b19a0ef01b499..f02b4cd969fa9e1e2a9cd73f0b09042ed6aa125f 100644 --- a/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitoringMTConfig.py +++ b/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitoringMTConfig.py @@ -543,7 +543,7 @@ class TrigEgammaMonAlgBuilder: self.bookHLTElectronResolutions( monAlg, trigger, info.isIsolated() ) elif info.isPhoton(): - # Should we include L2 for photon in the future? + self.bookL2PhotonDistributions( monAlg, trigger ) self.bookShowerShapesDistributions( monAlg, trigger, "HLT", online=True ) self.bookShowerShapesDistributions( monAlg, trigger, "HLT", online=False) self.bookHLTResolutions( monAlg, trigger,"HLT" ) @@ -639,7 +639,7 @@ class TrigEgammaMonAlgBuilder: # - # book L2 Electron distributions + # book Fast Electron distributions # def bookL2ElectronDistributions( self, monAlg, trigger ): @@ -651,7 +651,19 @@ class TrigEgammaMonAlgBuilder: self.addHistogram(monGroup, TH1F("eta", "eta; eta ; Count", self._nEtabins, self._etabins)) self.addHistogram(monGroup, TH1F("phi", "phi; phi ; Count", 20, -3.2, 3.2)) + # + # book Fast Photon distributions + # + + def bookL2PhotonDistributions( self, monAlg, trigger ): + from TrigEgammaMonitoring.TrigEgammaMonitorHelper import TH1F + monGroup = self.addGroup( monAlg, trigger+'_Distributions_L2Photon', self.basePath+'/Shifter/'+trigger+'/Distributions/FastPhoton' ) + + self.addHistogram(monGroup, TH1F("et", "ET; ET [GeV] ; Count", 100, 0., 100.)) + self.addHistogram(monGroup, TH1F("highet", "ET; ET [GeV] ; Count", 100, 0., 500.)) + self.addHistogram(monGroup, TH1F("eta", "eta; eta ; Count", self._nEtabins, self._etabins)) + self.addHistogram(monGroup, TH1F("phi", "phi; phi ; Count", 20, -3.2, 3.2)) # # Book EFCalo distributions # diff --git a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorAnalysisAlgorithm.cxx b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorAnalysisAlgorithm.cxx index a9fcc296497fac75da2e2ccf8f53aa42e39f65cd..81bf745ce8d6c7c90741e422e1a3e51acc1d645a 100644 --- a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorAnalysisAlgorithm.cxx +++ b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorAnalysisAlgorithm.cxx @@ -408,8 +408,7 @@ void TrigEgammaMonitorAnalysisAlgorithm::fillDistributions( const std::vector< s } if ( info.signature == "Electron" ){ - - // L2 Electron + // Fast Electron { std::string key = match()->key("FastElectrons"); if(info.lrt) key = match()->key("FastElectrons_LRT"); @@ -445,6 +444,20 @@ void TrigEgammaMonitorAnalysisAlgorithm::fillDistributions( const std::vector< s fillTracking( trigger, el_vec, true ); } }else if ( info.signature == "Photon"){ + // Fast Photon + { + std::string key = match()->key("FastPhotons"); + std::vector ph_vec; + // Get only passed objects + auto vec = tdt()->features(trigger,condition,key ); + for( auto &featLinkInfo : vec ){ + if(! featLinkInfo.isValid() ) continue; + const auto *feat = *(featLinkInfo.link); + if(!feat) continue; + ph_vec.push_back(feat); + } + fillL2Photon( trigger, ph_vec ); + } // HLT Photon { std::vector ph_vec; @@ -579,6 +592,31 @@ void TrigEgammaMonitorAnalysisAlgorithm::fillL2Electron(const std::string &trigg fill( monGroup, et_col, eta_col, phi_col, highet_col ); } + +void TrigEgammaMonitorAnalysisAlgorithm::fillL2Photon(const std::string &trigger, const std::vector< const xAOD::TrigPhoton* >& ph_vec) const +{ + + auto monGroup = getGroup(trigger+"_Distributions_L2Photon"); + + std::vector et_vec, eta_vec, phi_vec, highet_vec; + + auto et_col = Monitored::Collection("et" , et_vec ); + auto highet_col = Monitored::Collection("highet" , highet_vec ); + auto eta_col = Monitored::Collection("eta", eta_vec ); + auto phi_col = Monitored::Collection("phi", phi_vec ); + + for ( const auto *ph : ph_vec ) + { + if(!ph) continue; + et_vec.push_back( ph->pt()/Gaudi::Units::GeV ); + highet_vec.push_back( ph->pt()/Gaudi::Units::GeV ); + eta_vec.push_back( ph->eta() ); + phi_vec.push_back( ph->phi() ); + } + + fill( monGroup, et_col, eta_col, phi_col, highet_col ); +} + void TrigEgammaMonitorAnalysisAlgorithm::fillEFCalo(const std::string &trigger, const std::vector< const xAOD::CaloCluster*>& clus_vec) const { diff --git a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorAnalysisAlgorithm.h b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorAnalysisAlgorithm.h index fa5f49730fb484289a01452745b1141724be23f6..8ad8fff3356623517dfc4f9b46ee1aa8999c61ae 100644 --- a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorAnalysisAlgorithm.h +++ b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorAnalysisAlgorithm.h @@ -39,6 +39,7 @@ class TrigEgammaMonitorAnalysisAlgorithm: public TrigEgammaMonitorBaseAlgorithm void fillL1eEM( const std::string &trigger, const std::vector< const xAOD::eFexEMRoI* >& l1_vec ) const; void fillL2Calo(const std::string &trigger, const std::vector< const xAOD::TrigEMCluster*>& emCluster_vec ) const; void fillL2Electron(const std::string &trigger, const std::vector& el_vec) const; + void fillL2Photon(const std::string &trigger, const std::vector& eg_vec) const; void fillEFCalo(const std::string &trigger, const std::vector& clus_vec) const; void fillShowerShapes(const std::string &trigger, const std::vector& eg_vec, bool online) const; void fillTracking(const std::string &trigger, const std::vector& eg_vec, bool online ) const; diff --git a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorPhotonAlgorithm.cxx b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorPhotonAlgorithm.cxx index 24478cf567e43d664dc9480664924ac03e93d3a7..087475e55941c07c2476cd81fd11ea0a73504425 100644 --- a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorPhotonAlgorithm.cxx +++ b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorPhotonAlgorithm.cxx @@ -110,9 +110,13 @@ StatusCode TrigEgammaMonitorPhotonAlgorithm::executeNavigation( const EventConte ATH_MSG_DEBUG("No caloCluster"); continue; } - if( !(getCluster_et(eg) > (etthr-5.)*Gaudi::Units::GeV)) continue; //Take 5 GeV above threshold + if( !(getCluster_et(eg) > (etthr-5.)*Gaudi::Units::GeV)) continue; //Take 5 GeV below threshold + + if(!eg->passSelection(m_photonPid)) { + ATH_MSG_DEBUG("Fails PhotonID: " << m_photonPid); + continue; // reject offline photons reproved by tight requiriment + } - //if(!eg->passSelection(m_photonPid)) continue; // reject offline photons reproved by tight requiriment if(m_forcePidSelection){///default is true if(!ApplyPhotonPid(eg,pidName)){ ATH_MSG_DEBUG("Fails PhotonID "<< pidName); @@ -121,7 +125,7 @@ StatusCode TrigEgammaMonitorPhotonAlgorithm::executeNavigation( const EventConte ATH_MSG_DEBUG("Passes PhotonID "<< pidName); } - // if true: skip converted photons + // default is false: if true, skip converted photons if(m_doUnconverted){ if (eg->vertex()){ ATH_MSG_DEBUG("Removing converted photons, continuing..."); diff --git a/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/TriggerEDMAuxAccessors.h b/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/TriggerEDMAuxAccessors.h index b85bace1766573e18eac38898b39c0beb575f11b..22daa1e4faf80d2492e2c4dbcc592134c01da3fd 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/TriggerEDMAuxAccessors.h +++ b/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/TriggerEDMAuxAccessors.h @@ -43,7 +43,7 @@ auto intAccessors = initAccessors( "hitDV_seed_type","hitDV_n_track_qual", "dEdxTrk_id","dEdxTrk_dedx_n_usedhits", "dEdxTrk_n_hits_innermost","dEdxTrk_n_hits_inner","dEdxTrk_n_hits_pix","dEdxTrk_n_hits_sct", - "dEdxHit_trkid","dEdxHit_iblovfl","dEdxHit_loc","dEdxHit_layer","NumPV"); + "dEdxHit_trkid","dEdxHit_iblovfl","dEdxHit_loc","dEdxHit_layer","NumPV", "nRoIs"); auto int16Accessors = initAccessors("view", "HPtdEdxTrk_n_hdedx_hits_1p45","HPtdEdxTrk_n_hdedx_hits_1p50","HPtdEdxTrk_n_hdedx_hits_1p55","HPtdEdxTrk_n_hdedx_hits_1p60", @@ -147,7 +147,8 @@ auto floatAccessors = initAccessors( "vsi_vrtFit_r", "vsi_vrtFit_chi2", "vsi_vPos", "vsi_vPosMomAngT", "vsi_dphi1", "vsi_dphi2", "vsiHypo_nVtx", "vsiHypo_pTcut", "vsiHypo_rCut", "vsiHypo_nTrkCut", "vsiHypo_counts", "eProbabilityNN", - "trk_d0","cl_eta2","cl_phi2", "deltaEta1PearDistortion" + "trk_d0","cl_eta2","cl_phi2", "deltaEta1PearDistortion", + "ClusterEta", "ClusterPhi" ); auto doubleAccessors = initAccessors("ptcone02", "ptcone03", "JetDensityEMPFlow", diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXByteStream/src/gFexByteStreamTool.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXByteStream/src/gFexByteStreamTool.cxx index b934d21237b7534f5753be479089eb5b30d5986b..5effd40ff7a9f19df5f403608b585fedff70ee55 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXByteStream/src/gFexByteStreamTool.cxx +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXByteStream/src/gFexByteStreamTool.cxx @@ -217,15 +217,6 @@ StatusCode gFexByteStreamTool::convertFromBS(const std::vector& vro unsigned int n_words = rob->rod_ndata(); - //do not remove, checks will be needed when P1 data available - int aux = 1; //delete, for debug - for (const uint32_t word : dataArray) { - - printf("\t %3d raw word: 0x%08x \t bits: %32s\n",aux,word, (std::bitset<32>(word).to_string()).c_str() ); - aux++; //delete, for debug - - } - //saving Jet TOBs into the EDM container for(unsigned int iWord=0; iWord (dataArray[iWord])); diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXFPGA.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXFPGA.h index b287c75ed004e89b7ec6b12a16ce2afdaa125bb6..d3d310116fd2c0b78008d99daeea1b17661b9e62 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXFPGA.h +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXFPGA.h @@ -77,8 +77,8 @@ namespace LVL1 { virtual void SetTowersAndCells_SG( int [][FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width] ) override ; /**Form a tob word out of the potential candidate SmallRJet tob */ - virtual std::vector > getSmallRJetTOBs() override; - virtual std::vector > getLargeRJetTOBs() override; + virtual std::vector > getSmallRJetTOBs() override; + virtual std::vector > getLargeRJetTOBs() override; /** sorted Electron tobs */ virtual std::vector > getFwdElTOBs() override; @@ -87,10 +87,10 @@ namespace LVL1 { virtual std::vector> getTauTOBs() override; /**Form a tob word out of the potential candidate SumET tob */ - virtual std::vector getSumEtTOBs() override; + virtual std::vector> getSumEtTOBs() override; /**Form a tob word out of the potential candidate MET tob */ - virtual std::vector getMetTOBs() override; + virtual std::vector> getMetTOBs() override; int getTTowerET_EM (unsigned int TTID ) override; int getTTowerET_HAD (unsigned int TTID ) override; @@ -104,20 +104,19 @@ namespace LVL1 { return (((i->getWord() >> bits ) & mask)>((j->getWord() >> bits ) & mask)); } - static bool etSRJetSort(std::vector i, std::vector j){ return (((i.at(0) >> FEXAlgoSpaceDefs::jJ_etBit ) & 0x7ff )> ((j.at(0) >> FEXAlgoSpaceDefs::jJ_etBit ) & 0x7ff ));} - static bool etLRJetSort(std::vector i, std::vector j){ return (((i.at(0) >> FEXAlgoSpaceDefs::jLJ_etBit ) & 0x1fff )> ((j.at(0) >> FEXAlgoSpaceDefs::jLJ_etBit ) & 0x1fff));} - static bool etTauSort (std::vector i, std::vector j){ return (((i.at(0) >> FEXAlgoSpaceDefs::jTau_etBit ) & 0x7ff )> ((j.at(0) >> FEXAlgoSpaceDefs::jTau_etBit) & 0x7ff ));} static bool etFwdElSort (std::vector i, std::vector j){ return (((i.at(0) >> FEXAlgoSpaceDefs::jEM_etBit ) & 0x7ff )> ((j.at(0) >> FEXAlgoSpaceDefs::jEM_etBit) & 0x7ff ));} std::vector> m_tau_tobwords; - + std::vector> m_SRJet_tobwords; + std::vector> m_LRJet_tobwords; + std::vector> m_sumET_tobwords; + std::vector> m_Met_tobwords; + int m_id; int m_jfexid; - std::vector> m_SRJet_tobwords; - std::vector> m_LRJet_tobwords; + std::vector> m_FwdEl_tobwords; - std::vector m_sumET_tobwords; - std::vector m_Met_tobwords; + int m_jTowersIDs_Wide [FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width] = {{0}}; int m_jTowersIDs_Thin [FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width] = {{0}}; diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXSim.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXSim.h index 8436ad6cabe06f32438d1576f73019ea1c7fb997..6cfd7be4d668753bb28368e05150ec8576e8b0fc 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXSim.h +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXSim.h @@ -58,14 +58,16 @@ namespace LVL1 { virtual StatusCode ExecuteForwardASide(int tmp [FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width], jFEXOutputCollection* inputOutputCollection) override; virtual StatusCode ExecuteForwardCSide(int tmp [FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width], jFEXOutputCollection* inputOutputCollection) override; virtual StatusCode ExecuteBarrel(int tmp [FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width], jFEXOutputCollection* inputOutputCollection) override; - virtual std::vector>> getSmallRJetTOBs() override; - virtual std::vector>> getLargeRJetTOBs() override; + virtual std::vector>> getFwdElTOBs() override; - virtual std::vector> getSumEtTOBs() override; - virtual std::vector> getMetTOBs() override; - - virtual std::vector> getTauTOBs() override; + virtual std::vector> getTauTOBs() override; + virtual std::vector> getSmallRJetTOBs() override; + virtual std::vector> getLargeRJetTOBs() override; + virtual std::vector> getSumEtTOBs() override; + virtual std::vector> getMetTOBs() override; + + /** Internal data */ private: @@ -77,15 +79,16 @@ namespace LVL1 { CaloCellContainer m_sCellsCollection; std::vector m_jFEXFPGACollection; - std::vector>> m_smallRJet_tobWords; - std::vector>> m_largeRJet_tobWords; - std::vector< std::vector> > m_tau_tobWords; std::vector>> m_fwdEl_tobWords; - std::vector> m_sumET_tobWords; - std::vector> m_Met_tobWords; + ToolHandle m_jFEXFPGATool {this, "jFEXFPGATool", "LVL1::jFEXFPGA", "Tool that simulates the FPGA hardware"}; - + + std::vector< std::vector> > m_tau_tobWords; + std::vector< std::vector> > m_smallRJet_tobWords; + std::vector< std::vector> > m_largeRJet_tobWords; + std::vector< std::vector> > m_sumET_tobWords; + std::vector< std::vector> > m_Met_tobWords; }; } // end of namespace diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXSysSim.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXSysSim.h index a24992209b77ffe7befec82d7b643e6a73b8e57f..a3d423995ad92e9574b9cce2381123b728a2a955 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXSysSim.h +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXSysSim.h @@ -88,21 +88,23 @@ namespace LVL1 { SG::ReadHandleKey m_l1MenuKey{this, "L1TriggerMenu", "DetectorStore+L1TriggerMenu","Name of the L1Menu object to read configuration from"}; - SG::WriteHandleKey< xAOD::jFexSRJetRoIContainer> m_jFexSRJetOutKey {this,"Key_jFexSRJetOutputContainer","L1_jFexSRJetRoI","Output jFexEM container"}; - SG::WriteHandleKey< xAOD::jFexLRJetRoIContainer> m_jFexLRJetOutKey {this,"Key_jFexLRJetOutputContainer","L1_jFexLRJetRoI","Output jFexEM container"}; - SG::WriteHandleKey< xAOD::jFexTauRoIContainer> m_jFexTauOutKey {this,"Key_jFexTauOutputContainer","L1_jFexTauRoI","Output jFexEDM tau container"}; - SG::WriteHandleKey< xAOD::jFexFwdElRoIContainer> m_jFexFwdElOutKey {this,"Key_jFexFwdElOutputContainer","L1_jFexFwdElRoI","Output jFexEDM fwdEl container"}; - SG::WriteHandleKey< xAOD::jFexSumETRoIContainer> m_jFexSumETOutKey {this,"Key_jFexSumETOutputContainer","L1_jFexSumETRoI","Output jFexEDM SumET container"}; - SG::WriteHandleKey< xAOD::jFexMETRoIContainer> m_jFexMETOutKey {this,"Key_jFexMETOutputContainer","L1_jFexMETRoI","Output jFexEDM Met container"}; + SG::WriteHandleKey< xAOD::jFexSRJetRoIContainer> m_jFexSRJetOutKey {this,"Key_jFexSRJetOutputContainer","L1_jFexSRJetRoI","Output jFexEM container"}; + SG::WriteHandleKey< xAOD::jFexLRJetRoIContainer> m_jFexLRJetOutKey {this,"Key_jFexLRJetOutputContainer","L1_jFexLRJetRoI","Output jFexEM container"}; + SG::WriteHandleKey< xAOD::jFexTauRoIContainer> m_jFexTauOutKey {this,"Key_jFexTauOutputContainer" ,"L1_jFexTauRoI" ,"Output jFexEDM tau container"}; + SG::WriteHandleKey< xAOD::jFexFwdElRoIContainer> m_jFexFwdElOutKey {this,"Key_jFexFwdElOutputContainer","L1_jFexFwdElRoI","Output jFexEDM fwdEl container"}; + SG::WriteHandleKey< xAOD::jFexSumETRoIContainer> m_jFexSumETOutKey {this,"Key_jFexSumETOutputContainer","L1_jFexSumETRoI","Output jFexEDM SumET container"}; + SG::WriteHandleKey< xAOD::jFexMETRoIContainer> m_jFexMETOutKey {this,"Key_jFexMETOutputContainer" ,"L1_jFexMETRoI" ,"Output jFexEDM Met container"}; std::unordered_map m_jTowersColl; - std::unordered_map>> > m_allSmallRJetTobs; - std::unordered_map>> > m_allLargeRJetTobs; - std::unordered_map>> m_alltauTobs; + std::unordered_map>> > m_allfwdElTobs; - std::unordered_map> > m_allsumEtTobs; - std::unordered_map> > m_allMetTobs; - + + std::unordered_map> > m_alltauTobs; + std::unordered_map> > m_allSmallRJetTobs; + std::unordered_map> > m_allLargeRJetTobs; + std::unordered_map> > m_allsumEtTobs; + std::unordered_map> > m_allMetTobs; + }; } // end of namespace diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFPGA.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFPGA.cxx index b2626d51dc914489af1d867d74c8a1a4d0a3c5ea..ea1495baa49c2ecbb25dcaa847fda212a2490ad0 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFPGA.cxx +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFPGA.cxx @@ -92,7 +92,7 @@ StatusCode jFEXFPGA::execute(jFEXOutputCollection* inputOutputCollection) { // Retrieve the L1 menu configuration SG::ReadHandle l1Menu (m_l1MenuKey/*, ctx*/); - + const TrigConf::L1ThrExtraInfo_jTAU & thr_jTAU = l1Menu->thrExtraInfo().jTAU(); const TrigConf::L1ThrExtraInfo_jJ & thr_jJ = l1Menu->thrExtraInfo().jJ(); const TrigConf::L1ThrExtraInfo_jLJ & thr_jLJ = l1Menu->thrExtraInfo().jLJ(); @@ -172,21 +172,27 @@ StatusCode jFEXFPGA::execute(jFEXOutputCollection* inputOutputCollection) { m_jFEXsumETAlgoTool->setFPGAEnergy(m_map_Etvalues_FPGA); m_jFEXmetAlgoTool->setFPGAEnergy(m_map_Etvalues_FPGA); - - + unsigned int bin_pos = thr_jTE.etaBoundary_fw(m_jfex_string[m_jfexid]); + + std::unique_ptr jXE_tob = std::make_unique(); + uint32_t jXE_tobword = 0; + + std::unique_ptr jTE_tob = std::make_unique(); + uint32_t jTE_tobword = 0; + + + if(m_jfexid > 0 && m_jfexid < 5) { //-----------------jFEXsumETAlgo----------------- m_jFEXsumETAlgoTool->setup(m_jTowersIDs_Thin); m_jFEXsumETAlgoTool->buildBarrelSumET(); - m_sumET_tobwords.push_back(m_IjFEXFormTOBsTool->formSumETTOB(m_jFEXsumETAlgoTool->getETlowerEta(bin_pos),m_jFEXsumETAlgoTool->getETupperEta(bin_pos),thr_jTE.resolutionMeV())); //-----------------jFEXmetAlgo----------------- m_jFEXmetAlgoTool->setup(m_jTowersIDs_Thin); m_jFEXmetAlgoTool->buildBarrelmet(); - m_Met_tobwords.push_back(m_IjFEXFormTOBsTool->formMetTOB(m_jFEXmetAlgoTool->GetMetXComponent(),m_jFEXmetAlgoTool->GetMetYComponent(),thr_jXE.resolutionMeV())); } else if(m_jfexid == 0 ) { int flipped_jTowersIDs [FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width] = {{0}}; @@ -200,24 +206,28 @@ StatusCode jFEXFPGA::execute(jFEXOutputCollection* inputOutputCollection) { //-----------------jFEXsumETAlgo----------------- m_jFEXsumETAlgoTool->setup(flipped_jTowersIDs); m_jFEXsumETAlgoTool->buildFWDSumET(); - m_sumET_tobwords.push_back(m_IjFEXFormTOBsTool->formSumETTOB(m_jFEXsumETAlgoTool->getETlowerEta(bin_pos),m_jFEXsumETAlgoTool->getETupperEta(bin_pos),thr_jTE.resolutionMeV())); //-----------------jFEXmetAlgo----------------- m_jFEXmetAlgoTool->setup(flipped_jTowersIDs); m_jFEXmetAlgoTool->buildFWDmet(); - m_Met_tobwords.push_back(m_IjFEXFormTOBsTool->formMetTOB(m_jFEXmetAlgoTool->GetMetXComponent(),m_jFEXmetAlgoTool->GetMetYComponent(),thr_jXE.resolutionMeV())); } else if(m_jfexid == 5) { //-----------------jFEXsumETAlgo----------------- m_jFEXsumETAlgoTool->setup(m_jTowersIDs_Wide); m_jFEXsumETAlgoTool->buildFWDSumET(); - m_sumET_tobwords.push_back(m_IjFEXFormTOBsTool->formSumETTOB(m_jFEXsumETAlgoTool->getETlowerEta(bin_pos),m_jFEXsumETAlgoTool->getETupperEta(bin_pos),thr_jTE.resolutionMeV())); //-----------------jFEXmetAlgo----------------- m_jFEXmetAlgoTool->setup(m_jTowersIDs_Wide); m_jFEXmetAlgoTool->buildFWDmet(); - m_Met_tobwords.push_back(m_IjFEXFormTOBsTool->formMetTOB(m_jFEXmetAlgoTool->GetMetXComponent(),m_jFEXmetAlgoTool->GetMetYComponent(),thr_jXE.resolutionMeV())); } + + jXE_tobword = m_IjFEXFormTOBsTool->formMetTOB(m_jFEXmetAlgoTool->GetMetXComponent(),m_jFEXmetAlgoTool->GetMetYComponent(),thr_jXE.resolutionMeV()); + jXE_tob->initialize(m_id,m_jfexid,jXE_tobword,thr_jXE.resolutionMeV(),0); + m_Met_tobwords.push_back(std::move(jXE_tob)); + + jTE_tobword = m_IjFEXFormTOBsTool->formSumETTOB(m_jFEXsumETAlgoTool->getETlowerEta(bin_pos),m_jFEXsumETAlgoTool->getETupperEta(bin_pos),thr_jTE.resolutionMeV()); + jTE_tob->initialize(m_id,m_jfexid,jTE_tobword,thr_jTE.resolutionMeV(),0); + m_sumET_tobwords.push_back(std::move(jTE_tob)); } //-----------jFEXSmallRJet & Large R Jet Algo----------------- @@ -293,14 +303,19 @@ StatusCode jFEXFPGA::execute(jFEXOutputCollection* inputOutputCollection) { //Creating SR TOB int SRj_Et = m_jFEXSmallRJetAlgoTool->getSmallClusterET(); uint32_t SRJet_tobword = m_IjFEXFormTOBsTool->formSRJetTOB(m_jfexid, mphi_LM, meta_LM, SRj_Et, thr_jJ.resolutionMeV(), thr_jJ.ptMinToTopoMeV(m_jfex_string[m_jfexid])); - std::vector SRtob_aux{SRJet_tobword,(uint32_t) m_jTowersIDs_Thin[mphi_LM][meta_LM]}; - if ( SRJet_tobword != 0 ) m_SRJet_tobwords.push_back( SRtob_aux); + + std::unique_ptr jJ_tob = std::make_unique(); + jJ_tob->initialize(m_id,m_jfexid,SRJet_tobword,thr_jJ.resolutionMeV(),m_jTowersIDs_Thin[mphi_LM][meta_LM]); + if ( SRJet_tobword != 0 ) m_SRJet_tobwords.push_back(std::move(jJ_tob)); //Creating LR TOB int LRj_Et = m_jFEXLargeRJetAlgoTool->getLargeClusterET(SRj_Et,m_jFEXLargeRJetAlgoTool->getRingET()); uint32_t LRJet_tobword = m_IjFEXFormTOBsTool->formLRJetTOB(m_jfexid, mphi_LM, meta_LM, LRj_Et, thr_jLJ.resolutionMeV(), thr_jLJ.ptMinToTopoMeV(m_jfex_string[m_jfexid])); - std::vector LRtob_aux{LRJet_tobword,(uint32_t) m_jTowersIDs_Thin[mphi_LM][meta_LM]}; - if ( LRJet_tobword != 0 ) m_LRJet_tobwords.push_back(LRtob_aux); + + std::unique_ptr jLJ_tob = std::make_unique(); + jLJ_tob->initialize(m_id,m_jfexid,LRJet_tobword,thr_jLJ.resolutionMeV(),m_jTowersIDs_Thin[mphi_LM][meta_LM]); + if ( LRJet_tobword != 0 ) m_LRJet_tobwords.push_back(std::move(jLJ_tob)); + } // ******** jTau algorithm ******** ATH_CHECK( m_jFEXtauAlgoTool->safetyTest()); @@ -315,7 +330,6 @@ StatusCode jFEXFPGA::execute(jFEXOutputCollection* inputOutputCollection) { m_jFEXtauAlgoTool->setFirstEtRing(TT_First_ETring); uint32_t jTau_tobword = m_IjFEXFormTOBsTool->formTauTOB(mphi,meta,m_jFEXtauAlgoTool->getClusterEt(),m_jFEXtauAlgoTool->getFirstEtRing(),thr_jTAU.resolutionMeV(),thr_jTAU.ptMinToTopoMeV(m_jfex_string[m_jfexid])); - std::vector TAUtob_aux{jTau_tobword,(uint32_t) m_jTowersIDs_Thin[mphi][meta]}; std::unique_ptr jTau_tob = std::make_unique(); jTau_tob->initialize(m_id,m_jfexid,jTau_tobword,thr_jTAU.resolutionMeV(),m_jTowersIDs_Thin[mphi][meta]); @@ -342,7 +356,6 @@ StatusCode jFEXFPGA::execute(jFEXOutputCollection* inputOutputCollection) { uint32_t TTID = it->first; jFEXForwardJetsInfo FCALJets = it->second; - int iphi = FCALJets.getCentreLocalTTPhi(); int ieta = FCALJets.getCentreLocalTTEta(); @@ -350,16 +363,18 @@ StatusCode jFEXFPGA::execute(jFEXOutputCollection* inputOutputCollection) { m_SRJetET = FCALJets.getSeedET() + FCALJets.getFirstEnergyRingET(); m_LRJetET = m_SRJetET + FCALJets.getSecondEnergyRingET(); - - uint32_t SRFCAL_Jet_tobword = m_IjFEXFormTOBsTool->formSRJetTOB(m_jfexid, iphi, ieta, m_SRJetET, thr_jJ.resolutionMeV(), thr_jJ.ptMinToTopoMeV(m_jfex_string[m_jfexid])); - std::vector SRtob_aux{SRFCAL_Jet_tobword,TTID}; - if ( SRFCAL_Jet_tobword != 0 ) m_SRJet_tobwords.push_back(SRtob_aux); + + std::unique_ptr jJ_tob = std::make_unique(); + jJ_tob->initialize(m_id,m_jfexid,SRFCAL_Jet_tobword,thr_jJ.resolutionMeV(),TTID); + if ( SRFCAL_Jet_tobword != 0 ) m_SRJet_tobwords.push_back(std::move(jJ_tob)); if(std::fabs(FCALJets.getCentreTTEta())<2.6){ uint32_t LRFCAL_Jet_tobword = m_IjFEXFormTOBsTool->formLRJetTOB(m_jfexid, iphi, ieta, m_LRJetET, thr_jLJ.resolutionMeV(),thr_jLJ.ptMinToTopoMeV(m_jfex_string[m_jfexid])); - std::vector LRtob_aux{LRFCAL_Jet_tobword,TTID}; - if ( LRFCAL_Jet_tobword != 0 ) m_LRJet_tobwords.push_back(LRtob_aux); + + std::unique_ptr jLJ_tob = std::make_unique(); + jLJ_tob->initialize(m_id,m_jfexid,LRFCAL_Jet_tobword,thr_jLJ.resolutionMeV(),TTID); + if ( LRFCAL_Jet_tobword != 0 ) m_LRJet_tobwords.push_back(std::move(jLJ_tob)); } } @@ -473,12 +488,9 @@ StatusCode jFEXFPGA::execute(jFEXOutputCollection* inputOutputCollection) { m_jFEXtauAlgoTool->setFirstEtRing(TT_First_ETring); uint32_t jTau_tobword = m_IjFEXFormTOBsTool->formTauTOB(mphi,meta,m_jFEXtauAlgoTool->getClusterEt(),m_jFEXtauAlgoTool->getFirstEtRing(),thr_jTAU.resolutionMeV(),thr_jTAU.ptMinToTopoMeV(m_jfex_string[m_jfexid])); - std::vector TAUtob_aux{jTau_tobword,(uint32_t) jTowersIDs[mphi][meta]}; std::unique_ptr jTau_tob = std::make_unique(); - jTau_tob->initialize(m_id,m_jfexid,jTau_tobword,thr_jTAU.resolutionMeV(),jTowersIDs[mphi][meta]); - if ( jTau_tobword != 0 ) m_tau_tobwords.push_back(std::move(jTau_tob)); } } @@ -528,41 +540,40 @@ void jFEXFPGA::SetTowersAndCells_SG(int tmp_jTowersIDs_subset[][FEXAlgoSpaceDefs } -std::vector > jFEXFPGA::getSmallRJetTOBs() +std::vector > jFEXFPGA::getSmallRJetTOBs() { - auto tobsSort = m_SRJet_tobwords; - - ATH_MSG_DEBUG("number of smallRJet tobs: " << tobsSort.size() << " in FPGA: " << m_id<< " before truncation"); - // sort tobs by their et ( 11 bits of the 32 bit tob word) - std::sort (tobsSort.begin(), tobsSort.end(), etSRJetSort); + + std::vector> tobsSort; + tobsSort.clear(); - while(tobsSort.size()<7){ - std::vector v{0,0}; - tobsSort.push_back(v); + // We need the copy since we cannot move a member of the class, since it will not be part of it anymore + for(auto &j : m_SRJet_tobwords) { + tobsSort.push_back(std::move(j)); } - tobsSort.resize(7); - - return tobsSort; + std::sort (tobsSort.begin(), tobsSort.end(), std::bind(TOBetSort>, std::placeholders::_1, std::placeholders::_2, FEXAlgoSpaceDefs::jJ_etBit, 0x7ff)); + + if(tobsSort.size()>7) tobsSort.resize(7); + + return tobsSort; } -std::vector > jFEXFPGA::getLargeRJetTOBs() +std::vector > jFEXFPGA::getLargeRJetTOBs() { - auto tobsSort = m_LRJet_tobwords; - - ATH_MSG_DEBUG("number of largeRJet tobs: " << tobsSort.size() << " in FPGA: " << m_id<< " before truncation"); - //sort tobs by their et ( 13 bits of the 32 bit tob word) - std::sort (tobsSort.begin(), tobsSort.end(), etLRJetSort); - while(tobsSort.size()<1) { - std::vector v{0,0}; - tobsSort.push_back(v); + + std::vector> tobsSort; + tobsSort.clear(); + + // We need the copy since we cannot move a member of the class, since it will not be part of it anymore + for(auto &j : m_LRJet_tobwords) { + tobsSort.push_back(std::move(j)); } - tobsSort.resize(1); - - - - return tobsSort; + std::sort (tobsSort.begin(), tobsSort.end(), std::bind(TOBetSort>, std::placeholders::_1, std::placeholders::_2, FEXAlgoSpaceDefs::jLJ_etBit, 0x1fff)); + + if(tobsSort.size()>1) tobsSort.resize(1); + + return tobsSort; } @@ -604,21 +615,33 @@ std::vector > jFEXFPGA::getTauTOBs() { return tobsSort; } -std::vector jFEXFPGA::getSumEtTOBs() { - auto tobsSort = m_sumET_tobwords; - - ATH_MSG_DEBUG("number of SumEt tobs: " << tobsSort.size() << " in FPGA: " << m_id); - return tobsSort; +std::vector> jFEXFPGA::getSumEtTOBs() { + + std::vector> tobsSort; + tobsSort.clear(); + + // We need the copy since we cannot move a member of the class, since it will not be part of it anymore + for(auto &j : m_sumET_tobwords) { + tobsSort.push_back(std::move(j)); + } + + return tobsSort; } -std::vector jFEXFPGA::getMetTOBs() { - auto tobsSort = m_Met_tobwords; - - ATH_MSG_DEBUG("number of Met tobs: " << tobsSort.size() << " in FPGA: " << m_id); - return tobsSort; +std::vector> jFEXFPGA::getMetTOBs() { + + std::vector> tobsSort; + tobsSort.clear(); + + // We need the copy since we cannot move a member of the class, since it will not be part of it anymore + for(auto &j : m_Met_tobwords) { + tobsSort.push_back(std::move(j)); + } + + return tobsSort; } diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSim.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSim.cxx index 59d7c1979871cb07b94274b87bdd5e37367834ed..e8376344fb724630de23e60153694434a16319e5 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSim.cxx +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSim.cxx @@ -741,14 +741,35 @@ void jFEXSim::SetTowersAndCells_SG(int tmp_jTowersIDs_subset[FEXAlgoSpaceDefs::j } -std::vector>> jFEXSim::getSmallRJetTOBs() +std::vector> jFEXSim::getSmallRJetTOBs() { - return m_smallRJet_tobWords; + std::vector> sjTOBs; + sjTOBs.clear(); + + // We need the copy since we cannot move a member of the class, since it will not be part of it anymore + for (unsigned int i = 0; i < m_smallRJet_tobWords.size(); ++i){ + for(unsigned int j = 0; j < m_smallRJet_tobWords[i].size(); ++j){ + sjTOBs.push_back(std::move(m_smallRJet_tobWords[i][j])); + } + } + + return sjTOBs; + } -std::vector>> jFEXSim::getLargeRJetTOBs() +std::vector> jFEXSim::getLargeRJetTOBs() { - return m_largeRJet_tobWords; + std::vector> ljTOBs; + ljTOBs.clear(); + + // We need the copy since we cannot move a member of the class, since it will not be part of it anymore + for (unsigned int i = 0; i < m_largeRJet_tobWords.size(); ++i){ + for(unsigned int j = 0; j < m_largeRJet_tobWords[i].size(); ++j){ + ljTOBs.push_back(std::move(m_largeRJet_tobWords[i][j])); + } + } + + return ljTOBs; } std::vector> jFEXSim::getTauTOBs() @@ -766,18 +787,40 @@ std::vector> jFEXSim::getTauTOBs() return tauTOBs; } -std::vector>> jFEXSim::getFwdElTOBs() - { +std::vector>> jFEXSim::getFwdElTOBs(){ + return m_fwdEl_tobWords; - } -std::vector> jFEXSim::getSumEtTOBs() -{ - return m_sumET_tobWords; + +} + +std::vector> jFEXSim::getSumEtTOBs(){ + + std::vector> sumetTOBs; + sumetTOBs.clear(); + + // We need the copy since we cannot move a member of the class, since it will not be part of it anymore + for (unsigned int i = 0; i < m_sumET_tobWords.size(); ++i){ + for(unsigned int j = 0; j < m_sumET_tobWords[i].size(); ++j){ + sumetTOBs.push_back(std::move(m_sumET_tobWords[i][j])); + } + } + + return sumetTOBs; } -std::vector> jFEXSim::getMetTOBs() -{ - return m_Met_tobWords; +std::vector> jFEXSim::getMetTOBs(){ + + std::vector> metTOBs; + metTOBs.clear(); + + // We need the copy since we cannot move a member of the class, since it will not be part of it anymore + for (unsigned int i = 0; i < m_Met_tobWords.size(); ++i){ + for(unsigned int j = 0; j < m_Met_tobWords[i].size(); ++j){ + metTOBs.push_back(std::move(m_Met_tobWords[i][j])); + } + } + + return metTOBs; } diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSysSim.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSysSim.cxx index fb26dd8e05a982c981f0e73c9099cad8c925675e..410f33cc9e7439e02262d394e3609d2b0bd75ac8 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSysSim.cxx +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSysSim.cxx @@ -288,12 +288,12 @@ namespace LVL1 { } m_jFEXSimTool->init(thisJFEX); ATH_CHECK(m_jFEXSimTool->ExecuteForwardASide(tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL, inputOutputCollection)); - m_allSmallRJetTobs.insert(std::unordered_map>> >::value_type(thisJFEX,(m_jFEXSimTool->getSmallRJetTOBs() ) )); - m_allLargeRJetTobs.insert(std::unordered_map>> >::value_type(thisJFEX,(m_jFEXSimTool->getLargeRJetTOBs() ) )); + m_allSmallRJetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getSmallRJetTOBs() ) )); + m_allLargeRJetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getLargeRJetTOBs() ) )); m_alltauTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getTauTOBs() ) )); m_allfwdElTobs.insert(std::unordered_map>> >::value_type(thisJFEX,(m_jFEXSimTool->getFwdElTOBs() ) )); - m_allsumEtTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getSumEtTOBs() ) )); - m_allMetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getMetTOBs() ) )); + m_allsumEtTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getSumEtTOBs() ) )); + m_allMetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getMetTOBs() ) )); m_jFEXSimTool->reset(); //-------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -383,11 +383,11 @@ namespace LVL1 { } m_jFEXSimTool->init(thisJFEX); ATH_CHECK(m_jFEXSimTool->ExecuteBarrel(tmp_jTowersIDs_subset_1, inputOutputCollection)); - m_allSmallRJetTobs.insert(std::unordered_map>> >::value_type(thisJFEX,(m_jFEXSimTool->getSmallRJetTOBs() ) )); - m_allLargeRJetTobs.insert(std::unordered_map>> >::value_type(thisJFEX,(m_jFEXSimTool->getLargeRJetTOBs() ) )); + m_allSmallRJetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getSmallRJetTOBs() ) )); + m_allLargeRJetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getLargeRJetTOBs() ) )); m_alltauTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getTauTOBs() ) )); - m_allsumEtTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getSumEtTOBs() ) )); - m_allMetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getMetTOBs() ) )); + m_allsumEtTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getSumEtTOBs() ) )); + m_allMetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getMetTOBs() ) )); m_jFEXSimTool->reset(); //-------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -499,11 +499,11 @@ namespace LVL1 { //tool use instead m_jFEXSimTool->init(thisJFEX); ATH_CHECK(m_jFEXSimTool->ExecuteBarrel(tmp_jTowersIDs_subset_2, inputOutputCollection)); - m_allSmallRJetTobs.insert(std::unordered_map>> >::value_type(thisJFEX,(m_jFEXSimTool->getSmallRJetTOBs() ) )); - m_allLargeRJetTobs.insert(std::unordered_map>> >::value_type(thisJFEX,(m_jFEXSimTool->getLargeRJetTOBs() ) )); + m_allSmallRJetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getSmallRJetTOBs() ) )); + m_allLargeRJetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getLargeRJetTOBs() ) )); m_alltauTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getTauTOBs() ) )); - m_allsumEtTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getSumEtTOBs() ) )); - m_allMetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getMetTOBs() ) )); + m_allsumEtTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getSumEtTOBs() ) )); + m_allMetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getMetTOBs() ) )); m_jFEXSimTool->reset(); //-------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -614,11 +614,11 @@ namespace LVL1 { //tool use instead m_jFEXSimTool->init(thisJFEX); ATH_CHECK(m_jFEXSimTool->ExecuteBarrel(tmp_jTowersIDs_subset_3, inputOutputCollection)); - m_allSmallRJetTobs.insert(std::unordered_map>> >::value_type(thisJFEX,(m_jFEXSimTool->getSmallRJetTOBs() ) )); - m_allLargeRJetTobs.insert(std::unordered_map>> >::value_type(thisJFEX,(m_jFEXSimTool->getLargeRJetTOBs() ) )); + m_allSmallRJetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getSmallRJetTOBs() ) )); + m_allLargeRJetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getLargeRJetTOBs() ) )); m_alltauTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getTauTOBs() ) )); - m_allsumEtTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getSumEtTOBs() ) )); - m_allMetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getMetTOBs() ) )); + m_allsumEtTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getSumEtTOBs() ) )); + m_allMetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getMetTOBs() ) )); m_jFEXSimTool->reset(); //-------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -704,11 +704,11 @@ namespace LVL1 { //tool use instead m_jFEXSimTool->init(thisJFEX); ATH_CHECK(m_jFEXSimTool->ExecuteBarrel(tmp_jTowersIDs_subset_4, inputOutputCollection)); - m_allSmallRJetTobs.insert(std::unordered_map>> >::value_type(thisJFEX,(m_jFEXSimTool->getSmallRJetTOBs() ) )); - m_allLargeRJetTobs.insert(std::unordered_map>> >::value_type(thisJFEX,(m_jFEXSimTool->getLargeRJetTOBs() ) )); + m_allSmallRJetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getSmallRJetTOBs() ) )); + m_allLargeRJetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getLargeRJetTOBs() ) )); m_alltauTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getTauTOBs() ) )); - m_allsumEtTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getSumEtTOBs() ) )); - m_allMetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getMetTOBs() ) )); + m_allsumEtTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getSumEtTOBs() ) )); + m_allMetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getMetTOBs() ) )); m_jFEXSimTool->reset(); //-------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -859,12 +859,12 @@ namespace LVL1 { m_jFEXSimTool->init(thisJFEX); ATH_CHECK(m_jFEXSimTool->ExecuteForwardCSide(tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2, inputOutputCollection)); - m_allSmallRJetTobs.insert(std::unordered_map>> >::value_type(thisJFEX,(m_jFEXSimTool->getSmallRJetTOBs() ) )); - m_allLargeRJetTobs.insert(std::unordered_map>> >::value_type(thisJFEX,(m_jFEXSimTool->getLargeRJetTOBs() ) )); + m_allSmallRJetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getSmallRJetTOBs() ) )); + m_allLargeRJetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getLargeRJetTOBs() ) )); m_alltauTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getTauTOBs() ) )); m_allfwdElTobs.insert(std::unordered_map>> >::value_type(thisJFEX,(m_jFEXSimTool->getFwdElTOBs() ) )); - m_allsumEtTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getSumEtTOBs() ) )); - m_allMetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getMetTOBs() ) )); + m_allsumEtTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getSumEtTOBs() ) )); + m_allMetTobs.insert(std::unordered_map> >::value_type(thisJFEX,(m_jFEXSimTool->getMetTOBs() ) )); m_jFEXSimTool->reset(); @@ -874,11 +874,7 @@ namespace LVL1 { SG::ReadHandle l1Menu (m_l1MenuKey/*, ctx*/); - const int jJResolution = l1Menu->thrExtraInfo().jJ().resolutionMeV(); - const int jLJResolution = l1Menu->thrExtraInfo().jLJ().resolutionMeV(); const int jFwdElResolution = l1Menu->thrExtraInfo().jEM().resolutionMeV(); - const int jTEResolution = l1Menu->thrExtraInfo().jTE().resolutionMeV(); - const int jXEResolution = l1Menu->thrExtraInfo().jXE().resolutionMeV(); //---SRJet EDM auto jSRJetContainer = std::make_unique (); @@ -886,22 +882,16 @@ namespace LVL1 { jSRJetContainer->setStore(jSRJetAuxContainer.get()); // iterate over all SRJEt Tobs and fill EDM with them - for( auto const& [jfex, MODULE_tobs] : m_allSmallRJetTobs ) { - uint8_t fpgaNum =0; - for(auto &FPGA_tob : MODULE_tobs) { - for(auto &tob: FPGA_tob) { - float_t eta = -99; - float_t phi = -99; - if(tob.at(1) != 0){ - eta = (this_jTowerContainer->findTower(tob.at(1)))->centreEta(); - phi = (this_jTowerContainer->findTower(tob.at(1)))->centrephi_toPI(); - } - - ATH_CHECK(fillSRJetEDM(jfex, fpgaNum,tob.at(0), jJResolution, eta, phi, jSRJetContainer)); + for( auto const& [jfex, tobs] : m_allSmallRJetTobs ) { + for(auto const & t: tobs) { + float_t eta = -99; + float_t phi = -99; + if(t->getWord() != 0) { + eta = (this_jTowerContainer->findTower( t->getTTID() ))->centreEta(); + phi = (this_jTowerContainer->findTower( t->getTTID() ))->centrephi_toPI(); } - fpgaNum++; + ATH_CHECK(fillSRJetEDM(t->getjFex(),t->getFpga(),t->getWord(),t->getRes(), eta, phi, jSRJetContainer)); } - } SG::WriteHandle outputjFexSRJetHandle(m_jFexSRJetOutKey/*, ctx*/); @@ -912,24 +902,19 @@ namespace LVL1 { auto jLRJetContainer = std::make_unique (); std::unique_ptr< xAOD::jFexLRJetRoIAuxContainer > jLRJetAuxContainer = std::make_unique (); jLRJetContainer->setStore(jLRJetAuxContainer.get()); - // iterate over all LRJEt Tobs and fill EDM with them - for(auto const& [jfex, MODULE_tobs] : m_allLargeRJetTobs ) { - uint8_t fpgaNum =0; - for(auto &FPGA_tob : MODULE_tobs) { - for(auto&tob: FPGA_tob) { - float_t eta = -99; - float_t phi = -99; - if(tob.at(1) != 0){ - eta = (this_jTowerContainer->findTower(tob.at(1)))->centreEta(); - phi = (this_jTowerContainer->findTower(tob.at(1)))->centrephi_toPI(); - } + for(auto const& [jfex, tobs] : m_allLargeRJetTobs ) { + + for(auto const& t: tobs) { + float_t eta = -99; + float_t phi = -99; + if(t->getWord() != 0) { + eta = (this_jTowerContainer->findTower( t->getTTID() ))->centreEta(); + phi = (this_jTowerContainer->findTower( t->getTTID() ))->centrephi_toPI(); + } - ATH_CHECK(fillLRJetEDM(jfex,fpgaNum, tob.at(0), jLJResolution, eta, phi, jLRJetContainer)); - } - fpgaNum++; + ATH_CHECK(fillLRJetEDM(t->getjFex(),t->getFpga(),t->getWord(),t->getRes(), eta, phi, jLRJetContainer)); } - } SG::WriteHandle outputjFexLRJetHandle(m_jFexLRJetOutKey/*, ctx*/); @@ -968,20 +953,20 @@ namespace LVL1 { //iterate over all Forward Elec Tobs and fill EDM for( auto const& [jfex, MODULE_tobs] : m_allfwdElTobs ) { - uint8_t fpgaNum =0; - for(auto &FPGA_tob : MODULE_tobs) { - for(auto &tob : FPGA_tob) { - float_t eta = -99; - float_t phi = -99; - if(tob.at(1) != 0){ - eta = (this_jTowerContainer->findTower(tob.at(1)))->centreEta(); - phi = (this_jTowerContainer->findTower(tob.at(1)))->centrephi_toPI(); - } - - ATH_CHECK(fillFwdElEDM(jfex,fpgaNum, tob.at(0), jFwdElResolution, eta, phi, jFwdElContainer)); - } - fpgaNum++; - } + uint8_t fpgaNum =0; + for(auto &FPGA_tob : MODULE_tobs) { + for(auto &tob : FPGA_tob) { + float_t eta = -99; + float_t phi = -99; + if(tob.at(1) != 0) { + eta = (this_jTowerContainer->findTower(tob.at(1)))->centreEta(); + phi = (this_jTowerContainer->findTower(tob.at(1)))->centrephi_toPI(); + } + + ATH_CHECK(fillFwdElEDM(jfex,fpgaNum, tob.at(0), jFwdElResolution, eta, phi, jFwdElContainer)); + } + fpgaNum++; + } } @@ -994,16 +979,12 @@ namespace LVL1 { std::unique_ptr< xAOD::jFexSumETRoIAuxContainer > jSumETAuxContainer = std::make_unique (); jSumETContainer->setStore(jSumETAuxContainer.get()); - for( auto const& [jfex, MODULE_tobs] : m_allsumEtTobs ) { - uint8_t fpgaNum =0; - for(auto &FPGA_tob : MODULE_tobs) { - for(auto &tob : FPGA_tob) { - ATH_CHECK(fillSumEtEDM(jfex,fpgaNum, tob, jTEResolution, jSumETContainer)); - } - fpgaNum+=2; - } + for( auto const& [jfex, tobs] : m_allsumEtTobs ) { - } + for(auto const& t : tobs) { + ATH_CHECK(fillSumEtEDM(t->getjFex(),t->getFpga(),t->getWord(),t->getRes(),jSumETContainer)); + } + } SG::WriteHandle outputjFexSumETHandle(m_jFexSumETOutKey/*, ctx*/); ATH_MSG_DEBUG(" write: " << outputjFexSumETHandle.key() << " = " << "..." ); @@ -1014,15 +995,11 @@ namespace LVL1 { std::unique_ptr< xAOD::jFexMETRoIAuxContainer > jMETAuxContainer = std::make_unique (); jMETContainer->setStore(jMETAuxContainer.get()); - for( auto const& [jfex, MODULE_tobs] : m_allMetTobs ) { - uint8_t fpgaNum =0; - for(auto &FPGA_tob : MODULE_tobs) { - for(auto &tob : FPGA_tob) { - ATH_CHECK(fillMetEDM(jfex,fpgaNum, tob, jXEResolution, jMETContainer)); - } - fpgaNum+=2; - } - + for( auto const& [jfex, tobs] : m_allMetTobs ) { + + for(auto const& t : tobs) { + ATH_CHECK(fillMetEDM(t->getjFex(),t->getFpga(),t->getWord(),t->getRes(),jMETContainer)); + } } SG::WriteHandle outputjFexMETHandle(m_jFexMETOutKey/*, ctx*/); diff --git a/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXFPGA.h b/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXFPGA.h index 8c0864dbbcc32eda2ae4cfffaa1ec279df07fe2c..c454fa0b0f9025f1897d668c722cb73b3922a508 100644 --- a/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXFPGA.h +++ b/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXFPGA.h @@ -43,17 +43,17 @@ Interface definition for jFEXFPGA virtual int ID() = 0; - virtual std::vector> getSmallRJetTOBs() = 0; + virtual std::vector > getSmallRJetTOBs() = 0; - virtual std::vector > getLargeRJetTOBs() = 0; + virtual std::vector > getLargeRJetTOBs() = 0; virtual std::vector > getFwdElTOBs() =0; virtual std::vector> getTauTOBs() = 0; - virtual std::vector getSumEtTOBs() =0; + virtual std::vector> getSumEtTOBs() =0; - virtual std::vector getMetTOBs() =0; + virtual std::vector> getMetTOBs() =0; diff --git a/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXSim.h b/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXSim.h index 35832ce4c660816149e7b40881121fc69b4af657..c1defd8d444d41b6ba5d2ad1347a0428bf39be69 100644 --- a/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXSim.h +++ b/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXSim.h @@ -42,14 +42,15 @@ Interface definition for jFEXSim virtual void SetTowersAndCells_SG(int tmp[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]) = 0; virtual void SetTowersAndCells_SG(int tmp[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width]) = 0; - virtual std::vector>> getSmallRJetTOBs() =0; - virtual std::vector>> getLargeRJetTOBs() =0; + virtual std::vector>> getFwdElTOBs() =0; - virtual std::vector> getSumEtTOBs() =0; - virtual std::vector> getMetTOBs() =0; virtual std::vector> getTauTOBs() =0; - + virtual std::vector> getSmallRJetTOBs() =0; + virtual std::vector> getLargeRJetTOBs() =0; + virtual std::vector> getSumEtTOBs() =0; + virtual std::vector> getMetTOBs() =0; + virtual StatusCode ExecuteForwardASide(int tmp[2*FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width], jFEXOutputCollection* inputOutputCollection) = 0; virtual StatusCode ExecuteForwardCSide(int tmp[2*FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width], jFEXOutputCollection* inputOutputCollection) = 0; virtual StatusCode ExecuteBarrel(int tmp[2*FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width], jFEXOutputCollection* inputOutputCollection) = 0; diff --git a/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py b/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py index 6f61cf04b8674e59f471432d1fb95d0b7c0e176d..f8fe61cfe768efa1d3f32356c492faf48ca3a58b 100644 --- a/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py +++ b/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py @@ -325,6 +325,7 @@ class TrigInDetRdictStep(Step): os.system( 'get_files -data TIDAdata-run3-offline-cosmic.dat &> /dev/null' ) os.system( 'get_files -data TIDAdata_cuts-offline.dat &> /dev/null' ) os.system( 'get_files -data TIDAdata-chains-run3.dat &> /dev/null' ) + os.system( 'get_files -data TIDAdata-chains-run3-lrt.dat &> /dev/null' ) super(TrigInDetRdictStep, self).configure(test) diff --git a/Trigger/TrigValidation/TrigInDetValidation/share/TIDAlrt_preinclude.py b/Trigger/TrigValidation/TrigInDetValidation/share/TIDAlrt_preinclude.py index fcb6b286d18d5cfa5d569a19f7764df3501e5835..b4b6e1fe0e4846611d8b76ab1e9c6172f2cefb7d 100644 --- a/Trigger/TrigValidation/TrigInDetValidation/share/TIDAlrt_preinclude.py +++ b/Trigger/TrigValidation/TrigInDetValidation/share/TIDAlrt_preinclude.py @@ -6,7 +6,7 @@ log.info( "preinclude: TIDAlrt_preinclude.py" ) from InDetRecExample.InDetJobProperties import InDetFlags InDetFlags.doR3LargeD0.set_Value_and_Lock(True) -InDetFlags.storeSeparateLargeD0Container.set_Value_and_Lock(False) +#InDetFlags.storeSeparateLargeD0Container.set_Value_and_Lock(False) #ATR-25582 - FSLRT is now excluded from the default dev menu so need to change to the full dev menu rather than the filtered versions from AthenaConfiguration.AllConfigFlags import ConfigFlags diff --git a/Trigger/TrigValidation/TrigInDetValidation/share/TrigInDetValidation_AODtoTrkNtuple.py b/Trigger/TrigValidation/TrigInDetValidation/share/TrigInDetValidation_AODtoTrkNtuple.py index ad19fe6fe17e2aa57c3a3aaa146ae3e1a067b966..d40b6413d534c4863b1c18afc96f976f92f3fc74 100644 --- a/Trigger/TrigValidation/TrigInDetValidation/share/TrigInDetValidation_AODtoTrkNtuple.py +++ b/Trigger/TrigValidation/TrigInDetValidation/share/TrigInDetValidation_AODtoTrkNtuple.py @@ -1,9 +1,12 @@ #Skeleton joboption for a simple analysis job +from AthenaCommon.AthenaCommonFlags import athenaCommonFlags + +if athenaCommonFlags.FilesInput() != []: + FilesInput = athenaCommonFlags.FilesInput() +else: + FilesInput = ["AOD.pool.root"] -FilesInput = [ "AOD.pool.root" ] -if len(jps.AthenaCommonFlags.FilesInput.get_Value())>0: - FilesInput = jps.AthenaCommonFlags.FilesInput.get_Value() theApp.EvtMax=-1 #says how many events to run over. Set to -1 for all events @@ -104,6 +107,12 @@ if ( True ) : if LRT == True : TestMonTool.FiducialRadius = 500. + TestMonTool.ntupleChainNames += [ + ":InDetLargeD0TrackParticles", + "Muons::LRT", + "Muons", + "Electrons::LRT" + ] if 'ptmin' in dir(): TestMonTool.pTCutOffline = ptmin diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_ellrt_staustau.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_ellrt_staustau.py index cd28e7cb3cffdee11a19ee45940dd863cd3941cd..d13035d2da3cbfa5c38e614ead907f81c5f7a677 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_ellrt_staustau.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_ellrt_staustau.py @@ -41,7 +41,7 @@ preinclude_file = 'all:TrigInDetValidation/TIDAlrt_preinclude.py' Jobs = [ ( "Truth", " TIDAdata-run3-lrt.dat -o data-hists.root -p 11", "Test_bin_lrt.dat" ), - ( "Offline", " TIDAdata-run3-offline-lrt.dat -r Offline -o data-hists-offline.root", "Test_bin_lrt.dat" ) ] + ( "Offline", " TIDAdata-run3-offline-lrt.dat -r Offline+InDetLargeD0TrackParticles -o data-hists-offline.root", "Test_bin_lrt.dat" ) ] Comp = [ ( "L2electronLRT", "L2electronLRT", "data-hists.root", " -c TIDAhisto-panel.dat -d HLTL2-plots -sx Reference Truth " ), ( "EFelectronLRT", "EFelectronLRT", "data-hists.root", " -c TIDAhisto-panel.dat -d HLTEF-plots -sx Reference Truth " ), diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fslrt_rhadron.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fslrt_rhadron.py index 8bfb82c243c37ee22180b08303b78d3fa32a2d10..d7e0483800a60d83a9da622912d13d23a8458363 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fslrt_rhadron.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fslrt_rhadron.py @@ -39,7 +39,7 @@ Release = "current" preinclude_file = 'all:TrigInDetValidation/TIDAlrt_preinclude.py' Jobs = [ ( "Truth", " TIDAdata-run3-fslrt.dat -o data-hists.root ", "Test_bin_lrt.dat" ), - ( "Offline", " TIDAdata-run3-offline-fslrt.dat -r Offline -o data-hists-offline.root", "Test_bin_lrt.dat" ) ] + ( "Offline", " TIDAdata-run3-offline-fslrt.dat -r Offline+InDetLargeD0TrackParticles -o data-hists-offline.root", "Test_bin_lrt.dat" ) ] Comp = [ ( "L2FSLRT", "L2FSLRT", "data-hists.root", " -c TIDAhisto-panel.dat -d HLTL2-plots -sx Reference Truth " ), ( "EFFSLRT", "EFFSLRT", "data-hists.root", " -c TIDAhisto-panel.dat -d HLTEF-plots -sx Reference Truth " ), diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mu_singlemu_larged0.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mu_singlemu_larged0.py index 4dc1c5fcd883b3dbc4e278fd06db9abd9549f91e..c4c47bff37d4d11211e43c860a1b3f881a7e84e0 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mu_singlemu_larged0.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mu_singlemu_larged0.py @@ -38,7 +38,7 @@ GridFiles=True preinclude_file = 'all:TrigInDetValidation/TIDV_cond_fix.py' #conditions fix for ATR-23982. In future find a more recent RDO Jobs = [ ( "Truth", " TIDAdata-run3-larged0.dat -o data-hists.root -p 13", "Test_bin_larged0.dat" ), - ( "Offline", " TIDAdata-run3-offline-larged0.dat -r Offline -o data-hists-offline.root", "Test_bin_larged0.dat" ) ] + ( "Offline", " TIDAdata-run3-offline-larged0.dat -r Offline+InDetLargeD0TrackParticles -o data-hists-offline.root", "Test_bin_larged0.dat" ) ] Comp = [ ( "L2muon", "L2muon", "data-hists.root", " -c TIDAhisto-panel.dat -d HLTL2-plots " ), ( "L2muon-lowpt", "L2muonLowpt", "data-hists.root", " -c TIDAhisto-panel.dat -d HLTL2-plots-lowpt " ), diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mu_singlemu_larged0_pu.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mu_singlemu_larged0_pu.py index c73ee48c0e92c97d73fd173bc8b4da8e30235eb3..b28e503018951e482855bf7d5158128f46644643 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mu_singlemu_larged0_pu.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mu_singlemu_larged0_pu.py @@ -38,7 +38,7 @@ GridFiles=True preinclude_file = 'all:TrigInDetValidation/TIDV_cond_fix.py' #conditions fix for ATR-23982. In future find a more recent RDO Jobs = [ ( "Truth", " TIDAdata-run3-larged0.dat -o data-hists.root -p 13", "Test_bin_larged0.dat" ), - ( "Offline", " TIDAdata-run3-offline-larged0.dat -r Offline -o data-hists-offline.root", "Test_bin_larged0.dat" ) ] + ( "Offline", " TIDAdata-run3-offline-larged0.dat -r Offline+InDetLargeD0TrackParticles -o data-hists-offline.root", "Test_bin_larged0.dat" ) ] Comp = [ ( "L2muon", "L2muon", "data-hists.root", " -c TIDAhisto-panel.dat -d HLTL2-plots " ), ( "L2muon-lowpt", "L2muonLowpt", "data-hists.root", " -c TIDAhisto-panel.dat -d HLTL2-plots-lowpt " ), diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mulrt_siSP_staustau.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mulrt_siSP_staustau.py index 02d715d206647988f927ef40c945c19c3434a216..bdd730be92bf1e019ddcebc4cb6b5c5399d2ed7f 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mulrt_siSP_staustau.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mulrt_siSP_staustau.py @@ -41,7 +41,7 @@ preinclude_file = 'TrigInDetValidation/TIDAsiSPlrt_preinclude.py' Jobs = [ ( "Truth", " TIDAdata-run3-lrt.dat -o data-hists.root -p 13", "Test_bin_lrt.dat" ), - ( "Offline", " TIDAdata-run3-offline-lrt.dat -r Offline -o data-hists-offline.root", "Test_bin_lrt.dat" ) ] + ( "Offline", " TIDAdata-run3-offline-lrt.dat -r Offline+InDetLargeD0TrackParticles -o data-hists-offline.root", "Test_bin_lrt.dat" ) ] Comp = [ ( "L2muonLRT", "L2muonLRT", "data-hists.root", " -c TIDAhisto-panel.dat -d HLTL2-plots -sx Reference Truth " ), ( "EFmuonLRT", "EFmuonLRT", "data-hists.root", " -c TIDAhisto-panel.dat -d HLTEF-plots -sx Reference Truth " ), diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mulrt_staustau.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mulrt_staustau.py index d8a1f46ab8d59f40d97c8b588276b7573d61980d..8670687eb84fe8e3dddaa5b21dfd019e66914f0e 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mulrt_staustau.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mulrt_staustau.py @@ -41,7 +41,7 @@ preinclude_file = 'all:TrigInDetValidation/TIDAlrt_preinclude.py' Jobs = [ ( "Truth", " TIDAdata-run3-lrt.dat -o data-hists.root -p 13", "Test_bin_lrt.dat" ), - ( "Offline", " TIDAdata-run3-offline-lrt.dat -r Offline -o data-hists-offline.root", "Test_bin_lrt.dat" ) ] + ( "Offline", " TIDAdata-run3-offline-lrt.dat -r Offline+InDetLargeD0TrackParticles -o data-hists-offline.root", "Test_bin_lrt.dat" ) ] Comp = [ ( "L2muonLRT", "L2muonLRT", "data-hists.root", " -c TIDAhisto-panel.dat -d HLTL2-plots -sx Reference Truth " ), ( "L2muonLRT-lowpt", "L2muonLRTLowpt", "data-hists.root", " -c TIDAhisto-panel.dat -d HLTL2-plots-lowpt " ), diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mulrt_zmumu_pu40.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mulrt_zmumu_pu40.py index 82d8cf35dd423958d0303ad06fb92c6b3c455be9..796fbe7811cc1661c917f2cb639a3ddda79217de 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mulrt_zmumu_pu40.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mulrt_zmumu_pu40.py @@ -40,7 +40,7 @@ Release = "current" preinclude_file = 'all:TrigInDetValidation/TIDAlrt_preinclude.py' Jobs = [ ( "Truth", " TIDAdata-run3-lrt.dat -o data-hists.root -p 13", "Test_bin_lrt.dat" ), - ( "Offline", " TIDAdata-run3-offline-lrt.dat -r Offline -o data-hists-offline.root", "Test_bin_lrt.dat" ) ] + ( "Offline", " TIDAdata-run3-offline-lrt.dat -r Offline+InDetLargeD0TrackParticles -o data-hists-offline.root", "Test_bin_lrt.dat" ) ] Comp = [ ( "L2muonLRT", "L2muonLRT", "data-hists.root", " -c TIDAhisto-panel.dat -d HLTL2-plots -sx Reference Truth" ), ( "EFmuonLRT", "EFmuonLRT", "data-hists.root", " -c TIDAhisto-panel.dat -d HLTEF-plots -sx Reference Truth " ), diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_tauLRT_staustau.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_tauLRT_staustau.py index cda4580cb2ca685f794ab039a9dd7a29767920b3..9e016a118d09288d045752139a3d0e90db765223 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_tauLRT_staustau.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_tauLRT_staustau.py @@ -36,7 +36,7 @@ ExtraAna = " -c 'LRT=True;parentpdgid=15' " preinclude_file = 'all:TrigInDetValidation/TIDAlrt_preinclude.py' -Jobs = [ ( "Offline", " TIDAdata-run3-offline-lrt.dat -r Offline -o data-hists-offline-lrt.root", "Test_bin_lrt.dat" ), +Jobs = [ ( "Offline", " TIDAdata-run3-offline-lrt.dat -r Offline+InDetLargeD0TrackParticles -o data-hists-offline-lrt.root", "Test_bin_lrt.dat" ), ( "Truth", " TIDAdata-run3-lrt.dat -o data-hists-lrt.root", "Test_bin_lrt.dat" ) ] Comp = [ ( "EFtauLRT", "EFtauLRT", "data-hists-lrt.root", " -c TIDAhisto-panel.dat -d HLTEF-plots " ), diff --git a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py index 4c906db365f75e55714207ddc3d771ab2284e5f2..4e0c0a3fb75bd99b28fb12ecc67c90737f1b0f87 100644 --- a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py +++ b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py @@ -252,6 +252,11 @@ L1TopoErrorFlagVars = '.'.join(['hasGenericRoiError', 'hasGenericDaqError', 'has TauTrackToKeep = ['pt', 'eta', 'phi', 'flagSet', 'trackLinks', 'd0TJVA', 'd0SigTJVA', 'z0sinthetaTJVA', 'z0sinthetaSigTJVA'] TauTrackVars = '.'.join(TauTrackToKeep) +# =========== +# === LLP === +MuRoiToKeep = ['ClusterEta','ClusterPhi','nRoIs'] +MuRoiVars = '.'.join(MuRoiToKeep) + # ------------------------------------------------------------ # List of tuples with variables [0] and associated collections @@ -1111,6 +1116,11 @@ TriggerHLTListRun3 = [ ('TrigRoiDescriptorCollection#HLT_Roi_DJ', 'BS ESD AODFULL', 'Jet'), ('xAOD::TrackParticleContainer#HLT_IDTrack_DJLRT_FTF', 'BS ESD AODFULL', 'Jet', 'inViews:DJRoIViews'), ('xAOD::TrackParticleAuxContainer#HLT_IDTrack_DJLRT_FTFAux.', 'BS ESD AODFULL', 'Jet'), + + # muon roi clusters + ('xAOD::TrigCompositeContainer#HLT_MuRoICluster_Composites', 'BS ESD AODFULL AODSLIM', 'Muon'), + ('xAOD::TrigCompositeAuxContainer#HLT_MuRoICluster_CompositesAux.'+MuRoiVars, 'BS ESD AODFULL AODSLIM', 'Muon'), + ]